kodblack
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите, где ошибка… Есть документ «распределение» в нем формируются ТЧ: Заказ, клиент, накл, и СФ. Создана форма по групповой печати: ТТН, ТН, и тд и УПД. Если печатать из распределения УПД – то все данные по УПД – выходят. НО, если печатать из формы групп печать, где данные формируются из 5-20 распределений, в которых по 3-20 СФ, выдает ошибку. В модуле распр: Подробности &НаСервере Функция ПечатьНаСервере () Экспорт МассивНаправлений = Направление.НаправленияСборки.ВыгрузитьКолонку("Направление"); тзРаспределения = тРаспределения.Выгрузить(Новый Структура("Выбор", Истина),"Распределение"); МассивРаспределений = тзРаспределения.ВыгрузитьКолонку("Распределение"); МассивРеализаций = Новый Массив; МассивСФ = Новый Массив; МассивОбъектов = Новый Массив; Для Каждого СтрТЧ ИЗ МассивРаспределений Цикл Для Каждого СтрЗаказы ИЗ СтрТЧ.Заказы Цикл МассивРеализаций.Добавить(СтрЗаказы.Накладная); МассивСФ.Добавить(СтрЗаказы.СчетФактура); КонецЦикла; КонецЦикла; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.ОтображатьЗаголовки = Ложь; ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.Защита = Истина; Если ПечатьУПД Тогда ТабДокУПД = Документы._Распределение.СформироватьНесколькоУПД(МассивОбъектов, ДанныеДляПечати, ОбъектыПечати, МассивНаправлений); ТабДокумент.Вывести(ТабДокУПД); КонецЕсли; Возврат ТабДокумент; КонецФункции &НаКлиенте Процедура Печать (Команда) Если Дата = '00010101' Тогда Сообщить("Не указана дата"); Возврат; КонецЕсли; Если Не ВсеНаправления И Направление.Пустая() Тогда Сообщить ("Не выбрано направление"); Возврат; КонецЕсли; Если тРаспределения.Количество() = 0 Тогда Сообщить("Не заполнен список документов для печати"); Возврат; КонецЕсли; ЕстьДокументы = Ложь; Для Каждого стр Из тРаспределения Цикл Если стр.Выбор Тогда ЕстьДокументы = Истина; Прервать; КонецЕсли; КонецЦикла; Если Не ЕстьДокументы Тогда Сообщить("Не выбраны документы для печати"); Возврат; КонецЕсли; //ПечатьНаСервере(); ТабДок = ПечатьНаСервере(); //Вывод формы печать из БСП ЭлементКоллекцииДляПечати = Новый Структура; Для Каждого ИмяКолонки Из УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм() Цикл ЭлементКоллекцииДляПечати.Вставить(ИмяКолонки); КонецЦикла; ЭлементКоллекцииДляПечати.ТабличныйДокумент = ТабДок; ЭлементКоллекцииДляПечати.Экземпляров = 1; КоллекцияПечатныхФорм = Новый Массив; КоллекцияПечатныхФорм.Добавить(ЭлементКоллекцииДляПечати); ПараметрыОткрытия = Новый Структура("КоллекцияПечатныхФорм, ИсточникДанных, ПараметрыПечати, СтруктураТипов, ДанныеДляПечати, ОбъектыПечати"); ПараметрыОткрытия.КоллекцияПечатныхФорм = КоллекцияПечатныхФорм; ПараметрыОткрытия.ИсточникДанных = КоллекцияПечатныхФорм; ПараметрыОткрытия.ПараметрыПечати = Новый Структура; ПараметрыОткрытия.ПараметрыПечати.Вставить("ЗаголовокФормы", "Печать комплекта документов"); ПараметрыОткрытия.ПараметрыПечати.Вставить("ПереопределитьПользовательскиеНастройкиКоличества", Истина); ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ЭтаФорма, Строка(Новый УникальныйИдентификатор)); КонецПроцедуры В модуле менеджера - распр: Подробности СформироватьНесколькоУПД(МассивОбъектов, ДанныеДляПечати, ОбъектыПечати, МассивНаправлений = "ВСЕ") Экспорт ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ОтображатьЗаголовки = Ложь; ТабличныйДокумент.ОтображатьСетку = Ложь; ТабличныйДокумент.Защита = Ложь; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УПД"; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = Обработки.ПечатьОбщихФорм.ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент,ДанныеДляПечати,ОбъектыПечати); Если ТабличныйДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабличныйДокумент.Вывести(ТабДокументОбъекта); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПД") Тогда МассивСчетовФактур = Новый Массив; Для Каждого ДокСсылка из МассивОбъектов Цикл ДокРаспределение = ДокСсылка.ПолучитьОбъект(); Для Каждого стр из ДокРаспределение.Заказы Цикл Если стр.СчетФактура.ДокументОснование <> Неопределено Тогда нуженУПД = стр.СчетФактура.Контрагент.ДокументыПечатьУПД=стр.СчетФактура.Контрагент.ДокументыПечатьТОРГ12; Если стр.СчетФактура.Контрагент._ДокументыПечатьУПД или нуженУПД Тогда МассивСчетовФактур.Добавить(стр.СчетФактура); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Если МассивСчетовФактур.Количество() > 0 Тогда СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивСчетовФактур); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"), Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); Иначе ПустойТабДок = Новый ТабличныйДокумент; УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "УПД", НСтр("ru='Универсальный передаточный документ (УПД)'"), ПустойТабДок); КонецЕсли; КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда МассивНакладных = Новый Массив; Для Каждого ДокСсылка из МассивОбъектов Цикл ДокРаспределение = ДокСсылка.ПолучитьОбъект(); Для Каждого стр из ДокРаспределение.Заказы Цикл Если стр.Накладная.Контрагент._ДокументыПечатьТОРГ12 Тогда МассивНакладных.Добавить(стр.Накладная); КонецЕсли; КонецЦикла; КонецЦикла; Если МассивНакладных.Количество() > 0 Тогда СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивНакладных); СинонимМакета = НСтр("ru='Товарная накладная без услуг (ТОРГ-12)'"); ПараметрыПечати.Вставить("ВыводитьУслуги",Ложь); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ТОРГ12", СинонимМакета, Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати)); Иначе Сообщить ("В документе нет созданных накладных, печать невозможна. У контрагента, на вкладке: дополнительные данные, не проставлено печатать ТОРГ-12"); КонецЕсли; КонецЕсли; ОШИБКА: в ошибку: шибка при вызове метода контекста (ОткрытьФорму) {Документ._Распределение.Форма.ФормаСписка.Форма(65)}: ОткрытьФорму("Документ._Распределение.Форма.ФормаПакетнойПечати") по причине: Ошибка инициализации модуля: Документ._Распределение.Форма.ФормаПакетнойПечати.Форма по причине: {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) по причине: Ошибка инициализации модуля: Документ._Распределение.Форма.ФормаПакетнойПечати.Форма по причине: {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) {Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(46,87)}: Переменная не определена (ДанныеДляПечати) ТабДокУПД = Документы._Распределение.СформироватьНесколькоУПД(МассивОбъектов, <<?>>ДанныеДляПечати, ОбъектыПечати, МассивНаправлений); |