Почему в 1С:Розница телефон физического лица сохраняется как «Телефон налогового органа» и как это исправить?

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

В процессе работы с программой 1С:Розница (редакции 2.2, 2.3 и выше) пользователи иногда сталкиваются с крайне странным поведением системы: при регистрации новой дисконтной карты через Рабочее место кассира (РМК) данные опроса владельца записываются некорректно. В частности, номер телефона физического лица вместо положенного поля попадает в поле Телефон налогового органа. Если же открыть карточку физического лица и попытаться ее перепровести, номер и вовсе может исчезнуть.

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

Разберем причину возникновения ошибки

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

Проблема кроется в нарушении связи между данными в базе и метаданными конфигурации. Это часто происходит по следующим причинам:

  1. Сбои при синхронизации в РИБ: В распределенных базах данных предопределенные элементы могут двоиться. Если в разных узлах одному и тому же виду контактной информации были присвоены разные внутренние идентификаторы (GUID), при обмене система может «потерять» связь с нужным элементом.
  2. Потеря статуса предопределенности: В списке видов контактной информации нужный элемент (например, «Телефон») может отображаться без характерного значка (маленького шарика), что означает — программа больше не считает его системным.
  3. Особенности поиска в коде РМК: Алгоритм регистрации карты ищет вид контактной информации по определенному алгоритму. Если основной вид («Телефон физического лица») поврежден или не найден, БСП может подставить первый попавшийся элемент с типом «Телефон». По иронии судьбы, им часто оказывается именно ТелефонНалоговогоОргана из-за его положения в иерархии или алфавитном порядке.

Шаг 1. Проверка справочника «Виды контактной информации»

Первым делом нам необходимо визуально и технически оценить состояние справочника. Перейдем в раздел Администрирование — Общие настройки — Контактная информация — Виды контактной информации.

Проанализируем структуру группы Контактная информация справочника "Физические лица". Нам нужно убедиться, что элемент Телефон (или Телефон мобильный) является предопределенным. Посмотрим на список: если элементы отличаются от тех, что мы видим в чистой демо-базе, значит, структура была нарушена.

Если вы видите дубли или если у элемента отсутствует признак предопределенности, это явный сигнал к действию. Попробуем запустить базу в режиме «Обновление информационной базы», чтобы система попыталась восстановить связи автоматически. Для этого используем параметр запуска:

/C ЗапуститьОбновлениеИнформационнойБазы

Однако, как показывает практика, при серьезных сбоях в РИБ этот метод помогает не всегда.

Шаг 2. Использование обработки «Сопоставление предопределенных данных»

Если автоматическое обновление не помогло, воспользуемся более мощным инструментом. В типовых конфигурациях на базе БСП существует скрытая обработка для восстановления связей объектов метаданных.

Выполним следующие действия:

  1. Перейдем в меню Функции для технического специалиста (или «Все функции»).
  2. Найдем стандартную обработку Сопоставление предопределенных данных.
  3. В открывшемся окне выберем справочник Виды контактной информации.
  4. Проанализируем таблицу: если в колонке «Данные в ИБ» пусто или стоит некорректная ссылка напротив системного имени ТелефонФизЛица, нам необходимо вручную указать правильный элемент из справочника.

Это действие «привяжет» конкретную запись в вашей базе к логике программного кода 1С.

Шаг 3. Проверка «Имени предопределенных данных» через групповое изменение

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

Рассмотрим алгоритм действий:

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

Если это поле пустое, впишите туда правильное системное имя. После этого система снова начнет «узнавать» этот вид контактной информации при записи данных из РМК.

Шаг 4. Массовое исправление уже накопленных ошибок

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

Воспользуемся Групповым изменением реквизитов для объектов типа Физические лица. Однако, стоит помнить, что контактная информация хранится в табличных частях или в специальном регистре (в зависимости от версии БСП). Поэтому правильнее будет использовать небольшую обработку или встроенный поиск и замену дублей.

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


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

Запрос.УстановитьПараметр("ВидНалоговая", Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон налогового органа"));
// ... далее цикл обхода и замена Вида на Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица

Резюме и профилактика

Подведем итоги. Ситуация, когда телефон записывается не туда, — это не ошибка кода РМК, а следствие десинхронизации справочника видов контактной информации. В 90% случаев это лечится восстановлением имени предопределенного узла или сопоставлением данных.

Чтобы избежать подобного в будущем, особенно в сетях с РИБ, рекомендуем:

Соблюдение этих правил позволит сохранить целостность данных ваших клиентов и обеспечит корректную работу маркетинговых инструментов в 1С:Розница.

← На главную