Внедрение подсистемы Контактная информация (КИ) из состава Библиотеки стандартных подсистем (БСП) — задача стандартная, но часто сопряженная с неочевидными трудностями. Даже при строгом следовании инструкциям на ИТС программисты сталкиваются с тем, что список видов контактной информации остается пустым, типы данных ограничиваются только «Адресом», а при обновлении информационной базы возникают ошибки метаданных. В этой статье мы подробно разберем, как избежать этих ловушек, правильно настроить подсистемы и подготовить служебные макеты для корректной работы БСП.
Одной из первых и самых неочевидных проблем является некорректная настройка свойств самих подсистем БСП в дереве метаданных. Рассмотрим ситуацию: вы добавили все необходимые объекты, но программный код БСП упорно «не видит» установленную подсистему. Проанализируем причину. Для точного определения состава и проверки версии используемой библиотеки удобно использовать обработку для получения информации о версиях БСП.
В БСП часто используется функция ОбщегоНазначения.ПодсистемаСуществует(). Эта функция проверяет наличие подсистемы в конфигурации. Однако существует важный технический нюанс: для корневой подсистемы СтандартныеПодсистемы и всех ее подчиненных узлов нельзя устанавливать свойство «Включать в командный интерфейс». Если этот флаг установлен, логика определения установленных модулей может дать сбой, и функция вернет Ложь.
Проверим настройки в вашем конфигураторе:
КонтактнаяИнформация свойство «Включать в командный интерфейс» выключено.Чтобы ваш справочник (например, Справочник.Контрагенты) начал полноценно работать с механизмом КИ, простого включения его в ОпределяемыеТипы.ВладелецКонтактнойИнформации недостаточно. Выясним, почему список видов КИ в режиме «1С:Предприятие» может оставаться пустым.
Система должна знать, какие именно поля (адрес, телефон, email) разрешены для конкретного справочника. Для этого необходимо выполнить программную регистрацию в общем модуле УправлениеКонтактнойИнформациейПереопределяемый. Разберем шаги:
Найдем процедуру ПриОпределенииВидовКонтактнойИнформации (в последних версиях БСП) и добавим описание вашего объекта. Пример кода может выглядеть следующим образом:
Процедура ПриОпределенииВидовКонтактнойИнформации(ВидыКИ) Экспорт
НоваяСтрока = ВидыКИ.Добавить();
НоваяСтрока.ИмяМетаданных = "Справочник.Контрагенты";
НоваяСтрока.Наименование = НСтр("ru = 'Контактная информация контрагентов'");
// Указываются и другие параметры согласно документации вашей версии БСП
КонецПроцедуры
После внесения изменений в код необходимо запустить обновление информационной базы с параметром ЗапуститьОбновлениеИнформационнойБазы, чтобы предопределенные данные или настройки в справочнике ВидыКонтактнойИнформации инициализировались корректно.
Часто возникает вопрос: почему при попытке создать новый вид контактной информации система предлагает выбрать только тип Адрес? Проанализируем ситуацию. Это происходит по одной из двух причин:
ОпределяемыйТип.КонтактнаяИнформацияОбъект. В него должны быть включены табличные части вашего справочника, предназначенные для хранения КИ.При первом запуске системы после внедрения БСП или при обновлении версии часто возникает ошибка: «Область не найдена». Эта ошибка напрямую связана с механизмом вывода окна «Что нового?». Подсистема «Обновление информационной базы» ищет в общем макете ОписаниеИзмененийСистемы специальные именованные области.
Рассмотрим структуру этого макета. Важно помнить следующее:
ОписаниеИзмененийСистемы должен иметь тип Табличный документ. Распространенная ошибка — создание его как текстового документа.Шапка_Версия и Версия_Версия.Пример правильного именования областей в макете:
Ctrl+Shift+N) назначьте ей имя, например, Шапка3_1_2_15.Версия3_1_2_15.Если вы внедряете БСП «с нуля», проще всего скопировать этот макет целиком из демо-конфигурации БСП, сохранив структуру имен всех областей. Это гарантирует, что процедура инициализации новых подсистем пройдет без прерываний.
Чтобы данные контактной информации не только хранились в базе, но и корректно отображались на форме, разберем необходимые программные вызовы в модуле формы вашего справочника. Простого копирования элементов формы из демо-базы недостаточно. Для быстрого поиска готовых шаблонов кода и примеров вызова различных функций библиотеки можно использовать справочник по методам БСП с примерами использования.
В обработчике ПриЧтенииНаСервере обязательно должен присутствовать вызов программного интерфейса БСП. Посмотрим на пример:
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.КонтактнаяИнформация
УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.КонтактнаяИнформация
КонецПроцедуры
Этот вызов отвечает за заполнение динамически создаваемых полей или подготовку данных в табличной части КИ для отображения в пользовательском интерфейсе. Без этого вызова вы можете увидеть пустые группы контактной информации, даже если в самой табличной части справочника данные присутствуют.
Если после всех манипуляций подсистема работает нестабильно, воспользуемся мощным инструментом отладки, который поставляется в составе дистрибутива БСП. Это внешний отчет ПроверкаВнедренияБСП.erf.
Запустим этот отчет в режиме «1С:Предприятие» и выберем проверку подсистемы Контактная информация. Отчет проанализирует:
Использование этого отчета позволяет сэкономить часы отладки, указывая на конкретные пропущенные шаги в инструкциях ИТС.
Подведем итог: успешное внедрение КИ требует не только копирования объектов, но и внимательной настройки метаданных (без лишних флагов в интерфейсе), программной регистрации владельцев и правильного оформления служебных табличных документов (макетов). Следуя этим правилам, вы обеспечите стабильную работу механизма контактной информации в вашей конфигурации.