8.х Внешняя Обработка+КНОПКА

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Алф, 21 окт 2009.

  1. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Привет народ.УПП
    Есть Документ(закНаПроиз) в нем кнопка (ссылка на Отчет),каким образом создать мне Внешнюю обработку(нужно к Обработке прикрепить Кнопку(отчет)),нужна ли Функция Печать (т.к. привязка макета и др.параметров находится в Фун.Печать)и как привязать Кнопку к обработке, для ДействииКнопки нашел процедуру:

    Код:
    Процедура ДействияФормыДействиеАнализ(Кнопка)
    
    АнализЗаказа = Отчеты.АнализЗаказаНаПроизводство.Создать();
    АнализЗаказа.ЗапретВыбораЗаказа = Истина;
    АнализЗаказа.Заказ = Ссылка;
    АнализЗаказаФорма = АнализЗаказа.ПолучитьФорму();
    
    АнализЗаказа.ОбновитьОтчет(АнализЗаказаФорма.ЭлементыФормы.ТабДокумент);
    АнализЗаказаФорма.Открыть();
    
    
    по большому счету мне нужен сам отчет(в нем я и произвожу изменения);
    я так понимаю мне нужно скопировать Фукцию Печать из Документа,из отчета: Процедуру ДействияКнопки,и саму Процедуру где находится Запрос и параматры отчета
    В ПРАВИЛЬНОМ Я НАПРАВЛЕНИИ ИДУ?
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А можно из этого потока мыслей выделить конкретную задачу??? Что ты хочешь сделать?
  3. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Я хочу произвести изменения в отчете,отчет я использую из Документа(кнопка).


    Я решил сделать Печатной Формой,теперь ругается "Недостаточно фактических параметров",я создал Функцию Печать в нее скопировал из общего модула Отчета
    Процедура ОбновитьОтчет(ТабДокумент) Экспорт


    Функция Печать() Экспорт
    Перем ТабДокумент;
    ТабДокумент.Очистить();

    //Вывод данных о продукции и полуфабрикатах.
    ТекстЗапроса =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | РегЗаказы.Подразделение КАК Подразделение,
    | РегЗаказы.Номенклатура КАК Номенклатура,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Подразделение) КАК ПечПодразделение,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Номенклатура) КАК ПечНоменклатура,
    | РегЗаказы.ЕдиницаИзмерения КАК ЕдИзм,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.ЕдиницаИзмерения) КАК ПечЕдИзм,
    | ЕСТЬNULL(РегЗаказы.КоличествоПриход, 0) КАК Заказано,
    | ЕСТЬNULL(РегЗаказы.КоличествоРасход, 0) КАК Отгружено,
    | ЕСТЬNULL(РегЗаказы.КоличествоКонечныйОстаток, 0) КАК ОсталосьОтгрузить,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Номенклатура.Артикул) КАК Артикул
    | ИЗ
    | РегистрНакопления.ЗаказыНаПроизводство.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ЗаказНаПроизводство = &Заказ) КАК РегЗаказы
    |ИТОГИ
    | СУММА(Заказано),
    | СУММА(Отгружено),
    | СУММА(ОсталосьОтгрузить)
    |ПО
    | Подразделение,
    | Номенклатура,
    | ЕдИзм";

    УчетнаяПолитикаНЕПолучена = Ложь;
    ВидимостьНЗП = Истина;
    мУчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(КонецМесяца(?(СсылкаНаОбъект.КонДата='00010101000000',ТекущаяДата(),СсылкаНаОбъект.КонДата)), УчетнаяПолитикаНЕПолучена);
    Если УчетнаяПолитикаНЕПолучена Тогда
    ВидимостьНЗП = Ложь;
    ИначеЕсли мУчетнаяПолитика.ИспользоватьПотребностиЗаказовНаПроизводство
    И мУчетнаяПолитика.СпособЗакрытияПотребностейЗаказовНаПроизводство = Перечисления.СпособыЗакрытияПотребностейЗаказовНаПроизводство.Явно Тогда

    ВидимостьНЗП = Ложь;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;

    Запрос.УстановитьПараметр( "Заказ", СсылкаНаОбъект.Заказ);
    Запрос.УстановитьПараметр( "ДатаНач", Новый Граница( СсылкаНаОбъект.Заказ.Дата, ВидГраницы.Включая));
    Если СсылкаНаОбъект.КонДата = '00010101000000' Тогда
    Запрос.УстановитьПараметр( "ДатаКон", СсылкаНаОбъект.КонДата);
    Иначе
    Запрос.УстановитьПараметр( "ДатаКон", Новый Граница( КонецДня(СсылкаНаОбъект.КонДата), ВидГраницы.Включая));
    КонецЕсли;

    РезультатЗапроса = Запрос.Выполнить();

    // Формирование печатной формы
    Макет = ПолучитьМакет("АнализЗаказа");
    Область = Макет.ПолучитьОбласть("Заголовок");
    Область.Параметры.ТекстЗаголовок = "Состояние: " + ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект.Заказ);
    ТабДокумент.Вывести(Область);

    Область = Макет.ПолучитьОбласть("ТабШапка");
    ТабДокумент.Вывести(Область);



    Область1 = Макет.ПолучитьОбласть("СтрокаУровень1");
    Область2 = Макет.ПолучитьОбласть("СтрокаУровень2");

    ОбходПодр = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ОбходПодр.Следующий() Цикл

    Область1.Параметры.ПечПодразделение = ?(ПустаяСтрока(ОбходПодр.ПечПодразделение), "Не указано", ОбходПодр.ПечПодразделение);
    Область1.Параметры.Подразделение = ОбходПодр.Подразделение;
    ТабДокумент.Вывести(Область1);

    ОбходНоменклатура = ОбходПодр.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ОбходНоменклатура.Следующий() Цикл

    Обход = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Обход.Следующий() Цикл
    //Область2.Параметры.Артикул=Обход.Артикул; // Ришат Артикул
    Область2.Параметры.ПечНоменклатура = Обход.ПечНоменклатура;
    Область2.Параметры.Номенклатура = Обход.Номенклатура;
    Область2.Параметры.ПечЕдИзм = Обход.ПечЕдИзм;
    Область2.Параметры.ЕдИзм = Обход.ЕдИзм;

    Область2.Параметры.Заказано = Обход.Заказано;
    Область2.Параметры.Отгружено = Обход.Отгружено;
    Область2.Параметры.ОсталосьОтгрузить = Обход.ОсталосьОтгрузить;

    ТабДокумент.Вывести(Область2);
    КонецЦикла;

    КонецЦикла;

    КонецЦикла;

    Область = Макет.ПолучитьОбласть("ТабНиз");
    ТабДокумент.Вывести(Область);

    ТекстЗапроса =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | РегЗаказы.Материал КАК Материал,
    | РегЗаказы.ЕдИзм КАК ЕдИзм,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Материал) КАК ПечМатериал,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.ЕдИзм) КАК ПечЕдИзм,
    | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Материал.Артикул) КАК Артикул,
    | СУММА(РегЗаказы.КолПотребность) КАК КолПотребность,
    | СУММА(РегЗаказы.КолРезерв) КАК КолРезерв,
    | СУММА(РегЗаказы.КолРазмещено) КАК КолРазмещено,
    | СУММА(РегЗаказы.КолНЗП) КАК КолНЗП,
    | СУММА(РегЗаказы.КолПотребность - РегЗаказы.КолРезерв - РегЗаказы.КолРазмещено - РегЗаказы.КолНЗП) КАК Необеспечено
    |ИЗ
    | (ВЫБРАТЬ
    | РегПотребности.Номенклатура КАК Материал,
    | РегПотребности.ЕдиницаИзмерения КАК ЕдИзм,
    | РегПотребности.КоличествоОстаток КАК КолПотребность,
    | 0 КАК КолРезерв,
    | 0 КАК КолРазмещено,
    | 0 КАК КолНЗП
    | ИЗ
    | РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки(&ДатаКон, ЗаказНаПроизводство = &Заказ) КАК РегПотребности
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | РегРезерв.Номенклатура,
    | РегРезерв.Номенклатура.ЕдиницаХраненияОстатков,
    | 0,
    | РегРезерв.КоличествоОстаток,
    | 0,
    | 0
    | ИЗ
    | РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, ДокументРезерва = &Заказ) КАК РегРезерв
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | РегРазмещение.Номенклатура,
    | РегРазмещение.Номенклатура.ЕдиницаХраненияОстатков,
    | 0,
    | 0,
    | РегРазмещение.КоличествоОстаток,
    | 0
    | ИЗ
    | РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаКон, ЗаказПокупателя = &Заказ) КАК РегРазмещение
    |"+?(СсылкаНаОбъект.ВидимостьНЗП, "
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | РегНЗП.Затрата,
    | РегНЗП.Затрата.ЕдиницаХраненияОстатков,
    | 0,
    | 0,
    | 0,
    | РегНЗП.КоличествоОстаток
    | ИЗ
    | РегистрНакопления.МатериалыВПроизводстве.Остатки(&ДатаКон, Заказ = &Заказ) КАК РегНЗП","")+") КАК РегЗаказы
    |
    |СГРУППИРОВАТЬ ПО
    | РегЗаказы.Материал,
    | РегЗаказы.ЕдИзм
    |
    |УПОРЯДОЧИТЬ ПО
    | Материал.Наименование,
    | ЕдИзм.Наименование";

    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;

    //Запрос.УстановитьПараметр( "МассивНоменклатуры", Заказ.Материалы.ВыгрузитьКолонку("Номенклатура"));
    Запрос.УстановитьПараметр( "Заказ", СсылкаНаОбъект.Заказ);
    Если СсылкаНаОбъект.КонДата = '00010101000000' Тогда
    Запрос.УстановитьПараметр( "ДатаКон", СсылкаНаОбъект.КонДата);
    Иначе
    Запрос.УстановитьПараметр( "ДатаКон", Новый Граница( КонецДня(СсылкаНаОбъект.КонДата), ВидГраницы.Включая));
    КонецЕсли;

    РезультатЗапроса = Запрос.Выполнить();

    // Формирование печатной формы
    Макет = ПолучитьМакет("АнализЗаказа");

    Область = Макет.ПолучитьОбласть("ШапкаМатериалы"+?(СсылкаНаОбъект.ВидимостьНЗП, "","БезНЗП"));
    ТабДокумент.Вывести(Область);

    Область = Макет.ПолучитьОбласть("СтрокаМатериалы"+?(СсылкаНаОбъект.ВидимостьНЗП, "","БезНЗП"));

    РасшифровкаРезерв = Новый Структура("ВидОтчета", "ТоварыВРезервеНаСкладах");
    РасшифровкаРазмещено = Новый Структура("ВидОтчета", "РазмещенияВЗаказах");
    РасшифровкаНЗП = Новый Структура("ВидОтчета", "ВедомостьПроизводственныеЗатраты");

    Обход = РезультатЗапроса.Выбрать();
    Пока Обход.Следующий() Цикл

    Область.Параметры.ПечМатериал =Обход.Артикул+" "+ Обход.ПечМатериал;
    Область.Параметры.Материал = Обход.Материал;

    Область.Параметры.ПечЕдИзм = Обход.ПечЕдИзм;
    Область.Параметры.ЕдИзм = Обход.ЕдИзм;

    Область.Параметры.КолРезерв = Обход.КолРезерв;
    Область.Параметры.КолРазмещено = Обход.КолРазмещено;

    Если СсылкаНаОбъект.ВидимостьНЗП Тогда
    Область.Параметры.КолНЗП = Обход.КолНЗП;
    РасшифровкаНЗП .Вставить("Номенклатура", Обход.Материал);
    Область.Параметры.РасшифровкаНЗП = РасшифровкаНЗП;
    КонецЕсли;

    Область.Параметры.КолПотребность = Обход.КолПотребность;
    Область.Параметры.Необеспечено = Обход.Необеспечено;

    РасшифровкаРезерв .Вставить("Номенклатура", Обход.Материал);
    РасшифровкаРазмещено.Вставить("Номенклатура", Обход.Материал);

    Область.Параметры.РасшифровкаРезерв = РасшифровкаРезерв;
    Область.Параметры.РасшифровкаРазмещено = РасшифровкаРазмещено;

    ТабДокумент.Вывести(Область);

    КонецЦикла;

    //Область = Макет.ПолучитьОбласть("ТабМатериалыНиз"+?(ВидимостьНЗП, "","БезНЗП"));
    //ТабДокумент.Вывести(Область);
    КонецФункции // ОбновитьОтчет()
  4. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Так покажи где именно эта ошибка?
    Сразу меня смущают строки:
    СсылкаНаОбъект.КонДата - вряд ли такой реквизит есть в документе
    СсылкаНаОбъект.Заказ - это тоже непонятно

    Ты хочешь именно отчет изменить? Что именно?
  5. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26

    1)СсылкаНаобъект.КонДата-это Реквизит к Внешн.печ.Формы
    2)Ошибка в 1С Пользов.реж. "Недостаточно фактических параметров" при открытие Печат.Формы
    3)Я добавил в Запросе отчета Артикул
    Я не могу понять какие ему еще надо параметры?
  6. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Я хочу с Документа вызывать Отчет,с Внеш.Печ.Формой это самый быстрый вариант я так понимаю.
    Для Справки:в этом Документе В конфиг-ре этот Отчет прикреплен как кнопка .
  7. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Выложи обработку сюда

Поделиться этой страницей