Расчет средней зарплаты

1. Ильдар2000 06.02.15 16:33 Сейчас в теме
Ошибка при работе модуля внешней обработки по расчету средней зарплаты:
Табл=СоздатьОбъект("ТаблицаЗначений");
СпДок=СоздатьОбъект("СписокЗначений");
ТабличнаяЧасть = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(Табл,,0);
Табл.Свернуть("Сотрудник,Действие,ТекущийДокумент,Расчет,ДатаН,ДатаО","Сумма,Дни");
Табл.ВыбратьСтроки();
Пока Табл.ПолучитьСтроку()=1 Цикл
Если Табл.Расчет=ВидРасчета.ОплатаПоОкладу Тогда Продолжить; КонецЕсли;
Если Табл.Расчет=ВидРасчета.ОплатаПоСреднемуЗаработку Тогда
ДокМАФ=Табл.ТекущийДокумент;
ДокМАФ.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
ТабличнаяЧасть.ВыбратьСтроки();
Пока ТабличнаяЧасть.ПолучитьСтроку()=1 Цикл
Если (ТабличнаяЧасть.ВидСтроки=Перечисление.ВидСтрокиСреднегоЗаработка.Заработок) Тогда
Продолжить;
КонецЕсли;
Если (ТабличнаяЧасть.ВидСтроки<>Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременнаяПропорциональная) Тогда
ТабличнаяЧасть.РазмерРаспределения=0;
КонецЕсли;
КонецЦикла;
СписокСумм = глСуммаСреднегоЗаработка(Табл.Сотрудник,ДокМАФ.Начало,ТабличнаяЧасть,?(ДокМАФ.КоличествоМесяцев=1,3,12)); //МАФ
СуммаСреднегоЗаработка = Окр(СписокСумм.ПолучитьЗначение(1,),2); //МАФ
Табл.Сумма=СуммаСреднегоЗаработка*Табл.Дни;
КонецЕсли;
Если (Табл.Расчет = ВидРасчета.ОтпускОчередной)или(Табл.Расчет = ВидРасчета.ОтпускДополнительный) Тогда
ДокументОснование=Табл.ТекущийДокумент;
ДокументОснование.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
ТабличнаяЧасть.ВыбратьСтроки();
Пока ТабличнаяЧасть.ПолучитьСтроку()=1 Цикл
Если (ТабличнаяЧасть.ВидСтроки=Перечисление.ВидСтрокиСреднегоЗаработка.Заработок) Тогда
Продолжить;
КонецЕсли;
Если ТабличнаяЧасть.ВидСтроки<>Перечисление.ВидСтрокиСреднегоЗаработка.ПремияЕдиновременнаяПропорциональная Тогда
ТабличнаяЧасть.РазмерРаспределения=0;
КонецЕсли;
КонецЦикла;
СписокСумм = глСуммаСреднегоЗаработка(Табл.Сотрудник,ДокументОснование.Начало,ТабличнаяЧасть,?(ДокументОснование.КоличествоМесяцев=1,3,12)); //МАФ
//СписокСумм = глСуммаСреднегоЗаработкаОтпуска(Табл.Сотрудник,ДокументОснование.Начало,ДокументОснование.ТипРасчетаОтпуска,ДокументОснование.ТипРасчетаДополнительногоОтпуска,ТабличнаяЧасть,?(ДокументОснование.КоличествоМесяцев=1,3,12),ДокументОснование.ИспользоватьСреднеЧасовойЗаработок);
СуммаСреднегоЗаработка = Окр(СписокСумм.Получить("СуммаСреднегоЗаработка"),2);
Если ДокументОснование.ТипРасчетаОтпуска = Перечисление.ТипРасчетаОтпуска.ПоШестидневке Тогда
КалендарьОтпуска = СоздатьОбъект("Календарь.Шестидневка");
Иначе
КалендарьОтпуска = СоздатьОбъект("Календарь.ДляРасчетаОтпускаПоКалендДням");
КонецЕсли;
ДнейОтпуска = КалендарьОтпуска.Дней(Табл.ДатаН, Табл.ДатаО);
Табл.Сумма=СуммаСреднегоЗаработка *Табл.Дни;
КонецЕсли;
КонецЦикла;

выходит ошибка:
СуммаСреднегоЗаработка = Окр(СписокСумм.Получить("СуммаСреднегоЗаработка"),2);
{E:\LOCALNETWORK\BUFFER\1 ILDAR\13 ЗП.ERT(226)}: Значение не представляет агрегатный объект (Получить)
Отладчик показа остановку на строке :
СуммаСреднегоЗаработка = Окр(СписокСумм.Получить("СуммаСреднегоЗаработка"),2);
может в ней ошибка или раньше
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jack19 148 06.02.15 17:00 Сейчас в теме
(1) Ильдар2000, Функция глСуммаСреднегоЗаработка() глобального модуля типовой конфигурации возвращает число, а именно сумму среднего заработка, а не список значений, к которому происходит попытка обратиться в строке:
СуммаСреднегоЗаработка = Окр(СписокСумм.ПолучитьЗначение(1,),2)
Может у вас глобальный модуль доработан? Тогда, чтобы выявить ошибку приведенного фрагмента не достаточно.
Оставьте свое сообщение

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