Помогите пожалуйста!!!!Поле агрегатного объекта не обнаружено
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Всем здравствуйте! Мне нужно по сотрудника в должности отобрать вредные условия.
Написал код:
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Пишет ошибку:Поле агрегатного объекта не обнаружено (ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией)
Где Ошибка?
Написал код:
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Пишет ошибку:Поле агрегатного объекта не обнаружено (ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией)
Где Ошибка?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Написал Так:
Должность = СоздатьОбъект("Справочник.Должности");
Должность.ИспользоватьВладельца(Сотрудник);
Должность.ВыбратьЭлементы();
Пока Должность.ПолучитьЭлемент() = 1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
пишет ошибку: ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
{Отчет.КарточкаУчетаПоСтраховымВзносам.Форма.Модуль(413)}: Значение не представляет агрегатный объект (Должность)
Должность = СоздатьОбъект("Справочник.Должности");
Должность.ИспользоватьВладельца(Сотрудник);
Должность.ВыбратьЭлементы();
Пока Должность.ПолучитьЭлемент() = 1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
пишет ошибку: ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
{Отчет.КарточкаУчетаПоСтраховымВзносам.Форма.Модуль(413)}: Значение не представляет агрегатный объект (Должность)
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.Получить([НужнаяДата]).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
...
КонецЕсли;
КонецЦикла;
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.Получить([НужнаяДата]).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
...
КонецЕсли;
КонецЦикла;
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
ДатаМесяца=КонМесяца(Дата(Год));
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.Получить(ДатаМесяца).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
НЕ ВИДИТ ВидыРаботСДосрочнойПенсией :(
Сотрудник.ВыбратьЭлементы();
ДатаМесяца=КонМесяца(Дата(Год));
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.Получить(ДатаМесяца).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
НЕ ВИДИТ ВидыРаботСДосрочнойПенсией :(
Z.Добавить();
Фамилия = ""; Имя = ""; Отчество = "";
глФамилияИмяОтчество(ФизЛицо,Фамилия,Имя,Отчество);
Z.KOD = ФизЛицо.Код;
глЗаполнитьКарточкаУчетаПоСтраховымВзносам(ФизЛицо,Год,1,ДоходыВычетыНалогиСотрудников,СтрокаИтоговойТаблицы,Буфер,ПоследнийМесяц);
Z.NOMPFR = ФизЛицо.СтраховойНомерПФР;
Z.SUMMA1 = НачВсего1;
Z.SUMMA2 = НачВсего2;
Z.SUMMA3 = НачВсего3;
Z.SUMMAPFR1 = НачПФР1;
Z.SUMMAPFR2 = НачПФР2;
Z.SUMMAPFR3 = НачПФР3;
ДатаМесяца=КонМесяца(Дата(Год));
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ИспользоватьДату(ДатаМесяца,1);
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
НачВсего1=0;
НачВсего2=0;
НачВсего3=0;
НачПФР1=0;
НачПФР2=0;
НачПФР3=0;
Z.Записать();
Все выводит правельно, кроме Z.TSUMMA и Z.VSUMMA вы водит нули
Фамилия = ""; Имя = ""; Отчество = "";
глФамилияИмяОтчество(ФизЛицо,Фамилия,Имя,Отчество);
Z.KOD = ФизЛицо.Код;
глЗаполнитьКарточкаУчетаПоСтраховымВзносам(ФизЛицо,Год,1,ДоходыВычетыНалогиСотрудников,СтрокаИтоговойТаблицы,Буфер,ПоследнийМесяц);
Z.NOMPFR = ФизЛицо.СтраховойНомерПФР;
Z.SUMMA1 = НачВсего1;
Z.SUMMA2 = НачВсего2;
Z.SUMMA3 = НачВсего3;
Z.SUMMAPFR1 = НачПФР1;
Z.SUMMAPFR2 = НачПФР2;
Z.SUMMAPFR3 = НачПФР3;
ДатаМесяца=КонМесяца(Дата(Год));
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ИспользоватьДату(ДатаМесяца,1);
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
Z.TSUMMA1 = НачПФР1;
Z.TSUMMA2 = НачПФР2;
Z.TSUMMA3 = НачПФР3;
иначе
Z.TSUMMA1 = 0;
Z.TSUMMA2 = 0;
Z.TSUMMA3 = 0;
КонецЕсли;
КонецЦикла;
НачВсего1=0;
НачВсего2=0;
НачВсего3=0;
НачПФР1=0;
НачПФР2=0;
НачПФР3=0;
Z.Записать();
Все выводит правельно, кроме Z.TSUMMA и Z.VSUMMA вы водит нули
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
Если Сотрудник.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если Сотрудник.Должность.получить("нужнаядата").ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией.Идентификатор()= "значение нужного перечисления" Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Если Сотрудник.Должность.получить(РабочаяДата()).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией.Идентификатор()= "значение нужного перечисления" Тогда
Z.VSUMMA1 = НачПФР1;
Z.VSUMMA2 = НачПФР2;
Z.VSUMMA3 = НачПФР3;
иначе
Z.VSUMMA1 = 0;
Z.VSUMMA2 = 0;
Z.VSUMMA3 = 0;
КонецЕсли;
Показатьпопробуй так
(26) vlad071007, уже несколько раз в теме спрашивали про конструкцию КонМесяца(Дата(Год))
Результат = ' . . '
На какую дату Вам нужно получать значение должности, на конец года ? Так и пишите:
ДатаМесяца=Дата(Год,12,31);
Если, конечно, у Вас в переменной Год правильное число, или строка, преобразуемая к нужному числу, а не строка, например, "Две тысячи десятый" (эффект может быть неожиданный, поэкспериментируйте)
Результат = ' . . '
На какую дату Вам нужно получать значение должности, на конец года ? Так и пишите:
ДатаМесяца=Дата(Год,12,31);
Если, конечно, у Вас в переменной Год правильное число, или строка, преобразуемая к нужному числу, а не строка, например, "Две тысячи десятый" (эффект может быть неожиданный, поэкспериментируйте)
(28) vlad071007, "по месяцам" это ни о чем. Дата какая ? Начало каждого месяца, конец месяца или другая ? Из одного только года дата не получится, нужно ещё месяц и какое-нибудь число месяца знать, чтобы получить КонМесяца. А у Вас в параметрах только год.
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,ЛюбоеЧислоМесяца));
ЛюбоеЧислоМесяца д.б. реальным. Чтобы не думать, сколько в месяце может быть дней, лучше поставить единицу
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,1));
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,ЛюбоеЧислоМесяца));
ЛюбоеЧислоМесяца д.б. реальным. Чтобы не думать, сколько в месяце может быть дней, лучше поставить единицу
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,1));
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот