Имя: Пароль:
1C
1С v8
Обращение к полям ФормаДокумента из печатной формы.
, ,
0 LastSoldier
 
24.09.14
14:33
Всем привет!
1С 8.3.5.1119
УТ 11.1.7.56
В документ "Сборка товара" были добавлены два поля "Цена" и "Сумма" и создано поле надписи, которое берет сумму всех всего товара, путь к данным этого поле "Объект.Товары.Итогол_Сумма".
В таблицу товары добавлены "ол_РозничнаяЦена" и "ол_Сумма".
Данные "ол_РозничнаяЦена" и "ол_Сумма" так же переносятся в печатную форму, а вот не могу перенести сумму документа в печатную форму, добавлял в "Функция ПечатьСборкаТоваров(МассивОбъектов, ОбъектыПечати)" в запрос строку "Итогол_Сумма             КАК ол_СуммаДокумента," но он пишет что поле "Итогол_Сумма" не найдено, как к нему обратиться чтобы получить сумму?
1 LastSoldier
 
24.09.14
14:33
Функция ПечатьСборкаТоваров(МассивОбъектов, ОбъектыПечати)
    
    ДопКолонка = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
    ВыводитьДопКолонку = ЗначениеЗаполнено(ДопКолонка);
    
    ЗапросПоДокументам = Новый Запрос;
    ЗапросПоДокументам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    ЗапросПоДокументам.Текст =
    "
    |ВЫБРАТЬ
    |    Документ.Ссылка                          КАК Ссылка,
    |    Документ.Номер                           КАК Номер,
    |    Документ.Дата                            КАК Дата,
    |    Документ.Склад                           КАК Склад,
    |    Документ.Организация                     КАК Организация,
    |    ПРЕДСТАВЛЕНИЕ(Документ.Склад)            КАК СкладПредставление,
    |    ПРЕДСТАВЛЕНИЕ(Документ.Организация)      КАК ОрганизацияПредставление,
    |    Документ.Организация.Префикс             КАК Префикс,
    |    ПРЕДСТАВЛЕНИЕ(Документ.Ответственный)    КАК ОтветственныйПредставление,
    |    " + ?(ВыводитьДопКолонку, "Документ.Номенклатура." + ДопКолонка +" КАК ДопКолонка,", "") + "
    |    Документ.Номенклатура                    КАК Номенклатура,
    |    Документ.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
    |    Документ.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
    |
    |    ВЫБОР КОГДА Документ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) ТОГДА
    |            ПРЕДСТАВЛЕНИЕ(Документ.Номенклатура.ЕдиницаИзмерения)
    |        ИНАЧЕ
    |            ПРЕДСТАВЛЕНИЕ(Документ.Упаковка)
    |    КОНЕЦ                                    КАК Упаковка,
    |    Документ.КоличествоУпаковок              КАК Количество,
    |    Документ.ТипОперации                     КАК ТипОперации,
    |    Документ.Товары.(
    |
    |        НомерСтроки КАК НомерСтроки,
    |        " + ?(ВыводитьДопКолонку, "Номенклатура." + ДопКолонка +" КАК ДопКолонка,", "") + "
    |        Номенклатура                        КАК Номенклатура,
    |        Номенклатура.НаименованиеПолное     КАК НоменклатураПредставление,
    |        Характеристика.НаименованиеПолное     КАК ХарактеристикаПредставление,
    |        Характеристика                      КАК Характеристика,
    |        ВЫБОР
    |            КОГДА Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) ТОГДА
    |                ПРЕДСТАВЛЕНИЕССЫЛКИ(Номенклатура.ЕдиницаИзмерения)
    |            ИНАЧЕ
    |                ПРЕДСТАВЛЕНИЕССЫЛКИ(Упаковка)
    |        КОНЕЦ              КАК Упаковка,
    |        КоличествоУпаковок КАК Количество,
    |
    //#Область ол_ЗаполнениеРозничнойЦены
    |       Итогол_Сумма             КАК ол_СуммаДокумента,
    |        ол_РозничнаяЦена         КАК ол_Цена,
    |        ол_Сумма                 КАК ол_Сумма
    //#КонецОбласти
    |
    |    ) КАК ТаблицаТовары
    |ИЗ
    |    Документ.СборкаТоваров КАК Документ
    |
    |ГДЕ
    |    Документ.Ссылка В(&МассивОбъектов)
    |УПОРЯДОЧИТЬ ПО
    |    Дата, Ссылка, НомерСтроки
    |";
    РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СборкаТоваров";
    
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.СборкаТоваров.ПФ_MXL_СборкаТоваров");
    
    Если ВыводитьДопКолонку Тогда
        ОбластьШапки  = "ШапкаСДопКолонкой";
        ОбластьСтроки = "СтрокаСДопКолонкой";
    Иначе
        ОбластьШапки  = "ШапкаТаблицы";
        ОбластьСтроки = "Строка";
    Конецесли;
    
    ПервыйДокумент = Истина;
    ВыборкаДокументы = ЗапросПоДокументам.Выполнить().Выбрать();
    Пока ВыборкаДокументы.Следующий() Цикл
        
        НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
        
        Если Не ПервыйДокумент Тогда
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ПервыйДокумент = Ложь;
        
        // Вывод заголовка.
        ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаДокументы);
        
        ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
        ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, Строка(ВыборкаДокументы.ТипОперации));
        ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьМакета, ВыборкаДокументы.Ссылка);
        ТабДокумент.Вывести(ОбластьМакета);
        
        // Вывод комплекта.
        Если ВыводитьДопКолонку Тогда
            
            ОбластьМакета = Макет.ПолучитьОбласть("КомплектКод");
            ОбластьМакета.Параметры.ДопКолонка = ДопКолонка + ":";
            ОбластьМакета.Параметры.ЗначениеДопКолонки = ВыборкаДокументы.ДопКолонка;
            ТабДокумент.Вывести(ОбластьМакета);
            
        КонецЕсли;
        
        ОбластьМакета = Макет.ПолучитьОбласть("Комплект");
        ОбластьМакета.Параметры.Комплект = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
            ВыборкаДокументы.НоменклатураПредставление,
            ВыборкаДокументы.ХарактеристикаПредставление);
        ОбластьМакета.Параметры.Количество = Строка(ВыборкаДокументы.Количество) + " " + ВыборкаДокументы.Упаковка;
        ТабДокумент.Вывести(ОбластьМакета);
        
        // Вывод шапки отчета.
        ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
        Если ВыводитьДопКолонку Тогда
            ОбластьМакета.Параметры.ДопКолонка = ДопКолонка;
        КонецЕсли;
        ТабДокумент.Вывести(ОбластьМакета);
        
        // Вывод строк документа.
        ВыборкаПоСтрокам = ВыборкаДокументы.ТаблицаТовары.Выбрать();
        Пока ВыборкаПоСтрокам.Следующий() Цикл
            
            ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
            ОбластьМакета.Параметры.Заполнить(ВыборкаПоСтрокам);
            
            ОбластьМакета.Параметры.НоменклатураПредставление = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
                ВыборкаПоСтрокам.НоменклатураПредставление,
                ВыборкаПоСтрокам.ХарактеристикаПредставление);
            
            ТабДокумент.Вывести(ОбластьМакета);
            
        КонецЦикла;
        
        #Область ол_ЗаполнениеИтогов        
        // Вывод итогов.
        ол_ОбластьМакета = Макет.ПолучитьОбласть("ол_Итого");
        ол_ОбластьМакета.Параметры.ол_СуммаДокумента = Формат(ВыборкаДокументы.ол_СуммаДокумента);
        ТабДокумент.Вывести(ол_ОбластьМакета);
        #КонецОбласти
                
        // Вывод подписей.
        ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
        ОбластьМакета.Параметры.ОтветственныйПредставление = "/"+ ВыборкаДокументы.ОтветственныйПредставление + "/";
        ТабДокумент.Вывести(ОбластьМакета);
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
        
    КонецЦикла;
    
    Возврат ТабДокумент;
    
КонецФункции
2 LastSoldier
 
24.09.14
14:35
3 Wobland
 
24.09.14
14:36
ТЧ.Итог("ол_Сумма")
или СУММА(ол_Сумма) в запросе
4 Wobland
 
24.09.14
14:37
5 LastSoldier
 
24.09.14
14:42
Так через "ЗапросПоДокументам" не надо обращаться?

Обратиться перед?
   #Область ол_ЗаполнениеИтогов        
        // Вывод итогов.

        ол_ОбластьМакета = Макет.ПолучитьОбласть("ол_Итого");
        ол_ОбластьМакета.Параметры.ол_СуммаДокумента = Формат(ВыборкаДокументы.ол_СуммаДокумента);
        ТабДокумент.Вывести(ол_ОбластьМакета);
        #КонецОбласти
6 LastSoldier
 
24.09.14
14:53
Если прописывать в запросе так, то вылетает куча ошибок
|       Итог("ол_Сумма")         КАК ол_СуммаДокумента,
7 Wobland
 
24.09.14
14:54
(6) а что за Итог()?
8 LastSoldier
 
24.09.14
15:01
Попробовал так СУММА(ол_Сумма), пишет  {Документ.СборкаТоваров.МодульМенеджера(2986)}: Ошибка при вызове метода контекста (Выполнить)
    ВыборкаДокументы = ЗапросПоДокументам.Выполнить().Выбрать();
по причине:
{(26, 3)}: Поле не входит в группу "НомерСтроки"
<<?>>НомерСтроки КАК НомерСтроки,
9 barrgand
 
24.09.14
15:12
(8) Оставь запрос. не твое это. Используй 1-ое из (3)
10 LastSoldier
 
24.09.14
15:45
Первое то же не получилось (
11 Wobland
 
24.09.14
15:46
(10) почему?
12 LastSoldier
 
24.09.14
16:30
А как в моем варианте добавить это поле в групировку "НомерСтроки"?
Чтобы не было этой ошибки
"Поле не входит в группу "НомерСтроки""
13 LastSoldier
 
29.09.14
11:10
(11) Так как вы писали не получилось.
Но вот как я написал ол_ОбластьМакета.Параметры.ол_СуммаДокумента =ВыборкаДокументы.Ссылка.Товары.итог("ол_Сумма");

и это рабочий вариант вместо этого
ол_ОбластьМакета.Параметры.ол_СуммаДокумента = Формат(ВыборкаДокументы.ол_СуммаДокумента);
14 Ерепень
 
29.09.14
11:17
не за что
Независимо от того, куда вы едете — это в гору и против ветра!