Что делать, если в 1С:ЗУП пропали контактные данные сотрудников после синхронизации или обновления?

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

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

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

Шаг 1: Проверяем физическое наличие данных в базе

Прежде чем приступать к восстановлению, нам необходимо выяснить: данные действительно удалены или они просто «не видны» на форме из-за программного сбоя? В современных версиях ЗУП контактная информация хранится в табличных частях справочника ФизическиеЛица, а не в отдельном регистре, как это было раньше.

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


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

Проанализируем ситуацию по результатам запроса:

  1. Если запрос вернул пустой результат — данные действительно были затерты при обмене или обновлении. Нужно переходить к восстановлению из копии.
  2. Если записи есть, но поле Вид содержит пустую ссылку или ссылку на «неизвестный» объект — это означает конфликт идентификаторов (GUID) в справочнике Виды контактной информации.
  3. Если записи есть, все поля заполнены корректно, но в карточке сотрудника пусто — проблема в программном коде формы или в настройках отображения КИ.

Шаг 2: Разрешение конфликтов синхронизации (Самый быстрый способ)

Если проблема возникла сразу после обмена с 1С:ERP или другой программой, скорее всего, сработал механизм автоматического принятия изменений при возникновении коллизий. Система могла решить, что «пустые» данные из ERP важнее заполненных данных в ЗУП.

Рассмотрим, как это исправить через стандартный интерфейс:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем окно Текущие дела (или найдем гиперссылку «Предупреждения при синхронизации»).
  3. Перейдем на вкладку Конфликты. Здесь отображаются объекты, которые были изменены одновременно в обеих базах.
  4. Найдем в списке сотрудников. Если причина в обмене, там будет указано, что принята версия из ERP.
  5. Выделим нужные строки и нажмем кнопку Пересмотреть. В открывшемся окне мы можем выбрать версию данных «Из этой программы» (ЗУП), которая содержит актуальные контакты, и подтвердить выбор.

Шаг 3: Устранение дублей в справочнике «Виды контактной информации»

Часто причиной «исчезновения» данных является появление дублей в справочнике ВидыКонтактнойИнформации. Например, в ЗУП есть предопределенный вид «Личный телефон» с одним уникальным идентификатором, а при обмене из ERP пришел объект с таким же названием, но другим GUID.

Выясним причину: типовые формы 1С отображают только те записи из табличной части, которые привязаны к предопределенным видам КИ. Если обмен «перепривязал» телефон сотрудника к новому (непредопределенному) виду, поле в карточке станет пустым.

Для решения этой задачи выполним следующие действия:

  1. Откроем справочник Виды контактной информации (через «Все функции» или «Функции для технического специалиста»).
  2. Проверим наличие дубликатов для групп «Контактная информация справочника \"Физические лица\"».
  3. Если дубли найдены, воспользуемся типовой обработкой «Поиск и удаление дублей».
  4. В качестве «Правильного» объекта выберем тот, который является предопределенным (отмечен специальной иконкой с желтым шариком).
  5. После слияния дублей ссылки в табличных частях сотрудников обновятся, и данные снова появятся в карточках.

Шаг 4: Программное восстановление из резервной копии

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

Порядок действий следующий:

  1. Запустим обработку в копии базы.
  2. Выберем справочник Физические лица.
  3. Важно: Чтобы не затереть новые кадровые документы в основной базе, настроим отбор по списку сотрудников и выгрузим только их.
  4. В основной базе загрузим XML-файл.

Однако помните, что простая загрузка может не сработать, если в правилах обмена EnterpriseData стоит приоритет на очистку полей. В таком случае поможет небольшая доработка — создание внешней обработки, которая прочитает данные из копии через COM-соединение или XML и программно заполнит табличную часть КонтактнаяИнформация. Для этой задачи можно использовать готовую обработку для переноса данных физических лиц между базами ЗУП 3.1.

Пример кода для программного заполнения (схематично):


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

Шаг 5: Проверка форматов хранения (ФИАС/ГАР)

Проанализируем ситуацию с адресами. Иногда данные пропадают из-за перехода системы на новый адресный классификатор (ГАР). Если в базе ERP адреса не были нормализованы, то при попадании в ЗУП 3.1 механизм валидации может сбросить значения, которые не соответствуют структуре.

В этом случае данные могут сохраниться в скрытом поле Значение (в формате JSON или XML), но не отображаться в строке Представление. Попробуйте обновить адресный классификатор в ЗУП и запустить регламентное задание «Пересчет представлений контактной информации».

Резюме

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

← На главную