Изменение Расчетного листа в ЗУП

1. sajmon45 09.01.21 21:57 Сейчас в теме
Где изменить запрос в коде ЗУП (3.1.15.96), чтоб при формировании Расчетного листа данные формировались не только по основному подразделению, но и по подразделению совместителя. Т. е. если расчетчица ставит отбор по подразделению одному, то данные по зарплате должны выводится с учетом и внутреннего совместителя? Я так понимаю это можно сделать в ЗарплатаКадрыОтчеты.ПриКомпоновкеРезультатаРасчетныйЛистокПоФизическимЛицам(), но не понимаю на каком этапе формирования запроса его можно изменить?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. ixijixi 1805 10.01.21 02:08 Сейчас в теме +0.5 $m
(1) Уже отвечал тебе в теме https://forum.infostart.ru/forum68/topic253321/
Не надо менять запрос. Меняй отбор. Пользователь отбирает по подразделению, ты преобразуй это в отбор по физлицам подразделения. Типа такого
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Отбор = КомпоновщикНастроек.Настройки.Отбор.Элементы;
	Подразделение = Неопределено;
	
	Для Каждого Элемент Из Отбор Цикл
		Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") Тогда
			Элемент.Использование = Ложь;
			Подразделение = Элемент.ПравоеЗначение;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если Подразделение <> Неопределено Тогда
		Элемент = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
		Элемент.Использование = Истина;
		Элемент.ПравоеЗначение = ТвояФункцияПоСборуФизлицПодразделения(Подразделение);
	КонецЕсли;
	
КонецПроцедуры
Показать
GSokolov; +1 Ответить
9. sajmon45 13.01.21 15:31 Сейчас в теме
В общем сделал так: создал внешний отчет "Расчетный листок". И в процедуре "ПриКомпоновкеРезультатаРасчетныйЛистокПоФизическимЛицам" вставил код:
        // Подготовка настроек
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
	
        //Убрать отбор	
	ОтборУбрать = НастройкиОтчета.Отбор.Элементы;

	Подразделение = Неопределено;
	
	Для Каждого Элемент Из ОтборУбрать Цикл
	    Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПодразделениеГоловногоСотрудникаНаКонецПериода") Тогда
	        Элемент.Использование = Ложь;
	        Подразделение = Элемент.ПравоеЗначение;
	        Прервать;
	    КонецЕсли;
	КонецЦикла;
	
	Для Каждого Элемент Из ОтборУбрать Цикл
		Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо") Тогда
		    Если Элемент.Использование = Ложь Тогда
	                 Элемент.Использование = Истина;
	                 Элемент.ПравоеЗначение = ФункцияПоСборуФизлицПодразделения(Подразделение);
			 Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	            КонецЕсли;
	        Прервать;
	    КонецЕсли;
	КонецЦикла;
   //Убрать отбор
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. GSokolov 320 09.01.21 23:41 Сейчас в теме
(1) Здесьэто уже пытались рассматривать. Мне тоже было бы это интересно. Другой вопрос: а при выводе подразделения, где работник внутренним совместителем, тоже будут выводиться сведения по нему по всем местам?
4. ixijixi 1805 10.01.21 02:08 Сейчас в теме +0.5 $m
(1) Уже отвечал тебе в теме https://forum.infostart.ru/forum68/topic253321/
Не надо менять запрос. Меняй отбор. Пользователь отбирает по подразделению, ты преобразуй это в отбор по физлицам подразделения. Типа такого
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Отбор = КомпоновщикНастроек.Настройки.Отбор.Элементы;
	Подразделение = Неопределено;
	
	Для Каждого Элемент Из Отбор Цикл
		Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") Тогда
			Элемент.Использование = Ложь;
			Подразделение = Элемент.ПравоеЗначение;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если Подразделение <> Неопределено Тогда
		Элемент = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
		Элемент.Использование = Истина;
		Элемент.ПравоеЗначение = ТвояФункцияПоСборуФизлицПодразделения(Подразделение);
	КонецЕсли;
	
КонецПроцедуры
Показать
GSokolov; +1 Ответить
3. sajmon45 10.01.21 00:23 Сейчас в теме
(2) Да. Не понимаю, что надо заменить в запросе через СтрЗаменить?
5. sajmon45 10.01.21 13:08 Сейчас в теме
(4) А сотрудников нужно передавать в виде массива?
6. ixijixi 1805 10.01.21 18:00 Сейчас в теме
(5)
передавать в виде массива
Да, массив или список значений.
7. sajmon45 10.01.21 20:07 Сейчас в теме
(6) Попробовал заменил отбор, но ничего не поменялась, хотя отладка показывает есть замена, но выводит теже данные, что и без измененного отбора
8. Swetlana 25 11.01.21 10:30 Сейчас в теме
(7) получается что отбор не там был сделан
9. sajmon45 13.01.21 15:31 Сейчас в теме
В общем сделал так: создал внешний отчет "Расчетный листок". И в процедуре "ПриКомпоновкеРезультатаРасчетныйЛистокПоФизическимЛицам" вставил код:
        // Подготовка настроек
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
	
        //Убрать отбор	
	ОтборУбрать = НастройкиОтчета.Отбор.Элементы;

	Подразделение = Неопределено;
	
	Для Каждого Элемент Из ОтборУбрать Цикл
	    Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПодразделениеГоловногоСотрудникаНаКонецПериода") Тогда
	        Элемент.Использование = Ложь;
	        Подразделение = Элемент.ПравоеЗначение;
	        Прервать;
	    КонецЕсли;
	КонецЦикла;
	
	Для Каждого Элемент Из ОтборУбрать Цикл
		Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо") Тогда
		    Если Элемент.Использование = Ложь Тогда
	                 Элемент.Использование = Истина;
	                 Элемент.ПравоеЗначение = ФункцияПоСборуФизлицПодразделения(Подразделение);
			 Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	            КонецЕсли;
	        Прервать;
	    КонецЕсли;
	КонецЦикла;
   //Убрать отбор
Показать
Оставьте свое сообщение

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