|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
GF
22.08.18
✎
04:44
|
В обработке есть форма.На ней только выбирается период и вызыввается печать даблдокумента (НачаоПериода и КонецПериода реквизиты обработки)
Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт ЭтотОбъект.ПечатьМ11(); КонецФункции Далее надо обойти все табличные части документов за выбранный в форме период и те строки где есть арбитраж вывести в макет арбитраж, чтобы распечатать и так же точно со стабильностью. То есть должны открываться два макета. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска, | ОтчетПроизводстваЗаСменуПродукция.СерияПродукции КАК СерияНоменклатуры, | ОтчетПроизводстваЗаСменуПродукция.Количество КАК Количество, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата КАК Дата, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Номер КАК Номер, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Ссылка КАК Ссылка, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Организация КАК Организация, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Склад КАК Склад, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Подразделение КАК Подразделение, | ВЫБОР | КОГДА ОтчетПроизводстваЗаСменуПродукция.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Арбитраж) | ИЛИ ОтчетПроизводстваЗаСменуПродукция.СтатьяЗатратПолучатель = &СтатьяАрбитраж | ТОГДА 1 | КОГДА ОтчетПроизводстваЗаСменуПродукция.СтатьяЗатратПолучатель = &СтатьяСтабильность | ИЛИ ОтчетПроизводстваЗаСменуПродукция.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Стабильность) | ТОГДА 2 | ИНАЧЕ 0 | КОНЕЦ КАК АрбитражИСтабильность, | ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Номенклатура, | ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры, | ОтчетПроизводстваЗаСменуПродукция.КоличествоМест, | ОтчетПроизводстваЗаСменуПродукция.ЕдиницаИзмерения, | ОтчетПроизводстваЗаСменуПродукция.Коэффициент, | ОтчетПроизводстваЗаСменуПродукция.ЕдиницаИзмеренияМест.Коэффициент |ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция |ГДЕ | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ИСТИНА | И (ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.НаправленияВыпуска.НаСклад) | ИЛИ ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.НаправленияВыпуска.НаЗатраты)) | И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода"; //| И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Ссылка = &Ссылка Запрос.УстановитьПараметр("КонецПериода",ЭтотОбъект.КонецПериода); Запрос.УстановитьПараметр("НачалоПериода", ЭтотОбъект.НачалоПериода); Запрос.УстановитьПараметр("СтатьяАрбитраж", Справочники.СтатьяАрбитраж.Указатель); Запрос.УстановитьПараметр("СтатьяСтабильность", Справочники.СтатьяСтабильность.Указатель); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.АрбитражИСтабильность = 0 Тогда Продолжить; ИначеЕсли Выборка.АрбитражИСтабильность = 1 Тогда ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_М11"; // Вывод заголовка Макет = ПолучитьМакет("Арбитраж"); ПервыйДокумент = Истина; Если Не ПервыйДокумент Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; //заполним шапку Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Заголовок = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Выборка.Номер; Область.Параметры.ДатаСоставления = Выборка.Дата; Область.Параметры.разрешил = "Разрешил:" + символы.ПС + "Начальник ОКК"; Область.Параметры.Склад = Выборка.Склад; СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата); Область.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации); Область.Параметры.КодОКПО = СведенияОбОрганизации.КодПоОКПО; Область.Параметры.ПредставлениеПодразделения = "Склад Арбитраж"; //Область.Параметры.ВидДеятельности = "Арбитраж"; ТабДокумент.Вывести(Область); //Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Продукция Цикл Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.Заполнить(Выборка); Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка); //ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам); Область.Параметры.Коэффициент = Выборка.Коэффициент; Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда Область.Параметры.КолКоробок = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1); Конецесли; ТабДокумент.Вывести(Область); //КонецЦикла; Область = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(Область); Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб"); ТабДокумент.Вывести(Область); ТабДокумент.РазмерСтраницы ="A4"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.АвтоМасштаб = Истина; // Возврат ТабДокумент; ИначеЕсли Выборка.АрбитражИСтабильность = 2 Тогда ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_М11"; //Вывод заголовка Макет = ПолучитьМакет("Стабильность"); ПервыйДокумент = Истина; Если Не ПервыйДокумент Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; //заполним шапку Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Заголовок = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Выборка.Номер; Область.Параметры.ДатаСоставления = Выборка.Дата; Область.Параметры.разрешил = "Разрешил:" + символы.ПС + "Начальник ОКК"; Область.Параметры.Склад = Выборка.Склад; СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата); Область.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации); Область.Параметры.КодОКПО = СведенияОбОрганизации.КодПоОКПО; Область.Параметры.ПредставлениеПодразделения = "Склад Стабильность"; //Область.Параметры.ВидДеятельности = "Стабильность"; ТабДокумент.Вывести(Область); // Для Каждого ТекущаяСтрока Из Выборка.Продукция Цикл Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.Заполнить(Выборка); Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка); //ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам); Область.Параметры.Коэффициент = Выборка.Коэффициент; Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда Область.Параметры.КолКоробок = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1); Конецесли; ТабДокумент.Вывести(Область); //КонецЦикла; Область = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(Область); Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб"); ТабДокумент.Вывести(Область); ТабДокумент.РазмерСтраницы ="A4"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.АвтоМасштаб = Истина; КонецЕсли; КонецЦикла; Возврат ТабДокумент; КонецФункции; После выбора периода нажимаю кнопку "выполнить" и ничего не происходит. Подскажите где ошибка. Почему макеты не заполняются!? |
|||
1
shadow_sw
22.08.18
✎
06:53
|
запрос данные то показывает? а то может у тебя все в 0
|
|||
2
lesorubka
22.08.18
✎
07:05
|
а команда ТабДокумент.Показать() есть?
|
|||
3
GF
22.08.18
✎
07:05
|
Да,показывает, в консоли. Да и отладчиком тоже показывает, что все находит.
|
|||
4
GF
22.08.18
✎
07:06
|
(2) Поподробнее можно
|
|||
5
мистер игрек
22.08.18
✎
07:07
|
Отладчик что показывает?
|
|||
6
GF
22.08.18
✎
07:07
|
(2) Не попадалась мне что-то табдоокумен.показать() нив одной печатной форме
|
|||
7
shadow_sw
22.08.18
✎
07:07
|
(2) точно!
|
|||
8
GF
22.08.18
✎
07:09
|
(7) Подскажите,плиз, в каком блин месте надо это воткнуть.
|
|||
9
shadow_sw
22.08.18
✎
07:11
|
вместо возврат Табдокумент
|
|||
10
GF
22.08.18
✎
07:16
|
(9) {ВнешняяОбработка.М11.МодульОбъекта(233)}: Обращение к процедуре объекта как к функции (Показать)
Возврат ТабДокумент.Показать(); У меня же функция Печать() |
|||
11
shadow_sw
22.08.18
✎
07:20
|
куда возвращает функция то?
|
|||
12
GF
22.08.18
✎
07:22
|
(11) эм... самое начало моего обращения собственно
В обработке есть форма.На ней только выбирается период и вызыввается печать табдокумента (НачаоПериода и КонецПериода реквизиты обработки) Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт ЭтотОбъект.Печать(); КонецФункции Остальное это функция в модуле формы экспортная Печать() соответственно |
|||
13
GF
22.08.18
✎
07:24
|
(11) тьфу ты в модуле объекта конечно же Печчать()
|
|||
14
Мимохожий Однако
22.08.18
✎
07:26
|
Дойди отладчиком до конца. Т.е. до момента заполнения табличного документа. ИМХО, до туда еще не добирался. И смотри как заполняется. Гадать на форуме-всё кофе кончится.
|
|||
15
GF
22.08.18
✎
07:40
|
(14)
Пока выборка.Следующий() Цикл //Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Продукция Цикл Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.Заполнить(Выборка); Область.Параметры.МатериалНаименование = СокрЛП(Выборка.НоменклатураНаименованиеПолное) +ПредставлениеСерий(Выборка); //ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам); Область.Параметры.Коэффициент = Выборка.Коэффициент; Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда Область.Параметры.КолКоробок = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1); Конецесли; ТабДокумент.Вывести(Область); КонецЦикла; Вот сюда в цикл почему-то совсем не заходит |
|||
16
catena
22.08.18
✎
08:02
|
(12)А зачем Печать() - это функция, если ты из нее никакого возврата не ждешь?
|
|||
17
GF
22.08.18
✎
08:17
|
(16) я жду из нее заполненный табдокумент так-то
|
|||
18
dmt
22.08.18
✎
08:25
|
(16) это внешняя печатная форма похоже
(15) отладчиком остановись на строчке "Выборка = Результат.Выбрать();", вычисли выражение Результат.Выгрузить() и посмотри, в ТЗ строки вообще есть? |
|||
19
dmt
22.08.18
✎
08:28
|
и вывод неправильно организован, если ты хочешь 2 таб.документа получить
|
|||
20
GF
22.08.18
✎
09:03
|
(19)
Выборка = ВыборкаДокументов.Выбрать(); //строки Пока выборка.Следующий() Цикл В выборкеДокументов есть данные, а вот в выборке уже нет |
|||
21
GF
22.08.18
✎
09:04
|
(19) Подскажи,пожалуйста, как правильно организовать вывод
|
|||
22
dmt
22.08.18
✎
09:15
|
(21) выложил бы отчет, чтоб время не тратить
А принцип такой: в запрос добавляешь секцию Итоги по АрбитражИСтабильность Вывод такой: Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл // вывод шапки д/каждого АрбитражИСтабильность ВыборкаДетальные = Выборка.Выбрать(ОбходРезультатаЗапроса.Прямой); Пока ВыборкаДетальные.Следующий() Цикл // вывод строки КонецЦикла; КонецЦикла; |
|||
23
catena
22.08.18
✎
10:47
|
(17)Нет, не ждешь. Ты результат функции никому не присваиваешь
Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт ЭтотОбъект.ПечатьМ11(); КонецФункции (18)Ну так, даже с внешними надо понимать, что делает код, а не писать строчки в случайном порядке в надежде на "Войну и мир" на выходе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |