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

27.03.24

Учетные задачи - Зарплата

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.
 
ПОЛУЧИТЬ ОБЩИЕ СВЕДЕНИЯ
 
ПОЛУЧИТЬ СВЕДЕНИЯ ОБ ОРГАНИЗАЦИИ
 
ПОЛУЧИТЬ ОТВЕТСТВЕННЫХ ОРГАНИЗАЦИИ
 
ЗАПОЛНИТЬ ПЕРВОНАЧАЛЬНЫЕ ЗНАЧЕНИЯ НА ФОРМЕ (ОРГАНИЗАЦИЯ)
 
ПОЛУЧИТЬ РАЗЛИЧНЫЕ КАДРОВЫЕ ДАННЫЕ
 
ПОЛУЧИТЬ ДАННЫЕ ПОЗИЦИИ ШТАТНОГО РАСПИСАНИЯ
 
ПОЛУЧИТЬ РАБОТАЮЩИХ СОТРУДНИКОВ ПО ЗАДАННЫМ ПАРАМЕТРАМ ОТБОРА
 
ПОЛУЧИТЬ ДЕЙСТВУЮЩИЕ ПЛАНОВЫЕ НАЧИСЛЕНИЯ НА ДАТУ
 
ПОЛУЧИТЬ ПРОЦЕНТ НАДБАВКИ ЗА СТАЖ РАССЧИТЫВАЕМЫЙ ПО ШКАЛЕ
 
ПОЛУЧИТЬ КАДРОВЫЕ ДАННЫЕ СОТРУДНИКА
 
ПОЛУЧИТЬ ИНТЕРВАЛЫ РАБОТЫ СОТРУДНИКОВ (РАБОЧИЕ МЕСТА СОТРУДНИКОВ)
 
ПОЛУЧИТЬ КАДРОВУЮ ИСТОРИЮ СОТРУДНИКА
 
ПОЛУЧИТЬ СТАЖИ СОТРУДНИКОВ
 
РАСЧЕТ СТАЖА, ТРУДОВОЙ ДЕЯТЕЛЬНОСТИ
 
ПОЛУЧИТЬ ОСНОВНОГО СОТРУДНИКА ФИЗИЧЕСКОГО ЛИЦА
 
ПОЛУЧИТЬ ПАСПОРТНЫЕ ДАННЫЕ ФИЗИЧЕСКОГО ЛИЦА
 
ПОЛУЧИТЬ ДАННЫЕ ПРОИЗВОДСТВЕННОГО КАЛЕНДАРЯ
 
ПОЛУЧИТЬ ДАННЫЕ ГРАФИКОВ РАБОТЫ
 
ПОЛУЧИТЬ ДАННЫЕ РАСЧЕТА ЗАРПЛАТЫ И БУХГАЛТЕРСКОГО УЧЕТА
 
ПОЛУЧИТЬ ДАННЫЕ РАБОЧЕГО (ОТРАБОТАННОГО) ВРЕМЕНИ, ДАННЫЕ ТАБЕЛЯ Т-13
 
ПОЛУЧИТЬ ДАННЫЕ СРЕДНЕГО ЗАРАБОТКА, ОСТАТКА ОТПУСКОВ, РЕЗЕРВА ОТПУСКОВ
 
ПОЛУЧИТЬ ДАННЫЕ ДЕНЕЖНОГО СОДЕРЖАНИЯ
 
ПОЛУЧИТЬ ДАННЫЕ БУХГАЛТЕРСКОГО УЧЕТА (ОРГАНИЗАЦИИ, ПОДРАЗДЕЛЕНИЯ, СОТРУДНИКА, НАЧИСЛЕНИЯ)
 
ПОЛУЧИТЬ НАЧИСЛЕННУЮ ЗАРПЛАТУ, НДФЛ, УДЕРЖАНИЯ ВЗНОСЫ (фактически начисляет зарплату за период)
 
ПОЛУЧИТЬ СРЕДНЕСПИСОЧНУЮ ЧИСЛЕННОСТЬ, ДАННЫЕ ОТЧЕТА ЗП-ХХХХ
 
ФУНКЦИИ ДЛЯ ОТРАЖЕНИЯ ДАННЫХ В ПЕЧАТНЫХ ФОРМАХ (ПРЕОБРАЗОВАНИЕ СТРОК)
 
ВЫВОД ИНИЦИАЛЫ ФАМИЛИЯ
 
ВЫВОД ФАМИЛИЯ ИНИЦИАЛЫ
 
СКЛОНЕНИЕ ФИО
 
ОПРЕДЕЛИТЬ ПОЛ ПО ОТЧЕСТВУ
 
ИНИЦИАЛЫ ПО ИМЕНИ И ОТЧЕСТВУ
 
СКЛОНЕНИЕ ТЕКСТА, ПРЕОБРАЗОВАНИЕ К МНОЖЕСТВЕННОМУ ЧИСЛУ СТРОК
 
УДАЛИТЬ ПРЕФИКС НОМЕРА ОБЪЕКТА И ЛИДИРУЮЩИЕ НУЛИ (СПРАВОЧНИКА, ДОКУМЕНТА)
 
ТАБЕЛЬНЫЙ НОМЕР НА ПЕЧАТЬ (функция эквивалентна удалению префиксов)
 
ПРЕОБРАЗОВАТЬ СТРОКУ В ДАТУ
 
ПРЕОБРАЗОВАТЬ СТРОКУ В ЧИСЛО
 
СУММА ПРОПИСЬЮ
 
ПОЛУЧИТЬ ИЕРАРХИЮ ПОДРАЗДЕЛЕНИЙ РЕКУРСИВНО
 
ФУНКЦИИ ДЛЯ РАБОТЫ С ДАТАМИ
 
ПРОВЕРКА ВХОЖДЕНИЯ ДАТЫ В ИНТЕРВАЛ
 
ПРОЦЕДУРЫ ПО СОЗДАНИЮ ВТ (ВРЕМЕННЫХ ТАБЛИЦ) / МенеджерВременныхТаблиц
 
СоздатьВТПериоды
 
ПРОЦЕДУРЫ И ФУНКЦИИ БСП
 
ШАБЛОН ВНЕШНЕЙ ПЕЧАТНОЙ ФОРМЫ
 
ПОДКЛЮЧЕНИЕ НОВОГО ОБЪЕКТА (ДОКУМЕНТА, СПРАВОЧНИКА) К ПОДСИСТЕМЕ ВНЕШНИХ ПЕЧАТНЫХ ФОРМ
 
ПРЕОБРАЗОВАНИЕ ДАННЫХ (ТАБЛИЦА ЗНАЧЕНИЙ, МАССИВ И Т.Д.)
 
ЗНАЧЕНИЕ В МАССИВ
 
СВЕРНУТЬ МАССИВ
 
ТАБЛИЦА ЗНАЧЕНИЙ В МАССИВ
 
СКОПИРОВАТЬ МАССИВ, СТРУКТУРУ, СПИСОК ЗНАЧЕНИЙ, СООТВЕТСТВИЕ
 
ПОЛУЧЕНИЕ ТАБЛИЦЫ ЗНАЧЕНИЙ С ДАННЫМИ ФАЙЛА MS EXCEL
 
СТРОКА ТАБЛИЦЫ ЗНАЧЕНИЙ В СТРУКТУРУ
 
ТАБЛИЦА ЗНАЧЕНИЙ В СТРУКТУРУ
 
ДОПОЛНИТЬ ТАБЛИЦУ ЗНАЧЕНИЙ ДАННЫМИ ИЗ МАССИВА
 
ДОПОЛНИТЬ ТАБЛИЦУ ЗНАЧЕНИЙ ДАННЫМИ ИЗ ТАБЛИЦЫ ЗНАЧЕНИЙ
 
РАЗЛОЖИТЬ СТРОКУ В МАССИВ
 
СРАВНЕНИЕ ДАННЫХ СО СЛОЖНОЙ СТРУКТУРОЙ
 
СВЕДЕНИЯ ОБ АДРЕСЕ В ВИДЕ СТРУКТУРУ (АДРЕС ИЗ XML В СТРУКТУРУ)
 
ПОЛУЧИТЬ ССЫЛКУ НА ПРЕДОПРЕДЕЛЕННЫЙ ЭЛЕМЕНТ, ПУСТАЯССЫЛКА() НА КЛИЕНТЕ (СПРАВОЧНИК, ПЕРЕЧИСЛЕНИЕ, ПЛАН СЧЕТОВ, ПЛАН ВИДОВ РАСЧЕТА)
 
ПРОВЕРИТЬ АДРЕС НА СООТВЕТСТВИЕ КЛАССИФИКАТОРУ
 
СООБЩЕНИЯ ПОЛЬЗОВАТЕЛЮ (ОПОВЕЩЕНИЕ, ПРОГРЕСС БАР)
 
ПРОГРАММНОЕ ОТКРЫТИЕ ФОРМ
 
СПИСОК РЕГИСТРОВ МЕХАНИЗМА ПРЕДСТАВЛЕНИЙ

Список регистров представлений актуален для релиза 3.1.11.133

 
Представления_Периоды
 
Представления_КадровыеДанныеСотрудников
 
Представления_ОтработанноеВремя
 
Представления_СтажиСотрудников
 
Представления_ШтатноеРасписание
 
Представления_ПлановыеНачисленияСотрудников
 
Список представлений действующих до релиза 3.1.10
 
ПОЛЕЗНЫЕ СТАТЬИ В РАМКАХ ТЕМЫ

ЗУП. ЗАПРОСЫ

Представления в запросах. ЗУП

Введение в механизм представлений в ЗУП ред. 3

Кадровые данные сотрудников в ЗУП 3.1 в отчетах

Подмена временной таблицы в запросе (Менеджер временных таблиц)

Функции для обработки произвольной таблицы значений (Соединить таблицы, свернуть таблицы)

 

ВНЕШНИЕ ПЕЧАТНЫЕ ФОРМЫ

Fast help. Универсальные функции для регистрации внешних отчетов/обработок в 1С 8 на управляемых формах. Использование Синонима отчета/обработки при выполнении кода &НаКлиенте

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

 

БСП

Работаем с контактной информацией в конфигурациях на БСП (адреса, номера телефонов)

Обзор полезных методов БСП 3.1.4

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

Полезные функции БСП. Часть 1.

Полезные функции БСП. Часть 2.

Полезные процедуры и функции для программиста

Склонение представлений объектов в ЗУП 3.1 - как это работает?

 

ПЛАТФОРМА

Программное создание и копирование документов. Использование методов ДанныеФормыВЗначение(), ЗначениеВДанныеФормы() и КопироватьДанныеФормы()

Информирование пользователя. Работа с объектом «СообщениеПользователю»

Форма выбора (подбор) в управляемых формах

 

ИНТЕРЕСНЫЕ ОБРАБОТКИ

Конвертация любых адресов, написанных в свободной форме, к ФИАС. Сервис Ahunter


Буду очень признателен, если Вы будете делиться своим опытом и найденными процедурами и функциями.

ЗКГУ ЗУП универсальные процедуры и функции кадровые данные склонение работающие сотрудники плановые начисления средний заработок отработанное время БСП стажи сотрудников

См. также

Обновление для КА 1.1, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    140622    678    352    

232

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22447    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 20%

Перенос данных из Камин 3.5 (5.5) в ЗиКГУ 3.х

Обмен между базами 1C Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет зарплаты для бюджетных учреждений 3.5» и «КАМИН:Зарплата для бюджетных учреждений 5.5» на конфигурацию «Зарплата и кадры государственного учреждения».

12000 9600 руб.

28.07.2016    57081    140    139    

116

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    32731    204    89    

165

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2320    29    15    

33

Устранение сальдо прошлых периодов в ведомостях ЗУП 3.1, КА, ЗиКГУ 3.1

Зарплата Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

При заполнении ведомости на выплату зарплаты вылазят задолженности прошлых периодов, которых быть не должно? Наша обработка позволяется убрать эти доходы прошлых периодов за пару секунд. Больше не нужно тратить часы на анализ каждого такого случая.

15600 руб.

14.09.2022    12592    60    22    

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

а представленная выборка годна лишь для отчетов и слишком мелка, мое мнение может не совпадать с мнением... и бла бла бла
Neuroproton; Qarasique; sukorskis; SlavaKron; acanta; +5 27 Ответить
3. GeterX 1305 14.11.18 18:15 Сейчас в теме
(2) Вы как более опытный специалист, не могли бы поделиться своими заметками?
Не у всех есть огромный опыт работы с конфигурацией.
SAGerasimov; teplova; avmironov; burni4; TeMochkiN; Lacoste4life; user761842; Gendelf; AliceLight; trickster; mrChOP93; asdPerepel; practik1c; olegans; Award; mongiilol; Tolpinski; KEV8383; dbachinsky; Dmitri93; payta; alanto23; ambabas; sansys; Kavar; ivnik; NNomad; haereticus; rintik; Hans; json; +31 Ответить
4. ixijixi 1775 14.11.18 22:29 Сейчас в теме
(2) Вы все 1150 общих модулей предлагаете пролистать? Не считая прочих
Прикрепленные файлы:
zoikins; Natalia29; avmironov; TeMochkiN; ipzotov; корум; AliceLight; Eillecho; Varozh; titan84clc; nata_v_m; Nelli_A86; olegans; mongiilol; alanto23; NNomad; +16 Ответить
6. json 3297 15.11.18 06:40 Сейчас в теме
(2) у вас есть возможность выложить свою выборку, годную не только для отчетов.
Но вы ею скорее всего не воспользуютесь, потому что гундеть на чужие статьи это одно, а написать свою это совсем другое.
SAGerasimov; user1937902; teplova; avmironov; _SeA; TeMochkiN; Lacoste4life; ipzotov; user761842; Gendelf; AliceLight; mrChOP93; VAAngelov; cefey-kurgan; u_n_k_n_o_w_n; maxdmt; titan84clc; shalupov61; savinkoff; kulabuha; itoptimum; olegans; adamst; alanto23; d4rkmesa; Krio2; gradi; Kavar; NNomad; NatalkaBal; +30 Ответить
8. VmvLer 15.11.18 08:55 Сейчас в теме
(6) совершенно верно, гундеть дело нужное и правильное - это хоть как-то может задержать вал Г-кода!
Qarasique; +1 5 Ответить
9. json 3297 15.11.18 09:21 Сейчас в теме
(8)а вы не выкладывайте Г-код, выкладывайте нормальный.
Смотрю вы на ходу показания меняете, то не устраивает количество функций, а теперь уже вы беспокоитесь за качество кода.

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

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

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

А теперь аргументируйте свое нытье. Если вы умеете рассуждать логически, то ожидаю от Вас контраргументов. А если это просто задето Ваше ЧСВ, то можете сделать из этого вывод или не сделать.
R8s; uk512; user1998468; user1660981; Mx00; al5prog; user1541233; myvik; teplova; avmironov; _SeA; yekaterinaryzhova; user1586879; TeMochkiN; user761842; Anchoret; Raskad; yegorovnv; AliceLight; Наиля; Varozh; Pete; dassin; titan84clc; portalUg; kulabuha; Hirondelle; Feelthis; Award; mongiilol; snood; dbachinsky; d4rkmesa; Kavar; MikStyle; NNomad; +36 Ответить
15. VmvLer 15.11.18 10:56 Сейчас в теме
(12)
а представленная выборка годна лишь для отчетов и слишком мелка

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

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

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

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

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

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

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

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

А какой цели добились вы - решайте сами
R8s; avmironov; TeMochkiN; AliceLight; shoy; Varozh; Pete; Award; alanto23; MGraf; d4rkmesa; mnb-next; NNomad; +13 Ответить
21. VmvLer 15.11.18 13:18 Сейчас в теме
114. kulabuha 04.08.20 09:56 Сейчас в теме
(19) согласен с вами, автор молодец, я как начинающий разработчик воспользовался этой статьей для создания печатной формы в зуп. а критики не избежать чтобы и какбы ты не делал, найдется человек, которому это не понравиться. так что авторам всех статей терпения и пусть желание поделиться знаниями не угасает никогда!
avmironov; TeMochkiN; user761842; AliceLight; cefey-kurgan; Varozh; Pete; +7 Ответить
23. SlavaKron 17.11.18 13:16 Сейчас в теме
(6) При всём уважении, посыл в (2) верный. Большую часть полезных процедур я почерпнул анализируя модули, которые всплывали в процессе отладки, анализируя экспортные методы, имеющие описание интерфейса в комментарии. Приведённые приёмы в статье будут полезны для начинающих, но чаще требуется всё таки что-то вокруг расчётов – в комментариях увидел более интересную информацию.
24. json 3297 17.11.18 14:17 Сейчас в теме
(23)не готов с вами спорить по поводу полезности процедур, т.к. ЗУПа не касался уже много лет. Но судя по звездам полезность все таки присутствует.

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

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

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

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

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

все таки считаю, что изучать модули и функции проще и удобнее именно в дереве конфигурации.
а эту поделку можно использовать ну разве что один раз для создания реперных точек у себя в голове если вы полный новичок в конфигурации. С опытом дерево модулей удобнее.
75. SanchoD 295 16.07.19 10:13 Сейчас в теме
(74) Понятно дело, что изучать функции придется в конфигурации. Но во-первых, это дело не одного дня. Во-вторых, когда нужна конкретная информация, а времени в обрез, то вдумчивое изучение всех модулей/функций не вариант. Результат (в виде отчета/обработки) нужен уже сейчас.
avmironov; Flinky; Raskad; AliceLight; Varozh; Pete; +6 Ответить
76. VmvLer 16.07.19 10:21 Сейчас в теме
(75) для меня такие отчеты это информационный мусор, исключая реперные точки для первичной оценки.
если вам непонятна моя картина мира, то вряд ли имеет смысл открывать ее более чем.
79. NoRazum 29 17.07.19 09:47 Сейчас в теме
(2) Потратить время перечитать. Вышел новый релиз. Опять это надо делать.
Пока не успокоится там с модулями. Бесполезное занятие.
adhocprog; Raskad; AliceLight; Varozh; +4 Ответить
80. VmvLer 17.07.19 10:16 Сейчас в теме
(79) доколе! Вот в 7.7. был один глобальный модуль, а теперь сиди перечитывай, да.
178. Torin57 7 09.07.23 12:24 Сейчас в теме
(2) Прошло пять лет, статья набрала 1016 плюсов. Что думаете об этой статье сейчас?
5. Malfarion 251 15.11.18 02:46 Сейчас в теме
Очень полезная статья, было бы очень здорово если вы поддерживали ее в актуальном состоянии и обновляли, не так давно все тоже самое приходилось рыскать самому.
RealSurfer; AliceLight; Varozh; kulabuha; adamst; +5 Ответить
7. SlavaKron 15.11.18 08:40 Сейчас в теме
Пример использования УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников (данные, формирующие Т-13):
&НаСервере
Процедура Команда1НаСервере()
	ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыПолученияДанныхУчетаВремени();
	ДатаНачала = '20181001';
	ДатаОкончания = КонецМесяца(ДатаНачала);
	ПараметрыПолученияДанных.ДатаНачала = ДатаНачала;
	ПараметрыПолученияДанных.ДатаОкончания = ДатаОкончания;
	
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	МассивСотрудников = Новый Массив;
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоНаименованию("Иванов Иван Иванович"));
	СоздатьВТСотрудники(МенеджерВременныхТаблиц, МассивСотрудников, ДатаНачала);
	УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);
	ТЗ = МенеджерВременныхТаблиц.Таблицы.Найти("ВТДанныеУчетаРабочегоВремениСотрудников").ПолучитьДанные().Выгрузить()
КонецПроцедуры

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

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

ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение); // возвращает массив с элементом = Значение
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(Таблица, Массив, ИмяПоля); // добавляет в таблицу строки и заполняет поле из массива
avmironov; AliceLight; Pete; JinAir7460; SlavaKron; +5 Ответить
27. GeterX 1305 23.11.18 17:14 Сейчас в теме
(7) Спасибо за пример, добавил в статью.
avmironov; AliceLight; Pete; SergeySol-82; +4 Ответить
30. GeterX 1305 27.11.18 17:59 Сейчас в теме
(7) Процедура УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников выводит данные только за один месяц, а не знаете каким образом можно получить отработанное время за период, есть ли стандартная процедура получения подобных данных?
10. fxmike 70 15.11.18 09:32 Сейчас в теме
Эх, я только собрался писать похожую статью! Вообще, давно тема назрела.
tatyana_schukina; +1 Ответить
13. fxmike 70 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");

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

У меня в организации у нескольких человек нет индексации и по "счастливому совпадению" они в списке оказывались. Долго не могла понять почему по одному сотруднику средний считается правильно, а по нескольким - средний без индексации получается.
(65) Это видимо и на Ваш вопрос ответ.
88. fxmike 70 18.09.19 12:44 Сейчас в теме
(86) Спасибо за уточнение! Поправлю.
139. Гость 25.03.22 11:26
(88) Тоже столкнулся с ошибкой в этой строке, нужно передавать данные только по текущему сотруднику, а не всю таблицу целиком, так же как данные по начислениям и времени. Т.е. вот так:
ДополнительныеПараметры.Индексации = ДанныеОбИндексации.Скопировать(ДанныеОбИндексации.НайтиСтроки(Отбор));

У меня без такой доработки срелний счтался неправильно по некоторым сотрудникам.
16. Skin123 188 15.11.18 11:46 Сейчас в теме
Функция, которая возвращает по сотрудникам их параметры отражения в учете (подразделения, способы отражения, статьи финасирования):
ОтражениеЗарплатыВБухучете.СоздатьВТСведенияОБухучетеЗарплатыСотрудников();

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

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

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


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

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

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

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


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

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

Не срабатывает, по причине того, что эта процедура не экспортная.Смотрел на 3.1.5 и 3.1.7
35. GeterX 1305 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 871 13.12.18 22:18 Сейчас в теме
ЗУП.3.1 ОбщийМобдуль.ЗарплатаКадрыБазовый:
Функция ПолучитьСведенияОбОрганизации

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

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

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

Разработчики обещали обратную совместимость только для методов, описанных в области #ПрограммныйИнтерфейс
user774630; +1 Ответить
52. Rusleg 84 21.12.18 16:08 Сейчас в теме
(51)Мне об этом обещании ничего неизвестно.
Вот если бы были комментарии к этим областям было бы другое дело.
haereticus; +1 Ответить
53. laperuz 46 21.12.18 16:41 Сейчас в теме
(52) Как-то так
Прикрепленные файлы:
RealSurfer; user774630; GeterX; +3 Ответить
54. AlX0id 21.12.18 22:00 Сейчас в теме
(47)
Да не только разработчики ЗУП.. В той же КА/ЕРП/УТ толком пользоваться ИХ АПИ для себя в долгосрочной перспективе всегда ведет к тому, что они что-нибудь переименуют/исправят ошибку в названии функции/ поменяют формат входных данных..
Но с другой стороны - рисовать свои функции может быть еще хуже, ибо можно что-то не учесть в расчетах, это раз. А два - все равно метаданные/алгоритмы будут меняться, и вероятность того, что свой код станет не рабочим не меньше той, что нерабочим станет код с использованием типовых процедур..
AlexO; user1235208; SanchoD; Туки Туки; +4 Ответить
49. sansys 76 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 35 09.01.19 11:09 Сейчас в теме
Спасибо за статью! В цвет!
user597231_DNorov; +1 Ответить
58. SlavaKron 26.02.19 10:47 Сейчас в теме
Программное получение начислений, взносов, НДФЛ, удержаний и т.д. – в общем всё то, что рассчитывается в документе начисления зарплаты (проверял на ЗУП 3.1.8.246):
&НаСервереБезКонтекста
Процедура ПолучитьДанныеНачисленийНаСервере(МассивСотрудников, ДатаНачала, ДатаОкончания, Организация)
	ДополнительныеПараметры = РасчетЗарплатыРасширенный.ДополнительныеПараметрыЗаполненияТаблицДокумента();
	ДополнительныеПараметры.Сотрудники = МассивСотрудников;
	ДополнительныеПараметры.ОкончаниеПериода = ДатаОкончания;
	ДополнительныеПараметры.РежимНачисления = Перечисления.РежимНачисленияЗарплаты.ОкончательныйРасчет;	
	
	ПараметрыОписания = Новый Структура;
	ПараметрыОписания.Вставить("ИзменениеБезОграничений" ,Истина);
	ПараметрыОписания.Вставить("РегистрацияНачисленийДоступна", Истина);
	ПараметрыОписания.Вставить("СпособыРасчетаСреднегоЗаработка", Неопределено);
	ПараметрыОписания.Вставить("ПризнакКомпенсацииУдержанияОтпуска", Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать);
	ОписаниеДокумента = КадровыйУчетРасширенныйКлиентСервер.ОписаниеДокумента(ПараметрыОписания);
	
	ДанныеНачислений = РасчетЗарплатыРасширенный.ДанныеДляЗаполненияТаблицДокумента(ОписаниеДокумента, Организация, ДатаНачала, ДополнительныеПараметры);
КонецПроцедуры
Показать
Прикрепленные файлы:
ПолучениеДанныхНачисленийЗУП318.epf
MihailP; DimaP; zforall; romulanin; marv-ua; user774630; GeterX; Max27; +8 Ответить
59. Somaha 21.03.19 16:32 Сейчас в теме
Доброго времени суток. Код использованный для получения данных табеля Т-13 некорректен.
УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаРабочегоВремениСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);

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

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


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

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

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

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


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

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


------
Версия ЗКГУ 3.1.9.205
186. Stiks1911 27.01.24 17:24 Сейчас в теме
(60) Подскажите пожалуйста, а если нужно получить просто отработанное время за указанный период, а не чтобы каждый день за период возвращал, как это можно сделать?
61. tamepjlah 3 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 6 18.09.19 09:07 Сейчас в теме
(65) Исправьте строчку одну
Вместо

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

надо

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

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

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

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

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

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

Сотрудник и ФизическоеЛицо можно убрать, т.к. это "предопределенные" колонки в возвращаемой ТЗ. Если оставить как есть, то в ТЗ будут колонки Сотрудник, ФизическоеЛицо, Сотрудник1, ФизическоеЛицо1.
user913506; user1235208; GeterX; +3 Ответить
72. graphbuh 254 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;	
	КонецЕсли;
	
	Возврат НадбавкаЗаСтаж;
КонецФункции
Показать
cefey-kurgan; aaguselnikova; +2 Ответить
82. DoctorRoza 14.08.19 13:26 Сейчас в теме
Комрады, привет. Мне нужно из ЗУП 3.1 (3.1.10.78), получить данные по начислениям и удержаниям по всем организациям. Эти данные нужно залить в УТ 10.3 (для управленческого учета). Делать буду через com регл. заданием с загрузкой в специальный РС. Что-то вроде, Расчетного листка. Подскажите, пожалуйста, в конфигурации есть готовые модули для этого, какими можно воспользоваться? Спасибо
91. marv-ua 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) Если коротко: взял запрос из стандартного отчета "Анализ з/п по сотрудникам в целом за период". Но проблему премий он не решает. Премии распределял пропорционально основному заработку.
95. lushka 6 12.02.20 11:48 Сейчас в теме
(90) А если не коротко? Не могли бы вы поделится отчетом? unk111собакаrambler.ru
92. payta 02.10.19 16:18 Сейчас в теме
для склонения можно еще использовать платформенный метод ПолучитьСклоненияСтроки()
user774630; +1 Ответить
93. ktibomail 26 04.10.19 04:37 Сейчас в теме
Практически все, что выводится в расчетном листке, можно получить следующим кодом:

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

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

	// Результат в ТЗ
	ТЗ = Запрос.Выполнить().Выгрузить();
Показать
marganochka; Matveev_VS; shapoval; GeterX; +4 Ответить
130. dimmkan 26.04.21 11:45 Сейчас в теме
(93) А не подскажите, как накинуть отбор по подразделению? Почему-то этот код не срабатывает:
Если ОтборПоПодразделению Тогда
		ЭлементОтбора = ПостроительЗапроса.Отбор.Добавить("Подразделение");
		ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.Значение = Подразделение;
КонецЕсли;
Оставьте свое сообщение