Работник кадровой службы (для получения корректной печатной формы документа) может разбить строку отпуска работника на 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);
КонецЦикла;
КонецПроцедуры
Эта процедура склеивает записи по одному работнику, если эти записи граничат по датам. Записи в документе по этому работнику должны быть в хронологическом порядке (иначе объединения не будет).
Хочу отметить, что эта процедура будет сшивать не только записи по отпускам, но и записи по командировкам, разбитые для одного сотрудника из производственной необходимости.
Сшиваются только записи одного документа. Записи разных документов не сшиваются.