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

18.05.20

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

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

Скачать файл

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

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

Работник кадровой службы (для получения корректной печатной формы документа) может разбить строку отпуска работника на 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С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    11135    Begemoth80    32    

84

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

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    2357    PROSTO-1C    0    

20

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

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    2468    Vidz    0    

12

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    1394    olja-ljaaa    0    

3
Оставьте свое сообщение