Сохранение значений реквизитов управляемых форм

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

Сохранение значений реквизитов управляемых форм

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

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

Рассмотрим эту процедуру на примере формы с двумя табличными частями: ТипыЦен и ГруппыНоменклатуры. В каждой табличной части по одной колонке.

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

Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)

//Создаем массивы из табличных частей
МассивГрупп=новый массив;
Для каждого Строка из Объект.Группы Цикл
МассивГрупп.Добавить(Строка.Группа);
КонецЦикла;

МассивЦен=новый массив;
Для каждого Строка из Объект.ТипыЦен Цикл
МассивЦен.Добавить(Строка.ТипЦены);
КонецЦикла;

//Добавляем полученные массивы в сохраняемые настройки с соответствующими именами
Настройки.Вставить("Группа", МассивГрупп);
Настройки.Вставить("ТипыЦен", МассивЦен);

КонецПроцедуры

Теперь осталось восстановить табличные части из массивов при загрузке настроек управляемой формы. Для этого нам потребуется процедура для события ПриЗагрузкеДанныхИзНастроекНаСервере.

Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)

//Очищаем табличные части, чтобы избежать дублей
Объект.Группы.Очистить();
Объект.ТипыЦен.Очистить();

//Получаем массивы из настроек по тому имени, по которому сохраняли и заносим в табличные части
Для каждого Строка из Настройки.Получить("Группа") Цикл
НС=Объект.Группы.Добавить();
НС.Группа=Строка;
КонецЦикла;

Для каждого Строка из Настройки.Получить("ТипыЦен") Цикл
НС=Объект.ТипыЦен.Добавить();
НС.ТипЦены=Строка;
КонецЦикла;

КонецПроцедуры

Сохранение значений реквизитов управляемых форм: 4 комментария

  1. Евгений

    Настройки.Получить(«Группа»)
    Что такое здесь «Группа»? Это реквизит на форме или что? Его где создать, завести

    1. Автоматизация малого бизнеса Автор записи

      Сохраняемые настройки фактически представляют собой Соответствие.
      Первоначально в нем с ключом «Группы» был сохранен массив групп. А при загрузке мы получаем значение соответствия по ключу «Группы».

  2. Андрей

    Помогла мне данная статья, но нашёл решение короче, без перевода ТЗ в Массив:
    Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
    Настройки[«ТабГруппа»] = Объект.Группы.Выгрузить();
    Настройки[«ТабТипыЦен»] = Объект.ТипыЦен.Выгрузить());
    КонецПроцедуры

    Не стал при загрузке настроек делать очистку таблиц, т.к. они всё равно при открытии пустые:
    Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
    Объект.Группы.Загрузить(Настройки[«ТабГруппа»]);
    Объект.ТипыЦен.Загрузить(Настройки[«ТабТипыЦен»]);
    КонецПроцедуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *