Ситуация, когда после очередного обновления или плановой синхронизации между 1С:ЗУП 3.1 и 1С:ERP из карточек сотрудников исчезают адреса, телефоны и адреса электронной почты, является довольно распространенной. При этом паспортные данные и ИНН обычно остаются на месте. Это происходит из-за особенностей хранения контактной информации (КИ) в современных конфигурациях на базе БСП (Библиотеки стандартных подсистем).
В данной статье мы подробно разберем, почему это происходит, как убедиться, что данные физически не удалены из базы, и какими способами можно восстановить их отображение в интерфейсе.
Прежде чем приступать к восстановлению, нам необходимо выяснить: данные действительно удалены или они просто «не видны» на форме из-за программного сбоя? В современных версиях ЗУП контактная информация хранится в табличных частях справочника ФизическиеЛица, а не в отдельном регистре, как это было раньше.
Воспользуемся консолью запросов или напишем небольшой запрос, чтобы проверить содержимое табличной части для конкретного сотрудника. Рассмотрим пример кода:
ВЫБРАТЬ
ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК ФизЛицо,
ФизическиеЛицаКонтактнаяИнформация.Вид КАК ВидКИ,
ФизическиеЛицаКонтактнаяИнформация.Представление КАК Представление,
ФизическиеЛицаКонтактнаяИнформация.Значение КАК ЗначениеПолей
ИЗ
Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
ГДЕ
ФизическиеЛицаКонтактнаяИнформация.Ссылка = &СсылкаНаФизЛицо
Проанализируем ситуацию по результатам запроса:
Вид содержит пустую ссылку или ссылку на «неизвестный» объект — это означает конфликт идентификаторов (GUID) в справочнике Виды контактной информации.Если проблема возникла сразу после обмена с 1С:ERP или другой программой, скорее всего, сработал механизм автоматического принятия изменений при возникновении коллизий. Система могла решить, что «пустые» данные из ERP важнее заполненных данных в ЗУП.
Рассмотрим, как это исправить через стандартный интерфейс:
Часто причиной «исчезновения» данных является появление дублей в справочнике ВидыКонтактнойИнформации. Например, в ЗУП есть предопределенный вид «Личный телефон» с одним уникальным идентификатором, а при обмене из ERP пришел объект с таким же названием, но другим GUID.
Выясним причину: типовые формы 1С отображают только те записи из табличной части, которые привязаны к предопределенным видам КИ. Если обмен «перепривязал» телефон сотрудника к новому (непредопределенному) виду, поле в карточке станет пустым.
Для решения этой задачи выполним следующие действия:
Виды контактной информации (через «Все функции» или «Функции для технического специалиста»).Если данные были физически удалены, и откат всей базы невозможен, придется переносить информацию из резервной копии. Рассмотрим наиболее технологичный вариант — использование обработки «Выгрузка и загрузка данных XML».
Порядок действий следующий:
Физические лица.Однако помните, что простая загрузка может не сработать, если в правилах обмена EnterpriseData стоит приоритет на очистку полей. В таком случае поможет небольшая доработка — создание внешней обработки, которая прочитает данные из копии через COM-соединение или XML и программно заполнит табличную часть КонтактнаяИнформация. Для этой задачи можно использовать готовую обработку для переноса данных физических лиц между базами ЗУП 3.1.
Пример кода для программного заполнения (схематично):
Для Каждого СтрокаДанных Из ТаблицаИзКопии Цикл
ФизОбъект = Справочники.ФизическиеЛица.НайтиПоРеквизиту("ИНН", СтрокаДанных.ИНН);
Если Не ФизОбъект.Пустая() Тогда
ОбъектФиз = ФизОбъект.ПолучитьОбъект();
// Очищаем старые записи вида, который восстанавливаем
НоваяСтрока = ОбъектФиз.КонтактнаяИнформация.Добавить();
НоваяСтрока.Вид = СтрокаДанных.Вид;
НоваяСтрока.Представление = СтрокаДанных.Представление;
НоваяСтрока.Тип = СтрокаДанных.Тип;
ОбъектФиз.Записать();
КонецЕсли;
КонецЦикла;
Проанализируем ситуацию с адресами. Иногда данные пропадают из-за перехода системы на новый адресный классификатор (ГАР). Если в базе ERP адреса не были нормализованы, то при попадании в ЗУП 3.1 механизм валидации может сбросить значения, которые не соответствуют структуре.
В этом случае данные могут сохраниться в скрытом поле Значение (в формате JSON или XML), но не отображаться в строке Представление. Попробуйте обновить адресный классификатор в ЗУП и запустить регламентное задание «Пересчет представлений контактной информации».
В большинстве случаев данные в 1С не исчезают бесследно. Основная причина «пропажи» — конфликт синхронизации или дублирование видов КИ. Прежде чем вносить изменения вручную, обязательно проверьте вкладку «Конфликты» в мониторе синхронизации — это сэкономит вам часы работы по ручному наполнению карточек сотрудников. Для оперативного контроля можно использовать расширение для мониторинга ошибок обмена с уведомлениями на почту.