Имя: Пароль:
1C
1С v8
внешняя печатная форма для требование-накладной
,
0 NovichokAlena
 
21.08.15
11:22
Здравствуйте, для внешней печатной формы нужно сделать колонки "остаток нзп", который берется из регистра накопления "материалы в производстве".
запрос добавила, параметры установила, но при печати ВПФ нужная колонка остается пустой. что еще нужно добавить?
1С:Предприятие 8.3, УПП 1.3



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

    
                
    КонецЕсли;
    
    ПараметрКоманды = Новый Массив;
    ПараметрКоманды.Добавить(СсылкаНаОбъект);
        
    МассивОбъектов = Новый Массив();
    МассивОбъектов.Добавить(СсылкаНаОбъект);
    
    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("М11");
    
    КоличествоЭкземпляров = 1;
    НаПринтер = Ложь;

    УниверсальныеМеханизмы.НапечататьДокумент(ПечатьМ11ТН(МассивОбъектов), КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект), СсылкаНаОбъект);
    
    
КонецФункции

Функция ПечатьМ11ТН(МассивОбъектов) Экспорт
    

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

    Запрос.УстановитьПараметр("Дата", СсылкаНаОбъект.Дата);
    Запрос.УстановитьПараметр("Подразделение", СсылкаНаОбъект.Подразделение);
    Запрос.УстановитьПараметр("Затрата",СсылкаНаОбъект.Номенклатура);
    Запрос.УстановитьПараметр("Заказ",СсылкаНаОбъект.Материалы);

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

        Шапка = Запрос.Выполнить().Выбрать();
        Шапка.Следующий();
        
        СтруктраПараметров = Новый Структура();
        СтруктраПараметров.Вставить("ТекущийДокумент", Ссылка);
        СтруктраПараметров.Вставить("Регистратор", Ссылка);
        СтруктраПараметров.Вставить("НачГраница", Новый Граница(Ссылка.Дата, ВидГраницы.Включая));
        
        ТекстЗапроса = ТекстЗапроса_Материалы;

        ТаблицаЗатрат = УправлениеЗапасами.ПолучитьТаблицуЗатратДляПечатиИЗаполненияДокументов(Ссылка, ТекстЗапроса, СтруктраПараметров);
        
        Если ТаблицаЗатрат = Неопределено Тогда
            Продолжить;
        КонецЕсли;    
        
        Область = Макет.ПолучитьОбласть("Шапка");
        Область.Параметры.Заголовок     = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Строка(Шапка.НомерДокумента);
        Область.Параметры.Заполнить(Шапка);
        Область.Параметры.ПредставлениеПодразделения = Ссылка.Подразделение;
        
        
        ФИООтветственного = СсылкаНаОбъект.Ответственный;
        Область.Параметры.ФИООтветственного = ФИООтветственного;
        
        СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
        
        ТабДокумент.Вывести(Область);
        
        Для Каждого ВыборкаПоСтрокам Из ТаблицаЗатрат Цикл
            Область = Макет.ПолучитьОбласть("Строка");
                                        
                          


            
            Область.Параметры.Заполнить(ВыборкаПоСтрокам);
    
            Область.Параметры.ДокЗаказ = ?(ЗначениеЗаполнено(ВыборкаПоСтрокам.Заказ),"№" + ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаПоСтрокам.Заказ) + " от " + Формат(ВыборкаПоСтрокам.Заказ.Дата,"ДЛФ=D"), "");
    
            Область.Параметры.Цена = ?( ВыборкаПоСтрокам.Количество = 0, ВыборкаПоСтрокам.Сумма, Окр(ВыборкаПоСтрокам.Сумма / ВыборкаПоСтрокам.Количество, 2, 1));
            Область.Параметры.МатериалНаименование = СокрЛП(ВыборкаПоСтрокам.МатериалНаименование);// + ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);
            ТабДокумент.Вывести(Область);

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

    КонецЦикла;
    
    Возврат ТабДокумент;
    
КонецФункции // ПечатьМ11()
1 Апош
 
21.08.15
11:26
например, параметр в ячейку макета
2 Альбатрос
 
21.08.15
11:27
Если запрос возвращает данные, то проверь, что имя поля в запросе совпадает с именем параметра в макете. Это если вывод вот здесь происходит:

Область = Макет.ПолучитьОбласть("Строка");
                                      Область.Параметры.Заполнить(ВыборкаПоСтрокам);
3 NovichokAlena
 
21.08.15
11:30
(1) параметр в ячейке макета есть
4 NovichokAlena
 
21.08.15
11:33
(2)вот я и не могу понять, где это вывод должен происходить..
в области "строка"..но как прописать не знаю
5 Галахад
 
гуру
21.08.15
11:33
Результат = запрос.Выполнить();

Эта вижу, а где это используется не вижу.
6 Альбатрос
 
21.08.15
11:35
(4) Вот здесь: Область.Параметры.Заполнить(ВыборкаПоСтрокам);
Заполнение параметров макета происходит из выборки запроса по тем полям, где совпали имена.
7 Альбатрос
 
21.08.15
11:39
А, понятно... ты просто написала свой запрос никак не связав его с основным =))))
8 NovichokAlena
 
21.08.15
11:41
(7) ну как бы да и поэтому прошу помочь объяснить как это сделать
9 Альбатрос
 
21.08.15
11:43
(8) Взять свой свеженаписанный шедевр и связать с основным текстом запроса левым соединением по номенклатуре и подразделению
10 Альбатрос
 
21.08.15
11:50
+) Ты короче попробуй и выложи текст запроса сюда. Мы тут поможем, на ошибки укажем.