|
групповая печать УПД ↓ (Волшебник 24.04.2023 11:21) |
☑ | ||
---|---|---|---|---|
0
kodblack
24.04.23
✎
09:29
|
Добрый день!
Подскажите, где ошибка… 2 дня уже мучаюсь. Есть документ «распред» в нем формируются ТЧ: Заказ, клиент, накл, и СФ. Создана форма по групповой печати: ТТН, ТН, и тд и УПД. Если печатать из распр: УПД – то из в документа.распред – все данные по СФ – выходят. НО, если печатать из формы групп печать, где данные формируются из 5-20 распред, в которых по 3-20 СФ, выдает ошибку. В модуле распр: Подробности&НаСервере Функция ПечатьНаСервере () Экспорт МассивНаправлений = Направление.НаправленияСборки.ВыгрузитьКолонку("Направление"); тзРаспределения = тРаспределения.Выгрузить(Новый Структура("Выбор", Истина),"Распределение"); МассивРаспределений = тзРаспределения.ВыгрузитьКолонку("Распределение"); МассивРеализаций = Новый Массив; МассивСФ = Новый Массив; МассивОбъектов = Новый Массив; Для Каждого СтрТЧ ИЗ МассивРаспределений Цикл Для Каждого СтрЗаказы ИЗ СтрТЧ.Заказы Цикл МассивРеализаций.Добавить(СтрЗаказы.Накладная); МассивСФ.Добавить(СтрЗаказы.СчетФактура); КонецЦикла; КонецЦикла; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.ОтображатьЗаголовки = Ложь; ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; Если ПечатьУПД Тогда ТабДокУПД = Документы.Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений); ТабДокумент.Вывести(ТабДокУПД); КонецЕсли; Возврат ТабДокумент; КонецФункции &НаКлиенте Процедура Печать (Команда) Если Дата = '00010101' Тогда Сообщить("Не указана дата"); Возврат; КонецЕсли; Если Не ВсеНаправления И Направление.Пустая() Тогда Сообщить ("Не выбрано направление"); Возврат; КонецЕсли; Если тРаспределения.Количество() = 0 Тогда Сообщить("Не заполнен список документов для печати"); Возврат; КонецЕсли; ЕстьДокументы = Ложь; Для Каждого стр Из тРаспределения Цикл Если стр.Выбор Тогда ЕстьДокументы = Истина; Прервать; КонецЕсли; КонецЦикла; Если Не ЕстьДокументы Тогда Сообщить("Не выбраны документы для печати"); Возврат; КонецЕсли; //ПечатьНаСервере(); ТабДок = ПечатьНаСервере(); //Вывод формы печать из БСП ЭлементКоллекцииДляПечати = Новый Структура; Для Каждого ИмяКолонки Из УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм() Цикл ЭлементКоллекцииДляПечати.Вставить(ИмяКолонки); КонецЦикла; ЭлементКоллекцииДляПечати.ТабличныйДокумент = ТабДок; ЭлементКоллекцииДляПечати.Экземпляров = 1; КоллекцияПечатныхФорм = Новый Массив; КоллекцияПечатныхФорм.Добавить(ЭлементКоллекцииДляПечати); ПараметрыОткрытия = Новый Структура("КоллекцияПечатныхФорм, ИсточникДанных, ПараметрыПечати, СтруктураТипов, ДанныеДляПечати, ОбъектыПечати"); ПараметрыОткрытия.КоллекцияПечатныхФорм = КоллекцияПечатныхФорм; ПараметрыОткрытия.ИсточникДанных = КоллекцияПечатныхФорм; ПараметрыОткрытия.ПараметрыПечати = Новый Структура; ПараметрыОткрытия.ПараметрыПечати.Вставить("ЗаголовокФормы", "Печать комплекта документов"); ПараметрыОткрытия.ПараметрыПечати.Вставить("ПереопределитьПользовательскиеНастройкиКоличества", Истина); ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ЭтаФорма, Строка(Новый УникальныйИдентификатор)); КонецПроцедуры В модуле менеджера - распр: ПодробностиФункция СформироватьНесколькоУПД(МассивОбъектов, МассивНаправлений = "ВСЕ", ДанныеДляПечати, ОбъектыПечати) Экспорт ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ОтображатьЗаголовки = Ложь; ТабличныйДокумент.ОтображатьСетку = Ложь; ТабличныйДокумент.Защита = Ложь; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УПД"; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = Обработки.ПечатьОбщихФорм.ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент,ДанныеДляПечати,ОбъектыПечати); Если ТабличныйДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабличныйДокумент.Вывести(ТабДокументОбъекта); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПД") Тогда МассивСчетовФактур = Новый Массив; Для Каждого ДокСсылка из МассивОбъектов Цикл ДокРаспределение = ДокСсылка.ПолучитьОбъект(); Для Каждого стр из ДокРаспределение.Заказы Цикл Если стр.СчетФактура.ДокументОснование <> Неопределено Тогда нуженУПД = стр.СчетФактура.Контрагент.ДокументыПечатьУПД=стр.СчетФактура.Контрагент.ДокументыПечатьТОРГ12; Если стр.СчетФактура.Контрагент.ДОС_ДокументыПечатьУПД или нуженУПД Тогда МассивСчетовФактур.Добавить(стр.СчетФактура); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Если МассивСчетовФактур.Количество() > 0 Тогда СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивСчетовФактур); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"), Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); Иначе ПустойТабДок = Новый ТабличныйДокумент; УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "УПД", НСтр("ru='Универсальный передаточный документ (УПД)'"), ПустойТабДок); КонецЕсли; КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда МассивНакладных = Новый Массив; Для Каждого ДокСсылка из МассивОбъектов Цикл ДокРаспределение = ДокСсылка.ПолучитьОбъект(); Для Каждого стр из ДокРаспределение.Заказы Цикл Если стр.Накладная.Контрагент.ДОС_ДокументыПечатьТОРГ12 Тогда МассивНакладных.Добавить(стр.Накладная); КонецЕсли; КонецЦикла; КонецЦикла; Если МассивНакладных.Количество() > 0 Тогда СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивНакладных); СинонимМакета = НСтр("ru='Товарная накладная без услуг (ТОРГ-12)'"); ПараметрыПечати.Вставить("ВыводитьУслуги",Ложь); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ТОРГ12", СинонимМакета, Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); Иначе Сообщить ("В документе нет созданных накладных, печать невозможна. У контрагента, на вкладке: дополнительные данные, не проставлено печатать ТОРГ-12"); КонецЕсли; КонецЕсли; ОШИБКА: Недостаточно фактических параметров
{Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(43)}:ТабДокУПД = Документы._Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений); {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(98)}:ТабДок = ПечатьНаСервере(); ПЫСЫ Синтаксис предлагает: МассивОбъектов, МассивНаправлений, ДанныеДляПечати, ОбъектыПечати но ни как не данныеДляПечати, ОбъекыПечати и т.д. Если в функцию &НаСервере Функция ПечатьНаСервере () Экспорт ТабДокУПД = Документы.ДОС_Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений, ДанныеДляПечати, ОбъектыПечати); то ошибка, : Переменная не определена (ДанныеДляПечати), Переменная не определена (ОбъектыПечати) |
|||
1
shuhard
24.04.23
✎
09:17
|
(0)[2 дня уже мучаюсь]
поставить точку останова что-то мешает ? |
|||
3
Волшебник
24.04.23
✎
09:26
|
Функция СформироватьНесколькоУПД(МассивОбъектов, МассивНаправлений = "ВСЕ", ДанныеДляПечати, ОбъектыПечати) Экспорт
параметры 3 и 4 обязательные при вызове они не заданы: Документы._Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений); |
|||
4
kodblack
24.04.23
✎
10:24
|
(0), (3)
в функцию добавил:ДанныеДляПечати, ОбъектыПечати) Функция СформироватьНесколькоУПД(МассивОбъектов, ДанныеДляПечати, ОбъектыПечати, МассивНаправлений = "ВСЕ") Экспорт и в вызове в функции добавил: Функция ПечатьНаСервере () Экспорт Если ПечатьУПД Тогда ТабДокУПД = Документы.ДОС_Распределение.СформироватьНесколькоУПД(МассивОбъектов, ДанныеДляПечати, ОбъектыПечати, МассивНаправлений); ТабДокумент.Вывести(ТабДокУПД); КонецЕсли; падает в ошибку: шибка при вызове метода контекста (ОткрытьФорму) {Документ._Распределение.Форма.ФормаСписка.Форма(65)}: ОткрытьФорму("Документ._Распределение.Форма.ФормаПакетнойПечати") по причине: Ошибка инициализации модуля: Документ._Распределение.Форма.ФормаПакетнойПечати.Форма по причине: {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) по причине: Ошибка инициализации модуля: Документ._Распределение.Форма.ФормаПакетнойПечати.Форма по причине: {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) ТабДокУПД = Документы.ДОС_Распределение.СформироватьНесколькоУПД(МассивОбъектов, <<?>>ДанныеДляПечати, ОбъектыПечати, МассивНаправлений); |
|||
5
mikecool
24.04.23
✎
11:01
|
начал читать топик, но сломал мозг на "Если печатать из распр: УПД – то из в документа.распред"
|
|||
6
Волшебник
24.04.23
✎
11:20
|
(4) Вы вообще понимаете, что Вы делаете?
|
|||
7
Волшебник
24.04.23
✎
11:24
|
У Вас переменная не определена (ДанныеДляПечати).
Программирование — это не копирование и вставка фрагментов кода. Тут думать надо. Я продублирую свой тезис: Главное, чтобы не пытались получить от ИИ работающий программный код. Между "около осмысленным текстом" и "работающим программным кодом" есть граница, когда программист визуализирует себя в качество экзекутора программного кода. Для программного кода нужна точность 100% на уровне этой визуализации. |
|||
8
kodblack
24.04.23
✎
11:58
|
(7) По что она не определена, я понял. Как ее передать в функцию?
|
|||
9
Волшебник
24.04.23
✎
12:02
|
(8) Чтобы передавать значение параметра в функцию, его надо иметь, т.е. определить
|
|||
10
kodblack
24.04.23
✎
12:04
|
(6) понимаю.
т.к Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); - у меня расширением изменена форма, до "неузнаваемости", для избежания правки основных форм. ФормаПакетнойПечати - по мимо упд - еще 10 видов печатных форм, но упд, т.к использую основную функцию из системы, не выдает. (8) из Функция СформироватьНесколькоУПД(МассивОбъектов, ДанныеДляПечати, ОбъектыПечати, МассивНаправлений = "ВСЕ") Экспорт у меня же передается ДанныеДляПечати Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = Обработки.ПечатьОбщихФорм.ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент,ДанныеДляПечати,ОбъектыПечати); |
|||
11
Волшебник
24.04.23
✎
12:15
|
(10) Прекратите бредить. Вы ничего не понимаете
|
|||
12
kodblack
24.04.23
✎
13:32
|
(11) подсказали... так себе!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |