Расширение функционала представлений отчетов ЗУП своими полями

20.10.25

Разработка - Работа с интерфейсом

Всем бодрого дня! В данной статье я расскажу о том, как можно дополнить и без того богатый механизм представлений в 1С: ЗУП 3.1.

В нашей компании есть регистр, в котором среди прочего хранятся идентификаторы пользователей и имена пользователей на внешнем портале обучения. Это необходимо для обновления данных сотрудников через интеграции

С некоторых пор появилась необходимость видеть эти данные в стандартном отчете "Отчеты по сотрудникам"

Мне показалось логичным, если бы эти поля были доступны в полях группировки "Физическое лицо" из настроек стандартного отчета в режиме предприятия

А т.к. нет желания менять СКД стандартных отчетов в метаданных во избежание проблем при дальнейших обновлениях, то было решено доработать механизм представлений. В частности, добавить в него наши поля.

План прост и надежен как швейцарские часы:

  1. Сначала мы смотрим по полям отчета - есть ли необходимость добавлять наши источники данных в отчет
  2. Если есть такая необходимость - добавляем источник (запрос, соединения)
  3. Добавим псевдонимы выбираемых полей в отчет

П.1-2 реализовываем в расширении, общий модуль "КадровыйУчетБазовый" (см. области #вставка)

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

А также своим модулем "ХХ_КадровыйУчет" в расширении, в котором реализованы процедуры "ДобавитьПолеДанныеПорталаОбученияФизическоеЛицо" и "ДобавитьТекстЗапроса_ВТДанныеПорталаОбученияФизическоеЛицо"

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

Процедура ДобавитьТекстЗапроса_ВТДанныеПорталаОбученияФизическоеЛицо(Запрос, ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, ПоляОтбораПериодическихДанных, ИсточникиДанных, ФормироватьСПериодичностьДень) Экспорт
	
	// Проверяем - есть ли необходимость в добавлении нашего источника данных
	Если ИсточникиДанных.Получить("ХХ_ДанныеПорталаОбучения_ФизическиеЛица") = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	// ВТОтборовРазличныхСотрудников - виртуалная таблица, генерируемая отчетом из коробки
	ТекстЗапросаРезультат = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ХХ_ДанныеПорталаОбучения.Сущность КАК ФизическоеЛицоСущность,
		|	ХХ_ДанныеПорталаОбучения.ИдентификаторОбъекта КАК ФизическоеЛицоИдентификаторНаПорталеОбучения,
		|	ХХ_ДанныеПорталаОбучения.НаименованиеНаПортале КАК ФизическоеЛицоНаименованиеНаПорталеОбучения
		|ПОМЕСТИТЬ ВТДанныеПорталаОбучения_ФизическиеЛица
		|ИЗ
		|	ВТОтборовРазличныхСотрудников КАК ВТОтборовРазличныхСотрудников
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХХ_ДанныеПорталаОбучения КАК ХХ_ДанныеПорталаОбучения
		|		ПО ВТОтборовРазличныхСотрудников.ФизическоеЛицо = ХХ_ДанныеПорталаОбучения.Сущность
		|			И (ХХ_ДанныеПорталаОбучения.ТипСущности = ЗНАЧЕНИЕ(Перечисление.ХХ_ТипыСущностейДляВыгрузкиВПорталОбучения.ФизическоеЛицо))";
	
	ЧастиЗапроса = Новый Массив;
	
	ЧастиЗапроса.Добавить(ТекстЗапросаРезультат);
	ЧастиЗапроса.Добавить(ЗарплатаКадрыОбщиеНаборыДанных.РазделительЗапросов());
	ЧастиЗапроса.Добавить(Запрос.Текст);
	
	ЧастиЗапроса.Добавить(
		"		{ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеПорталаОбучения_ФизическиеЛица КАК ВТДанныеПорталаОбучения_ФизическиеЛица
		|			ПО ТаблицаОтборов.ФизическоеЛицо = ВТДанныеПорталаОбучения_ФизическиеЛица.ФизическоеЛицоСущность}");
	
	Запрос.Текст = СтрСоединить(ЧастиЗапроса, Символы.ПС);
	
КонецПроцедуры

 

Добавление псевдонимов выбираемых полей (п.3 плана) производим также в расширении, модуль объекта отчета "ОтчетыПоСотрудникам":

&ИзменениеИКонтроль("ИнициализироватьОтчет")
Процедура ХХ_ИнициализироватьОтчет()

	ДополнительныеПоляПредставлений = КадровыйУчет.ПоляПредставленийКадровыхДанныхСотрудников();

	#Вставка
	// Добавим наши псевдонимы выбираемых полей
	ДобавитьПсевдонимы(ДополнительныеПоляПредставлений);
	#КонецВставки
	Если ДополнительныеПоляПредставлений = Неопределено Тогда
		СоответствиеДополнительныхПолейПредставлениям = Неопределено;
	Иначе

		СоответствиеДополнительныхПолейПредставлениям = Новый Структура;
		СоответствиеДополнительныхПолейПредставлениям.Вставить("Представления_КадровыеДанныеСотрудников", ДополнительныеПоляПредставлений);

	КонецЕсли;

	ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект, СоответствиеДополнительныхПолейПредставлениям);

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

#Область СлужебныеПроцедурыИФункции

Процедура ДобавитьПсевдонимы(ДополнительныеПоляКадровыхДанныхСотрудников)

	НовСтрока = ДополнительныеПоляКадровыхДанныхСотрудников.Добавить();
	НовСтрока.ДляПоиска = Ложь;
	НовСтрока.ЗаголовокПоляСКД = "";
	НовСтрока.ИмяПоля = "ФизическоеЛицоИдентификаторНаПорталеОбучения";
	НовСтрока.ПсевдонимыПолей = Новый Структура;
	НовСтрока.ПустоеЗначениеНаЯзыкеЗапросов = "Выразить ("""" Как Строка(36))";
	НовСтрока.ПутьПоляСКД = "ФизическоеЛицо.ИдентификаторНаПорталеОбучения";
	НовСтрока.Соединения = Новый Массив;
	
	НовСтрока = ДополнительныеПоляКадровыхДанныхСотрудников.Добавить();
	НовСтрока.ДляПоиска = Ложь;
	НовСтрока.ЗаголовокПоляСКД = "";
	НовСтрока.ИмяПоля = "ФизическоеЛицоНаименованиеНаПорталеОбучения";
	НовСтрока.ПсевдонимыПолей = Новый Структура;
	НовСтрока.ПустоеЗначениеНаЯзыкеЗапросов = "Выразить ("""" Как Строка(200))";
	НовСтрока.ПутьПоляСКД = "ФизическоеЛицо.НаименованиеНаПорталеОбучения";
	НовСтрока.Соединения = Новый Массив;
	
КонецПроцедуры

#КонецОбласти

Наслаждаемся результатом в режиме предприятия:

 

 

Вступайте в нашу телеграмм-группу Инфостарт

Представления отчетов ЗУП

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С v8.3 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    44433    26    22    

39

Работа с интерфейсом Рабочее место 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    66727    45    60    

84

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22276    32    6    

50

Работа с интерфейсом Программист 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

5040 руб.

06.10.2020    12312    8    8    

14

Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    40477    mrXoxot    44    

136

Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    23823    smielka    38    

111

Работа с интерфейсом 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    21982    1307    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    15706    177    acces969    31    

132
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 123 20.10.25 11:53 Сейчас в теме
Начал осваивать ЗУП... Столкнулся с проблемой формирования Печатной формы Документа: на включаются в доступные поля Табличные части Реквизитов Основного объекта.
Например, невозможно получить Контактные данный или Документы Физического лица через Документ Приём на работу. Табличные части попадающие в Печатаемый набор - только из самого документа.

Полагаю, что можно через такое расширение подцепить?
2. aleks.public 5 20.10.25 12:35 Сейчас в теме
(1) Не уверен, что правильно понял Ваш вопрос.
Но в целом печатная форма у вас формируется в процедурах "Печать" модуля менеджера, там же выбираются и "готовятся" данные.
Посмотрите что выбирается там по запросам, затем принимайте решение о необходимости доработки
Для отправки сообщения требуется регистрация/авторизация