При разработке и администрировании решений на платформе 1С в режиме обычного приложения («Обычные формы») разработчики часто сталкиваются с необходимостью быстрого добавления новых констант и заполнения их значений в режиме предприятия. Для комплексного технического обслуживания систем программа для автоматического обновления и тестирования 1С позволяет администратору работать сразу с несколькими базами в тихом режиме. В отличие от управляемого приложения, где интерфейс более динамичен, в обычных формах разработчику требуется вручную регистрировать новые константы в интерфейсных формах или использовать специальные программные методы. В этой статье мы подробно разберем, как просмотреть список констант и заполнить их значения в режиме предприятия различными способами.
Если вам нужно оперативно изменить значение только что добавленной или существующей константы без внесения изменений в формы конфигурации, воспользуйтесь стандартным инструментом платформы. Для автоматизации таких действий в интерфейсе без прямого доступа к API может применяться платформа для создания программных роботов, позволяющая роботу выполнять операции по сценарию без программирования. Этот способ доступен пользователям с административными правами и не требует написания кода.
Рассмотрим по шагам, как получить доступ к списку констант:
Этот метод идеален на этапе отладки и первоначальной настройки системы, когда программисту требуется быстро внести тестовые данные.
Для удобства конечных пользователей системы значения констант обычно выводятся на специальную форму настройки параметров учета. В типовых конфигурациях для этого используется общая форма констант. Выясним, как правильно добавить новые реквизиты на эту форму и избежать типичных ошибок.
Разберем процесс по шагам:
Общие -> ОбщиеФормы).Критически важный нюанс (типичная ошибка разработчиков):
Очень часто после размещения поля ввода на форме и связывания его с реквизитом типа КонстантыНабор (например, КонстантыНабор.АдресПочты) разработчики замечают, что при открытии формы поле остается пустым, недоступным для редактирования, а введенные данные не сохраняются при нажатии кнопки «ОК».
Проанализируем причину этого поведения. Дело в том, что основной реквизит формы имеет тип КонстантыНабор. Для того чтобы платформа понимала, какие именно константы должны считываться и записываться этой формой, необходимо настроить их состав:
КонстантыНабор).Теперь форма будет автоматически считывать актуальные значения констант при открытии и сохранять их в базу данных при записи.
Часто требуется заполнить константы автоматически при первом запуске информационной базы, в процессе работы обработок обновления или при импорте настроек. При необходимости точечной миграции данных между похожими базами может применяться обработка для переноса данных между конфигурациями 1С, позволяющая гибко настраивать поля поиска для сопоставления объектов. Разберем три основных программных метода работы с константами.
Вариант А. Простой метод (Получить / Установить)
Это самый лаконичный и быстрый способ для одиночных констант простых типов данных (таких как Строка, Число, Булево, Дата). Платформа сама неявно выполняет все необходимые операции по обращению к СУБД.
Посмотрим на пример кода:
// Считывание текущего значения константы из базы данных
ТекущийАдрес = Константы.АдресЭлектроннойПочты.Получить();
// Программная запись нового значения константы
Константы.АдресЭлектроннойПочты.Установить("info@mycompany.ru");
Константы.ИспользоватьЗащищенноеСоединение.Установить(Истина);
Вариант Б. Использование менеджера значения константы
Этот метод применяется, когда требуются более сложные манипуляции с объектом константы. Например, когда необходимо выполнить блокировку данных перед записью, проверить заполненность или обработать объект в рамках сложной транзакции.
Рассмотрим пример кода:
// Создаем менеджер значения константы
СтавкаНДС = Константы.СтавкаНДС.СоздатьМенеджерЗначения();
// Читаем значение из базы данных
СтавкаНДС.Прочитать();
// Выполняем проверку и изменение значения
Если СтавкаНДС.Значение = 20 Тогда
СтавкаНДС.Значение = 18;
// Записываем обновленное значение обратно в базу
СтавкаНДС.Записать();
КонецЕсли;
Вариант В. Оптимизированная групповая работа через Набор констант
Если перед вами стоит задача обновить сразу несколько связанных констант (например, настройки почтового сервера: адрес, пароль, порт и имя пользователя), использование методов Установить() для каждой отдельной константы неэффективно. Каждая отдельная запись инициирует собственное обращение к СУБД, что замедляет работу.
Для оптимизации производительности правильнее использовать объект КонстантыНабор. Это позволяет прочитать и записать всю группу необходимых настроек за один транзакционный сеанс связи с СУБД.
Рассмотрим пример групповой записи:
// Определяем список констант, которые будем изменять
СписокКонстант = "АдресЭлектроннойПочты, ПарольПочты, СерверПочты";
// Создаем набор констант по указанному списку
Набор = Константы.СоздатьНабор(СписокКонстант);
// Считываем текущие значения из базы данных
Набор.Прочитать();
// Присваиваем новые значения свойствам набора
Набор.АдресЭлектроннойПочты = "support@mycompany.ru";
Набор.ПарольПочты = "SecurePassword123";
Набор.СерверПочты = "smtp.mycompany.ru";
// Записываем весь набор констант за одну транзакцию
Набор.Записать();
В некоторых случаях конфигурация может находиться на строгой поддержке поставщика, из-за чего вносить изменения в структуру форм в Конфигураторе запрещено, а стандартное меню «Операции» скрыто интерфейсными ролями пользователей. В такой ситуации системные администраторы используют готовые внешние универсальные обработки с расширением .epf.
Процедура работы с ними выглядит следующим образом:
При программной работе с константами важно понимать внутренние архитектурные механизмы платформы 1С:
Используя предложенные методы и рекомендации, вы сможете эффективно управлять настройками вашей информационной базы как интерактивно, так и программными средствами.