Обработка заполнения ТЧ

1. Элит 01.06.17 20:05 Сейчас в теме
Обработка заполнения ТЧ для документа Разовое начисление. В документе не отображаются показатели. Не могу понять, в чем дело.
Использую "ВызовКлиентскогоМетода"
В результате ТЧ Начисления заполняется и отображается, а связанная таблица Показатели - пусто.
Просто запуск внешней обработки всё заполняет. Обработка уже не первая, но такой казус впервые.

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
   
        Для каждого Элемент из ОбъектыНазначения Цикл
            КлючПоиска = Новый Структура("Ключ", Элемент);
            Окна = ПолучитьОкна();
            Для каждого Окно1 из Окна Цикл
                Если НЕ Окно1.Основное
                    И Найти(Окно1.Заголовок, Элемент) Тогда
                    Форма = ОткрытьФорму("Документ.РазовоеНачисление.Форма.ФормаДокумента",КлючПоиска,,,Окно1);
                    НовыйОбъект = Форма.Объект;
					
                    ЗаполнитьОбъект(НовыйОбъект);
                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
    				Форма.Модифицированность = Истина;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;

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

&НаСервере
Процедура ЗаполнитьОбъект(НовыйОбъект)

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

		НовыйОбъект.Начисления.Очистить();
		НовыйОбъект.Показатели.Очистить();
	
	
		Идентификатор = 1;
		МассивСотрудников = новый Массив;
		
		Пока ВыборкаСотрудник.Следующий() Цикл
			МассивСотрудников.Добавить(ВыборкаСотрудник.Сотрудник);
			НовСтр = НовыйОбъект.Начисления.Добавить();
			НовСтр.Сотрудник = ВыборкаСотрудник.Сотрудник;
			НовСтр.ПериодДействия = НовыйОбъект.МесяцНачисления;
			НовСтр.Подразделение = НовыйОбъект.Подразделение;
			НовСтр.ИдентификаторСтрокиВидаРасчета = Идентификатор;
			
			Если НовыйОбъект.Начисление = ПланыВидовРасчета.Начисления.НайтиПоКоду("91") Тогда
				НовСтр1 = НовыйОбъект.Показатели.Добавить();
				НовСтр1.ИдентификаторСтрокиВидаРасчета = Идентификатор;
				НовСтр1.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Часы сдельщиков для оплаты по среднему");
				НовСтр1.Значение = ВыборкаСотрудник.ПервыеЧасы;
				Если ВыборкаСотрудник.ПоследующиеЧасы > 0 Тогда 
					НовСтр1 = НовыйОбъект.Показатели.Добавить();
					НовСтр1.ИдентификаторСтрокиВидаРасчета = Идентификатор;
					НовСтр1.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Часы сдельщиков для оплаты по среднему в полуторном размере");
					НовСтр1.Значение = ВыборкаСотрудник.ПоследующиеЧасы;
				КонецЕсли;
			ИначеЕсли НовыйОбъект.Начисление = ПланыВидовРасчета.Начисления.НайтиПоКоду("92") Тогда
				НовСтр1 = НовыйОбъект.Показатели.Добавить();
				НовСтр1.ИдентификаторСтрокиВидаРасчета = Идентификатор;
				НовСтр1.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Часы сдельщиков для оплаты по среднему");
				НовСтр1.Значение = ВыборкаСотрудник.Часы;
			КонецЕсли;
			Идентификатор = Идентификатор + 1;
		КонецЦикла;
	КонецЕсли;	

КонецПроцедуры
Показать
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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