Как программно реализовать сохранение и восстановление настроек формы в 1С:Предприятие 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

В процессе разработки на платформе 1С:Предприятие 7.7 часто возникает необходимость сохранить выбор пользователя (например, состояние переключателей, флажков или текстовых полей) так, чтобы при следующем запуске обработки эти данные подставились автоматически. Хотя в платформе предусмотрен стандартный механизм сохранения настроек через системную кнопку, пользователи нередко забывают ее нажимать или не знают о ее существовании. В таких случаях программисту необходимо реализовать этот функционал принудительно.

В данной статье мы подробно разберем, какими штатными средствами можно управлять сохранением настроек, проанализируем различия между записью в реестр и во внешние файлы, а также рассмотрим специфику работы с переключателями.

Метод 1: Использование системных функций СохранитьЗначение и ВосстановитьЗначение

Это самый распространенный способ хранения небольших объемов данных. Платформа записывает эти значения в системный реестр Windows, привязывая их к конкретному пользователю и базе данных. Рассмотрим, как правильно использовать эти функции в коде формы.

Проанализируем ситуацию: нам нужно сохранить значение переменной ВерДР (например, номер выбранного варианта в группе переключателей). Для этого мы будем использовать предопределенные процедуры ПриЗакрытии и ПриОткрытии.

Шаг 1. Сохранение данных при выходе из формы

В модуле формы находим или создаем процедуру ПриЗакрытии. Именно здесь мы даем команду системе запомнить текущее состояние реквизита.


Процедура ПриЗакрытии()
    // Сохраняем значение переменной под уникальным строковым идентификатором
    СохранитьЗначение("Настройка_ВариантДР", ВерДР);
КонецПроцедуры

Шаг 2. Восстановление данных при запуске

Теперь нам нужно извлечь данные. Важно помнить, что функция ВосстановитьЗначение возвращает само значение, поэтому его нужно присвоить переменной.


Процедура ПриОткрытии()
    // Извлекаем сохраненное значение по тому же идентификатору
    ВерДР = ВосстановитьЗначение("Настройка_ВариантДР");
    
    // Если значение ранее не сохранялось, можно установить значение по умолчанию
    Если ПустоеЗначение(ВерДР) = 1 Тогда
        ВерДР = 1; // Установка первого положения переключателя
    КонецЕсли;
КонецПроцедуры

Важный нюанс: Идентификаторы в функциях СохранитьЗначение являются глобальными для пользователя в рамках базы. Если вы назовете идентификатор просто Дата, есть риск, что другая обработка с таким же идентификатором перезапишет ваши данные. Всегда используйте уникальные префиксы, например: "МояОбработка_ИмяРеквизита".

Метод 2: Сохранение данных во внешние файлы

Если вам необходимо сохранять сложные структуры данных (например, СписокЗначений или ТаблицаЗначений), использование реестра может быть неэффективным или приводить к ошибкам. В этом случае на помощь приходят функции ЗначениеВФайл и ЗначениеИзФайла.

Рассмотрим пример сохранения настроек в файл формата .dat или .txt в каталог пользователя. Это гарантирует, что настройки не пропадут даже при очистке реестра или переустановке операционной системы (если каталог базы находится на сервере).

Пример записи в файл:


ПутьКФайлу = КаталогПользователя() + "my_settings.dat";
ЗначениеВФайл(ПутьКФайлу, ВерДР);

Пример чтения из файла:


ПутьКФайлу = КаталогПользователя() + "my_settings.dat";
Если ФС.СуществуетФайл(ПутьКФайлу) = 1 Тогда
    ЗначениеИзФайла(ПутьКФайлу, ВерДР);
КонецЕсли;

Этот метод считается более надежным для крупных конфигураций и терминальных серверов, так как файлы настроек хранятся непосредственно в папке пользователя внутри информационной базы.

Особенности работы с переключателями (Radio Buttons)

Программисты часто сталкиваются с тем, что переключатели не восстанавливают свое визуальное состояние, хотя значение переменной считано верно. Выясним причину этого поведения в 1С 7.7.

Переключатели на форме работают как группа. Значением группы является числовой индекс (1, 2, 3...), который связан с первым элементом группы (у которого в свойствах стоит признак "Первый в группе").

  1. Убедитесь, что у первого переключателя в группе задан Идентификатор (например, РежимРаботы).
  2. При восстановлении значения через ВосстановитьЗначение присваивайте результат именно этому идентификатору.
  3. Остальные переключатели в группе изменят свое состояние автоматически на основании этого числового значения.

Метод 3: Использование штатных механизмов Отчета и Обработки

Мало кто знает, что для объектов типа "Отчет" или "Обработка" существуют встроенные методы, которые имитируют работу стандартной кнопки "Сохранить настройки", но вызываются программно. Это методы СохранитьЗначения() и ВосстановитьЗначения() (обратите внимание на множественное число в названии).

При вызове СохранитьЗначения() система автоматически берет все реквизиты диалога, у которых заполнен Идентификатор, и сохраняет их в специальный файл .7s в каталоге пользователя. Это избавляет от необходимости прописывать каждую переменную вручную.

Как это работает:

Это самый "чистый" способ с точки зрения архитектуры 1С 7.7, так как он использует родной механизм платформы, но делает его автоматическим для пользователя.

Подведение итогов

Мы рассмотрели три основных подхода к автоматизации сохранения настроек:

  1. Реестр (СохранитьЗначение): идеально для простых переменных (строки, числа) и быстрой разработки.
  2. Файлы (ЗначениеВФайл): лучшее решение для таблиц, списков и работы в нестабильных программных средах.
  3. Методы объекта (СохранитьЗначения): оптимальный вариант для комплексного сохранения всех полей формы одной командой.

Выбор конкретного метода зависит от сложности вашей задачи, однако для большинства пользовательских обработок связка ПриОткрытии/ПриЗакрытии с использованием реестра является стандартом де-факто.

← На главную