Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:45

Не выводится значение в при печати

Автор Oleg999, 28 авг 2013, 12:25

0 Пользователей и 1 гость просматривают эту тему.

Oleg999

Добрый день! Есть Расходная накладная в УТ 11 версии. Необходимо чтобы в ней вместо Контрагента в поле Покупатель выводился объект(это все для Реализации товаров и услуг) Имеем код, но в результате при выводе на печать пустое поле, почему?

// Функция формирует печатную форму Расходная Накладная документа.
//
Функция СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати)
   
   УстановитьПривилегированныйРежим(Истина);
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_РасходнаяНакладная";
   
   КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
   ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
   
   ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
   ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
   ИспользоватьУпаковки             = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
   
   ЗапросПоСкладам = Новый Запрос;
   ЗапросПоСкладам.Текст = "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |   РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
   |   РеализацияТоваровУслугТовары.Склад КАК Склад,
   |   РеализацияТоваровУслугТовары.Склад.ИспользоватьСерииНоменклатуры КАК ИспользоватьСерииНоменклатуры
   |ИЗ
   |   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
   |ГДЕ
   |   РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
   |   И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
   |
   |УПОРЯДОЧИТЬ ПО
   |   Ссылка
   |ИТОГИ ПО
   |   ИспользоватьСерииНоменклатуры";
   
   ЗапросПоСкладам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   
   
   
   // Создание массива для проверки: какие из докуметов не попали в выборку
   МассивПроверки = Новый Массив;
   Для Каждого Ссылка Из МассивОбъектов Цикл
      МассивПроверки.Добавить(Ссылка);
   КонецЦикла;
   
   ДеревоОбъектов = ЗапросПоСкладам.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
      
   Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
      
      Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
         
         ТекстЗапросаПоТоварам =
         "ВЫБРАТЬ
         |   РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
         |   РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация,
         |   РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
         |   РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
         |   РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
         |   РеализацияТоваровУслугТовары.Ссылка.Организация.Префикс КАК Префикс,
         |   РеализацияТоваровУслугТовары.Склад КАК Склад,
         |   ВЫБОР
         |      КОГДА РеализацияТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
         |         ТОГДА ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения)
         |      ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Упаковка.ЕдиницаИзмерения)
         |   КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
         |   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
         |   РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
         |   РеализацияТоваровУслугТовары.Количество КАК Количество,
         |   РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
         |   РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
         |   РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
         |   РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК Характеристика,
         |   ВЫБОР КОГДА ЕСТЬNULL(РеализацияТоваровУслугТовары.Упаковка.Коэффициент, 1) = 1
         |      ТОГДА НЕОПРЕДЕЛЕНО
         |      ИНАЧЕ РеализацияТоваровУслугТовары.Упаковка.Наименование
         |   КОНЕЦ КАК Упаковка,
         |   """" КАК Серия
         |ИЗ
         |   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
         |ГДЕ
         |   РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
         |   И РеализацияТоваровУслугТовары.Склад В (&МассивСкладов)
         |   И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
         |   И РеализацияТоваровУслугТовары.СтатусУказанияСерий <> 2
         |   И РеализацияТоваровУслугТовары.СтатусУказанияСерий <> 4
         |   И РеализацияТоваровУслугТовары.СтатусУказанияСерий <> 6
         |   И РеализацияТоваровУслугТовары.СтатусУказанияСерий <> 8
         |   И РеализацияТоваровУслугТовары.СтатусУказанияСерий <> 10
         |
         |ОБЪЕДИНИТЬ ВСЕ
         |
         |ВЫБРАТЬ
         |   РеализацияТоваровУслугСерии.Ссылка КАК Ссылка,
         |   РеализацияТоваровУслугСерии.Ссылка.Организация КАК Организация,
         |   РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
         |   РеализацияТоваровУслугСерии.Ссылка.Номер КАК Номер,
         |   РеализацияТоваровУслугСерии.Ссылка.Дата КАК Дата,
         |   РеализацияТоваровУслугСерии.Ссылка.Организация.Префикс КАК Префикс,
         |   РеализацияТоваровУслугСерии.Склад КАК Склад,
         |   РеализацияТоваровУслугСерии.Номенклатура.ЕдиницаИзмерения КАК ПредставлениеЕдининицыИзмеренияУпаковки,
         |   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугСерии.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
         |   РеализацияТоваровУслугСерии.Количество КАК КоличествоУпаковок,
         |   РеализацияТоваровУслугСерии.Количество КАК Количество,
         |   РеализацияТоваровУслугСерии.Номенклатура.Код КАК Код,
         |   РеализацияТоваровУслугСерии.Номенклатура.Артикул КАК Артикул,
         |   РеализацияТоваровУслугСерии.Номенклатура.НаименованиеПолное КАК Номенклатура,
         |   РеализацияТоваровУслугСерии.Характеристика.НаименованиеПолное КАК Характеристика,
         |   НЕОПРЕДЕЛЕНО КАК Упаковка,
         |   РеализацияТоваровУслугСерии.Серия.Наименование КАК Серия
         |ИЗ
         |   Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
         |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
         |      ПО РеализацияТоваровУслугСерии.Ссылка = ТаблицаТовары.Ссылка
         |         И РеализацияТоваровУслугСерии.Номенклатура = ТаблицаТовары.Номенклатура
         |         И РеализацияТоваровУслугСерии.Характеристика = ТаблицаТовары.Характеристика
         |         И РеализацияТоваровУслугСерии.Склад = ТаблицаТовары.Склад
         |         И РеализацияТоваровУслугСерии.ДокументРезерваСерий = ТаблицаТовары.ДокументРезерваСерий
         |   
         |ГДЕ
         |   РеализацияТоваровУслугСерии.Ссылка В(&МассивОбъектов)
         |   И РеализацияТоваровУслугСерии.Склад В (&МассивСкладов)
         |   И РеализацияТоваровУслугСерии.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
         |
         |СГРУППИРОВАТЬ ПО
         |   РеализацияТоваровУслугСерии.Ссылка,
         |   РеализацияТоваровУслугСерии.Склад,
         |   РеализацияТоваровУслугСерии.Номенклатура,
         |   РеализацияТоваровУслугСерии.Характеристика,
         |   РеализацияТоваровУслугСерии.Серия,
         |   РеализацияТоваровУслугСерии.Количество,
         |   РеализацияТоваровУслугСерии.НомерСтроки
         |
         |ИМЕЮЩИЕ
         |   МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) = 2
         |   ИЛИ МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) = 4
         |   ИЛИ МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) = 6
         |   ИЛИ МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) = 8
         |   ИЛИ МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) = 10
         |
         |УПОРЯДОЧИТЬ ПО
         |   Ссылка,
         |   Склад,
         |   Номенклатура,
         |   Характеристика,
         |   ПредставлениеЕдининицыИзмеренияУпаковки
         |
         |ИТОГИ ПО
         |   Ссылка,
         |   Склад";
         
      Иначе
         
         ТекстЗапросаПоТоварам =
         "ВЫБРАТЬ
         |   РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
         |   РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация,
         |   РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
         |   РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
         |   РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
         |   РеализацияТоваровУслугТовары.Ссылка.Организация.Префикс КАК Префикс,
         |   РеализацияТоваровУслугТовары.Ссылка.Партнер КАК Партнер,
         |   РеализацияТоваровУслугТовары.Склад КАК Склад,
         |   ВЫБОР
         |      КОГДА РеализацияТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
         |         ТОГДА ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения)
         |      ИНАЧЕ ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Упаковка.ЕдиницаИзмерения)
         |   КОНЕЦ КАК ПредставлениеЕдининицыИзмеренияУпаковки,
         |   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
         |   РеализацияТоваровУслугТовары.КоличествоУпаковок КАК КоличествоУпаковок,
         |   РеализацияТоваровУслугТовары.Количество КАК Количество,
         |   РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
         |   РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
         |   РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
         |   РеализацияТоваровУслугТовары.Характеристика.НаименованиеПолное КАК Характеристика,
         |   ВЫБОР
         |      КОГДА ЕСТЬNULL(РеализацияТоваровУслугТовары.Упаковка.Коэффициент, 1) = 1
         |         ТОГДА НЕОПРЕДЕЛЕНО
         |      ИНАЧЕ РеализацияТоваровУслугТовары.Упаковка.Наименование
         |   КОНЕЦ КАК Упаковка,
         |   """" КАК Серия
         |ИЗ
         |   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
         |ГДЕ
         |   РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
         |   И РеализацияТоваровУслугТовары.Склад В(&МассивСкладов)
         |   И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
         |
         |УПОРЯДОЧИТЬ ПО
         |   Ссылка,
         |   Склад,
         |   РеализацияТоваровУслугТовары.НомерСтроки
         |ИТОГИ ПО
         |   Ссылка,
         |   Склад";
         
      КонецЕсли;
      
            
      ЗапросПоТоварам = Новый Запрос;
      ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
      ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
      ЗапросПоТоварам.УстановитьПараметр("МассивСкладов",  ИспользованиеСерий.Строки.ВыгрузитьКолонку("Склад"));
      
      ПервыйДокумент = Истина;
      
      Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_РасходнаяНакладная");
      
      
      
      
      ШиринаОтсутствующихОбластей = 0;
      Если НЕ ВыводитьКоды Тогда
         ШиринаОтсутствующихОбластей = Макет.Область("КолонкаКодов").ШиринаКолонки;
      КонецЕсли;
      
      Если Не ИспользоватьУпаковки Тогда
         
         ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаКоличестваУпаковок").ШиринаКолонки;
         ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей + Макет.Область("КолонкаПредставленияУпаковок").ШиринаКолонки;
         
      КонецЕсли;
      
      // Раздвинуть колонку "КолонкаТоваров" на ширину отсутствующих областей
      Макет.Область("КолонкаТоваров").ШиринаКолонки = Макет.Область("КолонкаТоваров").ШиринаКолонки + ШиринаОтсутствующихОбластей;
      
      РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление");
      
      ДанныеПечати = ЗапросПоТоварам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      
      Пока ДанныеПечати.Следующий() Цикл
         
         МассивПроверки.Удалить(МассивПроверки.Найти(ДанныеПечати.Ссылка));
         
         НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
         
         ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
         
         ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         Пока ВыборкаПоСкладам.Следующий() Цикл
            
            Если Не ПервыйДокумент Тогда
               ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;
            
            ПервыйДокумент = Ложь;
            
            Область = Макет.ПолучитьОбласть("Заголовок");
            Область.Параметры.ТекстЗаголовка = НСтр("ru='Расходная накладная'");
            ТабличныйДокумент.Вывести(Область);
            
            Область = Макет.ПолучитьОбласть("Шапка");
            Область.Параметры.ПредставлениеРаспоряжения = ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, НСтр("ru='Реализация товаров'"));
            Область.Параметры.ПредставлениеСклада = ВыборкаПоСкладам.Склад;
            ТабличныйДокумент.Вывести(Область);
            
            Область = Макет.ПолучитьОбласть("Поставщик");
            Область.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Организация, ВыборкаПоСкладам.Дата), "ПолноеНаименование");
            ТабличныйДокумент.Вывести(Область);
            
            Область = Макет.ПолучитьОбласть("Покупатель");
            Область.Параметры.ПредставлениеПартнера = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Партнер, ВыборкаПоСкладам.Дата), "ПолноеНаименование");
            ТабличныйДокумент.Вывести(Область);
            
   
            Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
            ТабличныйДокумент.Вывести(Область);
            Если ВыводитьКоды Тогда
               Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
               Область.Параметры.ИмяКолонкиКодов = КолонкаКодов;
               ТабличныйДокумент.Присоединить(Область);
            КонецЕсли;
            Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
            ТабличныйДокумент.Присоединить(Область);
            Если ИспользоватьУпаковки Тогда
               Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиУпаковок");
               ТабличныйДокумент.Присоединить(Область);
            КонецЕсли;
            Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиКоличества");
            ТабличныйДокумент.Присоединить(Область);
            
            СчетСтрок = 1;
            ВыборкаПоТоварам = ВыборкаПоСкладам.Выбрать();
            Пока ВыборкаПоТоварам.Следующий() Цикл
               
               Область = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
               Область.Параметры.НомерСтроки = СчетСтрок;
               СчетСтрок = СчетСтрок + 1;
               ТабличныйДокумент.Вывести(Область);
               Если ВыводитьКоды Тогда
                  Область = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
                  Область.Параметры.ЗначениеКода = ВыборкаПоТоварам[КолонкаКодов];
                  ТабличныйДокумент.Присоединить(Область);
               КонецЕсли;
               Область = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
               
               Область.Параметры.Товар = ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати(
                  ВыборкаПоТоварам.Номенклатура,
                  ВыборкаПоТоварам.Характеристика,
                  ВыборкаПоТоварам.Упаковка,
                  ВыборкаПоТоварам.Серия
               );
               
               ТабличныйДокумент.Присоединить(Область);
               
               Если ИспользоватьУпаковки Тогда
                  Область = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиУпаковок");
                  Область.Параметры.Заполнить(ВыборкаПоТоварам);
                  ТабличныйДокумент.Присоединить(Область);
               КонецЕсли;
               
               Область = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиКоличества");
               Область.Параметры.Заполнить(ВыборкаПоТоварам);
               ТабличныйДокумент.Присоединить(Область);
               
            КонецЦикла;
            
            Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
            ТабличныйДокумент.Вывести(Область);
            Если ВыводитьКоды Тогда
               Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
               ТабличныйДокумент.Присоединить(Область);
            КонецЕсли;
            Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
            ТабличныйДокумент.Присоединить(Область);
            Если ИспользоватьУпаковки Тогда
               Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиУпаковок");
               ТабличныйДокумент.Присоединить(Область);
            КонецЕсли;
            Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиКоличества");
            ТабличныйДокумент.Присоединить(Область);
            
            Область = Макет.ПолучитьОбласть("Подписи");
            ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%'");
            ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", СчетСтрок-1);
            Область.Параметры.ИтоговаяСтрока = ТекстИтоговойСтроки;
            ТабличныйДокумент.Вывести(Область);
            
         КонецЦикла;
         УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
         
      КонецЦикла;
      
   КонецЦикла;
   
   Для Каждого Ссылка Из МассивПроверки Цикл
      Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
         НСтр("ru = 'В документе %1 отсутствуют товары. Печать расходной накладной не требуется.'"),
         Ссылка
         );
         
      ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
         Текст,
         Ссылка
      );
   КонецЦикла;
   
   ТабличныйДокумент.АвтоМасштаб = Истина;
   
   Если ПривилегированныйРежим() Тогда
      УстановитьПривилегированныйРежим(Ложь);
   КонецЕсли;
   
   Возврат ТабличныйДокумент;
   
КонецФункции

LordWizard

В принципе достаточно было всего лишь место, где передаете в Макет Контрагента, а не весь код процедур. Там где передаете в макет Покупателя вы проверяли в отладчике? Передача как Партнер в область макета? может там как раз ничего ине происходит
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск