Не формирует табличный документ ВнешняяОбработка Локальная - Клиент-Сервер

1. kodblack 14 14.09.20 10:15 Сейчас в теме
Добрый день.
Подскажите как допилиnь обработку.
В "локальной базе" - работает хорошо.
В перенесенную базу в "облако" - выдает: В обработчике печати не был сформирован табличный документ для: ВнешняяОбработка.




Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        УказатьНаименованиеКомандыПечати(),
        УказатьНаименованиеВнешнейПечатнойФормы(),
		ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));

	КонецПроцедуры



Функция ПечатьФормы(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати)
	
	
	Макет = ПолучитьМакет("МакетОтчета");
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
		
	Первый = Истина;
		
	Для ИндексМассива = 0 По МассивОбъектов.Количество()-1 Цикл
		
			
			Если НЕ Первый Тогда 
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			Иначе
				Первый = Ложь;
			КонецЕсли;
					
			Документ = МассивОбъектов[ИндексМассива];
			
// ВЫВОД ШАПКИ ******************************************************		
			Область = Макет.ПолучитьОбласть("Шапка");
			Организация = Документ.Организация;
			
			Область.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
			Область.Параметры.КодОКПО = Организация.КодПоОКПО;
			
			НомерДок = СокрЛП(ЗарплатаКадрыОтчеты.НомерНаПечать(Документ.Номер));
			Область.Параметры.НомерДок = ?(ЗначениеЗаполнено(НомерДок),НомерДок,СокрЛП(Документ.Номер));
			                                                                                             
			Область.Параметры.ДатаДок = Формат(Документ.Дата,"ДЛФ=Д");
			Область.Параметры.Начисление = Документ.Начисление;
			ПриказО = "поощрении работников";   
			ВШапкуПриказа = "";
			МотивПоощрения = "";
			ГлавномуБухгалтеру = "";
			Для каждого СтрокаТЧ из Документ.ДополнительныеРеквизиты Цикл
				Если СтрокаТЧ.Свойство.Имя = "ПриказО" Тогда
					ПриказО = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "ВШапкуПриказа" Тогда
					ВШапкуПриказа = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "МотивПоощрения" Тогда
					МотивПоощрения = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "ГлавномуБухгалтеру" Тогда
					ГлавномуБухгалтеру = СтрокаТЧ.Значение;
				КонецЕсли;	
			КонецЦикла;
			Область.Параметры.ПриказО = ПриказО;
			Область.Параметры.ВШапкуПриказа = ВШапкуПриказа;
			Область.Параметры.МотивПоощрения = МотивПоощрения;
	
			НаименованиеВеличины = "Размер, %";
			Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
				ПерваяСтрокаПоказателиСотрудников = Документ.ПоказателиСотрудников.Получить(0);
				Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
					НаименованиеВеличины = "Сумма, руб";
				КонецЕсли;	
			Иначе  НаименованиеВеличины = "Стаж непрерывной работы на " + Формат(Документ.Дата,"ДЛФ=Д");   
			КонецЕсли;	
			Область.Параметры.НаименованиеВеличины = НаименованиеВеличины;
	
			ТабличныйДокумент.Вывести(Область);
			
// ВЫВОД СОТРУДНИКОВ *************************************************	
			Для Каждого ТекСтрока Из Документ.Сотрудники Цикл 
				Сотрудник = ТекСтрока.Сотрудник;
				ИдентификаторСтрокиСотрудника = ТекСтрока.ИдентификаторСтрокиСотрудника;
				Величина = 0;
				Для каждого СтрокаПоказатели Из Документ.ПоказателиСотрудников Цикл
					Если ИдентификаторСтрокиСотрудника = СтрокаПоказатели.ИдентификаторСтрокиСотрудника Тогда
						Величина = СтрокаПоказатели.Значение;
						Прервать;
				    КонецЕсли;
				КонецЦикла;	
				
				ЗапросСотр = Новый Запрос;
				ЗапросСотр.Текст = 
				"ВЫБРАТЬ
				|	КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
				|	КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
				|	КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность
				|ИЗ
				|	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный				
				|			
				|ГДЕ
				|	КадроваяИсторияСотрудниковИнтервальный.ГоловнаяОрганизация = &ГоловнаяОрганизация
				|	И КадроваяИсторияСотрудниковИнтервальный.Сотрудник = &Сотрудник
				|   И &ДатаПриказа МЕЖДУ КадроваяИсторияСотрудниковИнтервальный.ДатаНачала И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания
				|";
				ЗапросСотр.УстановитьПараметр("ГоловнаяОрганизация", Организация.ГоловнаяОрганизация);
				ЗапросСотр.УстановитьПараметр("Сотрудник", Сотрудник);
				ЗапросСотр.УстановитьПараметр("ДатаПриказа", Документ.Дата);
				Попытка
					РезультатЗапросаСотр = ЗапросСотр.Выполнить();
				Исключение
					Сообщить("Не удалось выполнить запрос по сотр");
				КонецПопытки;
				ТаблицаЗначений = РезультатЗапросаСотр.Выгрузить();  
					Должность	= Справочники.Должности.ПустаяСсылка();
					Подразделение	= Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
				Для каждого СтрокаТабл Из ТаблицаЗначений Цикл
					Должность	= СтрокаТабл.Должность;
					Подразделение	= СтрокаТабл.Подразделение;
		        КонецЦикла;
			
				Область = Макет.ПолучитьОбласть("Сотр");
				Область.Параметры.ФИО = Сотрудник.Наименование;
				
				ТабНомер = СокрЛП(ЗарплатаКадрыОтчеты.ТабельныйНомерНаПечать(Сотрудник.Код));
				ТабНомер = ТабНомБезНулей(ТабНомер);
				Область.Параметры.ТабНомер = СокрЛП(ТабНомер);
				Область.Параметры.Подразделение = СокрЛП(Подразделение.Наименование);
				Область.Параметры.Должность 	= СокрЛП(Должность.Наименование);
								
				Область.Параметры.Период = "  " + Формат(ТекСтрока.ДатаНазначения,"ДЛФ=Д") + " - " + Формат(ТекСтрока.ДатаОкончания,"ДЛФ=Д");
				
				ТабличныйДокумент.Вывести(Область);
				
			КонецЦикла;
			
// ВЫВОД ПОДВАЛА **************************************************************			
			Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ГлавномуБухгалтеру = СокрЛП(ГлавномуБухгалтеру);
Область.Параметры.ФИОРуководителя	= ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);
ТабличныйДокумент.Вывести(Область);
	
	КонецЦикла;
	
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОтображатьСетку = Ложь;
	
		
	Возврат ТабличныйДокумент;

КонецФункции
Показать
По теме из базы знаний
Найденные решения
16. andy_zhav 197 14.09.20 15:08 Сейчас в теме
(15) ОК. Тогда такое предложение. Верните назад ПолноеИмя(), Но в функции СведенияОВнешнейОбработке замените строку

   ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");


на чтото типо такого:

   ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
19. andy_zhav 197 14.09.20 15:58 Сейчас в теме
(18) Уже лучше

Еще тут надо поменять:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));

КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. andy_zhav 197 14.09.20 12:21 Сейчас в теме
(1) Как неудобно читать код не обрамленный в соответствующие тэги :-(

А входящие данные одни и те же в облаке и локально? Проверяли локально как? В отладочной форме или в подключенном к подсистеме дополнительных печатных форм виде? Есть предположение, что не хватает данных для нормальной публикации.

ПС: запрос в цикле... не красиво так делать :-)
5. FatPanzer 14.09.20 12:26 Сейчас в теме
(4)
ПС: запрос в цикле... не красиво так делать :-)

Их там даже два со вложенными циклами ;-)
6. kodblack 14 14.09.20 13:01 Сейчас в теме
(4)

данные идентичные.


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
УказатьНаименованиеКомандыПечати(),
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));

КонецПроцедуры
Показать


Функция ПечатьФормы(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати)
	
	
	Макет = ПолучитьМакет("МакетОтчета");
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
		
	Первый = Истина;
		
	Для ИндексМассива = 0 По МассивОбъектов.Количество()-1 Цикл
		
			
			Если НЕ Первый Тогда 
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			Иначе
				Первый = Ложь;
			КонецЕсли;
					
			Документ = МассивОбъектов[ИндексМассива];
			
// ВЫВОД ШАПКИ ******************************************************		
			Область = Макет.ПолучитьОбласть("Шапка");
			Организация = Документ.Организация;
			
			Область.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
			Область.Параметры.КодОКПО = Организация.КодПоОКПО;
			
			НомерДок = СокрЛП(ЗарплатаКадрыОтчеты.НомерНаПечать(Документ.Номер));
			Область.Параметры.НомерДок = ?(ЗначениеЗаполнено(НомерДок),НомерДок,СокрЛП(Документ.Номер));
			                                                                                             
			Область.Параметры.ДатаДок = Формат(Документ.Дата,"ДЛФ=Д");
			Область.Параметры.Начисление = Документ.Начисление;
			ПриказО = "поощрении работников";   
			ВШапкуПриказа = "";
			МотивПоощрения = "";
			ГлавномуБухгалтеру = "";
			Для каждого СтрокаТЧ из Документ.ДополнительныеРеквизиты Цикл
				Если СтрокаТЧ.Свойство.Имя = "ПриказО" Тогда
					ПриказО = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "ВШапкуПриказа" Тогда
					ВШапкуПриказа = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "МотивПоощрения" Тогда
					МотивПоощрения = СтрокаТЧ.Значение;
				ИначеЕсли СтрокаТЧ.Свойство.Имя = "ГлавномуБухгалтеру" Тогда
					ГлавномуБухгалтеру = СтрокаТЧ.Значение;
				КонецЕсли;	
			КонецЦикла;
			Область.Параметры.ПриказО = ПриказО;
			Область.Параметры.ВШапкуПриказа = ВШапкуПриказа;
			Область.Параметры.МотивПоощрения = МотивПоощрения;
	
			НаименованиеВеличины = "Размер, %";
			Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
				ПерваяСтрокаПоказателиСотрудников = Документ.ПоказателиСотрудников.Получить(0);
				Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
					НаименованиеВеличины = "Сумма, руб";
				КонецЕсли;	
			Иначе  НаименованиеВеличины = "Стаж непрерывной работы на " + Формат(Документ.Дата,"ДЛФ=Д");   
			КонецЕсли;	
			Область.Параметры.НаименованиеВеличины = НаименованиеВеличины;
	
			ТабличныйДокумент.Вывести(Область);
			
// ВЫВОД СОТРУДНИКОВ *************************************************	
			Для Каждого ТекСтрока Из Документ.Сотрудники Цикл 
				Сотрудник = ТекСтрока.Сотрудник;
				ИдентификаторСтрокиСотрудника = ТекСтрока.ИдентификаторСтрокиСотрудника;
				Величина = 0;
				Для каждого СтрокаПоказатели Из Документ.ПоказателиСотрудников Цикл
					Если ИдентификаторСтрокиСотрудника = СтрокаПоказатели.ИдентификаторСтрокиСотрудника Тогда
						Величина = СтрокаПоказатели.Значение;
						Прервать;
				    КонецЕсли;
				КонецЦикла;	
				
				ЗапросСотр = Новый Запрос;
				ЗапросСотр.Текст = 
				"ВЫБРАТЬ
				|	КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
				|	КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
				|	КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность
				|ИЗ
				|	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный				
				|			
				|ГДЕ
				|	КадроваяИсторияСотрудниковИнтервальный.ГоловнаяОрганизация = &ГоловнаяОрганизация
				|	И КадроваяИсторияСотрудниковИнтервальный.Сотрудник = &Сотрудник
				|   И &ДатаПриказа МЕЖДУ КадроваяИсторияСотрудниковИнтервальный.ДатаНачала И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания
				|";
				ЗапросСотр.УстановитьПараметр("ГоловнаяОрганизация", Организация.ГоловнаяОрганизация);
				ЗапросСотр.УстановитьПараметр("Сотрудник", Сотрудник);
				ЗапросСотр.УстановитьПараметр("ДатаПриказа", Документ.Дата);
				Попытка
					РезультатЗапросаСотр = ЗапросСотр.Выполнить();
				Исключение
					Сообщить("Не удалось выполнить запрос по сотр");
				КонецПопытки;
				ТаблицаЗначений = РезультатЗапросаСотр.Выгрузить();  
					Должность	= Справочники.Должности.ПустаяСсылка();
					Подразделение	= Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
				Для каждого СтрокаТабл Из ТаблицаЗначений Цикл
					Должность	= СтрокаТабл.Должность;
					Подразделение	= СтрокаТабл.Подразделение;
		        КонецЦикла;
			
				Область = Макет.ПолучитьОбласть("Сотр");
				Область.Параметры.ФИО = Сотрудник.Наименование;
				
				ТабНомер = СокрЛП(ЗарплатаКадрыОтчеты.ТабельныйНомерНаПечать(Сотрудник.Код));
				ТабНомер = ТабНомБезНулей(ТабНомер);
				Область.Параметры.ТабНомер = СокрЛП(ТабНомер);
				Область.Параметры.Подразделение = СокрЛП(Подразделение.Наименование);
				Область.Параметры.Должность 	= СокрЛП(Должность.Наименование);
				Если Документ.ПоказателиСотрудников.Количество() > 0 Тогда
					Если ПерваяСтрокаПоказателиСотрудников.Показатель.ТипПоказателя = Перечисления.ТипыПоказателейРасчетаЗарплаты.Денежный Тогда
						Область.Параметры.Величина  	= Формат(Величина, "ЧЦ=10; ЧДЦ=2");
					Иначе
						Область.Параметры.Величина  	= Формат(Величина) + " %";
					КонецЕсли;	
				Иначе
					СведенияОСтажах = КадровыйУчетРасширенныйВызовСервера.СведенияОСтажахСотрудника(Сотрудник, Документ.Дата);
					Для Каждого ТекСтрокаСтажа Из СведенияОСтажах Цикл 
						Если ТекСтрокаСтажа.Ключ.Наименование = "Стаж непрерывной работы" Тогда
							Область.Параметры.Величина = Формат(ТекСтрокаСтажа.Значение.Лет) + " лет " + Формат(ТекСтрокаСтажа.Значение.Месяцев) + " месяцев " + Формат(ТекСтрокаСтажа.Значение.Дней) + " дней";
							КонецЕсли;	
					КонецЦикла;
				КонецЕсли;	
				
				Область.Параметры.Период = "  " + Формат(ТекСтрока.ДатаНазначения,"ДЛФ=Д") + " - " + Формат(ТекСтрока.ДатаОкончания,"ДЛФ=Д");
				
				ТабличныйДокумент.Вывести(Область);
				
			КонецЦикла;
			
// ВЫВОД ПОДВАЛА **************************************************************			
			Область = Макет.ПолучитьОбласть("Подвал");
			Область.Параметры.ГлавномуБухгалтеру = СокрЛП(ГлавномуБухгалтеру);
			
			ДолжностьОтветственного	= "";
			ФИООтветственного = "";
			Ответственный = Документ.Ответственный;
			ДатаОтчета = Документ.Дата;
						
			ОтветственныеЛица = Новый Структура("Организация,Руководитель,ДолжностьРуководителя,РуководительКадровойСлужбы,ДолжностьРуководителяКадровойСлужбы,ГлавныйБухгалтер", Документ.Организация);
			ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ОтветственныеЛица, ДатаОтчета);
			МассивФизЛиц = Новый Массив;
			МассивФизЛиц.Добавить(ОтветственныеЛица.Руководитель);
			МассивФизЛиц.Добавить(ОтветственныеЛица.ГлавныйБухгалтер);
			МассивФизЛиц.Добавить(ОтветственныеЛица.РуководительКадровойСлужбы);
			Если ЗначениеЗаполнено(Ответственный) Тогда
				МассивФизЛиц.Добавить(Ответственный);
			КонецЕсли;
			
			ФИОФизЛиц = ЗарплатаКадры.СоответствиеФИОФизЛицСсылкам(ДатаОтчета, МассивФизЛиц);
			ФИОРуководителя = ФИОФизЛиц[ОтветственныеЛица.Руководитель];
			ФИОГлавногоБухгалтера = ФИОФизЛиц[ОтветственныеЛица.ГлавныйБухгалтер];
			ФИОРуководителяКадровойСлужбы = ФИОФизЛиц[ОтветственныеЛица.РуководительКадровойСлужбы];
			ДолжностьРуководителя = ?(ОтветственныеЛица.ДолжностьРуководителя = Неопределено, "", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОтветственныеЛица.ДолжностьРуководителя, "Наименование"));
			ДолжностьРуководителяКадровойСлужбы = ?(ОтветственныеЛица.ДолжностьРуководителяКадровойСлужбы = Неопределено, "", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОтветственныеЛица.ДолжностьРуководителяКадровойСлужбы, "Наименование"));
			Если ЗначениеЗаполнено(Ответственный) Тогда
				СтруктураФИО = Новый Структура("Фамилия,Имя,Отчество");
				ЗаполнитьЗначенияСвойств(СтруктураФИО, Ответственный.ФизическоеЛицо);
				ФИООтветственного = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(СтруктураФИО);
			КонецЕсли;		
						
			ФИОГлавногоБухгалтераВДатПадеже = "";
			ФИОГлавногоБухгалтера = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(ФИОГлавногоБухгалтера);   
			Пол = ОтветственныеЛица.ГлавныйБухгалтер.Пол;
			РезультатСклонения = "";
			Если ФизическиеЛицаЗарплатаКадры.Просклонять(ОтветственныеЛица.ГлавныйБухгалтер, 5, РезультатСклонения, Пол) Тогда
				ФИОГлавногоБухгалтераВДатПадеже = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(РезультатСклонения);
			КонецЕсли;
			Область.Параметры.ФИОГлавногоБухгалтераВДатПадеже = ФИОГлавногоБухгалтераВДатПадеже;
			Область.Параметры.ФИОРуководителяКадровойСлужбы = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.РуководительКадровойСлужбы);
			Область.Параметры.ДолжностьРуководителя = СокрЛП(ДолжностьРуководителя);
			Область.Параметры.ФИОРуководителя	= ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);
ТабличныйДокумент.Вывести(Область);
	
	КонецЦикла;
	
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабличныйДокумент.ПолеСверху = 5;
	ТабличныйДокумент.ПолеСнизу = 5;
	ТабличныйДокумент.ПолеСлева = 10;
	ТабличныйДокумент.ПолеСправа = 5;
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОтображатьСетку = Ложь;
	

	Возврат ТабличныйДокумент;

КонецФункции
Показать
7. andy_zhav 197 14.09.20 13:35 Сейчас в теме
(6) Судя по исключению, при формировании печатной формы из БСП обработчик даже не доходит до функции ПечатьФормы, Проверьте функцию модуля объекта СведенияОВнешнейОбработке. в частности строки формирования таблицы команд и добавления команды.

что-то типа такого: должно быть:

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	МассивНазначений.Добавить("Документ.АвансовыйОтчет");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	
	ПараметрыРегистрации.Вставить("Наименование", "Акт об оказании услуг");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
	ПараметрыРегистрации.Вставить("Версия", "1.0.5.1");
	ПараметрыРегистрации.Вставить("Информация", "");
	
	// Создадим таблицу команд (подробнее смотрим ниже)
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	
	// Добавим команду в таблицу
	ДобавитьКоманду(ТаблицаКоманд, "Акт об оказании услуг", "АктОбОказанииУслуг", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
	
	// Сохраним таблицу команд в параметры регистрации обработки
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
	
	Команды = Новый ТаблицаЗначений;
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	// Добавляем команду в таблицу команд по переданному описанию.
	// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
	
КонецПроцедуры

Показать


Особенно обратите внимание на процедуру ДобавитьКоманду, чтобы все колонки таблицы команд были заполнены
9. kodblack 14 14.09.20 14:02 Сейчас в теме
(7)
данные есть

Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;

    Наименование = УказатьНаименованиеВнешнейПечатнойФормы();

    МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", Наименование);
	ПараметрыРегистрации.Вставить("Версия", "1.1.1.1");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", Наименование);

    ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;


Функция ПолучитьТаблицуКоманд()

    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

    Возврат Команды;
КонецФункции


Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда. Представление = Представление;
    НоваяКоманда. Идентификатор= Идентификатор;
    НоваяКоманда. Использование= Использование;
    НоваяКоманда. ПоказыватьОповещение= ПоказыватьОповещение;
    НоваяКоманда. Модификатор= Модификатор;

КонецФункции
Показать
10. andy_zhav 197 14.09.20 14:09 Сейчас в теме
(9) Что возвращает функция УказатьНаименованиеКомандыПечати()?
11. kodblack 14 14.09.20 14:41 Сейчас в теме
(10)
УказатьНаименованиеКомандыПечати


Функция УказатьНаименованиеКомандыПечати()

    Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
    Возврат Наименование;

КонецФункции
13. andy_zhav 197 14.09.20 15:00 Сейчас в теме
(11) попробуйте исправить на такой код. мне кажется может помочь:
Функция УказатьНаименованиеКомандыПечати()

    Наименование = ЭтотОбъект.Метаданные().Имя;
    Возврат Наименование;

КонецФункции


Думаю поможет. Ваш код возвращает строку вида "ВнешняяОбработка.ИмяВнешнейОбработки". Ошибка, которая возникает, как раз возвращает левую часть этой строки: "не был сформирован табличный документ для: ВнешняяОбработка.". Обычно идентификатор для внешней печатной формы состоит из одного слова в "верблюжем" регистре. Скорее всего без точек.
15. kodblack 14 14.09.20 15:04 Сейчас в теме
(13)
Наименование = ЭтотОбъект.Метаданные().Имя;


на стадии загрузки в облако по Вашему предложению: Неизвестный идентификатор формы
16. andy_zhav 197 14.09.20 15:08 Сейчас в теме
(15) ОК. Тогда такое предложение. Верните назад ПолноеИмя(), Но в функции СведенияОВнешнейОбработке замените строку

   ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");


на чтото типо такого:

   ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
17. andy_zhav 197 14.09.20 15:16 Сейчас в теме
(15) Хотя странно что не получилось. Там ничего другого по ходу не поломали? Мне кажется кроме как при добавлении команды нигде не должно больше использоваться это...
18. kodblack 14 14.09.20 15:25 Сейчас в теме
(17)
В обработке печати не был сформирован табличный документ для: ИмяКомандыПечатнойФормы

при изменении
Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;

    Наименование = УказатьНаименованиеВнешнейПечатнойФормы();

    МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", Наименование);
	ПараметрыРегистрации.Вставить("Версия", "11111");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация", Наименование);

    ТаблицаКоманд = ПолучитьТаблицуКоманд();
	//ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
	  ДобавитьКоманду(ТаблицаКоманд, Наименование, "ИмяКомандыПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;

КонецФункции

Функция УказатьНаименованиеВнешнейПечатнойФормы()

   //Наименование = ЭтотОбъект.Метаданные().Представление();
     
    Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
   
   Возврат Наименование;

КонецФункции
Показать
19. andy_zhav 197 14.09.20 15:58 Сейчас в теме
(18) Уже лучше

Еще тут надо поменять:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));

КонецПроцедуры
Показать
20. kodblack 14 14.09.20 16:16 Сейчас в теме
(19)
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяКомандыПечатнойФормы",
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов, ОбъектыПечати, КоллекцияПечатныхФорм, ПараметрыВывода));

КонецПроцедуры


! Спасибо. заработало.
8. SlavaKron 14.09.20 13:58 Сейчас в теме
(1)
В "локальной базе" - работает хорошо.
В перенесенную базу в "облако" - выдает:
Вообще не типичная ошибка. Возможно, в модуле обработки какие-то кривые инструкции препроцессора типа #Если ТолстыйКлиентУправляемоеПриложение ..., но это маловероятно.
2. alex_bob 246 14.09.20 10:59 Сейчас в теме
Ну в данном коде я вижу одно подозрительное место:
Область.Параметры.ФИОРуководителя = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ОтветственныеЛица.Руководитель);

ОтветственныеЛица вроде раньше нигде не объявляются.
3. kodblack 14 14.09.20 11:02 Сейчас в теме
(2) Они есть, я их убрал из вопроса.

ОтветственныеЛица = Новый Структура("Организация,Руководитель,ДолжностьРуководителя,РуководительКадровойСлужбы,ДолжностьРуководителяКадровойСлужбы,ГлавныйБухгалтер", Документ.Организация);
			......
			КонецЕсли;
12. SlavaKron 14.09.20 14:45 Сейчас в теме
В функции СведенияОВнешнейОбработке() модуля объекта дополнительного отчета или обработки для параметра ПараметрыРегистрации.БезопасныйРежим необходимо установить значение Истина.

https://1cfresh.com/articles/so_addprocess_req
14. kodblack 14 14.09.20 15:01 Сейчас в теме
(12) не помогает.

такой шаблон у меня во всех обработках и работает
Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;

    Наименование = УказатьНаименованиеВнешнейПечатнойФормы();

    МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", Наименование);
	ПараметрыРегистрации.Вставить("Версия", "3.2 от 01.09.2020");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация", Наименование);

    ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;

КонецФункции

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот