Когда мы сталкиваемся с задачей хранения разнообразной контактной информации, такой как несколько городских и мобильных телефонов, адреса и электронные почты для каждого элемента справочника в 1С, стандартные реквизиты справочника быстро становятся неэффективными. Они позволяют нам хранить лишь одно значение для каждого поля, что сильно ограничивает гибкость. Например, если нам нужно записать три городских телефона для одного учебного заведения, создание трех отдельных реквизитов вроде «ТелефонГородской1», «ТелефонГородской2», «ТелефонГородской3» является негибким и неудобным решением. Мы не сможем легко добавить четвертый телефон без изменения структуры конфигурации, и такой подход не масштабируется.
Давайте вместе разберем, как эффективно и гибко организовать хранение такой информации. Наиболее мощным и рекомендуемым подходом в 1С для решения подобных задач является использование табличных частей справочника. Этот метод позволяет нам хранить произвольное количество контактных данных для каждого элемента справочника, обеспечивая высокую степень гибкости и масштабируемости, что особенно важно в условиях, когда мы работаем без Библиотеки Стандартных Подсистем (БСП), как это было в вашем случае.
Табличная часть предоставляет нам возможность привязать к каждому элементу справочника (например, к каждому «Учебному Заведению») целый список связанных записей. Каждая такая запись в табличной части будет представлять собой отдельный элемент контактной информации. Это решение значительно превосходит попытки использовать множественные реквизиты, поскольку оно динамически адаптируется к любому количеству телефонов, адресов или email-адресов.
Чтобы наша табличная часть была максимально универсальной и понятной, мы должны продумать ее структуру. Предлагаем следующий набор реквизитов для нашей табличной части, которую мы можем назвать, например, «КонтактнаяИнформация»:
Этот реквизит будет определять общую категорию контактной информации. Мы создадим новое перечисление в конфигураторе, которое будет содержать основные типы контактов. Это позволяет нам четко классифицировать каждую запись.
ТипыКонтактнойИнформации.ТелефонEmailАдресWhatsAppTelegramSkypeФакс
// Пример создания перечисления в конфигураторе:
// В ветке "Перечисления" создаем новое перечисление "ТипыКонтактнойИнформации".
// Добавляем значения:
// - Телефон
// - Email
// - Адрес
// - WhatsApp
// - Telegram
// - Skype
// - Факс
Этот реквизит позволяет нам уточнить тип контактной информации. В отличие от перечисления, справочник дает нам еще большую гибкость, позволяя добавлять новые виды без изменения структуры конфигурации.
Телефон можно указать Городской, Мобильный, Рабочий, Домашний. Для Адреса — Юридический, Фактический, Почтовый.ВидыКонтактнойИнформации. Достаточно будет одного реквизита "Наименование" для хранения названия вида.ВидыКонтактнойИнформации:
Городской, Мобильный, Рабочий, Домашний, Факс.Юридический, Фактический, Почтовый.Рабочий, Личный, Для рассылок.Это поле будет хранить само значение контактной информации.
Строка. Рекомендуем установить неограниченную длину для максимальной гибкости, так как адреса могут быть очень длинными.Опциональное поле для добавления дополнительной информации, которая не вписывается в основные категории.
Строка, например, длиной 150 символов.Флажок, который позволяет нам отметить одно из значений как приоритетное.
Булево (Истина/Ложь).Критически важно понимать, что каждое отдельное контактное значение (один городской телефон, один мобильный телефон, один email или один адрес) должно занимать отдельную строку в нашей табличной части. Это позволяет нам удобно работать с каждым номером или адресом индивидуально, фильтровать, сортировать и использовать их в отчетах.
Давайте рассмотрим, как мы можем записать несколько городских телефонов, мобильный телефон, WhatsApp и email для одного учебного заведения:
ТипКонтактнойИнформации: ТелефонВидКонтактнойИнформации: ГородскойПредставление: "+7 (495) 123-45-67"Комментарий: "Приемная комиссия"Основной: Истина (если это основной городской)ТипКонтактнойИнформации: ТелефонВидКонтактнойИнформации: ГородскойПредставление: "+7 (495) 765-43-21"Комментарий: "Бухгалтерия"Основной: ЛожьТипКонтактнойИнформации: ТелефонВидКонтактнойИнформации: МобильныйПредставление: "+7 (926) 987-65-43"Комментарий: "Телефон директора"Основной: ИстинаТипКонтактнойИнформации: WhatsAppВидКонтактнойИнформации: Мобильный (или можно создать отдельный вид "WhatsApp")Представление: "+7 (926) 987-65-43"Комментарий: "Для срочной связи"Основной: ЛожьТипКонтактнойИнформации: EmailВидКонтактнойИнформации: РабочийПредставление: "info@uchebka.ru"Комментарий: "Основной email"Основной: ИстинаТаким образом, мы видим, что каждое контактное значение занимает отдельную строку, что позволяет нам хранить их в любом количестве и с любой детализацией.
Что касается формата телефонных номеров, то в 1С нет строгого принудительного формата для строковых полей. Мы сами должны позаботиться о единообразии и правильности ввода данных.
Вот несколько рекомендаций, которые мы можем применить:
Представление табличной части как простую строку.+79261234567 без разделителей) или же иметь функцию, которая преобразует пользовательский формат в такой универсальный формат для дальнейшей обработки. На форме же мы можем отображать номер в более удобном для чтения виде, используя форматирование.Адреса, аналогично телефонам и email, также прекрасно вписываются в нашу модель табличной части. Мы можем хранить их как отдельные записи.
Создадим отдельную строку в табличной части для адреса. Например:
ТипКонтактнойИнформации: АдресВидКонтактнойИнформации: Юридический (или Фактический, Почтовый)Представление: "123456, г. Москва, ул. Примерная, д. 1, офис 100"Комментарий: "Основной юридический адрес"Основной: ИстинаПолный адрес будет храниться в поле Представление как одна строка.
Если нам требуется более детальная работа с адресами (например, разбор на индекс, город, улицу, дом для интеграции с картографическими сервисами или специализированными отчетами), мы можем:
Представление для адреса, мы могли бы добавить в табличную часть такие реквизиты, как Индекс (Строка), Город (Строка), Улица (Строка), Дом (Строка), КвартираОфис (Строка). Это сделает табличную часть более громоздкой, но даст детальную структуру.Адреса со всеми детальными полями (Индекс, Город, Улица и т.д.) и затем ссылаться на элементы этого справочника из нашей табличной части КонтактнаяИнформация. В этом случае, в табличной части вместо поля Представление у нас будет реквизит СсылкаНаАдрес с типом СправочникСсылка.Адреса. Этот метод требует больше усилий для реализации, но обеспечивает максимальную гибкость и повторное использование адресов. Для учебных целей часто достаточно первого, более простого способа.Поскольку мы работаем без БСП, использовать готовые адресные классификаторы и подсистемы ввода адресов из коробки мы не сможем. Все придется реализовывать вручную.
Как мы уже выяснили из вашей ситуации, Библиотека Стандартных Подсистем (БСП) для учебных целей может быть недоступна. Это означает, что все вышеописанные механизмы — создание перечислений, справочников, табличных частей и настройка форм — мы будем реализовывать самостоятельно, используя только средства самой платформы 1С:Предприятие. Это отличная возможность для нас глубже изучить работу конфигуратора!
Давайте пошагово рассмотрим, как мы будем создавать эти объекты:
ТипыКонтактнойИнформации:
ТипыКонтактнойИнформации.Телефон, Email, Адрес, WhatsApp, Telegram, Skype и т.д.ВидыКонтактнойИнформации:
ВидыКонтактнойИнформации.КонтактнаяИнформация.КонтактнаяИнформация:
КонтактнаяИнформация в дереве конфигурации.ТипКонтактнойИнформации: Тип данных — ПеречислениеСсылка.ТипыКонтактнойИнформации.ВидКонтактнойИнформации: Тип данных — СправочникСсылка.ВидыКонтактнойИнформации.Представление: Тип данных — Строка (рекомендуется неограниченная длина).Комментарий: Тип данных — Строка (например, длиной 150).Основной: Тип данных — Булево.КонтактнаяИнформация (она появится в списке элементов формы, обычно в группе «Элементы данных»).Вот как будет выглядеть структура реквизитов в конфигураторе, которую мы с вами создадим:
// В конфигураторе, в справочнике "УчебныеЗаведения",
// мы добавляем новую табличную часть с именем "КонтактнаяИнформация".
// Далее, в этой табличной части "КонтактнаяИнформация",
// мы добавляем следующие реквизиты:
// 1. Имя: ТипКонтактнойИнформации
// Тип: ПеречислениеСсылка.ТипыКонтактнойИнформации
// (Ссылка на наше перечисление, которое мы создали)
// 2. Имя: ВидКонтактнойИнформации
// Тип: СправочникСсылка.ВидыКонтактнойИнформации
// (Ссылка на наш справочник видов контактной информации)
// 3. Имя: Представление
// Тип: Строка
// Длина: 0 (Неограниченная длина, для максимальной гибкости)
// 4. Имя: Комментарий
// Тип: Строка
// Длина: 150 (Достаточно для коротких комментариев)
// 5. Имя: Основной
// Тип: Булево
// (Флажок для отметки основного контакта)
После всех этих шагов, мы обновим конфигурацию базы данных (через меню «Конфигурация» → «Обновить конфигурацию базы данных»). Теперь, при открытии элемента справочника «Учебные Заведения» в пользовательском режиме, мы увидим нашу табличную часть, куда сможем добавлять любое количество строк с различной контактной информацией.
Этот подход не только решит текущую задачу по хранению нескольких номеров телефонов, адресов и email, но и подготовит вашу информационную базу к будущему расширению функционала, если потребуется добавить новые типы или виды контактной информации.