Почему в 1С:ЗУП 3.1 в списке быстрого выбора отображаются уволенные сотрудники и как это исправить

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

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

Анализ механизма быстрого выбора и причины сбоя

В платформе 1С существует два основных способа выбора данных в поле ввода: полноценное окно выбора (которое открывается по кнопке «Показать все») и механизм быстрого выбора (автоподбор при вводе текста). В норме оба этих механизма должны подчиняться свойству ПараметрыВыбора, установленному для реквизита в конфигураторе или программно. В случае с сотрудниками за отсечение «архивных» записей отвечает параметр Отбор.ВАрхиве(Ложь).

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

Решение 1: Обновление конфигурации

Самый простой и правильный способ решения проблемы — переход на актуальный релиз. Разработчики 1С признали ошибку и выпустили исправления. Проблема с игнорированием параметров выбора в режиме автоподбора была устранена, начиная с версии 3.1.11. Если ваша информационная база находится на версии 3.1.10 (которая долгое время была версией с длительной поддержкой), необходимо запланировать переход на более современную ветку (3.1.14, 3.1.18, 3.1.23 и выше).

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

Решение 2: Использование расширения для контроля выбора

Если оперативное обновление невозможно, проанализируем программный метод исправления через механизм расширений. Мы можем перехватить событие обработки выбора или изменения поля, чтобы принудительно проверять статус сотрудника. Рассмотрим пример логики, которую можно реализовать в расширении для формы документа:


&НаКлиенте
Процедура Расш_СотрудникПриИзмененииПосле(Элемент)
    
    ТекущийСотрудник = Объект.Сотрудник;
    Если ЗначениеЗаполнено(ТекущийСотрудник) Тогда
        // Вызываем серверную функцию для проверки статуса архива
        Если СотрудникВАрхиве(ТекущийСотрудник) Тогда
            ТекстСообщения = "Выбранный сотрудник " + ТекущийСотрудник + " находится в архиве!";
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "Объект.Сотрудник");
            
            // Попытка найти актуальную карточку того же физлица
            АктуальныйСотрудник = НайтиАктуальногоСотрудника(ТекущийСотрудник);
            Если ЗначениеЗаполнено(АктуальныйСотрудник) Тогда
                Объект.Сотрудник = АктуальныйСотрудник;
            Иначе
                Объект.Сотрудник = ПредопределенноеЗначение("Справочник.Сотрудники.ПустаяСсылка");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

В данном примере мы используем обработчик ПриИзменении. Как только пользователь выбирает «Пупкина» из выпадающего списка, система проверяет реквизит ВАрхиве. Если он истинен, программа выдает предупреждение и автоматически подставляет актуальную ссылку на действующий трудовой договор того же физического лица. Это позволяет избежать ошибок учета, когда начисления попадают на закрытые личные карточки.

Решение 3: Очистка истории выбираемых данных

Иногда даже после обновления или настройки всех фильтров «лишние» сотрудники продолжают всплывать первыми в списке. Выясним причину этого поведения. Платформа 1С:Предприятие 8.3 имеет механизм «История выбираемых данных». Система запоминает, какие элементы пользователь выбирал ранее, и подсовывает их в начало списка автоподбора для удобства.

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

  1. Зайдем в главное меню (символ «три полоски» или «стрелочка» в левом верхнем углу).
  2. Перейдем в раздел Настройки — Очистить историю выбора.
  3. Подтвердим операцию.

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

Решение 4: Полнотекстовый поиск и его индексы

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

  1. Перейдем в раздел Администрирование — Поддержка и обслуживание.
  2. Найдем пункт Управление полнотекстовым поиском.
  3. Нажмем кнопку Очистить индекс, а затем Обновить индекс.

Полное пересоздание индекса гарантирует, что система «забудет» старые связи архивных сотрудников и будет использовать актуальные данные при поиске по строке.

Решение 5: Групповое изменение реквизитов

В некоторых случаях флаг ВАрхиве может быть установлен визуально, но не зафиксирован в специальных регистрах сведений, которые используются системой для фильтрации. Рассмотрим административный метод «подталкивания» данных. Используем стандартную обработку «Групповое изменение реквизитов»:

  1. Выберем объект Сотрудники.
  2. Добавим отбор по конкретным уволенным сотрудникам или по условию Пометка на удаление = Да (если они удалены).
  3. Найдем реквизит Скрывать в списках или В архиве.
  4. Установим значение Да и выполним изменение.

Это принудительное обновление объектных данных часто помогает «проснуться» механизмам платформы, которые игнорировали изменения, внесенные программно при проведении документа Увольнение.

Резюме

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

  1. Обновиться до ЗУП 3.1.11 или выше.
  2. Очистить историю выбора в настройках пользователя.
  3. Обновить индекс полнотекстового поиска.
  4. В случае невозможности обновления — внедрить расширение с проверкой статуса сотрудника в обработчике выбора.
← На главную