Не формирует табличный документ ВнешняяОбработка Локальная - Клиент-Сервер
Добрый день.
Подскажите как допилиnь обработку.
В "локальной базе" - работает хорошо.
В перенесенную базу в "облако" - выдает: В обработчике печати не был сформирован табличный документ для: ВнешняяОбработка.
Подскажите как допилиnь обработку.
В "локальной базе" - работает хорошо.
В перенесенную базу в "облако" - выдает: В обработчике печати не был сформирован табличный документ для: ВнешняяОбработка.
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
УказатьНаименованиеКомандыПечати(),
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
Функция ПечатьФормы(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати)
Макет = ПолучитьМакет("МакетОтчета");
ТабличныйДокумент = Новый ТабличныйДокумент;
Первый = Истина;
Для ИндексМассива = 0 По МассивОбъектов.Количество()-1 Цикл
Если НЕ Первый Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
Первый = Ложь;
КонецЕсли;
Документ = МассивОбъектов[ИндексМассива];
// ВЫВОД ШАПКИ ******************************************************
Область = Макет.ПолучитьОбласть("Шапка");
Организация = Документ.Организация;
Область.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
Область.Параметры.КодОКПО = Организация.КодПоОКПО;
НомерДок = СокрЛП(ЗарплатаКадрыОтчеты.НомерНаПечать(Документ.Номер));
Область.Параметры.НомерДок = ?(ЗначениеЗаполнено(НомерДок),НомерДок,СокрЛП(Документ.Номер));
Область.Параметры.ДатаДок = Формат(Документ.Дата,"ДЛФ=Д");
Область.Параметры.Начисление = Документ.Начисление;
ПриказО = "поощрении работников";
ВШапкуПриказа = "";
МотивПоощрения = "";
ГлавномуБухгалтеру = "";
Для каждого СтрокаТЧ из Документ.ДополнительныеРеквизиты Цикл
Если СтрокаТЧ.Свойство.Имя = "ПриказО" Тогда
ПриказО = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "ВШапкуПриказа" Тогда
ВШапкуПриказа = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "МотивПоощрения" Тогда
МотивПоощрения = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "ГлавномуБухгалтеру" Тогда
ГлавномуБухгалтеру = СтрокаТЧ.Значение;
КонецЕсли;
КонецЦикла;
Область.Параметры.ПриказО = ПриказО;
Область.Параметры.ВШапкуПриказа = ВШапкуПриказа;
Область.Параметры.МотивПоощрения = МотивПоощрения;
НаименованиеВеличины = "Размер, %";
Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
ПерваяСтрокаПоказателиСотрудников = Документ.ПоказателиСотрудников.Получить(0);
Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
НаименованиеВеличины = "Сумма, руб";
КонецЕсли;
Иначе НаименованиеВеличины = "Стаж непрерывной работы на " + Формат(Документ.Дата,"ДЛФ=Д");
КонецЕсли;
Область.Параметры.НаименованиеВеличины = НаименованиеВеличины;
ТабличныйДокумент.Вывести(Область);
// ВЫВОД СОТРУДНИКОВ *************************************************
Для Каждого ТекСтрока Из Документ.Сотрудники Цикл
Сотрудник = ТекСтрока.Сотрудник;
ИдентификаторСтрокиСотрудника = ТекСтрока.ИдентификаторСтрокиСотрудника;
Величина = 0;
Для каждого СтрокаПоказатели Из Документ.ПоказателиСотрудников Цикл
Если ИдентификаторСтрокиСотрудника = СтрокаПоказатели.ИдентификаторСтрокиСотрудника Тогда
Величина = СтрокаПоказатели.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
ЗапросСотр = Новый Запрос;
ЗапросСотр.Текст =
"ВЫБРАТЬ
| КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
| КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
| КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
|
|ГДЕ
| КадроваяИсторияСотрудниковИнтервальный.ГоловнаяОрганизация = &ГоловнаяОрганизация
| И КадроваяИсторияСотрудниковИнтервальный.Сотрудник = &Сотрудник
| И &ДатаПриказа МЕЖДУ КадроваяИсторияСотрудниковИнтервальный.ДатаНачала И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания
|";
ЗапросСотр.УстановитьПараметр("ГоловнаяОрганизация", Организация.ГоловнаяОрганизация);
ЗапросСотр.УстановитьПараметр("Сотрудник", Сотрудник);
ЗапросСотр.УстановитьПараметр("ДатаПриказа", Документ.Дата);
Попытка
РезультатЗапросаСотр = ЗапросСотр.Выполнить();
Исключение
Сообщить("Не удалось выполнить запрос по сотр");
КонецПопытки;
ТаблицаЗначений = РезультатЗапросаСотр.Выгрузить();
Должность = Справочники.Должности.ПустаяСсылка();
Подразделение = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
Для каждого СтрокаТабл Из ТаблицаЗначений Цикл
Должность = СтрокаТабл.Должность;
Подразделение = СтрокаТабл.Подразделение;
КонецЦикла;
Область = Макет.ПолучитьОбласть("Сотр");
Область.Параметры.ФИО = Сотрудник.Наименование;
ТабНомер = СокрЛП(ЗарплатаКадрыОтчеты.ТабельныйНомерНаПечать(Сотрудник.Код));
ТабНомер = ТабНомБезНулей(ТабНомер);
Область.Параметры.ТабНомер = СокрЛП(ТабНомер);
Область.Параметры.Подразделение = СокрЛП(Подразделение.Наименование);
Область.Параметры.Должность = СокрЛП(Должность.Наименование);
Область.Параметры.Период = " " + Формат(ТекСтрока.ДатаНазначения,"ДЛФ=Д") + " - " + Формат(ТекСтрока.ДатаОкончания,"ДЛФ=Д");
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
// ВЫВОД ПОДВАЛА **************************************************************
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ГлавномуБухгалтеру = СокрЛП(ГлавномуБухгалтеру);
Область.Параметры.ФИОРуководителя = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОтображатьСетку = Ложь;
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
(15) ОК. Тогда такое предложение. Верните назад ПолноеИмя(), Но в функции СведенияОВнешнейОбработке замените строку
на чтото типо такого:
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
на чтото типо такого:
ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
(18) Уже лучше
Еще тут надо поменять:
Еще тут надо поменять:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Как неудобно читать код не обрамленный в соответствующие тэги :-(
А входящие данные одни и те же в облаке и локально? Проверяли локально как? В отладочной форме или в подключенном к подсистеме дополнительных печатных форм виде? Есть предположение, что не хватает данных для нормальной публикации.
ПС: запрос в цикле... не красиво так делать :-)
А входящие данные одни и те же в облаке и локально? Проверяли локально как? В отладочной форме или в подключенном к подсистеме дополнительных печатных форм виде? Есть предположение, что не хватает данных для нормальной публикации.
ПС: запрос в цикле... не красиво так делать :-)
(4)
данные идентичные.
данные идентичные.
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
УказатьНаименованиеКомандыПечати(),
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
ПоказатьФункция ПечатьФормы(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати)
Макет = ПолучитьМакет("МакетОтчета");
ТабличныйДокумент = Новый ТабличныйДокумент;
Первый = Истина;
Для ИндексМассива = 0 По МассивОбъектов.Количество()-1 Цикл
Если НЕ Первый Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
Первый = Ложь;
КонецЕсли;
Документ = МассивОбъектов[ИндексМассива];
// ВЫВОД ШАПКИ ******************************************************
Область = Макет.ПолучитьОбласть("Шапка");
Организация = Документ.Организация;
Область.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
Область.Параметры.КодОКПО = Организация.КодПоОКПО;
НомерДок = СокрЛП(ЗарплатаКадрыОтчеты.НомерНаПечать(Документ.Номер));
Область.Параметры.НомерДок = ?(ЗначениеЗаполнено(НомерДок),НомерДок,СокрЛП(Документ.Номер));
Область.Параметры.ДатаДок = Формат(Документ.Дата,"ДЛФ=Д");
Область.Параметры.Начисление = Документ.Начисление;
ПриказО = "поощрении работников";
ВШапкуПриказа = "";
МотивПоощрения = "";
ГлавномуБухгалтеру = "";
Для каждого СтрокаТЧ из Документ.ДополнительныеРеквизиты Цикл
Если СтрокаТЧ.Свойство.Имя = "ПриказО" Тогда
ПриказО = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "ВШапкуПриказа" Тогда
ВШапкуПриказа = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "МотивПоощрения" Тогда
МотивПоощрения = СтрокаТЧ.Значение;
ИначеЕсли СтрокаТЧ.Свойство.Имя = "ГлавномуБухгалтеру" Тогда
ГлавномуБухгалтеру = СтрокаТЧ.Значение;
КонецЕсли;
КонецЦикла;
Область.Параметры.ПриказО = ПриказО;
Область.Параметры.ВШапкуПриказа = ВШапкуПриказа;
Область.Параметры.МотивПоощрения = МотивПоощрения;
НаименованиеВеличины = "Размер, %";
Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
ПерваяСтрокаПоказателиСотрудников = Документ.ПоказателиСотрудников.Получить(0);
Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
НаименованиеВеличины = "Сумма, руб";
КонецЕсли;
Иначе НаименованиеВеличины = "Стаж непрерывной работы на " + Формат(Документ.Дата,"ДЛФ=Д");
КонецЕсли;
Область.Параметры.НаименованиеВеличины = НаименованиеВеличины;
ТабличныйДокумент.Вывести(Область);
// ВЫВОД СОТРУДНИКОВ *************************************************
Для Каждого ТекСтрока Из Документ.Сотрудники Цикл
Сотрудник = ТекСтрока.Сотрудник;
ИдентификаторСтрокиСотрудника = ТекСтрока.ИдентификаторСтрокиСотрудника;
Величина = 0;
Для каждого СтрокаПоказатели Из Документ.ПоказателиСотрудников Цикл
Если ИдентификаторСтрокиСотрудника = СтрокаПоказатели.ИдентификаторСтрокиСотрудника Тогда
Величина = СтрокаПоказатели.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
ЗапросСотр = Новый Запрос;
ЗапросСотр.Текст =
"ВЫБРАТЬ
| КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
| КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
| КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
|
|ГДЕ
| КадроваяИсторияСотрудниковИнтервальный.ГоловнаяОрганизация = &ГоловнаяОрганизация
| И КадроваяИсторияСотрудниковИнтервальный.Сотрудник = &Сотрудник
| И &ДатаПриказа МЕЖДУ КадроваяИсторияСотрудниковИнтервальный.ДатаНачала И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания
|";
ЗапросСотр.УстановитьПараметр("ГоловнаяОрганизация", Организация.ГоловнаяОрганизация);
ЗапросСотр.УстановитьПараметр("Сотрудник", Сотрудник);
ЗапросСотр.УстановитьПараметр("ДатаПриказа", Документ.Дата);
Попытка
РезультатЗапросаСотр = ЗапросСотр.Выполнить();
Исключение
Сообщить("Не удалось выполнить запрос по сотр");
КонецПопытки;
ТаблицаЗначений = РезультатЗапросаСотр.Выгрузить();
Должность = Справочники.Должности.ПустаяСсылка();
Подразделение = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
Для каждого СтрокаТабл Из ТаблицаЗначений Цикл
Должность = СтрокаТабл.Должность;
Подразделение = СтрокаТабл.Подразделение;
КонецЦикла;
Область = Макет.ПолучитьОбласть("Сотр");
Область.Параметры.ФИО = Сотрудник.Наименование;
ТабНомер = СокрЛП(ЗарплатаКадрыОтчеты.ТабельныйНомерНаПечать(Сотрудник.Код));
ТабНомер = ТабНомБезНулей(ТабНомер);
Область.Параметры.ТабНомер = СокрЛП(ТабНомер);
Область.Параметры.Подразделение = СокрЛП(Подразделение.Наименование);
Область.Параметры.Должность = СокрЛП(Должность.Наименование);
Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
Область.Параметры.Величина = Формат(Величина, "ЧЦ=10; ЧДЦ=2");
Иначе
Область.Параметры.Величина = Формат(Величина) + " %";
КонецЕсли;
Иначе
СведенияОСтажах = КадровыйУчетРасширенныйВызовСервера.СведенияОСтажахСотрудника(Сотрудник, Документ.Дата);
Для Каждого ТекСтрокаСтажа Из СведенияОСтажах Цикл
Если ТекСтрокаСтажа.Ключ.Наименование = "Стаж непрерывной работы" Тогда
Область.Параметры.Величина = Формат(ТекСтрокаСтажа.Значение.Лет) + " лет " + Формат(ТекСтрокаСтажа.Значение.Месяцев) + " месяцев " + Формат(ТекСтрокаСтажа.Значение.Дней) + " дней";
КонецЕсли;
КонецЦикла;
КонецЕсли;
Область.Параметры.Период = " " + Формат(ТекСтрока.ДатаНазначения,"ДЛФ=Д") + " - " + Формат(ТекСтрока.ДатаОкончания,"ДЛФ=Д");
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
// ВЫВОД ПОДВАЛА **************************************************************
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ГлавномуБухгалтеру = СокрЛП(ГлавномуБухгалтеру);
ДолжностьОтветственного = "";
ФИООтветственного = "";
Ответственный = Документ.Ответственный;
ДатаОтчета = Документ.Дата;
ОтветственныеЛица = Новый Структура("Организация,Руководитель,ДолжностьРуководителя,РуководительКадровойСлужбы,ДолжностьРуководителяКадровойСлужбы,ГлавныйБухгалтер", Документ.Организация);
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ОтветственныеЛица, ДатаОтчета);
МассивФизЛиц = Новый Массив;
МассивФизЛиц.Добавить(ОтветственныеЛица.Руководитель);
МассивФизЛиц.Добавить(ОтветственныеЛица.ГлавныйБухгалтер);
МассивФизЛиц.Добавить(ОтветственныеЛица.РуководительКадровойСлужбы);
Если ЗначениеЗаполнено(Ответственный) Тогда
МассивФизЛиц.Добавить(Ответственный);
КонецЕсли;
ФИОФизЛиц = ЗарплатаКадры.СоответствиеФИОФизЛицСсылкам(ДатаОтчета, МассивФизЛиц);
ФИОРуководителя = ФИОФизЛиц[ОтветственныеЛица.Руководитель];
ФИОГлавногоБухгалтера = ФИОФизЛиц[ОтветственныеЛица.ГлавныйБухгалтер];
ФИОРуководителяКадровойСлужбы = ФИОФизЛиц[ОтветственныеЛица.РуководительКадровойСлужбы];
ДолжностьРуководителя = ?(ОтветственныеЛица.ДолжностьРуководителя = Неопределено, "", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОтветственныеЛица.ДолжностьРуководителя, "Наименование"));
ДолжностьРуководителяКадровойСлужбы = ?(ОтветственныеЛица.ДолжностьРуководителяКадровойСлужбы = Неопределено, "", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОтветственныеЛица.ДолжностьРуководителяКадровойСлужбы, "Наименование"));
Если ЗначениеЗаполнено(Ответственный) Тогда
СтруктураФИО = Новый Структура("Фамилия,Имя,Отчество");
ЗаполнитьЗначенияСвойств(СтруктураФИО, Ответственный.ФизическоеЛицо);
ФИООтветственного = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(СтруктураФИО);
КонецЕсли;
ФИОГлавногоБухгалтераВДатПадеже = "";
ФИОГлавногоБухгалтера = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(ФИОГлавногоБухгалтера);
Пол = ОтветственныеЛица.ГлавныйБухгалтер.Пол;
РезультатСклонения = "";
Если ФизическиеЛицаЗарплатаКадры.Просклонять(ОтветственныеЛица.ГлавныйБухгалтер, 5, РезультатСклонения, Пол) Тогда
ФИОГлавногоБухгалтераВДатПадеже = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(РезультатСклонения);
КонецЕсли;
Область.Параметры.ФИОГлавногоБухгалтераВДатПадеже = ФИОГлавногоБухгалтераВДатПадеже;
Область.Параметры.ФИОРуководителяКадровойСлужбы = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.РуководительКадровойСлужбы);
Область.Параметры.ДолжностьРуководителя = СокрЛП(ДолжностьРуководителя);
Область.Параметры.ФИОРуководителя = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.ПолеСверху = 5;
ТабличныйДокумент.ПолеСнизу = 5;
ТабличныйДокумент.ПолеСлева = 10;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОтображатьСетку = Ложь;
Возврат ТабличныйДокумент;
КонецФункции
Показать
(6) Судя по исключению, при формировании печатной формы из БСП обработчик даже не доходит до функции ПечатьФормы, Проверьте функцию модуля объекта СведенияОВнешнейОбработке. в частности строки формирования таблицы команд и добавления команды.
что-то типа такого: должно быть:
Особенно обратите внимание на процедуру ДобавитьКоманду, чтобы все колонки таблицы команд были заполнены
что-то типа такого: должно быть:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
МассивНазначений.Добавить("Документ.АвансовыйОтчет");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Акт об оказании услуг");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0.5.1");
ПараметрыРегистрации.Вставить("Информация", "");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Акт об оказании услуг", "АктОбОказанииУслуг", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
ПоказатьОсобенно обратите внимание на процедуру ДобавитьКоманду, чтобы все колонки таблицы команд были заполнены
(7)
данные есть
данные есть
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", Наименование);
ПараметрыРегистрации.Вставить("Версия", "1.1.1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", Наименование);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда. Представление = Представление;
НоваяКоманда. Идентификатор= Идентификатор;
НоваяКоманда. Использование= Использование;
НоваяКоманда. ПоказыватьОповещение= ПоказыватьОповещение;
НоваяКоманда. Модификатор= Модификатор;
КонецФункции
Показать
(11) попробуйте исправить на такой код. мне кажется может помочь:
Думаю поможет. Ваш код возвращает строку вида "ВнешняяОбработка.ИмяВнешнейОбработки". Ошибка, которая возникает, как раз возвращает левую часть этой строки: "не был сформирован табличный документ для: ВнешняяОбработка.". Обычно идентификатор для внешней печатной формы состоит из одного слова в "верблюжем" регистре. Скорее всего без точек.
Функция УказатьНаименованиеКомандыПечати()
Наименование = ЭтотОбъект.Метаданные().Имя;
Возврат Наименование;
КонецФункции
Думаю поможет. Ваш код возвращает строку вида "ВнешняяОбработка.ИмяВнешнейОбработки". Ошибка, которая возникает, как раз возвращает левую часть этой строки: "не был сформирован табличный документ для: ВнешняяОбработка.". Обычно идентификатор для внешней печатной формы состоит из одного слова в "верблюжем" регистре. Скорее всего без точек.
(15) ОК. Тогда такое предложение. Верните назад ПолноеИмя(), Но в функции СведенияОВнешнейОбработке замените строку
на чтото типо такого:
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
на чтото типо такого:
ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
(17)
В обработке печати не был сформирован табличный документ для: ИмяКомандыПечатнойФормы
при изменении
В обработке печати не был сформирован табличный документ для: ИмяКомандыПечатнойФормы
при изменении
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", Наименование);
ПараметрыРегистрации.Вставить("Версия", "11111");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", Наименование);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
//ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция УказатьНаименованиеВнешнейПечатнойФормы()
//Наименование = ЭтотОбъект.Метаданные().Представление();
Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
Возврат Наименование;
КонецФункции
Показать
(18) Уже лучше
Еще тут надо поменять:
Еще тут надо поменять:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
Показать
(19)
! Спасибо. заработало.
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));
КонецПроцедуры
! Спасибо. заработало.
Ну в данном коде я вижу одно подозрительное место:
ОтветственныеЛица вроде раньше нигде не объявляются.
Область.Параметры.ФИОРуководителя = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);
ОтветственныеЛица вроде раньше нигде не объявляются.
В функции СведенияОВнешнейОбработке() модуля объекта дополнительного отчета или обработки для параметра ПараметрыРегистрации.БезопасныйРежим необходимо установить значение Истина.
https://1cfresh.com/articles/so_addprocess_req
(12) не помогает.
такой шаблон у меня во всех обработках и работает
такой шаблон у меня во всех обработках и работает
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", Наименование);
ПараметрыРегистрации.Вставить("Версия", "3.2 от 01.09.2020");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", Наименование);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот