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

нужна помощь с циклом

Автор Dadka, 21 мар 2017, 09:10

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

Dadka

доброго времени суток. имеется конфигурация Общепит
пишу внешнюю печ.форму для документа Выпуск продукции ОП6
и тут затык - не могу понять, что сделал не так в цикле,

Шапка.Следующий() всегда = ЛОЖЬ
как сделать правильно?

Ном = 0;
   
   Шапка = ВыборкаПеремещение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   Пока Шапка.Следующий() Цикл
                                              
      Ном = Ном + 1;                                                     
      ОбластьСтрока.Параметры.Ном = Ном;
      ОбластьСтрока.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
      ОбластьСтрока.Параметры.Код = ТоварКод;
      ОбластьСтрока.Параметры.Единица = ТоварЕдИзм;
      ОбластьСтрока.Параметры.КодЕдиницы = ТоварЕдИзмКод;
      ОбластьСтрока.Параметры.ИтогоОтпущено = Количество;
      ОбластьСтрока.Параметры.ЦенаУчетная = Цена;
      ОбластьСтрока.Параметры.СуммаУчетная = Сумма;
      ТабличныйДокумент.Вывести(ОбластьСтрока);
   КонецЦикла;

где Шапка.Следующий() всегда = ЛОЖЬ

подскажите, что делаю не так?


вот весь код


   ВалютаПечати = Константы.ВалютаРегламентированногоУчета.Получить();
   
   
   Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОП6");
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   ТабличныйДокумент.АвтоМасштаб         = Истина;
   ТабличныйДокумент.ПолеСверху         = 0;
   ТабличныйДокумент.ПолеСлева            = 0;
   ТабличныйДокумент.ПолеСнизу            = 0;
   ТабличныйДокумент.ПолеСправа         = 0;
   ТабличныйДокумент.ОриентацияСтраницы   = ОриентацияСтраницы.Ландшафт;
   ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОП6";                           
   
   СисИнфо = Новый СистемнаяИнформация;
   Если ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра) Тогда
      ТабличныйДокумент.ПолеСлева          = 0;
   Иначе
      ТабличныйДокумент.ПолеСлева          = 10;
   КонецЕсли;

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


alex0402

Цитата: Dadka от 21 мар 2017, 09:10Шапка.Следующий() всегда = ЛОЖЬ

значит запрос по шапке всегда пустой нужно смотреть запрос.
Спасибо за Сказать спасибо

Теги:

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

Рейтинг@Mail.ru

Поиск