Почему в заявке на открытие лицевого счета не отображаются повторно принятые сотрудники и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

В процессе работы с программами 1С:ЗУП 3.1, 1С:ERP и 1С:Комплексная автоматизация пользователи часто сталкиваются с ситуацией, когда при оформлении заявки на открытие лицевого счета в банке нужный сотрудник не отображается в списке выбора. При этом в других кадровых отчетах он числится как работающий. Давайте разберем, почему это происходит и как устранить данную проблему.

Разбор причин возникновения проблемы

Основная причина заключается в архитектурных особенностях современных типовых конфигураций 1С. Для оптимизации быстродействия системы был внедрен регистр сведений Основные сотрудники физических лиц. Этот регистр выполняет роль «индекса» для быстрого поиска актуального или последнего активного сотрудника, привязанного к конкретному физическому лицу.

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

Пошаговое решение: приведение регистра в актуальное состояние

Для исправления ситуации необходимо синхронизировать данные регистра Основные сотрудники физических лиц с данными регистра Текущие кадровые данные сотрудников, который является первичным источником информации о текущем статусе кадров.

Разработка и применение обработки для исправления данных

Рассмотрим, как можно программно перезаполнить данные в регистре. Для этого мы создадим запрос к регистру Текущие кадровые данные сотрудников и на его основе актуализируем записи в Основные сотрудники физических лиц.

Ниже представлен пример кода, который поможет вам выполнить эту задачу:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
    |	ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
    |	ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
    |	ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
    |ИЗ
    |	РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
    |ГДЕ
    |	ТекущиеКадровыеДанныеСотрудников.ОформленПоТрудовомуДоговору = ИСТИНА";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

    Если ЗаписьиДляИзменения.Количество() <> 0 Тогда
        Для Каждого Запись Из ЗаписьиДляИзменения Цикл
            Если Запись.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник Тогда
                Запись.ДатаНачала = ВыборкаДетальныеЗаписи.ДатаПриема;
                Если ВыборкаДетальныеЗаписи.ДатаУвольнения <> Дата("00010101000000") Тогда
                    Запись.ДатаОкончания = ВыборкаДетальныеЗаписи.ДатаУвольнения;
                КонецЕсли;
                ЗаписьиДляИзменения.Записать(Истина);
            КонецЕсли;
        КонецЦикла;
    Иначе
        Сообщить("Не найден сотрудник: " + ВыборкаДетальныеЗаписи.Сотрудник);
    КонецЕсли;
КонецЦикла;

Важные рекомендации при выполнении корректировок

  1. Создание резервной копии: Перед внесением любых изменений в регистры сведений обязательно сделайте резервную копию базы данных. Служебные регистры напрямую влияют на работу многих отчетов и механизмов системы.
  2. Проверка настроек формы: Прежде чем приступать к исправлению данных, проверьте, не включены ли в форме подбора специфические фильтры. Попробуйте нажать кнопку «Еще» и выбрать «Установить стандартные настройки».
  3. Анализ периодов: Проверьте, на какую дату формируется заявка. Иногда сотрудник не попадает в список, потому что дата документа предшествует дате приема, указанной в карточке сотрудника.
  4. Многофирменный учет: Если ваша организация ведет учет по нескольким юрлицам, будьте внимательны: ошибка может быть локализована только в одной из организаций.

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

← На главную