Объединение записей в наборе записей регистра сведений СостояниеРаботниковОрганизаций для "1С Зарплата и Управление персоналом"

18.05.20

Разработка - Механизмы типовых конфигураций

Если кадровая служба разбивает строки документа "Отпуска организаций" по рабочим периодам одного и того же сотрудника, то такие строки в регистре сведений СостояниеРаботниковОрганизаций необходимо склеивать (чтобы корректно рассчитать отпуск сотруднику). Предлагается процедура склейки таких записей.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Процедура для вставки в модуль набора записей регистра сведений
.txt 2,79Kb
51 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Работник кадровой службы (для получения корректной печатной формы документа) может разбить строку отпуска работника на 2-3 записи (с разными рабочими периодами).

Расчётчику такое разбиение мешает корректно рассчитать документ Начисление отпуска. Предлагается исправление кода, которое избавляет расчётчика от неудобств.

В модуле набора записей регистра сведений СостояниеРаботниковОрганизаций  размещаем процедуру

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

Эта процедура склеивает записи по одному работнику, если эти записи граничат по датам. Записи в документе по этому работнику должны быть в хронологическом порядке (иначе объединения не будет).

Хочу отметить, что эта процедура будет сшивать не только записи по отпускам, но и записи по командировкам, разбитые для одного сотрудника из производственной необходимости.

Сшиваются только записи одного документа. Записи разных документов не сшиваются.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    1269    InFlach    0    

6

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    2828    AlexeyPROSTO_1C    4    

20

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

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

03.03.2026    1448    YA_1100893639    1    

7

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

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

11.08.2025    8035    user1988284    0    

23
Для отправки сообщения требуется регистрация/авторизация