|
Внешняя печ форма 🠗 (Волшебник 15.07.2024 16:00) | ☑ | ||
---|---|---|---|---|
0
Грюбус
15.07.24
✎
13:34
|
Всем здравствуйте. Клиент попросил сделать в печатной форме по пересчёту остатков доработку сделать. Копирнул всё из типовой формы, а мне говорит, что метод ПараметрыПечати не определён. В типовой форме определения этого метода не нашёл. Не пойму на что ругается
|
|||
1
Волшебник
15.07.24
✎
13:38
|
>> в печатной форме по пересчёту остатков...
Гляньте вот тут, была похожая тема: Автоматическое подставление емейла в впф |
|||
2
rphosts
15.07.24
✎
13:39
|
Типовая тоже внешняя?
|
|||
3
Грюбус
15.07.24
✎
13:39
|
(1) Есть такое
|
|||
4
Грюбус
15.07.24
✎
13:39
|
(2) Нет, типовая внутренняя
|
|||
5
rphosts
15.07.24
✎
13:45
|
(4) в модуле менеджера тоже смотрел?
|
|||
6
Грюбус
15.07.24
✎
13:46
|
(5) Да, смотрел. Из модуля менеджера документа скопировал форму печати, сделал ей определение. А пытаюсь сохранить- ругается и говорит, что переменная ПараметрыПечати не определена. И где её брать- тоже не знаю, потому что в изначальном коде нет её
|
|||
7
Волшебник
15.07.24
✎
13:51
|
(6) Если ругается, что переменная ПараметрыПечати не определена, значит к ней идёт обращение. Ищите с фонариком
|
|||
8
rphosts
15.07.24
✎
13:53
|
так переменная а не метод оказывается
Есть требования к оформлению внешних обработок/печатных форм (специальные вызовы). Видимо копать туда |
|||
9
Волшебник
15.07.24
✎
13:56
|
(8) ой, ну какая разница-то? Если номера строки нет, то чё гадать-то?
|
|||
10
rphosts
15.07.24
✎
14:00
|
(9) нумерация строк осталась с бейсиком, фотраном и фокалом
|
|||
11
Волшебник
15.07.24
✎
14:02
|
(10) Дядя Фёдор? Любой редактор показывает номер строки. В тексте ошибки есть номер строки. Ctrl-G — переход к строке по номеру
|
|||
12
Serg_1960
15.07.24
✎
14:24
|
(0) В типовых конфигурациях, как правило, параметры печати формируются (заполняются) "вне" самой внутренней печатной формы. Вот перво-попавшийся типовой алгоритм из общего модуля:
Процедура СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // Получим менеджер печати МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяМенеджераПечати); // Подготовим коллекцию для формируемых печатных форм КоллекцияПечатныхФорм = ПодготовитьКоллекциюПечатныхФорм(ИменаМакетов); // Подготовим структуру параметров вывода ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода(); ОбъектыПечати = Новый СписокЗначений; // Сформируем печатные формы МенеджерПечати.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); |
|||
13
Мультук
гуру
15.07.24
✎
14:24
|
(0)
Ваше сообщение можно прочитать так: === Я что-то где-то написал. А оно опа - не работает. Что я написал - показывать не буду. Где я написал тоже (вы сами должны догадаться) Текст ошибки -- это вообще сакральная тайна. === |
|||
14
Волшебник
15.07.24
✎
14:25
|
(12) Кстати, вот пример плохого программного кода. Слишком много параметров процедуры, бессмысленные комментарии, которые по сути повторяют программный код и вполне могут быть удалены без потери смысла. Только место занимают
|
|||
16
Serg_1960
15.07.24
✎
14:31
|
(14) У меня иногда складывается мнение, что разработчики используют искусственный интеллект... или отключают свой при написании комментариев.
А по поводу параметров... чем больше параметров - тем гибче алгоритм. |
|||
17
Грюбус
15.07.24
✎
15:05
|
(13) Ну я же объяснил) Хотел сделать впф, скопировал под чистую пф из документа нужного, пытаюсь сохранить- не работает. Просто пытаюсь понять откуда достаётся переменная ПараметрыПечати
СведенияОВнешнейОбработкеЕсли нужен, то вот: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.ПересчетТоваров"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", Метаданные().Синоним); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", Метаданные().Синоним); ПараметрыРегистрации.Вставить("Версия", Метаданные().Комментарий); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, Метаданные().Синоним, "Основная", "ВызовСерверногоМетода", Истина); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры ////////////// Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ТабДок = ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Основная", Метаданные().Синоним, ТабДок); КонецПроцедуры Функция ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов(); ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки; ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки; ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов); ВыводитьГрадацииКачества = ПараметрыПечати.ВыводитьГрадацииКачества; ВыводитьРезультатыПересчета = ПараметрыПечати.ВыводитьРезультатыПересчета; ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПересчетТоваров_ЗаданиеНаПересчетТоваров"; ТекстЗапроса = "ВЫБРАТЬ | ПересчетТоваров.Ссылка КАК Ссылка, | ПересчетТоваров.Представление КАК ПредставлениеДокумента, | ПересчетТоваров.Дата КАК Дата, | ПересчетТоваров.Номер КАК Номер, | ПересчетТоваров.Склад КАК Склад, | ПересчетТоваров.Помещение КАК Помещение, | ПересчетТоваров.ЯчейкаКонсолидацииИзлишковТоваров КАК ЯчейкаИзлишков, | ПересчетТоваров.ЯчейкаКонсолидацииИспорченныхТоваров КАК ЯчейкаИспорченных, | ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Склад) КАК СкладПредставление, | ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Помещение) КАК ПомещениеПредставление, | ПересчетТоваров.Исполнитель.ФизическоеЛицо КАК Исполнитель, | ПересчетТоваров.ПечататьКоличествоПоУчету КАК ПечататьКоличествоПоУчету, | ПересчетТоваров.Статус КАК Статус |ИЗ | Документ.ПересчетТоваров КАК ПересчетТоваров |ГДЕ | ПересчетТоваров.Ссылка В(&МассивОбъектов) | |УПОРЯДОЧИТЬ ПО | ПересчетТоваров.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПересчетТоваровТовары.НомерСтроки КАК НомерСтроки, | ПересчетТоваровТовары.Количество КАК Количество, | ПересчетТоваровТовары.КоличествоУпаковок КАК КоличествоУпаковок, | &ТекстЗамены, | ПересчетТоваровТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление, | ПересчетТоваровТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление, | ПересчетТоваровТовары.Номенклатура КАК Номенклатура, | ПересчетТоваровТовары.Характеристика КАК Характеристика, | ПересчетТоваровТовары.Серия КАК Серия, | ВЫБОР КОГДА ПересчетТоваровТовары.Упаковка.Наименование ЕСТЬ NULL | ТОГДА ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Номенклатура.ЕдиницаИзмерения) | ИНАЧЕ ПересчетТоваровТовары.Упаковка.Наименование | КОНЕЦ КАК ЕдиницаИзмеренияПредставлениеУпаковка, | ПересчетТоваровТовары.Серия.Наименование КАК СерияПредставление, | ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставлениеНоменклатура, | ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Ячейка) КАК ЯчейкаПредставление, | ПересчетТоваровТовары.Номенклатура.Код КАК Код, | ПересчетТоваровТовары.Номенклатура.Артикул КАК Артикул, | ПересчетТоваровТовары.Ссылка КАК Ссылка |ИЗ | Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары |ГДЕ | ПересчетТоваровТовары.Ссылка В(&МассивОбъектов) | |УПОРЯДОЧИТЬ ПО | Ссылка, | ПересчетТоваровТовары.НомерСтроки |ИТОГИ ПО | Ссылка"; Если ВыводитьРезультатыПересчета Тогда ТекстЗамены = " ПересчетТоваровТовары.КоличествоФакт КАК КоличествоФакт, | ПересчетТоваровТовары.КоличествоУпаковокФакт КАК КоличествоУпаковокФакт, | ПересчетТоваровТовары.КоличествоУпаковокФакт - ПересчетТоваровТовары.КоличествоУпаковок КАК КоличествоУпаковокОтклонение,"; Иначе ТекстЗамены = " 0 КАК КоличествоФакт, | 0 КАК КоличествоУпаковокФакт, | 0 КАК КоличествоУпаковокОтклонение,"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗамены,", ТекстЗамены); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Результаты = Запрос.ВыполнитьПакет(); ВыборкаПоДокументам = Результаты[0].Выбрать(); ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПервыйДокумент = Истина; Если ВыводитьРезультатыПересчета Тогда СинонимДокумента = НСтр("ru='Результаты пересчета товаров'", ОбщегоНазначения.КодОсновногоЯзыка()); Иначе СинонимДокумента = НСтр("ru='Задание на пересчет товаров'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецЕсли; Пока ВыборкаПоДокументам.Следующий() Цикл РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс"); ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам); Заголовок = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента); Если ВыводитьРезультатыПересчета И Не ВыборкаПоДокументам.Статус = Перечисления.СтатусыПересчетовТоваров.Выполнено Тогда ТекстСообщения = НСтр("ru = 'Документ ""%ПредставлениеДокумента%"" находится в статусе ""%Статус%"". Печать результатов пересчета возможна только в статусе ""Выполнено""'"); РеквизитыДокумента.Вставить("Представление",ВыборкаПоДокументам.ПредставлениеДокумента); ПредставлениеДокумента = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ПредставлениеДокумента%",ПредставлениеДокумента); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Статус%",ВыборкаПоДокументам.Статус); ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); Продолжить; ИначеЕсли ВыборкаПоДокументам.Статус = Перечисления.СтатусыПересчетовТоваров.Подготовлено Тогда ТекстСообщения = НСтр("ru = 'Документ ""%ПредставлениеДокумента%"" находится в статусе ""%Статус%"". Печать заданий на пересчет возможна в статусах ""%ВРаботе%"", ""%ВнесениеРезультатов%"" и ""%Выполнено%"".'"); РеквизитыДокумента.Вставить("Представление",ВыборкаПоДокументам.ПредставлениеДокумента); ПредставлениеДокумента = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ПредставлениеДокумента%",ПредставлениеДокумента); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Статус%",ВыборкаПоДокументам.Статус); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ВРаботе%", Перечисления.СтатусыПересчетовТоваров.ВРаботе); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ВнесениеРезультатов%", Перечисления.СтатусыПересчетовТоваров.ВнесениеРезультатов); ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Выполнено%", Перечисления.СтатусыПересчетовТоваров.Выполнено); ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); Продолжить; КонецЕсли; ВыводитьПоУчету = ВыборкаПоДокументам.ПечататьКоличествоПоУчету Или ВыводитьРезультатыПересчета; ПоАдресномуСкладу = СкладыСервер.ИспользоватьАдресноеХранение( ВыборкаПоДокументам.Склад, ВыборкаПоДокументам.Помещение, ВыборкаПоДокументам.Дата); Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПересчетТоваров.ПФ_MXL_ЗаданиеПересчетТоваров"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьСкладИсполнитель = Макет.ПолучитьОбласть("СкладИсполнитель"); ОбластьЯчейкаИзлишков = Макет.ПолучитьОбласть("ОбластьЯчейкаИзлишков"); ОбластьЯчейкаИспорченных = Макет.ПолучитьОбласть("ОбластьЯчейкаИспорченных"); Если ПоАдресномуСкладу Тогда Если ВыводитьКоды Тогда ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|НачалоСтроки"); ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|НачалоСтроки"); ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|НачалоСтроки"); ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаКодов"); ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаКодов"); ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаКодов"); ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка"); ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка"); ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка"); Иначе ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|НачалоСтроки"); ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|НачалоСтроки"); ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|НачалоСтроки"); ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки"); ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки"); ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки"); КонецЕсли; Иначе ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицы|Номер"); ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицы|Номер"); ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицы|Номер"); Если ВыводитьКоды Тогда ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаЯчейкаКод"); ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаЯчейкаКод"); ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаЯчейкаКод"); ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки"); ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки"); ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки"); Иначе ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров"); ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров"); ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров"); КонецЕсли; КонецЕсли; ОбластьШапкаТаблицыУпаковки = Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "ШапкаТаблицыЯчейка|КолонкаУпаковок", "ШапкаТаблицы|КолонкаУпаковок")); ОбластьСтрокаТаблицыУпаковки = Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "СтрокаТаблицыЯчейка|КолонкаУпаковок", "СтрокаТаблицы|КолонкаУпаковок")); ОбластьПодвалТаблицыУпаковки = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок"); Если ВыводитьКоды Тогда ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = ПредставлениеКолонкиКодов; КонецЕсли; Если Не ВыводитьПоУчету Тогда Если ВыводитьГрадацииКачества Тогда ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества"); ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества"); ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества"); Иначе ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицы|ФактБезКоличестваПоУчету"); ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицы|ФактБезКоличестваПоУчету"); ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицы|ФактБезКоличестваПоУчету"); КонецЕсли; Иначе ОбластьШапкаТаблицыПоУчету = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаПоУчету"); ОбластьСтрокаТаблицыПоУчету = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаПоУчету"); ОбластьПодвалТаблицыПоУчету = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаПоУчету"); ОбластьШапкаТаблицыОтклонение = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаОтклонение"); ОбластьСтрокаТаблицыОтклонение = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаОтклонение"); ОбластьПодвалТаблицыОтклонение = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаОтклонение"); Если ВыводитьГрадацииКачества Тогда ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества"); ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества"); ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества"); Иначе ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаФакт"); ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаФакт"); ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаФакт"); КонецЕсли; КонецЕсли; Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда Продолжить; КонецЕсли; ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; СтруктураДанныхЗаголовка = Новый Структура; СтруктураДанныхЗаголовка.Вставить("ТекстЗаголовка", Заголовок); ОбластьЗаголовок.Параметры.Заполнить(СтруктураДанныхЗаголовка); ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовок, ВыборкаПоДокументам.Ссылка); ТабличныйДокумент.Вывести(ОбластьЗаголовок); ОбластьСкладИсполнитель.Параметры.ИсполнительПредставление = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Исполнитель, ВыборкаПоДокументам.Дата); ОбластьСкладИсполнитель.Параметры.СкладПредставление = СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоДокументам.СкладПредставление, ВыборкаПоДокументам.ПомещениеПредставление); ТабличныйДокумент.Вывести(ОбластьСкладИсполнитель); Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИзлишков) Тогда ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИзлишков.Параметры, ВыборкаПоДокументам); ТабличныйДокумент.Вывести(ОбластьЯчейкаИзлишков); КонецЕсли; Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИспорченных) Тогда ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИспорченных.Параметры, ВыборкаПоДокументам); ТабличныйДокумент.Вывести(ОбластьЯчейкаИспорченных); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыНачало); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров); ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыУпаковки); Если ВыводитьПоУчету Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыПоУчету); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыФакт); Если ВыводитьПоУчету Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыОтклонение); КонецЕсли; Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало); Если ВыводитьКоды Тогда ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[ИмяКолонкиКодов]; ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов); КонецЕсли; ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати(); ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати( ?(ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.Номенклатура), ВыборкаПоСтрокамТЧ.НоменклатураПредставление, НСтр("ru = '<пустая ячейка>'", ОбщегоНазначения.КодОсновногоЯзыка())), ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление, , ВыборкаПоСтрокамТЧ.СерияПредставление, ДопПараметрыПредставлениеНоменклатуры); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров); ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки); Если ВыводитьПоУчету Тогда ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету); КонецЕсли; ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыФакт); Если ВыводитьПоУчету Тогда ОбластьСтрокаТаблицыОтклонение.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыОтклонение); КонецЕсли; КонецЦикла; ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыНачало); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров); ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыУпаковки); Если ВыводитьПоУчету Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыПоУчету); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыФакт); Если ВыводитьПоУчету Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыОтклонение); КонецЕсли; УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Функция ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров(ПараметрыПечати, МассивОбъектов) Экспорт УчитыватьУпаковки = Не ПараметрыПечати.Свойство("БезДопКолонки"); ТекстЗапроса = ТекстЗапросаТоварыЗаданияОтборРазмещениеТоваров(УчитыватьУпаковки) + ОбщегоНазначенияУТ.РазделительЗапросовВПакете() + "ВЫБРАТЬ | ТаблицаТовары.Ссылка КАК Ссылка, | ТаблицаТовары.Склад КАК Склад, | ТаблицаТовары.Помещение КАК Помещение, | МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки, | ТаблицаТовары.Номенклатура КАК Номенклатура, | ТаблицаТовары.Характеристика КАК Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | ИНАЧЕ ТаблицаТовары.Серия | КОНЕЦ КАК Серия, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | ИЛИ ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) | ТОГДА ТаблицаТовары.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ ТаблицаТовары.Упаковка | КОНЕЦ КАК Упаковка, | СУММА(ТаблицаТовары.Количество) КАК Количество, | СУММА(ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | ТОГДА ТаблицаТовары.Количество | ИНАЧЕ ТаблицаТовары.КоличествоУпаковок | КОНЕЦ) КАК КоличествоУпаковок |ПОМЕСТИТЬ ТаблицаТоваровСуммированная |ИЗ | ТоварыЗадания КАК ТаблицаТовары | |СГРУППИРОВАТЬ ПО | ТаблицаТовары.Ссылка, | ТаблицаТовары.Склад, | ТаблицаТовары.Помещение, | ТаблицаТовары.Номенклатура, | ТаблицаТовары.Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | ИНАЧЕ ТаблицаТовары.Серия | КОНЕЦ, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | ИЛИ ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) | ТОГДА ТаблицаТовары.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ ТаблицаТовары.Упаковка | КОНЕЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеЗадания.Ссылка КАК Ссылка, | ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Ссылка) КАК СсылкаПредставление, | ДанныеЗадания.Номер КАК Номер, | ДанныеЗадания.Дата КАК Дата, | ДанныеЗадания.Склад КАК Склад, | ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Склад) КАК СкладПредставление, | ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Помещение) КАК ПомещениеПредставление, | ЛОЖЬ КАК ЭтоНакладная, | ЛОЖЬ КАК ИспользуетсяАдресноеХранение, | ВЫБОР | КОГДА ДанныеЗадания.Склад.ИспользоватьСкладскиеПомещения | И ДанныеЗадания.Дата >= ДанныеЗадания.Склад.ДатаНачалаИспользованияСкладскихПомещений | ТОГДА ВЫБОР | КОГДА ДанныеЗадания.Помещение.ИспользоватьАдресноеХранениеСправочно | И (НЕ ДанныеЗадания.Помещение.ИспользоватьАдресноеХранение | ИЛИ ДанныеЗадания.Дата < ДанныеЗадания.Помещение.ДатаНачалаАдресногоХраненияОстатков) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ДанныеЗадания.Склад.ИспользоватьАдресноеХранениеСправочно | И (НЕ ДанныеЗадания.Склад.ИспользоватьАдресноеХранение | ИЛИ ДанныеЗадания.Дата < ДанныеЗадания.Склад.ДатаНачалаАдресногоХраненияОстатков) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ | КОНЕЦ КАК ИспользуетсяСправочноеХранение, | ВЫБОР | КОГДА ДанныеЗадания.Склад.ИспользоватьСкладскиеПомещения | И ДанныеЗадания.Дата >= ДанныеЗадания.Склад.ДатаНачалаИспользованияСкладскихПомещений | ТОГДА ДанныеЗадания.Помещение.ИспользованиеРабочихУчастков | ИНАЧЕ ДанныеЗадания.Склад.ИспользованиеРабочихУчастков | КОНЕЦ КАК ИспользованиеРабочихУчастков, | ЛОЖЬ КАК ИспользуетсяОрдернаяСхема, | ДанныеЗадания.Исполнитель.ФизическоеЛицо КАК ИсполнительПредставление, | ДанныеЗадания.ПечататьКоличествоПоУчету КАК ВыводитьПоУчету |ИЗ | Документ.ПересчетТоваров КАК ДанныеЗадания | |ГДЕ | ДанныеЗадания.Ссылка В(&МассивОбъектов) | |УПОРЯДОЧИТЬ ПО | Ссылка, | Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаТоваров.Ссылка КАК Ссылка, | ТаблицаТоваров.Склад КАК Склад, | ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток, | ПРЕДСТАВЛЕНИЕ(ОсновныеЯчейки.Ячейка.РабочийУчасток) КАК ПредставлениеРабочегоУчастка, | ЕСТЬNULL(ОсновныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбхода, | ЕСТЬNULL(ОсновныеЯчейки.Ячейка, &ЯчейкаПоУмолчанию) КАК ОсновнаяЯчейка, | ЕСТЬNULL(ОсновныеЯчейки.Ячейка.Код, """") КАК ОсновнаяЯчейкаПредставление, | ЕСТЬNULL(ОстальныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбходаДополнительнаяЯчейка, | ЕСТЬNULL(ОстальныеЯчейки.Ячейка.Код, """") КАК ЯчейкаПредставление, | ТаблицаТоваров.НомерСтроки КАК НомерСтроки, | ТаблицаТоваров.Номенклатура.Код КАК Код, | ТаблицаТоваров.Номенклатура.Артикул КАК Артикул, | ТаблицаТоваров.Номенклатура КАК Номенклатура, | ТаблицаТоваров.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры, | ТаблицаТоваров.Характеристика КАК Характеристика, | ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики, | Товары.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий, | ТаблицаТоваров.Серия КАК Серия, | ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии, | ТаблицаТоваров.Упаковка КАК Упаковка, | ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Упаковка) КАК ПредставлениеЕдиницыИзмеренияУпаковки, | ПРЕДСТАВЛЕНИЕ(Товары.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения, | ВЫБОР | КОГДА ЕСТЬNULL(Упаковки.ТипУпаковки, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ТоварноеМесто, | ВЫБОР | КОГДА &ЗаданиеПересчета | ТОГДА 0 | ИНАЧЕ ТаблицаТоваров.Количество | КОНЕЦ КАК Количество, | ТаблицаТоваров.КоличествоУпаковок КАК КоличествоУпаковок |ИЗ | ТаблицаТоваровСуммированная КАК ТаблицаТоваров | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО ТаблицаТоваров.Номенклатура = Товары.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки | ПО ТаблицаТоваров.Упаковка = Упаковки.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки | ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура | И ОсновныеЯчейки.ОсновнаяЯчейка | И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад | И ВЫБОР | КОГДА ТаблицаТоваров.Склад.ИспользоватьСкладскиеПомещения | И ТаблицаТоваров.Ссылка.Дата >= ТаблицаТоваров.Склад.ДатаНачалаИспользованияСкладскихПомещений | ТОГДА ТаблицаТоваров.Помещение = ОсновныеЯчейки.Помещение | ИНАЧЕ ОсновныеЯчейки.Помещение = ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) | КОНЕЦ | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОстальныеЯчейки | ПО ТаблицаТоваров.Номенклатура = ОстальныеЯчейки.Номенклатура | И НЕ ОстальныеЯчейки.ОсновнаяЯчейка | И ТаблицаТоваров.Склад = ОстальныеЯчейки.Склад | И ВЫБОР | КОГДА ТаблицаТоваров.Склад.ИспользоватьСкладскиеПомещения | И ТаблицаТоваров.Ссылка.Дата >= ТаблицаТоваров.Склад.ДатаНачалаИспользованияСкладскихПомещений | ТОГДА ТаблицаТоваров.Помещение = ОстальныеЯчейки.Помещение | ИНАЧЕ ОстальныеЯчейки.Помещение = ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | Ссылка, | Склад, | РабочийУчасток, | НомерСтроки, | Номенклатура, | Характеристика, | Серия | |ИТОГИ ПО | Ссылка, | Склад, | РабочийУчасток |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаТоваров.Ссылка КАК Ссылка, | ТаблицаТоваров.Склад КАК Склад, | ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток, | ТаблицаТоваров.НомерСтроки КАК НомерСтроки, | ТаблицаТоваров.Номенклатура КАК Номенклатура, | ТаблицаТоваров.Характеристика КАК Характеристика, | ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии |ИЗ | ТоварыЗадания КАК ТаблицаТоваров | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки | ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура | И ОсновныеЯчейки.ОсновнаяЯчейка | И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад | И ВЫБОР | КОГДА ТаблицаТоваров.Склад.ИспользоватьСкладскиеПомещения | И ТаблицаТоваров.Ссылка.Дата >= ТаблицаТоваров.Склад.ДатаНачалаИспользованияСкладскихПомещений | ТОГДА ТаблицаТоваров.Помещение = ОсновныеЯчейки.Помещение | ИНАЧЕ ОсновныеЯчейки.Помещение = ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) | КОНЕЦ | |ГДЕ | ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий | И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | Ссылка, | Склад, | РабочийУчасток, | НомерСтроки, | Номенклатура, | Характеристика"; ЗаданиеПересчета = (ПараметрыПечати.ТипЗадания = "ЗаданиеНаПересчет"); Если ЗаданиеПересчета Тогда ТекстУсловияТоваровЗадания = " И (ТоварыДокумента.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), | ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) | ИЛИ ТоварыДокумента.Номенклатура.ТипНоменклатуры ЕСТЬ NULL)"; Иначе ТекстУсловияТоваровЗадания = ""; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ТекстУсловияТоваровЗадания", ТекстУсловияТоваровЗадания); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&НастройкаИспользованияСерий", "ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&РабочийУчастокПоУмолчанию", "ЗНАЧЕНИЕ(Справочник.РабочиеУчастки.ПустаяСсылка)"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЯчейкаПоУмолчанию", "ЗНАЧЕНИЕ(Справочник.СкладскиеЯчейки.ПустаяСсылка)"); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.УстановитьПараметр("ЗаданиеПересчета", ЗаданиеПересчета); УстановитьПривилегированныйРежим(Истина); Результат = Запрос.ВыполнитьПакет(); УстановитьПривилегированныйРежим(Ложь); МаксимальныйИндекс = Результат.ВГраница(); ДанныеЗадания = Новый Структура; ДанныеЗадания.Вставить("РезультатПоОшибкам", Неопределено); ДанныеЗадания.Вставить("РезультатПоРаспоряжениям", Неопределено); ДанныеЗадания.Вставить("РезультатПоШапке", Результат[МаксимальныйИндекс - 2]); ДанныеЗадания.Вставить("РезультатПоТабличнойЧасти", Результат[МаксимальныйИндекс - 1]); ДанныеЗадания.Вставить("РезультатПоУпаковкам", Неопределено); ДанныеЗадания.Вставить("РезультатПоСериям", Результат[МаксимальныйИндекс]); Возврат ДанныеЗадания; КонецФункции Функция ТекстЗапросаТоварыЗаданияОтборРазмещениеТоваров(УчитыватьУпаковки) Если УчитыватьУпаковки Тогда ТекстЗапроса = "ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.Склад КАК Склад, | ДанныеДокумента.Помещение КАК Помещение, | МИНИМУМ(ТоварыДокумента.НомерСтроки) КАК НомерСтроки, | ТоварыДокумента.Номенклатура КАК Номенклатура, | ТоварыДокумента.Характеристика КАК Характеристика, | ТоварыДокумента.Серия КАК Серия, | ТоварыДокумента.Упаковка КАК Упаковка, | СУММА(ТоварыДокумента.Количество) КАК Количество, | СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок |ПОМЕСТИТЬ ТоварыЗадания |ИЗ | Документ.ПересчетТоваров.Товары КАК ТоварыДокумента | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ДанныеДокумента | ПО ТоварыДокумента.Ссылка = ДанныеДокумента.Ссылка | |ГДЕ | ТоварыДокумента.Ссылка В(&МассивОбъектов) | И &ТекстУсловияТоваровЗадания | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.Ссылка, | ДанныеДокумента.Склад, | ДанныеДокумента.Помещение, | ТоварыДокумента.Номенклатура, | ТоварыДокумента.Характеристика, | ТоварыДокумента.Серия, | ТоварыДокумента.Упаковка"; Иначе ТекстЗапроса = "ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.Склад КАК Склад, | ДанныеДокумента.Помещение КАК Помещение, | МИНИМУМ(ТоварыДокумента.НомерСтроки) КАК НомерСтроки, | ТоварыДокумента.Номенклатура КАК Номенклатура, | ТоварыДокумента.Характеристика КАК Характеристика, | ТоварыДокумента.Серия КАК Серия, | &УпаковкаПоУмолчанию КАК Упаковка, | СУММА(ТоварыДокумента.Количество) КАК Количество, | СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок |ПОМЕСТИТЬ ТоварыЗадания |ИЗ | Документ.ПересчетТоваров.Товары КАК ТоварыДокумента | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ДанныеДокумента | ПО ТоварыДокумента.Ссылка = ДанныеДокумента.Ссылка | |ГДЕ | ТоварыДокумента.Ссылка В(&МассивОбъектов) | И ЕСТЬNULL(ТоварыДокумента.Упаковка.ТипУпаковки, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто) | И &ТекстУсловияТоваровЗадания | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.Ссылка, | ДанныеДокумента.Склад, | ДанныеДокумента.Помещение, | ТоварыДокумента.Номенклатура, | ТоварыДокумента.Характеристика, | ТоварыДокумента.Серия, | &УпаковкаПоУмолчанию | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.Склад КАК Склад, | ДанныеДокумента.Помещение КАК Помещение, | МИНИМУМ(ТоварыДокумента.НомерСтроки) КАК НомерСтроки, | ТоварыБезУпаковок.Номенклатура КАК Номенклатура, | ТоварыБезУпаковок.Характеристика КАК Характеристика, | ТоварыБезУпаковок.Серия КАК Серия, | &УпаковкаПоУмолчанию КАК Упаковка, | СУММА(ТоварыДокумента.Количество) КАК Количество, | СУММА(ТоварыДокумента.Количество) КАК КоличествоУпаковок |ИЗ | (ВЫБРАТЬ | ТоварыДокумента.Ссылка КАК Ссылка, | ТоварыДокумента.Номенклатура КАК Номенклатура, | ТоварыДокумента.Характеристика КАК Характеристика, | ТоварыДокумента.Назначение КАК Назначение, | ТоварыДокумента.Серия КАК Серия, | МАКСИМУМ(ТоварыДокумента.Упаковка) КАК Упаковка | ИЗ | Документ.ПересчетТоваров.Товары КАК ТоварыДокумента | | ГДЕ | ТоварыДокумента.Ссылка В(&МассивОбъектов) | И ЕСТЬNULL(ТоварыДокумента.Упаковка.ТипУпаковки, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто) | И &ТекстУсловияТоваровЗадания | | СГРУППИРОВАТЬ ПО | ТоварыДокумента.Ссылка, | ТоварыДокумента.Номенклатура, | ТоварыДокумента.Характеристика, | ТоварыДокумента.Назначение, | ТоварыДокумента.Серия | | ) КАК ТоварыБезУпаковок | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров.Товары КАК ТоварыДокумента | ПО ТоварыБезУпаковок.Ссылка = ТоварыДокумента.Ссылка | И ТоварыБезУпаковок.Номенклатура = ТоварыДокумента.Номенклатура | И ТоварыБезУпаковок.Характеристика = ТоварыДокумента.Характеристика | И ТоварыБезУпаковок.Назначение = ТоварыДокумента.Назначение | И ТоварыБезУпаковок.Серия = ТоварыДокумента.Серия | И ТоварыБезУпаковок.Упаковка = ТоварыДокумента.Упаковка | | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПересчетТоваров КАК ДанныеДокумента | ПО ТоварыБезУпаковок.Ссылка = ДанныеДокумента.Ссылка | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.Ссылка, | ДанныеДокумента.Склад, | ДанныеДокумента.Помещение, | ТоварыБезУпаковок.Номенклатура, | ТоварыБезУпаковок.Характеристика, | ТоварыБезУпаковок.Серия, | &УпаковкаПоУмолчанию"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УпаковкаПоУмолчанию", "ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)"); КонецЕсли; Возврат ТекстЗапроса; КонецФункции |
|||
18
Грюбус
15.07.24
✎
14:48
|
Функция ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
Конкретно в этой строчке он ругается. Хотя всё 1 в 1 как в типовой из конфига |
|||
19
Pprog151713
15.07.24
✎
14:59
|
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
|
|||
20
Грюбус
15.07.24
✎
15:08
|
(19) Не помогло
|
|||
21
Волшебник
15.07.24
✎
15:09
|
(18) В этой строчке он не может ругаться, потому что там нет обращения к переменной ПараметрыПечати
|
|||
22
Волшебник
15.07.24
✎
15:10
|
Ругается где-то тут:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ТабДок = ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати); |
|||
23
Грюбус
15.07.24
✎
15:11
|
(21) Извиняюсь, перегрелся маленько
ТабДок = ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати); Вот эта строка |
|||
24
Грюбус
15.07.24
✎
15:12
|
(22) А почему? Вот у меня в чём вопрос
|
|||
25
Волшебник
15.07.24
✎
15:12
|
наверное ПараметрыПечати = ПараметрыВывода или наоборот
|
|||
26
Волшебник
15.07.24
✎
15:12
|
(24) Потому что нельзя обращаться к необъявленной переменной, это ж очевидно
|
|||
27
Мультук
гуру
15.07.24
✎
15:15
|
(18)
Ну так уберите этот параметр. Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ТабДок = ПечатьЗадания(МассивОбъектов, ОбъектыПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Основная", Метаданные().Синоним, ТабДок); КонецПроцедуры Функция ПечатьЗадания(МассивОбъектов, ОбъектыПечати) |
|||
28
Грюбус
15.07.24
✎
15:19
|
(27) ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
ВыводитьГрадацииКачества = ПараметрыПечати.ВыводитьГрадацииКачества; ВыводитьРезультатыПересчета = ПараметрыПечати.ВыводитьРезультатыПересчета А это тогда не будет работать |
|||
29
Грюбус
15.07.24
✎
15:36
|
(28) А из этого не будет работать вообще половина кода
|
|||
30
maxab72
15.07.24
✎
15:41
|
(28) выкиньте все что не работает. оставьте только то, что должно работать.
|
|||
31
Грюбус
15.07.24
✎
15:46
|
(30) В том то и дело, что должно работать всё. Если не всё будет работать- ничего вообще не будет работать. Я просто пытаюсь понять почему у меня не определяется переменная и как её определить
|
|||
32
Волшебник
15.07.24
✎
15:49
|
(31) Переменная сама не определится, её надо определить вручную:
Перем а; а = 10; У вас это вообще параметр функции Функция ф(а) сделайте ей вызов ф(б) где значение переменной "б" внутри функции будет доступно через "а" |
|||
33
Грюбус
15.07.24
✎
15:54
|
(32) Я не настолько продвинутый, чтоб понимать это. Я только начинаю программировать и мне бы конкретный пример, а не какие-то уравнения)
|
|||
34
Волшебник
15.07.24
✎
16:00
|
(33) Здесь нет уравнений
|
|||
35
Волшебник
15.07.24
✎
16:00
|
(33) Кстати, Ваша фраза говорит о том, что Вы взялись не за своё дело. Закрой конфигуратор, мальчик, и позови взрослых
|
|||
36
maxab72
15.07.24
✎
16:19
|
Любопытно, прошлый пост был три месяца назад. За три месяца можно подготовиться к сертификату... если есть желание.
|
|||
37
Волшебник
15.07.24
✎
20:39
|
(36) Какие желания у бота? Ему приказывают. Или ждут желаний...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |