Помогите пожалуйста!!!!Поле агрегатного объекта не обнаружено

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. vlad071007 24.04.13 14:43 Сейчас в теме
Всем здравствуйте! Мне нужно по сотрудника в должности отобрать вредные условия.
Написал код:
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;

Если ВидыРаботСДосрочнойПенсией=Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда

Пишет ошибку:Поле агрегатного объекта не обнаружено (ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией)
Где Ошибка?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Tolpinski 68 24.04.13 14:48 Сейчас в теме
Должность периодическая, её ".Получить" надо
3. vlad071007 24.04.13 14:51 Сейчас в теме
Поскажи пожалуйста Как
4. deniseek77 86 24.04.13 14:57 Сейчас в теме
Сотрудник.Должность.Получить(РабочаяДата()).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;

Например
5. areavel 24.04.13 14:58 Сейчас в теме
.Должность.Получить(Дата).
6. Tolpinski 68 24.04.13 15:03 Сейчас в теме
Вот кто бы так быстро мне ответил в соседней теме :)
7. vlad071007 24.04.13 15:04 Сейчас в теме
8. vlad071007 24.04.13 15:23 Сейчас в теме
Написал Так:

Должность = СоздатьОбъект("Справочник.Должности");
Должность.ИспользоватьВладельца(Сотрудник);
Должность.ВыбратьЭлементы();
Пока Должность.ПолучитьЭлемент() = 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)}: Значение не представляет агрегатный объект (Должность)
9. vlad071007 24.04.13 15:32 Сейчас в теме
Помогите пожалуйста. Как можно по справочнику сотрудники проверить должность? :(
10. areavel 24.04.13 15:37 Сейчас в теме
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
Пока Сотрудник.ПолучитьЭлемент()=1 Цикл
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.Получить([НужнаяДата]).ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;
Если ВидыРаботСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда

...
КонецЕсли;
КонецЦикла;
11. Tolpinski 68 24.04.13 15:49 Сейчас в теме
Ещё замечу, что в цикле не помешало бы условие
Если Сотрудник.ЭтоГруппа()=1 Тогда
Продолжить
КонецЕсли;

Должность только для элементов.
12. vlad071007 24.04.13 15:53 Сейчас в теме
Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
Сотрудник.ВыбратьЭлементы();
ДатаМесяца=КонМесяца(Дата(Год));
Пока Сотрудник.ПолучитьЭлемент()=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;
КонецЕсли;
КонецЦикла;

НЕ ВИДИТ ВидыРаботСДосрочнойПенсией :(
13. Tolpinski 68 24.04.13 16:04 Сейчас в теме
ДатаМесяца=КонМесяца(Дата(Год));
Тут что имелось в виду?, поменяй на ТекущаяДата() для эксперимента
14. vlad071007 24.04.13 16:05 Сейчас в теме
должность на конец месяца
15. areavel 24.04.13 16:09 Сейчас в теме
ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией какой тип?
16. vlad071007 24.04.13 16:16 Сейчас в теме
Перечисление.ВидыРаботСДосрочнойПенсией
17. Tolpinski 68 24.04.13 16:16 Сейчас в теме
а мне кажется дело в ДатаМесяца=КонМесяца(Дата(Год));
Зачем в дату преобразовывать? Если конец месяца, то надо указать какого.. Дата(Год,4,1)
18. vlad071007 24.04.13 16:22 Сейчас в теме
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 вы водит нули
21. falcon 24.04.13 16:43 Сейчас в теме
(18) vlad071007,
а почему бы в отладчике не посмотреть, чему у тебя ВидыРаботСДосрочнойПенсией равно?
дело 1 минуты...
24. Prionix 24.04.13 19:05 Сейчас в теме
(18) vlad071007, строку
ВидыРаботСДосрочнойПенсией = Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией;

замени на
ВидыРаботСДосрочнойПенсией = СокрЛП(Сотрудник.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией);
25. falcon 24.04.13 22:31 Сейчас в теме
(24) ну да... а потом строку сравнивать с перечислением ))))
19. areavel 24.04.13 16:23 Сейчас в теме
	Сотрудник = СоздатьОбъект("Справочник.Сотрудники");
	Сотрудник.ВыбратьЭлементы();
	Пока Сотрудник.ПолучитьЭлемент()=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; 
		КонецЕсли;
Показать


попробуй так
20. vlad071007 24.04.13 16:35 Сейчас в теме
22. vlad071007 24.04.13 17:01 Сейчас в теме
23. falcon 24.04.13 17:17 Сейчас в теме
(22) vlad071007,
ну значит все правильно работает )))

Z - это ДБФ?
НачПФР1 - это что?
26. vlad071007 25.04.13 05:35 Сейчас в теме
27. Pari 25.04.13 06:22 Сейчас в теме
(26) vlad071007, уже несколько раз в теме спрашивали про конструкцию КонМесяца(Дата(Год))
Результат = ' . . '
На какую дату Вам нужно получать значение должности, на конец года ? Так и пишите:
ДатаМесяца=Дата(Год,12,31);
Если, конечно, у Вас в переменной Год правильное число, или строка, преобразуемая к нужному числу, а не строка, например, "Две тысячи десятый" (эффект может быть неожиданный, поэкспериментируйте)
28. vlad071007 25.04.13 06:29 Сейчас в теме
суммы выводятся по месяцам с начала года, если у сотрудника в месяце есть вредные условия надо чтоб выводил, если нет чтоб вывел нули
29. Pari 25.04.13 06:38 Сейчас в теме
(28) vlad071007, "по месяцам" это ни о чем. Дата какая ? Начало каждого месяца, конец месяца или другая ? Из одного только года дата не получится, нужно ещё месяц и какое-нибудь число месяца знать, чтобы получить КонМесяца. А у Вас в параметрах только год.
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,ЛюбоеЧислоМесяца));
ЛюбоеЧислоМесяца д.б. реальным. Чтобы не думать, сколько в месяце может быть дней, лучше поставить единицу
ДатаКонцаМесяца = КонМесяца(Дата(Год,НомерМесяца,1));
30. motorkuzbassa.it 101 25.04.13 08:03 Сейчас в теме
наверное ЗУП 3.0 разрабатывают...
31. vlad071007 25.04.13 11:56 Сейчас в теме
Всем Спасибо Проблема решена
Оставьте свое сообщение

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