Автор: dadka 21.03.17, 7:57
доброго времени суток. имеется конфигурация Общепит
пишу внешнюю печ.форму для документа Выпуск продукции ОП6
и тут затык - не могу понять, что сделал не так в цикле,
КодНом = 0;
Шапка = ВыборкаПеремещение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Шапка.Следующий() Цикл
Ном = Ном + 1;
ОбластьСтрока.Параметры.Ном = Ном;
ОбластьСтрока.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
ОбластьСтрока.Параметры.Код = ТоварКод;
ОбластьСтрока.Параметры.Единица = ТоварЕдИзм;
ОбластьСтрока.Параметры.КодЕдиницы = ТоварЕдИзмКод;
ОбластьСтрока.Параметры.ИтогоОтпущено = Количество;
ОбластьСтрока.Параметры.ЦенаУчетная = Цена;
ОбластьСтрока.Параметры.СуммаУчетная = Сумма;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
где Шапка.Следующий() всегда = ЛОЖЬ
подскажите, что делаю не так?
Вот весь код ВалютаПечати = Константы.ВалютаРегламентированногоУчета.Получить();
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОП6");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ПолеСверху = 0;
ТабличныйДокумент.ПолеСлева = 0;
ТабличныйДокумент.ПолеСнизу = 0;
ТабличныйДокумент.ПолеСправа = 0;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОП6";
СисИнфо = Новый СистемнаяИнформация;
Если ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра) Тогда
ТабличныйДокумент.ПолеСлева = 0;
Иначе
ТабличныйДокумент.ПолеСлева = 10;
КонецЕсли;
// Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);
// Запрос.УстановитьПараметр("ДатаДок", СсылкаНаОбъект.Дата);
// Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбщепитВыпускПродукции.Ссылка КАК ВыпускПродукции,
| ПеремещениеТоваров.Ссылка КАК Перемещение,
| ПеремещениеТоваров.СкладОтправитель,
| ПеремещениеТоваров.СкладПолучатель
|ПОМЕСТИТЬ втДокументы
|ИЗ
| Документ.ОбщепитВыпускПродукции КАК ОбщепитВыпускПродукции
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
| ПО ОбщепитВыпускПродукции.Ссылка = ПеремещениеТоваров.ДокументОснование
|ГДЕ
| ОбщепитВыпускПродукции.Ссылка В(&МассивОбъектов)
| И ОбщепитВыпускПродукции.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ОбщепитВидыОперацийВыпускПродукции.ВыпускПродукции)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОбщепитВыпускПродукции.Ссылка,
| ОбщепитВыпускПродукции.Ссылка,
| ОбщепитВыпускПродукции.Склад,
| ОбщепитВыпускПродукции.СкладПолучатель
|ИЗ
| Документ.ОбщепитВыпускПродукции КАК ОбщепитВыпускПродукции
|ГДЕ
| ОбщепитВыпускПродукции.Ссылка В(&МассивОбъектов)
| И ОбщепитВыпускПродукции.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ОбщепитВидыОперацийВыпускПродукции.ВыпускПродукцииСперемещением)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втДокументы.ВыпускПродукции,
| втДокументы.Перемещение,
| втДокументы.СкладПолучатель,
| втДокументы.СкладОтправитель,
| ХозрасчетныйОбороты.Субконто1.Код КАК ТоварКод,
| ХозрасчетныйОбороты.Субконто1 КАК Товар,
| ХозрасчетныйОбороты.Субконто1.ЕдиницаИзмерения КАК ТоварЕдИзм,
| ХозрасчетныйОбороты.Субконто1.ЕдиницаИзмерения.Код КАК ТоварЕдИзмКод,
| ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
| ХозрасчетныйОбороты.КоличествоОборотДт КАК Количество
|ПОМЕСТИТЬ втРезультат
|ИЗ
| втДокументы КАК втДокументы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
| &ДатаДок,
| ,
| Запись,
| Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ГотоваяПродукция))
| ИЛИ Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)),
| ,
| ,
| ,
| ) КАК ХозрасчетныйОбороты
| ПО втДокументы.СкладПолучатель = ХозрасчетныйОбороты.Субконто2
| И втДокументы.Перемещение = ХозрасчетныйОбороты.Регистратор
|ГДЕ
| ХозрасчетныйОбороты.Регистратор В
| (ВЫБРАТЬ
| втДокументы.Перемещение
| ИЗ
| втДокументы КАК втДокументы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втРезультат.Перемещение КАК Перемещение,
| втРезультат.СкладПолучатель,
| втРезультат.СкладОтправитель,
| втРезультат.ТоварЕдИзм,
| втРезультат.Товар,
| втРезультат.ТоварЕдИзмКод,
| втРезультат.ТоварКод,
| втРезультат.Сумма,
| втРезультат.Количество,
| втРезультат.Сумма / втРезультат.Количество КАК Цена
|ИЗ
| втРезультат КАК втРезультат
|ИТОГИ ПО
| Перемещение";
Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);
Запрос.УстановитьПараметр("ДатаДок", СсылкаНаОбъект.Дата);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаПеремещение = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПеремещение.Следующий() Цикл
Перемещение = ВыборкаПеремещение.Перемещение;
ВыборкаДетальныеЗаписи = ВыборкаПеремещение.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СкладПолучатель = ВыборкаДетальныеЗаписи.СкладПолучатель;
СкладОтправитель = ВыборкаДетальныеЗаписи.СкладОтправитель;
ТоварЕдИзм = ВыборкаДетальныеЗаписи.ТоварЕдИзм;
Товар = ВыборкаДетальныеЗаписи.Товар;
ТоварЕдИзмКод = ВыборкаДетальныеЗаписи.ТоварЕдИзмКод;
ТоварКод = ВыборкаДетальныеЗаписи.ТоварКод;
Сумма = ВыборкаДетальныеЗаписи.Сумма;
Количество = ВыборкаДетальныеЗаписи.Количество;
Цена = ВыборкаДетальныеЗаписи.Цена;
КонецЦикла;
КонецЦикла;
ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);
ОбластьЗаголовокТаблицы.Параметры.ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации);
ОбластьЗаголовокТаблицы.Параметры.СкладОтправитель = СкладОтправитель;
ОбластьЗаголовокТаблицы.Параметры.СкладПолучатель = СкладПолучатель;
ОбластьЗаголовокТаблицы.Параметры.КодПоОКПО = СведенияОбОрганизации.КодПоОКПО;
ОбластьЗаголовокТаблицы.Параметры.НомерДок = СсылкаНаОбъект.Номер;
ОбластьЗаголовокТаблицы.Параметры.ДатаДок = Формат(СсылкаНаОбъект.Дата, "ДФ=dd.MM.yyyy");
ОбластьЗаголовокТаблицы.Параметры.Должность = "Руководитель службы питания";
ОбластьЗаголовокТаблицы.Параметры.Руководитель = "Мостовой Ю.А.";
ОбластьЗаголовокТаблицы.Параметры.Бухгалтер = "Шайда Л.А.";
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Ном = 0;
Шапка = ВыборкаПеремещение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Шапка.Следующий() Цикл
Ном = Ном + 1;
ОбластьСтрока.Параметры.Ном = Ном;
ОбластьСтрока.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
ОбластьСтрока.Параметры.Код = ТоварКод;
ОбластьСтрока.Параметры.Единица = ТоварЕдИзм;
ОбластьСтрока.Параметры.КодЕдиницы = ТоварЕдИзмКод;
ОбластьСтрока.Параметры.ИтогоОтпущено = Количество;
ОбластьСтрока.Параметры.ЦенаУчетная = Цена;
ОбластьСтрока.Параметры.СуммаУчетная = Сумма;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
Возврат ТабличныйДокумент;
! |
| http://pro1c.org.ua/index.php?act=announce&id=2: №9. Есть специальный тег для публикации кода.
|
Автор: Bernet 21.03.17, 9:28
1. Пожалуйста, редактируйте ваши сообщения, листинг кода можно было выделить специальным тегом...
2. Раз вы получаете в этой строке
Цитата
Шапка.Следующий()=Ложь
всегда, это говорит о том, что либо неправильно составлен запрос, либо нет подходящих под условия данных. В данном случае думаю дело в параметре "МассивОбъектов", в запросе ожидается массив, а вы передаете ссылку, запихните её в массив и попробуйте ещё раз.
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаНаОбъект);
Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);
и ещё не увидел где у вас вообще определяется переменная "СсылкаНаОбъект", проверьте в переменной значение есть или нет. По приведенному коду вижу что нет, разве что это реквизит объекта и он где-то на форме заполнен.
Автор: Vofka 21.03.17, 10:25
У вас 2 раза в коде встречается ВыборкаПеремещение.Выбрать():
ВыборкаДетальныеЗаписи = ВыборкаПеремещение.Выбрать();
и
Шапка = ВыборкаПеремещение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
В первый раз выборка обошлась, поэтому во второй раз уже обходить нечего. Нафига у вас это 2 раза делается?