Обработка заполнения ТЧ для документа Разовое начисление. В документе не отображаются показатели. Не могу понять, в чем дело.
Использую "ВызовКлиентскогоМетода"
В результате ТЧ Начисления заполняется и отображается, а связанная таблица Показатели - пусто.
Просто запуск внешней обработки всё заполняет. Обработка уже не первая, но такой казус впервые.
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
Для каждого Элемент из ОбъектыНазначения Цикл
КлючПоиска = Новый Структура("Ключ", Элемент);
Окна = ПолучитьОкна();
Для каждого Окно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;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать