0. GeterX 623 14.11.18 16:13 Сейчас в теме

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1.
Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур.
Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. lord_soth 293 14.11.18 16:36 Сейчас в теме
Так как адрес физ.лиц в ЗУП 3 хранится в виде XML, то довольно часто требуется получить структуру адреса, пользуюсь вот это типовой функцией, у меня она правда переделана, но суть понятна:
АдресСтруктура = МодульРаботаСАдресами.СведенияОбАдресе(АдресXML, ДополнительныеПараметры);
Lilia; MGraf; GeterX; weldeer; +4 Ответить
2. VmvLer 14.11.18 17:16 Сейчас в теме
можно (нужно) потратить день на вдумчивое пролистывание общих модулей ЗУПа с составлением похожих заметок в свой блокнотик(сразу в мозг) - знания станут более глубоки, полезны и свои.

а представленная выборка годна лишь для отчетов и слишком мелка, мое мнение может не совпадать с мнением... и бла бла бла
Qarasique; sukorskis; SlavaKron; acanta; +4 10 Ответить
3. GeterX 623 14.11.18 18:15 Сейчас в теме
(2) Вы как более опытный специалист, не могли бы поделиться своими заметками?
Не у всех есть огромный опыт работы с конфигурацией.
olegans; Award; mongiilol; Tolpinski; KEV8383; dbachinsky; Dmitri93; payta; alanto23; ambabas; sansys; Kavar; ivnik; NNomad; haereticus; rintik; Hans; json; +18 Ответить
4. the1 392 14.11.18 22:29 Сейчас в теме
(2) Вы все 1150 общих модулей предлагаете пролистать? Не считая прочих
Прикрепленные файлы:
Nelli_A86; olegans; mongiilol; alanto23; NNomad; +5 Ответить
6. json 15.11.18 06:40 Сейчас в теме
(2) у вас есть возможность выложить свою выборку, годную не только для отчетов.
Но вы ею скорее всего не воспользуютесь, потому что гундеть на чужие статьи это одно, а написать свою это совсем другое.
JulianK; olegans; adamst; alanto23; d4rkmesa; Krio2; gradi; Kavar; NNomad; NatalkaBal; +10 Ответить
8. VmvLer 15.11.18 08:55 Сейчас в теме
(6) совершенно верно, гундеть дело нужное и правильное - это хоть как-то может задержать вал Г-кода!
Qarasique; +1 Ответить
9. json 15.11.18 09:21 Сейчас в теме
(8)а вы не выкладывайте Г-код, выкладывайте нормальный.
Смотрю вы на ходу показания меняете, то не устраивает количество функций, а теперь уже вы беспокоитесь за качество кода.

Сначала покажите свою компетентность, а потом критикуйте других. А так получается просто троллинг. Таких умников много, только их комментарии доверия не вызывают.
alanto23; +1 Ответить
11. VmvLer 15.11.18 10:01 Сейчас в теме
(9) Я не нуждаюсь в вашем доверии. И тут выражают мнения.

Если с моим мнением кто-то не согласен, то это повод приводить контраргументы,
а не пенять на компетентность. Если бомбит - идите отчитайте своих подчиненных,
возьмите с них показания, наконец.
Qarasique; +1 Ответить
12. json 15.11.18 10:16 Сейчас в теме
(11)
вот мои контраргументы:
человек постарался и выложил статью. Потратил свое свободное время на то, чтобы поделиться с другими.
Но ему пишут типа: молодец конечно, но это не то что нужно (а представленная выборка годна лишь для отчетов и слишком мелка). Это вы называете контраргументом? И где тут конструктив?

Каков итог? Он больше не будет ничего выкладывать, потому что осадок остается, и пропадает желание делиться с другими.
А мне как разработчику выгодно, чтобы появлялись такие статьи с наработками. Тем более, что у автора нет Г-кода, как вы его назвали. Лучше статьи зарабатывают высокий рейтинг и другие смогут использовать чужие наработки.

А теперь аргументируйте свое нытье. Если вы умеете рассуждать логически, то ожидаю от Вас контраргументов. А если это просто задето Ваше ЧСВ, то можете сделать из этого вывод или не сделать.
Feelthis; Award; mongiilol; snood; dbachinsky; d4rkmesa; Kavar; MikStyle; NNomad; +9 Ответить
15. VmvLer 15.11.18 10:56 Сейчас в теме
(12)
а представленная выборка годна лишь для отчетов и слишком мелка

да это мое мнение, лаконичное и понятное.

И в ответ на это я не увидел никаких контраргументов от вас и попытки представить
мое мнение как нытье выглядят непорядочно и нелепо.

Добавлю, я по прежнему считаю, что копипастить методы общих модулей в некие
блокнотики - непродуктивно. Образно таких людей называют "кэп" или "Копетан Америка"

Повторю свой аргумент еще раз, если вы не внимательно читаете:
Проще изучить общие модули и освоить для себя поиск в них
- это быстрее и эффективное, чем копаться в черти чем.

ах да - это вообще смех:

Каков итог? Он больше не будет ничего выкладывать, потому что осадок остается, и пропадает желание делиться с другими.

Профессиональные разработчики не пятиклассницы чтобы плакать если кому-то не понравился их бант.
Профессионалы берут из критики рациональное зерно и становятся опытнее, а ваш тезис полезен для защиты профанов и халтурщиков.
Qarasique; +1 2 Ответить
17. fxmike 48 15.11.18 12:25 Сейчас в теме
(15)
Просто Ваше мнение выглядит как чуть более детальное КГАМ. Пройди Вы мимо, пользы было ровно столько же.
user774630; JulianK; d4rkmesa; Ponommax; json; +5 Ответить
18. VmvLer 15.11.18 12:29 Сейчас в теме
(17) все верно, но почему это воспринимают в штыки я сам в шоке.
Qarasique; +1 Ответить
19. json 15.11.18 12:51 Сейчас в теме
(15)могу сказать, что я своими комментариями убил двух зайцев
- Поддержал автора
- Дал обратную связь троллю, который в следующий раз возможно подумает, прежде чем критиковать других

И то и другое полезно для развития нашего с Вами сообщества.

А какой цели добились вы - решайте сами
Award; alanto23; MGraf; d4rkmesa; mnb-next; NNomad; +6 Ответить
21. VmvLer 15.11.18 13:18 Сейчас в теме
23. SlavaKron 17.11.18 13:16 Сейчас в теме
(6) При всём уважении, посыл в (2) верный. Большую часть полезных процедур я почерпнул анализируя модули, которые всплывали в процессе отладки, анализируя экспортные методы, имеющие описание интерфейса в комментарии. Приведённые приёмы в статье будут полезны для начинающих, но чаще требуется всё таки что-то вокруг расчётов – в комментариях увидел более интересную информацию.
24. json 17.11.18 14:17 Сейчас в теме
(23)не готов с вами спорить по поводу полезности процедур, т.к. ЗУПа не касался уже много лет. Но судя по звездам полезность все таки присутствует.

Я для себя считаю, что сам такой формат статей полезен и его необходимо развивать. Т.к. не раз пользовался подобными статьями с Инфостарта, когда что-нибудь писал.
Поэтому я поддерживаю авторов, которые пишут в таком формате.

Кроме того, вы сами указали, что в комментариях есть более полезные (с вашей точки зрения) процедуры.
Вот только комментарии появились благодаря тому, что кто-то написал публикацию.

Если бы автор второго поста написал бы, что мол "выборка неполная, я бы еще добавил вот такую процедуру, такую и такую". И выложил свои примеры, то это был бы конструктив. Комментатору был бы респект.

Но критиковать других, не предлагая альтернативы, я считаю невежливо. Это уже не критика, а троллинг. Подобные комментарии получать к своим публикациям неприятно, и они демотивируют. Комментатор из (2) этого не понимает, т.к. он сам еще не написал ни одной статьи.

Ну и по поводу того, что нужно изучать модули - никто ж не спорит. Это приходится делать всем.
Просто некоторые процедуры приходится использовать чаще других. И подход, когда часто используемые процедуры вы ищете в своем блокноте, а не в конфигурации - экономит время. Автор вместо блокнота использует ИС, я тоже так делаю периодически.
Nelli_A86; snood; hopter; SvetaH; Dmitri93; alanto23; mnb-next; rybolovlev_ms; +8 Ответить
73. SanchoD 164 16.07.19 09:15 Сейчас в теме
(2) В ЗУП 3.1 свыше 21 тысячи экспортных процедур/функций. За день вдумчиво пролистать? Ну-ну.
74. VmvLer 16.07.19 09:59 Сейчас в теме
(73) не вижу сложности.

все таки считаю, что изучать модули и функции проще и удобнее именно в дереве конфигурации.
а эту поделку можно использовать ну разве что один раз для создания реперных точек у себя в голове если вы полный новичок в конфигурации. С опытом дерево модулей удобнее.
75. SanchoD 164 16.07.19 10:13 Сейчас в теме
(74) Понятно дело, что изучать функции придется в конфигурации. Но во-первых, это дело не одного дня. Во-вторых, когда нужна конкретная информация, а времени в обрез, то вдумчивое изучение всех модулей/функций не вариант. Результат (в виде отчета/обработки) нужен уже сейчас.
76. VmvLer 16.07.19 10:21 Сейчас в теме
(75) для меня такие отчеты это информационный мусор, исключая реперные точки для первичной оценки.
если вам непонятна моя картина мира, то вряд ли имеет смысл открывать ее более чем.
79. NoRazum 25 17.07.19 09:47 Сейчас в теме
(2) Потратить время перечитать. Вышел новый релиз. Опять это надо делать.
Пока не успокоится там с модулями. Бесполезное занятие.
80. VmvLer 17.07.19 10:16 Сейчас в теме
(79) доколе! Вот в 7.7. был один глобальный модуль, а теперь сиди перечитывай, да.
5. Malfarion 194 15.11.18 02:46 Сейчас в теме
Очень полезная статья, было бы очень здорово если вы поддерживали ее в актуальном состоянии и обновляли, не так давно все тоже самое приходилось рыскать самому.
7. SlavaKron 15.11.18 08:40 Сейчас в теме
Пример использования УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников (данные, формирующие Т-13):
&НаСервере
Процедура Команда1НаСервере()
	ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыПолученияДанныхУчетаВремени();
	ДатаНачала = '20181001';
	ДатаОкончания = КонецМесяца(ДатаНачала);
	ПараметрыПолученияДанных.ДатаНачала = ДатаНачала;
	ПараметрыПолученияДанных.ДатаОкончания = ДатаОкончания;
	
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	МассивСотрудников = Новый Массив;
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоНаименованию("Иванов Иван Иванович"));
	СоздатьВТСотрудники(МенеджерВременныхТаблиц, МассивСотрудников, ДатаНачала);
	УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);
	ТЗ = МенеджерВременныхТаблиц.Таблицы.Найти("ВТДанныеУчетаРабочегоВремениСотрудников").ПолучитьДанные().Выгрузить()
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СоздатьВТСотрудники(МенеджерВременныхТаблиц, МассивСотрудников, Месяц, ДатаАктуальности = Неопределено, ДатаНачала = Неопределено, ДатаОкончания = Неопределено)
	ТаблицаСотрудники = Новый ТаблицаЗначений;
	ТаблицаСотрудники.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
	ТаблицаСотрудники.Колонки.Добавить("Месяц", Новый ОписаниеТипов("Дата"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаАктуальности", Новый ОписаниеТипов("Дата"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаНачала", Новый ОписаниеТипов("Дата"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаОкончания", Новый ОписаниеТипов("Дата"));	
	
	Для Каждого Сотрудник Из МассивСотрудников Цикл
		СтрокаСотрудники = ТаблицаСотрудники.Добавить();
		СтрокаСотрудники.Сотрудник = Сотрудник;
	КонецЦикла;
	
	ТаблицаСотрудники.ЗаполнитьЗначения(Месяц, "Месяц");
	ТаблицаСотрудники.ЗаполнитьЗначения(?(ДатаАктуальности = Неопределено, ТекущаяДата(), ДатаАктуальности), "ДатаАктуальности");
	ТаблицаСотрудники.ЗаполнитьЗначения(?(ДатаНачала = Неопределено, Месяц, ДатаНачала), "ДатаНачала");
	ТаблицаСотрудники.ЗаполнитьЗначения(?(ДатаОкончания = Неопределено, КонецМесяца(Месяц), ДатаОкончания), "ДатаОкончания");
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ТаблицаСотрудники.Сотрудник,
	|	ТаблицаСотрудники.Месяц,
	|	ТаблицаСотрудники.ДатаАктуальности,		
	|	ТаблицаСотрудники.ДатаНачала,
	|	ТаблицаСотрудники.ДатаОкончания
	|ПОМЕСТИТЬ ВТСотрудники
	|ИЗ
	|	&ТаблицаСотрудники КАК ТаблицаСотрудники");
	
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаСотрудники", ТаблицаСотрудники);
	Запрос.Выполнить();
КонецПроцедуры
Показать
GeterX; acanta; fxmike; +3 Ответить
14. fxmike 48 15.11.18 10:32 Сейчас в теме
(7) Просто в качестве наблюдения, в БСП, на котором построен ЗУП и практически все современные конфигурации, есть много хороших функций, которые сокращают код, да и вообще радуют глаз, может пригодятся.
Например:

ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение); // возвращает массив с элементом = Значение
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(Таблица, Массив, ИмяПоля); // добавляет в таблицу строки и заполняет поле из массива
V_Ladeska; SlavaKron; +2 Ответить
27. GeterX 623 23.11.18 17:14 Сейчас в теме
(7) Спасибо за пример, добавил в статью.
30. GeterX 623 27.11.18 17:59 Сейчас в теме
(7) Процедура УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников выводит данные только за один месяц, а не знаете каким образом можно получить отработанное время за период, есть ли стандартная процедура получения подобных данных?
10. fxmike 48 15.11.18 09:32 Сейчас в теме
Эх, я только собрался писать похожую статью! Вообще, давно тема назрела.
tatyana_schukina; +1 Ответить
13. fxmike 48 15.11.18 10:23 Сейчас в теме
Я пользовался следующими функциями:
1. Получение среднего заработка - УчетСреднегоЗаработка.СреднийЗаработок(Сотрудник, ДатаНачалаСобытия, ДополнительныеПараметры = Неопределено);
2. Получение остатка отпусков сотрудника - ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату(СписокСотрудников,ДатаОтпуска,ВидыОтпусков)

В составе скрипта с помощью этих функций получал остатки отпусков сотрудников, средний заработок, сумму необходимую для начисления оценочных обязательств (в скрипте ограничение на 10 человек, потому что может долго считать). Вычисление среднего заработка слегка модифицировал, чтобы получать данные по массиву сотрудников

Скрипт запускал в этой обработке https://infostart.ru/public/610812/ если будете запускать в своей обработке, уберите последнюю строку

ДатаОтпуска 	= Дата(2018,01,01);
ДатаНачала 		= Дата(2017,01,01);
ДатаОкончания 	= Дата(2017,12,31);

ИсходнаяТаблица = УчетСреднегоЗаработка.ПустаяТаблицаИсходныхДанныхРасчетаОбщегоСреднегоЗаработка();
мПараметры = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛи­ц();
мПараметры.НачалоПериода 	= ДатаОтпуска;
мПараметры.ОкончаниеПериода	 = ДатаОтпуска;
мПараметры.КадровыеДанные 		= "Подразделение";

// 1. получаем сотрудников организации

СотрудникиОрганизации = КадровыйУчет.СотрудникиОрганизации(Истина,мПараметры);

// 2. получаем средний заработок сотрудников

СотрудникиОрганизации.Колонки.Добавить("СреднийЗаработок",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
СотрудникиОрганизации.Колонки.Добавить("ОстатокОтпуска",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(4, 0)));
СотрудникиОрганизации.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));

ОграничитьКоличество = 10;
// получем данные для расчета среднего
СтрокиКУдалению = Новый Массив;
Индекс = 1;

Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл
	Если Индекс <= ОграничитьКоличество Тогда
		СтрокаТаблицы = ИсходнаяТаблица.Добавить();
		СтрокаТаблицы.Сотрудник 						= СтрокаСотрудник.Сотрудник;
		СтрокаТаблицы.ПорядокРасчета 					= Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010;
		СтрокаТаблицы.ДатаНачалаСобытия 				= ДатаОтпуска;
		СтрокаТаблицы.НачалоПериодаРасчетаСреднего 		= ДатаНачала;
		СтрокаТаблицы.ОкончаниеПериодаРасчетаСреднего 	= ДатаОкончания;
		Индекс = Индекс + 1;
	Иначе 
		СтрокиКУдалению.Добавить(СтрокаСотрудник);
	КонецЕсли;
КонецЦикла;

Для каждого пСтрока из СтрокиКУдалению Цикл
	СотрудникиОрганизации.Удалить(пСтрока);
КонецЦикла;

ДанныеДляРасчета = УчетСреднегоЗаработка.ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудников(ИсходнаяТаблица, Неопределено, Неопределено, Истина);

Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл

	Отбор = Новый Структура("Сотрудник",СтрокаСотрудник.Сотрудник);
	
	ДанныеОВремени 		= ДанныеДляРасчета.ДанныеОВремени;
	ДанныеОНачислениях 	= ДанныеДляРасчета.ДанныеОНачислениях;
	ДанныеОбИндексации 	= ДанныеДляРасчета.ДанныеОбИндексации;
	
	ДанныеДляРасчетаСотрудник = Новый Структура("ДанныеОВремени,ДанныеОНачислениях,ДанныеОбИндексации");
	
	ДанныеДляРасчетаСотрудник.ДанныеОВремени 		= ДанныеОВремени.Скопировать(ДанныеОВремени.НайтиСтроки(Отбор));
	ДанныеДляРасчетаСотрудник.ДанныеОНачислениях 	= ДанныеОНачислениях.Скопировать(ДанныеОНачислениях.НайтиСтроки(Отбор));
	ДанныеДляРасчетаСотрудник.ДанныеОбИндексации 	= ДанныеОбИндексации.Скопировать(ДанныеОбИндексации.НайтиСтроки(Отбор));
	
	ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
	
	ДополнительныеПараметры.ДатаНачалаСобытия = ДатаОтпуска;
	
	Если Не ЗначениеЗаполнено(ДополнительныеПараметры.НачалоПериода) 
		Или Не ЗначениеЗаполнено(ДополнительныеПараметры.ОкончаниеПериода) Тогда
		ПериодРасчета = УчетСреднегоЗаработка.ПериодРасчетаОбщегоСреднегоЗаработкаСотрудника(ДатаОтпуска, СтрокаСотрудник.Сотрудник, ДополнительныеПараметры.Начисление);
		ДополнительныеПараметры.НачалоПериода = ДатаНачала;
		ДополнительныеПараметры.ОкончаниеПериода = ДатаОкончания;
	КонецЕсли;
		
	Если ДополнительныеПараметры.ПорядокРасчета = Неопределено Тогда
		ДополнительныеПараметры.ПорядокРасчета = УчетСреднегоЗаработкаКлиентСервер.ПорядокРасчетаОбщегоСреднегоЗаработка(ДатаОтпуска);
	КонецЕсли;
	ДополнительныеПараметры.ПорядокРасчета		 = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010;
	ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
		
	ДополнительныеПараметры.Индексации = ДанныеДляРасчета.ДанныеОбИндексации;
	
	СтрокаСотрудник.СреднийЗаработок = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработокОбщий(ДанныеДляРасчетаСотрудник.ДанныеОНачислениях, ДанныеДляРасчетаСотрудник.ДанныеОВремени, ДополнительныеПараметры);
	
КонецЦикла;

// 3. считаем остатки отпусков

СписокСотрудников = СотрудникиОрганизации.ВыгрузитьКолонку("Сотрудник");
ВидыОтпусков = Неопределено;
//ВидыОтпусков = Новый Массив;
//ВидыОтпусков.Добавить(Справочники.ВидыОтпусков.Основной);

ТаблицаОстаткиОтпусков   = ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату(СписокСотрудников,ДатаОтпуска,ВидыОтпусков);

Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл

	Отбор = Новый Структура("Сотрудник",СтрокаСотрудник.Сотрудник);
	СтрокиОтпуска = ТаблицаОстаткиОтпусков.НайтиСтроки(Отбор);
	
	ОстатокОтпуска = 0;
	
	Для каждого СтрокаОтпуска из СтрокиОтпуска Цикл
		ОстатокОтпуска = ОстатокОтпуска + СтрокаОтпуска.КоличествоДней;
	КонецЦикла;
	
	СтрокаСотрудник.ОстатокОтпуска = ОстатокОтпуска;
	СтрокаСотрудник.Сумма = ОстатокОтпуска * СтрокаСотрудник.СреднийЗаработок;
	
КонецЦикла;

//СотрудникиОрганизации.Колонки.Добавить("СреднийЗаработок",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
//Сообщить(УчетСреднегоЗаработка.СреднийЗаработок(СотрудникиОрганизации[0].Сотрудник,Дата(2017,12,31)));

ЗаполнитьТаблицуЗначенийНаФорме(СотрудникиОрганизации,"ТЗ2");

Показать
oitnur; for-elenak; GeterX; alex020690; the1; SlavaKron; +6 Ответить
28. GeterX 623 23.11.18 17:46 Сейчас в теме
(13) Спасибо за пример, добавил в статью.
86. lushka 8 18.09.19 09:04 Сейчас в теме
(13) У Вас ошибка в коде, надо так:
ДополнительныеПараметры.Индексации = ДанныеДляРасчетаСотрудник.ДанныеОбИндексации;

У меня в организации у нескольких человек нет индексации и по "счастливому совпадению" они в списке оказывались. Долго не могла понять почему по одному сотруднику средний считается правильно, а по нескольким - средний без индексации получается.
(65) Это видимо и на Ваш вопрос ответ.
88. fxmike 48 18.09.19 12:44 Сейчас в теме
(86) Спасибо за уточнение! Поправлю.
16. Skin123 139 15.11.18 11:46 Сейчас в теме
Функция, которая возвращает по сотрудникам их параметры отражения в учете (подразделения, способы отражения, статьи финасирования):
ОтражениеЗарплатыВБухучете.СоздатьВТСведенияОБухучетеЗарплатыСотрудников();

Для её использования нужно сохранить в менеджере временных таблиц таблицу сотрудников, для которых нужно получить сведения.
Ниже пример использования:
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
	
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
		
Запрос.Текст =
"ВЫБРАТЬ
|	ТаблицаСотрудников.Сотрудник,
|	ТаблицаСотрудников.Период,
|	ТаблицаСотрудников.Подразделение
|ПОМЕСТИТЬ ВТСотрудники
|ИЗ
|	&ТаблицаСотрудников КАК ТаблицаСотрудников"; 

Запрос.УстановитьПараметр("ТаблицаСотрудников", ТаблицаСотрудников);
Запрос.Выполнить();

ОтражениеЗарплатыВБухучете.СоздатьВТСведенияОБухучетеЗарплатыСотрудников(МенеджерВременныхТаблиц, "ВТСотрудники", "Сотрудник,Период", Организация);
Показать
for-elenak; alex020690; the1; SlavaKron; fxmike; +5 Ответить
43. GeterX 623 19.12.18 18:46 Сейчас в теме
(16)
СоздатьВТСведенияОБухучетеЗарплатыСотрудников


Добавил процедуру в статью. Только для редакции 3.1.8 пришлось немного изменить запрос.
20. NatalkaBal 26 15.11.18 13:00 Сейчас в теме
СведенияОбОрганизации = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Выборка.Организация, Выборка.Дата, "<Параметры через запятую>");

Список параметров Общий модуль ЗарплатаКадрыБазовый Функция ПолучитьСведенияОбОрганизации(Знач Организация, Знач ДатаЗначения = Неопределено, Знач СписокПоказателей = Неопределено) Экспорт

Р.S. Автор расширяй свою статью данными из комментариев. Будет бомба)
nazirovramzil; the1; +2 Ответить
44. GeterX 623 19.12.18 19:15 Сейчас в теме
(20)
(37) Добавил функцию в статью.
22. Dmitry77 78 15.11.18 14:27 Сейчас в теме
Статью дополняйте. Из комментариев в статью собирите. Вечером постараюсь выложить функции работы с временем. Получение отработанного времени и норм времени.
barsuk-best; +1 Ответить
25. lexushka 21.11.18 12:11 Сейчас в теме
А не подскажете -- как при подобной верстке на печать текст статьи вывести? Спасибо
26. GeterX 623 22.11.18 10:47 Сейчас в теме
(25) Попробуйте раскрыть каждый из спойлеров, выделить нужный материал и вывести выделенное на печать. Правда не все влезает .

(1) Добавил процедуру в статью. Немного ее видоизменил.
29. Hla 64 26.11.18 14:38 Сейчас в теме
Добрый день. Если мне надо получить данные по сотруднику, то пользуюсь механизмом -> https://infostart.ru/public/836840/
31. alexalexme 29.11.18 13:38 Сейчас в теме
Актуально для регионов РКС:
РазмерСН = ПроцентСевернойНадбавки(Объект, ДатаПолученияДанных)


Возвращает процент северной надбавки физического лица или сотрудника.
//
// Параметры:
// Объект - СправочникСсылка.Сотрудники, СправочникСсылка.ФизическиеЛица
// ДатаПолученияДанных
//
// ВозвращаемоеЗначение: Число
Bene_Valete; +1 Ответить
32. GeterX 623 29.11.18 14:31 Сейчас в теме
(31) Спасибо. Вы наверное имели ввиду функцию: КадровыйУчетРасширенный.ПроцентСевернойНадбавки(Объект, ДатаПолученияДанных)
user774630; +1 Ответить
33. Malfarion 194 04.12.18 17:47 Сейчас в теме
Ребят, как получить ДлительностьИспытательногоСрока ? через КадровыеДанныеСотрудников не хочет - не знает такой реквизит. Раньше была функция КадровыйУчет.ДанныеТрудовыхДоговоров() а ее взяли и выпилили в последних версиях программы.
34. haereticus 09.12.18 16:40 Сейчас в теме
Плановые начисления для списка сотрудников

ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудников(МассивСотрудник, ТекущаяДата(),,);

Не срабатывает, по причине того, что эта процедура не экспортная.Смотрел на 3.1.5 и 3.1.7
35. GeterX 623 09.12.18 20:06 Сейчас в теме
(34) Значит просто скопируйте процедуру к себе.
Или можно попробовать нечто похожее:

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

Показать
eLeMeNtaLe; haereticus; +2 Ответить
36. haereticus 10.12.18 13:02 Сейчас в теме
(35) Сделал копированием. Однако интересный подход у 1С , взять и на пустом месте закрыть доступ к нужным вещам
Denis_Lebedinsky; +1 Ответить
37. user_2010 441 13.12.18 22:18 Сейчас в теме
ЗУП.3.1 ОбщийМобдуль.ЗарплатаКадрыБазовый:
Функция ПолучитьСведенияОбОрганизации

Здесь можно найти все возможные показатели организации:
Если СписокПоказателей = Неопределено Тогда

СписокПоказателей = Новый Массив;
СписокПоказателей.Добавить("ТипНП");
СписокПоказателей.Добавить("КатНП");
СписокПоказателей.Добавить("КодНО");
СписокПоказателей.Добавить("ОснВидДеят");
СписокПоказателей.Добавить("ОКВЭД");
СписокПоказателей.Добавить("ОснВидДеят2");
СписокПоказателей.Добавить("ОКВЭД2");
СписокПоказателей.Добавить("ОГРН");
СписокПоказателей.Добавить("ОКАТО");
СписокПоказателей.Добавить("ОКТМО");
СписокПоказателей.Добавить("РегНомПФР");
СписокПоказателей.Добавить("ОКПО");
СписокПоказателей.Добавить("ОКФС");
СписокПоказателей.Добавить("ДатаРегистрации");
СписокПоказателей.Добавить("АдрПочт");
СписокПоказателей.Добавить("АдрПочт_XML");
СписокПоказателей.Добавить("СвидСН");
СписокПоказателей.Добавить("СвидНО");
СписокПоказателей.Добавить("СвидНОКод");
СписокПоказателей.Добавить("НаимНО");
СписокПоказателей.Добавить("НаимЮЛПол");
СписокПоказателей.Добавить("НаимЮЛСокр");
СписокПоказателей.Добавить("ИННЮЛ");
СписокПоказателей.Добавить("КППЮЛ");
СписокПоказателей.Добавить("АдрЮР");
СписокПоказателей.Добавить("АдрЮР_XML");
СписокПоказателей.Добавить("ПолныйАдрЮР");
СписокПоказателей.Добавить("АдрФакт");
СписокПоказателей.Добавить("АдрФакт_XML");
СписокПоказателей.Добавить("ОргИндекс");
СписокПоказателей.Добавить("ОргСубъект");
СписокПоказателей.Добавить("ОргКодСубъект");
СписокПоказателей.Добавить("ОргРайон");
СписокПоказателей.Добавить("ОргГород");
СписокПоказателей.Добавить("ОргНПункт");
СписокПоказателей.Добавить("ОргУлица");
СписокПоказателей.Добавить("ОргДом");
СписокПоказателей.Добавить("ОргКорпус");
СписокПоказателей.Добавить("ОргКвартира");
СписокПоказателей.Добавить("НаимОППол");
СписокПоказателей.Добавить("КППОП");
СписокПоказателей.Добавить("АдрОП");
СписокПоказателей.Добавить("АдрОП_XML");
СписокПоказателей.Добавить("ИндексОП");
СписокПоказателей.Добавить("СубъектОП");
СписокПоказателей.Добавить("КодСубъектОП");
СписокПоказателей.Добавить("РайонОП");
СписокПоказателей.Добавить("ГородОП");
СписокПоказателей.Добавить("НПунктОП");
СписокПоказателей.Добавить("УлицаОП");
СписокПоказателей.Добавить("ДомОП");
СписокПоказателей.Добавить("КорпусОП");
СписокПоказателей.Добавить("КвартираОП");
СписокПоказателей.Добавить("ФИО");
СписокПоказателей.Добавить("ФамилияИП");
СписокПоказателей.Добавить("ИмяИП");
СписокПоказателей.Добавить("ОтчествоИП");
СписокПоказателей.Добавить("ФИООтпрФЛ");
СписокПоказателей.Добавить("ИННФЛ");
СписокПоказателей.Добавить("СНИЛС");
СписокПоказателей.Добавить("ДатаРожд");
СписокПоказателей.Добавить("МестоРожд");
СписокПоказателей.Добавить("Пол");
СписокПоказателей.Добавить("Гражд");
СписокПоказателей.Добавить("ГраждСтрана");
СписокПоказателей.Добавить("КодУдЛичн");
СписокПоказателей.Добавить("ВидУдЛичн");
СписокПоказателей.Добавить("ОрганВыданУдЛичн");
СписокПоказателей.Добавить("КодПодрУдЛичн");
СписокПоказателей.Добавить("СерияУдЛичн");
СписокПоказателей.Добавить("НомерУдЛичн");
СписокПоказателей.Добавить("ДатаУдЛичн");
СписокПоказателей.Добавить("АдрПрописки");
СписокПоказателей.Добавить("АдрПрописки_XML");
СписокПоказателей.Добавить("АдрМЖ");
СписокПоказателей.Добавить("АдрМЖ_XML");
СписокПоказателей.Добавить("ИндексМЖ");
СписокПоказателей.Добавить("СубъектМЖ");
СписокПоказателей.Добавить("КодСубъектМЖ");
СписокПоказателей.Добавить("РайонМЖ");
СписокПоказателей.Добавить("ГородМЖ");
СписокПоказателей.Добавить("НПунктМЖ");
СписокПоказателей.Добавить("УлицаМЖ");
СписокПоказателей.Добавить("ДомМЖ");
СписокПоказателей.Добавить("КорпусМЖ");
СписокПоказателей.Добавить("КвартираМЖ");
СписокПоказателей.Добавить("ТелСлуж");
СписокПоказателей.Добавить("ТелДом");
СписокПоказателей.Добавить("ФИОРук");
СписокПоказателей.Добавить("ФамилияРук");
СписокПоказателей.Добавить("ИмяРук");
СписокПоказателей.Добавить("ОтчествоРук");
СписокПоказателей.Добавить("ИННРук");
СписокПоказателей.Добавить("ДатаРождРук");
СписокПоказателей.Добавить("МестоРождРук");
СписокПоказателей.Добавить("ПолРук");
СписокПоказателей.Добавить("ГраждРук");
СписокПоказателей.Добавить("ГраждСтранаРук");
СписокПоказателей.Добавить("ТелРук");
СписокПоказателей.Добавить("ДолжнРук");
СписокПоказателей.Добавить("КодУдЛичнРук");
СписокПоказателей.Добавить("ВидУдЛичнРук");
СписокПоказателей.Добавить("ОрганВыданУдЛичнРук");
СписокПоказателей.Добавить("КодПодрУдЛичнРук");
СписокПоказателей.Добавить("СерияУдЛичнРук");
СписокПоказателей.Добавить("НомерУдЛичнРук");
СписокПоказателей.Добавить("ДатаУдЛичнРук");
СписокПоказателей.Добавить("АдрМЖРукРФ");
СписокПоказателей.Добавить("АдрМЖРукРФ_XML");
СписокПоказателей.Добавить("ИндексМЖРук");
СписокПоказателей.Добавить("СубъектМЖРук");
СписокПоказателей.Добавить("КодСубъектМЖРук");
СписокПоказателей.Добавить("РайонМЖРук");
СписокПоказателей.Добавить("ГородМЖРук");
СписокПоказателей.Добавить("НПунктМЖРук");
СписокПоказателей.Добавить("УлицаМЖРук");
СписокПоказателей.Добавить("ДомМЖРук");
СписокПоказателей.Добавить("КорпусМЖРук");
СписокПоказателей.Добавить("КвартираМЖРук");
СписокПоказателей.Добавить("ФИООтпр");
СписокПоказателей.Добавить("ФИОБух");
СписокПоказателей.Добавить("ФамилияБух");
СписокПоказателей.Добавить("ИмяБух");
СписокПоказателей.Добавить("ОтчествоБух");
СписокПоказателей.Добавить("ИННБух");
СписокПоказателей.Добавить("ДатаРождБух");
СписокПоказателей.Добавить("МестоРождБух");
СписокПоказателей.Добавить("ПолБух");
СписокПоказателей.Добавить("ПолУпПред");
СписокПоказателей.Добавить("ГраждБух");
СписокПоказателей.Добавить("ГраждУпПред");
СписокПоказателей.Добавить("ГраждСтранаБух");
СписокПоказателей.Добавить("ГраждСтранаУпПред");
СписокПоказателей.Добавить("ТелБух");
СписокПоказателей.Добавить("ТелОтпр");
СписокПоказателей.Добавить("КодУдЛичнБух");
СписокПоказателей.Добавить("ВидУдЛичнБух");
СписокПоказателей.Добавить("ОрганВыданУдЛичнБух");
СписокПоказателей.Добавить("КодПодрУдЛичнБух");
СписокПоказателей.Добавить("СерияУдЛичнБух");
СписокПоказателей.Добавить("НомерУдЛичнБух");
СписокПоказателей.Добавить("ДатаУдЛичнБух");
СписокПоказателей.Добавить("АдрМЖБухРФ");
СписокПоказателей.Добавить("АдрМЖБухРФ_XML");
СписокПоказателей.Добавить("ИндексМЖБух");
СписокПоказателей.Добавить("СубъектМЖБух");
СписокПоказателей.Добавить("КодСубъектМЖБух");
СписокПоказателей.Добавить("РайонМЖБух");
СписокПоказателей.Добавить("ГородМЖБух");
СписокПоказателей.Добавить("НПунктМЖБух");
СписокПоказателей.Добавить("УлицаМЖБух");
СписокПоказателей.Добавить("ДомМЖБух");
СписокПоказателей.Добавить("КорпусМЖБух");
СписокПоказателей.Добавить("КвартираМЖБух");
СписокПоказателей.Добавить("ФИОУпПред");
СписокПоказателей.Добавить("ИННУпПред");
СписокПоказателей.Добавить("ТелУпПред");
СписокПоказателей.Добавить("КодУдЛичнУпПред");
СписокПоказателей.Добавить("ВидУдЛичнУпПред");
СписокПоказателей.Добавить("ОрганВыданУдЛичнУпПред");
СписокПоказателей.Добавить("СерияУдЛичнУпПред");
СписокПоказателей.Добавить("НомерУдЛичнУпПред");
СписокПоказателей.Добавить("ДатаУдЛичнУпПред");
СписокПоказателей.Добавить("ДатаРождУпПред");
СписокПоказателей.Добавить("АдрМЖУпПредРФ");
СписокПоказателей.Добавить("АдрМЖУпПредРФ_XML");
СписокПоказателей.Добавить("МестоРождУпПред");
СписокПоказателей.Добавить("ИндексМЖУпПред");
СписокПоказателей.Добавить("СубъектМЖУпПред");
СписокПоказателей.Добавить("КодСубъектМЖУпПред");
СписокПоказателей.Добавить("РайонМЖУпПред");
СписокПоказателей.Добавить("ГородМЖУпПред");
СписокПоказателей.Добавить("НПунктМЖУпПред");
СписокПоказателей.Добавить("УлицаМЖУпПред");
СписокПоказателей.Добавить("ДомМЖУпПред");
СписокПоказателей.Добавить("КорпусМЖУпПред");
СписокПоказателей.Добавить("КвартираМЖУпПред");
СписокПоказателей.Добавить("ФаксИсп");
СписокПоказателей.Добавить("ДолжнОтпр");
СписокПоказателей.Добавить("ДатаПереходаНаУСН");
СписокПоказателей.Добавить("БанкСчетНомер");
СписокПоказателей.Добавить("БанкСчетНаимБанка");
СписокПоказателей.Добавить("БанкСчетКоррСчетБанка");
СписокПоказателей.Добавить("БанкСчетБИКБанка");
СписокПоказателей.Добавить("РегистрационныйНомерФСС");
СписокПоказателей.Добавить("КодПодчиненностиФСС");
СписокПоказателей.Добавить("СтраховойТариф");
СписокПоказателей.Добавить("ТелОрганизации");
СписокПоказателей.Добавить("ФаксОрганизации");
СписокПоказателей.Добавить("ОбъектНалогообложенияУСН");
СписокПоказателей.Добавить("НаимГоловнОрг");
СписокПоказателей.Добавить("КППГоловнОрг");
СписокПоказателей.Добавить("ФИОИсп");
СписокПоказателей.Добавить("ДолжнИсп");
СписокПоказателей.Добавить("ТелИсп");
СписокПоказателей.Добавить("АдресЭлПочтыИсп");
СписокПоказателей.Добавить("КодОрганаПФР");
СписокПоказателей.Добавить("АдресЭлектроннойПочтыОрганизации");
СписокПоказателей.Добавить("КодПодчФССДобрСтрах");
СписокПоказателей.Добавить("ШифрСтрахователяФСС");
СписокПоказателей.Добавить("СистемыНалогообложения");
СписокПоказателей.Добавить("ВидПлательщикаСтраховыхВзносов");
СписокПоказателей.Добавить("КодТарифаПлательщикаПоУмолчаниюДляРСВ");
СписокПоказателей.Добавить("КодОрганаФСГС");
user1235208; +1 Ответить
38. the1 392 18.12.18 14:57 Сейчас в теме
Коллеги, не подскажет кто, есть ли типовая функция для получения расчетной базы удержаний?
Bene_Valete; +1 Ответить
39. GeterX 623 18.12.18 16:10 Сейчас в теме
(38) стоит посмотреть на процедуру РассчитатьЗначениеПоказателяРасчетнаяБазаУдержаний (Обработки.МенеджерРасчетаЗарплаты)
40. the1 392 18.12.18 16:20 Сейчас в теме
(39) Смотрел, спасибо. Но там на входе уже есть заполненный МенеджерВременныхТаблиц, и покуда до этой процедуры дойдет, уже прошла куча расчетов с этим менеджером, 48 таблиц рассчитано.
Прикрепленные файлы:
41. GeterX 623 18.12.18 16:57 Сейчас в теме
(40) мне кажется, выцепить эту процедуру не реально, быстрее и проще написать свой запрос.
Этими запросами часть данных берется из уже начисленных документов, а часть из документа начисления, а затем все это объединятся в одну таблицу.
42. the1 392 18.12.18 17:20 Сейчас в теме
(41) Да, там полная жесть творится в этих МенеджерахРасчетаЗарплаты,Времени,РасчетнойБазы. Что-то отловить очень трудно, т.к. передача данных идет вся через МенеджерВременныхТаблиц, а этот менеджер еще болтается между несколькими обработками и общими модулями.

Думал, есть готовая ф-ия по типу указанных в публикации, было бы удобно.
Туки Туки; +1 Ответить
48. leosoft 143 20.12.18 12:37 Сейчас в теме
(40) Не подскажите - каким инструментом это получено?
50. the1 392 20.12.18 20:27 Сейчас в теме
(48) Отладчик же, Shift+F9 по строке МенеджерВременныхТаблиц
user597231_DNorov; +1 Ответить
45. krollzlat 20.12.18 07:56 Сейчас в теме
Отличная статья, особенно для тех, кто редко работает с подобными задачами.
46. German_Tagil 7 20.12.18 09:32 Сейчас в теме
47. Rusleg 72 20.12.18 11:14 Сейчас в теме
Господа разработчики ЗУП имеют тенденцию перетряхивать программный интерфейс. Так что все что тут написано, возможно, уже неактуально в ЗУП 3.1.8. Полагаться на их программный интерфейс себе дороже.
Например, почему-то они ликвидировали функцию ДанныеТрудовыхДоговоров из общего модуля КадровыйУчет.
Max27; haereticus; AlX0id; fxmike; +4 Ответить
51. laperuz 42 21.12.18 14:59 Сейчас в теме
(47)
ДанныеТрудовыхДоговоров - процедура, описанная в области #СлужебныеПроцедурыИФункции.

Разработчики обещали обратную совместимость только для методов, описанных в области #ПрограммныйИнтерфейс
user774630; +1 Ответить
52. Rusleg 72 21.12.18 16:08 Сейчас в теме
(51)Мне об этом обещании ничего неизвестно.
Вот если бы были комментарии к этим областям было бы другое дело.
haereticus; +1 Ответить
53. laperuz 42 21.12.18 16:41 Сейчас в теме
(52) Как-то так
Прикрепленные файлы:
user774630; GeterX; +2 Ответить
54. AlX0id 21.12.18 22:00 Сейчас в теме
(47)
Да не только разработчики ЗУП.. В той же КА/ЕРП/УТ толком пользоваться ИХ АПИ для себя в долгосрочной перспективе всегда ведет к тому, что они что-нибудь переименуют/исправят ошибку в названии функции/ поменяют формат входных данных..
Но с другой стороны - рисовать свои функции может быть еще хуже, ибо можно что-то не учесть в расчетах, это раз. А два - все равно метаданные/алгоритмы будут меняться, и вероятность того, что свой код станет не рабочим не меньше той, что нерабочим станет код с использованием типовых процедур..
user1235208; SanchoD; Туки Туки; +3 Ответить
49. sansys 56 20.12.18 17:35 Сейчас в теме
Автору огромное спасибо, однозначно плюс!!! Коллеги, подобные статьи делают наш труд легче, а зарабатывание денег проще ))) В типовых конфигурациях информацию приходится собирать по крупицам и любая помощь всегда на вес золота.
user597231_DNorov; +1 Ответить
55. d4rkmesa 22.12.18 23:02 Сейчас в теме
Респект! Тут мини-перепись балаболов форумных... По себе знаю, что нужно далеко не один день изучать ЗУП, чтобы понять какие функции можно использовать, а какие нет. Была бы подобная статья полгода назад, существенно бы облегчила работу.
56. user619273_alevtina 30.12.18 18:05 Сейчас в теме
Спасибо за статью.
user597231_DNorov; +1 Ответить
57. alanto23 33 09.01.19 11:09 Сейчас в теме
Спасибо за статью! В цвет!
user597231_DNorov; +1 Ответить
58. SlavaKron 26.02.19 10:47 Сейчас в теме
Программное получение начислений, взносов, НДФЛ, удержаний и т.д. – в общем всё то, что рассчитывается в документе начисления зарплаты (проверял на ЗУП 3.1.8.246):
&НаСервереБезКонтекста
Процедура ПолучитьДанныеНачисленийНаСервере(МассивСотрудников, ДатаНачала, ДатаОкончания, Организация)
	ДополнительныеПараметры = РасчетЗарплатыРасширенный.ДополнительныеПараметрыЗаполненияТаблицДокумента();
	ДополнительныеПараметры.Сотрудники = МассивСотрудников;
	ДополнительныеПараметры.ОкончаниеПериода = ДатаОкончания;
	ДополнительныеПараметры.РежимНачисления = Перечисления.РежимНачисленияЗарплаты.ОкончательныйРасчет;	
	
	ПараметрыОписания = Новый Структура;
	ПараметрыОписания.Вставить("ИзменениеБезОграничений" ,Истина);
	ПараметрыОписания.Вставить("РегистрацияНачисленийДоступна", Истина);
	ПараметрыОписания.Вставить("СпособыРасчетаСреднегоЗаработка", Неопределено);
	ПараметрыОписания.Вставить("ПризнакКомпенсацииУдержанияОтпуска", Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать);
	ОписаниеДокумента = КадровыйУчетРасширенныйКлиентСервер.ОписаниеДокумента(ПараметрыОписания);
	
	ДанныеНачислений = РасчетЗарплатыРасширенный.ДанныеДляЗаполненияТаблицДокумента(ОписаниеДокумента, Организация, ДатаНачала, ДополнительныеПараметры);
КонецПроцедуры
Показать
Прикрепленные файлы:
ПолучениеДанныхНачисленийЗУП318.epf
lg2marvel; user774630; GeterX; Max27; +4 Ответить
59. Somaha 21.03.19 16:32 Сейчас в теме
Доброго времени суток. Код использованный для получения данных табеля Т-13 некорректен.
УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);

Возвращает таблицу с "плановым" временем по графику, т.е. как сотрудник работал, если бы ничего не происходило. Отклонения (отпуска, болезни и т.д.) не учитываются.
Для получения фактических данных использовал процедуру
УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыЗаполнения);

Параметр "ПараметрыЗаполнения" определяется тут:
УчетРабочегоВремениРасширенный.ПараметрыДляЗапросВТДанныеУчетаВремениИСостоянийСотрудников();


Релиз 3.1.9.159
Skolkovo; uralcentr; SlavaKron; +3 Ответить
60. SlavaKron 26.03.19 10:32 Сейчас в теме
(59) Точно! Соответственно, решается вопрос в (30) - СоздатьВТДанныеУчетаВремениИСостоянийСотрудников возвращает все дни за период. Исправьте пожалуйста:
&НаСервере
Процедура Команда1НаСервере()
	
	ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыДляЗапросВТДанныеУчетаВремениИСостоянийСотрудников();
	ПараметрыПолученияДанных.ДатаНачала = Период.ДатаНачала;
	ПараметрыПолученияДанных.ДатаОкончания = Период.ДатаОкончания;
	
	ПараметрыПолученияДанных.МесяцДатаНачала = Период.ДатаНачала;
	ПараметрыПолученияДанных.МесяцДатаОкончания = Период.ДатаОкончания;
	ПараметрыПолученияДанных.ДатаАктуальности = ТекущаяДата();
	
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	СоздатьВТСотрудники(МенеджерВременныхТаблиц, СписокСотрудников.ВыгрузитьЗначения(), Период.ДатаНачала, Период.ДатаОкончания);
	
	УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);
	ТЗ = МенеджерВременныхТаблиц.Таблицы.Найти("ВТДанныеУчетаВремениИСостоянийСотрудников").ПолучитьДанные().Выгрузить();
	ТЗ.Сортировать("Дата");
	
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СоздатьВТСотрудники(МенеджерВременныхТаблиц, МассивСотрудников, ДатаНачала, ДатаОкончания)
	ТаблицаСотрудники = Новый ТаблицаЗначений;
	ТаблицаСотрудники.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаНачала", Новый ОписаниеТипов("Дата"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаОкончания", Новый ОписаниеТипов("Дата")); 
	
	Для Каждого Сотрудник Из МассивСотрудников Цикл
		СтрокаСотрудники = ТаблицаСотрудники.Добавить();
		СтрокаСотрудники.Сотрудник = Сотрудник;
	КонецЦикла;
	
	ТаблицаСотрудники.ЗаполнитьЗначения(ДатаНачала, "ДатаНачала");
	ТаблицаСотрудники.ЗаполнитьЗначения(ДатаОкончания, "ДатаОкончания");
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ТаблицаСотрудники.Сотрудник,
	|	ТаблицаСотрудники.ДатаНачала,
	|	ТаблицаСотрудники.ДатаОкончания
	|ПОМЕСТИТЬ ВТСотрудники
	|ИЗ
	|	&ТаблицаСотрудники КАК ТаблицаСотрудники");
	
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаСотрудники", ТаблицаСотрудники);
	Запрос.Выполнить();
КонецПроцедуры
Показать
eksetro; user1235208; uralcentr; +3 Ответить
77. user1235208 16.07.19 13:33 Сейчас в теме
(60) Всем привет, в дополнение к указанному коду рекомендую к использованию остальные ВТ текущего МенеджерВременныхТаблиц, вот список:

ВТСотрудники
ВТПериодыРаботыСотрудников
ВТМесяцы
ВТСотрудникиМесяцы
ВТПериодыДействияГрафиковДляКалендарей
ВТСоответствиеСостоянийВидамУчетаВремени
ВТДатыСостояний
ВТПараметрыЗарегистрированныхДанныхУчетаВремени
ВТСотрудникСРассчитаннымиДанными
ВТПараметрыПолученияДанныхПоСотрудникам
ВТЗарегистрированныеВидыДанныхУчетаВремени
ВТИспользуемыеВидыДанных
ВТВытесняющиеВидыДанных
ВТВспомогательнаяТаблицаОпределенияУстановленныхДнейПериода
ВТИспользуемыеИсточникиДанныхНеотфильтрованные
ВТИсточникиПолученияДанныхУчетаВремени
ВТИзмеренияДатыДляСрезаГрафиков
ВТГрафикРаботыСотрудниковСрезПоследних
ВТГрафикРаботыСотрудниковСрезПервых
ВТГрафикРаботыСотрудников
ВТГрафикРаботыСотрудниковСрезПоследнихДополненный
ВТГрафикиСотрудниковСрезИДвижения
ВТИнтервалыГрафиков
ВТПериодыДейсвияОбщихГрафиковСотрудников
ВТОбщиеГрафики
ВТДанныеОбщихГрафиков
ВТДанныеРегистровУчетаВремени
ВТНормаВремени
ВТДанныеУчетаРабочегоВремениСотрудников
ВТСостоянияСотрудников
ВТДанныеУчетаВремениПоСостояниям
ВТДанныеУчетаВремениИСостоянийСотрудников
Bene_Valete; +1 Ответить
78. user1235208 17.07.19 06:41 Сейчас в теме
(60)
ПараметрыПолученияДанных.МесяцДатаНачала = Период.ДатаНачала;


Дополню важный нюанс, если запрашиваете данные за произвольный период, тогда необходимо указать начало месяца в МесяцДатаНачала, иначе данные за неполный месяц начала посчитаны не будут. Однако дата переданная в МесяцДатаОкончания произвольным числом даст итоги по неполному месяцу.

ПараметрыПолученияДанных.ДатаНачала = Период.ДатаНачала  //Оставляем без изменений
ПараметрыПолученияДанных.МесяцДатаНачала = НачалоМесяца(Период.ДатаНачала);


------
Версия ЗКГУ 3.1.9.205
61. tamepjlah 26.03.19 12:00 Сейчас в теме
Функция, позволяющая получить работающих сотрудников по заданным параметрам отбора
ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения);

работает некорректно в случае, если в регистре сведений "Данные для подбора сотрудников" нет записи с видом события "Увольнение" по сотруднику, который по факту уволен. У нас такие сотрудники вылезли после переноса из старой базы (думается мне, что была кривая обработка по переносу).
В этом случае данный сотрудник будет считаться трудоустроенным.
Также данного сотрудника нельзя будет выбрать, например, в расчетном листке, если указана организация. База просто не видит этого сотрудника.
62. Somaha 04.04.19 10:06 Сейчас в теме
Доброго времени суток.
Релиз 3.1.9.187. Получение действующих плановых начислений для списка сотрудников не сработает, т.к. функция не экспортная.
ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудников(МассивСотрудник, ТекущаяДата(),,);
63. haereticus 04.04.19 13:32 Сейчас в теме
(62) Выше писали: скопируйте себе эту функцию да и всё
64. Somaha 04.04.19 14:31 Сейчас в теме
65. Centa96 15.05.19 13:49 Сейчас в теме
Ребята у меня вопрос по поводу Получить данные среднего заработка, остатка отпусков, резерва отпусков. Я использовала её для получения данных для печати Подробного расчета начислений, но я не совсем поняла как заполняется индексация.
87. lushka 8 18.09.19 09:07 Сейчас в теме
(65) Исправьте строчку одну
Вместо

ДополнительныеПараметры.Индексации = ДанныеДляРасчета.ДанныеОбИндексации;

надо

ДополнительныеПараметры.Индексации = ДанныеДляРасчетаСорудник.ДанныеОбИндексации;
66. mikeA 1 04.06.19 07:10 Сейчас в теме
1. Статья нужная, плюс однозначно. Автору респект.

2. Как получить с помощью типовых функций периоды работы сотрудника в подразделениях? Там вроде везде только ДатаПриема и ДатаУвольнения. Может что пропустил конечно.
68. GeterX 623 13.06.19 17:44 Сейчас в теме
(66)
Может что пропустил конечно.

Мне кажется нужная для вас информация содержится в Регистре сведений Кадровая история сотрудников.
Выводится простым запросом.
69. mikeA 1 18.06.19 10:43 Сейчас в теме
(68) Как получить кадровую историю запросом я знаю. У меня даже есть процедура, добавляющая в менеджер временных таблиц таблицу с кадровой историей с блэкджеком и с учётом особенностей компании.

Меня интересует, можно ли получить её с помощью типовых функций. Мы же теперь вроде как API используем?
70. GeterX 623 18.06.19 11:16 Сейчас в теме
(69) В конфигурации кадровая история получается следующим образом (Справочники - Сотрудники - ФормаИсторииИзмененияМестаРаботы):

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

Показать
67. kievol 13.06.19 17:20 Сейчас в теме
Спасибо. Очень полезно и познавательно.
71. Somaha 03.07.19 10:05 Сейчас в теме
Кстати, для пункта "Получить работающих сотрудников по заданным параметрам отбора", в строке
ПараметрыПолучения.КадровыеДанные = "Сотрудник,ФизическоеЛицо,Подразделение,Должность,ДолжностьПоШтатномуРасписанию,КоличествоСтавок,ВидЗанятости,ДатаПриема,ДатаУвольнения,ГрафикРаботы";

Сотрудник и ФизическоеЛицо можно убрать, т.к. это "предопределенные" колонки в возвращаемой ТЗ. Если оставить как есть, то в ТЗ будут колонки Сотрудник, ФизическоеЛицо, Сотрудник1, ФизическоеЛицо1.
user1235208; GeterX; +2 Ответить
72. graphbuh 211 09.07.19 17:13 Сейчас в теме
Отличная подборка!
...может загнать ее в html -файл как это было в книге "Простые примеры разработки" ?
А там и до книги недалего.. )
81. user1235208 22.07.19 05:32 Сейчас в теме
Может кому пригодится, или кто предложит как сделать лучше)

Функция для расчета количества полных месяцев стажа по трудовой книжке:

Функция ПолучитьНепрерывныйСтажНадбавку(Сотрудник, ДатаПеревода)
	
	ПолныхМесяцевСтажаПоДатуПеревода = 0;
	НадбавкаЗаСтаж  = 0;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СтажиФизическихЛицСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
		|	СтажиФизическихЛицСрезПоследних.ВидСтажа КАК ВидСтажа,
		|	СтажиФизическихЛицСрезПоследних.ДатаОтсчета КАК ДатаОтсчета,
		|	СУММА(СтажиФизическихЛицСрезПоследних.РазмерМесяцев) КАК РазмерМесяцев,
		|	СУММА(СтажиФизическихЛицСрезПоследних.РазмерДней) КАК РазмерДней,
		|	СтажиФизическихЛицСрезПоследних.ИсчисляетсяСДатыПриема КАК ИсчисляетсяСДатыПриема
		|ИЗ
		|	РегистрСведений.СтажиФизическихЛиц.СрезПоследних(&Дата, ) КАК СтажиФизическихЛицСрезПоследних
		|ГДЕ
		|	СтажиФизическихЛицСрезПоследних.ФизическоеЛицо = &ФизическоеЛицо
		|
		|СГРУППИРОВАТЬ ПО
		|	СтажиФизическихЛицСрезПоследних.ВидСтажа,
		|	СтажиФизическихЛицСрезПоследних.ФизическоеЛицо,
		|	СтажиФизическихЛицСрезПоследних.ДатаОтсчета,
		|	СтажиФизическихЛицСрезПоследних.ИсчисляетсяСДатыПриема";
	
	//Запрос.УстановитьПараметр("ВидСтажа", ВидСтажа);
	Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник.ФизическоеЛицо);
	Запрос.УстановитьПараметр("Дата", ДатаПеревода);
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	ТаблицаМедицинскихСтажей = Новый ТаблицаЗначений;
	ТаблицаМедицинскихСтажей.Колонки.Добавить("ДатаОтсчета");
	ТаблицаМедицинскихСтажей.Колонки.Добавить("РазмерМесяцев");
	ТаблицаМедицинскихСтажей.Колонки.Добавить("РазмерДней");
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если СтрНайти(ВРЕГ(ВыборкаДетальныеЗаписи.ВидСтажа), "МЕДИЦИНСКИЙ СТАЖ")>0 Тогда
			СтрокаМедстаж = ТаблицаМедицинскихСтажей.Добавить();
			СтрокаМедстаж.ДатаОтсчета = ВыборкаДетальныеЗаписи.ДатаОтсчета;
			СтрокаМедстаж.РазмерМесяцев = ВыборкаДетальныеЗаписи.РазмерМесяцев;
			СтрокаМедстаж.РазмерДней = ВыборкаДетальныеЗаписи.РазмерДней;
		КонецЕсли;	
	КонецЦикла;
	
	Если ТаблицаМедицинскихСтажей.Количество() = 1 Тогда
		ДатаНачалоСтаж = ДобавитьМесяц(ТаблицаМедицинскихСтажей[0].ДатаОтсчета, -ТаблицаМедицинскихСтажей[0].РазмерМесяцев);
		ДатаНачалоСтаж = НачалоДня(ДатаНачалоСтаж) - ТаблицаМедицинскихСтажей[0].РазмерДней*24*60*60;
		Если ДатаПеревода > ДатаНачалоСтаж Тогда
			
			Запрос = Новый Запрос;
			Запрос.Текст = 
				"ВЫБРАТЬ
				|	РАЗНОСТЬДАТ(&ДатаНачалоСтаж, &ДатаПеревода, МЕСЯЦ) КАК Поле1";
			
			Запрос.УстановитьПараметр("ДатаНачалоСтаж", ДатаНачалоСтаж);
			Запрос.УстановитьПараметр("ДатаПеревода", ДатаПеревода);
			РезультатЗапроса = Запрос.Выполнить();
			ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
				ПолныхМесяцевСтажаПоДатуПеревода = ВыборкаДетальныеЗаписи.Поле1;
			КонецЦикла;
			ДатаПереводаДень = День(ДатаПеревода);
			ДатаНачалоСтажаДень = День(ДатаНачалоСтаж);
			Если ДатаПереводаДень < ДатаНачалоСтажаДень Тогда  
				ПолныхМесяцевСтажаПоДатуПеревода = ПолныхМесяцевСтажаПоДатуПеревода - 1;
			КонецЕсли;			
		КонецЕсли;	
	ИначеЕсли ТаблицаМедицинскихСтажей.Количество()>1 Тогда	
		Сообщить("У данного сотрудника, зафиксированны более чем 1 запись медицинского стажа, обратитесь к администратору");
	КонецЕсли;
	Если ПолныхМесяцевСтажаПоДатуПеревода>=36 И ПолныхМесяцевСтажаПоДатуПеревода<60 Тогда
		НадбавкаЗаСтаж = 20;
	ИначеЕсли ПолныхМесяцевСтажаПоДатуПеревода>=60 Тогда
		НадбавкаЗаСтаж = 30;
	Иначе
		НадбавкаЗаСтаж = 0;	
	КонецЕсли;
	
	Возврат НадбавкаЗаСтаж;
КонецФункции
Показать
user1020226; +1 Ответить
82. DoctorRoza 14.08.19 13:26 Сейчас в теме
Комрады, привет. Мне нужно из ЗУП 3.1 (3.1.10.78), получить данные по начислениям и удержаниям по всем организациям. Эти данные нужно залить в УТ 10.3 (для управленческого учета). Делать буду через com регл. заданием с загрузкой в специальный РС. Что-то вроде, Расчетного листка. Подскажите, пожалуйста, в конфигурации есть готовые модули для этого, какими можно воспользоваться? Спасибо
91. lg2marvel 30.09.19 09:49 Сейчас в теме
83. lemni 67 20.08.19 16:43 Сейчас в теме
Добрый день! Может кому-то попадалась функция по расчету стоимости часа сотрудника (или списка сотрудников)?
84. artem_savonin 06.09.19 03:04 Сейчас в теме
Добрый день. Подскажите, может есть стандартная функция, чтобы получить данные по начислениям и отработанным часам сотрудника в разрезе подразделений и должностей. Проблема в том, что сотрудники в пределах одного месяца перемещаются между должностями внутри подразделения. В регистре НачисленияУдержанияПоСотрудникам нет информации о должности сотрудника по которой происходит начисление. Оплату по окладу возможно и удастся получить, т.к. в НачисленияУдержанияПоСотрудникам есть дата с которой действует данное начисление, а вот начисления премии регистрируется за период в целом, за весь месяц. Посоветуйте как получить начисленные суммы и отработанные часы в разрезе подразделений и должностей.
85. artem_savonin 08.09.19 06:12 Сейчас в теме
89. gsnls15 53 19.09.19 13:12 Сейчас в теме
(85) Поделитесь, пожалуйста, как Вы его решили. Тоже актуально.
90. artem_savonin 26.09.19 16:35 Сейчас в теме
(89) Если коротко: взял запрос из стандартного отчета "Анализ з/п по сотрудникам в целом за период". Но проблему премий он не решает. Премии распределял пропорционально основному заработку.
92. payta 02.10.19 16:18 Сейчас в теме
для склонения можно еще использовать платформенный метод ПолучитьСклоненияСтроки()
93. ktibomail 5 04.10.19 04:37 Сейчас в теме
Практически все, что выводится в расчетном листке, можно получить следующим кодом:

АнализНачисленийИУдержаний = Отчеты.АнализНачисленийИУдержаний.Создать();
		
	ДополнительныеПоля = АнализНачисленийИУдержаний.ДополнительныеПоляПредставлений();
	
	// Удаляем из ДополнительныеПоля все, кроме нужных (в данном случае это ДолжностьПоШтатномуРасписанию)
	ТЗ = ДополнительныеПоля.Представления_КадровыеДанныеСотрудниковАнализНачисленийИУдер­жаний;		
	Для Индекс = -ТЗ.Количество()+1 По 0 Цикл
	    Если ТЗ[-Индекс].ИмяПоля <> "ДолжностьПоШтатномуРасписанию" Тогда
	        ТЗ.Удалить(-Индекс);
	    КонецЕсли;
	КонецЦикла;		
	
	ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(АнализНачисленийИУдержаний, ДополнительныеПоля);	
	АнализНачисленийИУдержаний.ИнициализироватьОтчет();

// Удаляем лишние отборы
	ТекстЗапроса = АнализНачисленийИУдержаний.СхемаКомпоновкиДанных.НаборыДанных.НачисленияУдержанияОбъединенные.Элементы.НачисленияУдержания.Запрос;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И НЕ ВзаиморасчетыССотрудниками.Регистратор В (&ИсключаемыеСсылки)", "");
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И НЕ НачисленияИУдержания.Регистратор В (&ИсключаемыеСсылки)", "");
	
	// Через построитель устанавливаем нужные отборы (период и физлица)
	ПостроительЗапроса = Новый ПостроительЗапроса(ТекстЗапроса);
	ПостроительЗапроса.Параметры.Вставить("НачалоПериода", НачалоМесяца(Период));
	ПостроительЗапроса.Параметры.Вставить("КонецПериода", КонецМесяца(Период));
	ПостроительЗапроса.Параметры.Вставить("ОкончаниеИнтервалаПредставленияПериоды", ДобавитьМесяц(КонецМесяца(Период),60));
	ПостроительЗапроса.Параметры.Вставить("МаксимальнаяДата", Дата(3999,12,31,23,59,59));
	
	ЭлементОтбора = ПостроительЗапроса.Отбор.Добавить("ФизическоеЛицо");
	ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
	ЭлементОтбора.Использование = Истина;
	СписокЗначенийФизлица = Новый СписокЗначений;
	СписокЗначенийФизлица.ЗагрузитьЗначения(Физлица);
	ЭлементОтбора.Значение = СписокЗначенийФизлица;
	
	Запрос = ПостроительЗапроса.ПолучитьЗапрос();
	МенеджерВТ = Новый МенеджерВременныхТаблиц;		
	Запрос.МенеджерВременныхТаблиц = МенеджерВТ;	

	// Результат в ТЗ
	ТЗ = Запрос.Выполнить().Выгрузить();
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Новосибирск
зарплата от 50 000 руб. до 80 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству