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

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




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

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

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



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

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

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


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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

Показать


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

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

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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

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

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


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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Показать
Оставьте свое сообщение
Вопросы с вознаграждением