Сохранение настроек

У клиента форма загрузки номенклатуры из Excel с большим количеством галочек и таблицей настроек. От разных поставщиков приходят разные файлы, поэтому решил сделать кнопки сохранения и восстановления настроек.

Поискал готовое, нашел: https://infostart.ru/public/378879.

Попробовал, оказалось там сохраняются настройки из объекта внешней обработки, а у меня все находится в форме, а не в объекте. Но не боги горшки обжигают, написал свой код.

Не стал усложнять с сохранением во временное хранилище, использую сериализацию в строку:

&НаСервере
Функция ЭкспортНастроекВСтрокуНаСервере() 
    //https://infostart.ru/public/378879/
    
    Настройки = Новый Структура;
    //Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты("Объект") Цикл
    Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты() Цикл
      
        ЗначениеРеквизита = ЭтаФорма[Реквизит.Имя];
        Если Реквизит.Имя = "Объект" Тогда
            Продолжить;
        КонецЕсли;
        Если ТипЗнч(ЗначениеРеквизита) = Тип("ДанныеФормыКоллекция") Тогда
            Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита.Выгрузить());
            Продолжить;
        КонецЕсли;
    
        Настройки.Вставить(Реквизит.Имя, ЗначениеРеквизита);
    
    КонецЦикла;                          
    
    
    Возврат ЗначениеВСтрокуВнутр(Настройки);
    
КонецФункции   

// Заполняет значения всех реквизитов формы из временого хранилища, адрес которого указан в АдресВременногоХранилища
Процедура ИмпортНастроекИзСтроки(Строка)
    
    Попытка
        Настройки = ЗначениеИзСтрокиВнутр(Строка);
    Исключение
        Сообщить("Ошибка при загрузке настроек на сервере: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
  
    Для Каждого ЭлементНастройки Из Настройки Цикл
      
        Попытка
            Если ТипЗнч(ЭтаФорма[ЭлементНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") Тогда
                ЭтаФорма[ЭлементНастройки.Ключ].Загрузить(ЭлементНастройки.Значение);
                Продолжить;
            КонецЕсли;
            ЭтаФорма[ЭлементНастройки.Ключ] = ЭлементНастройки.Значение;
        Исключение
            Сообщить("Ошибка при импорте настроек: " + ОписаниеОшибки());
        КонецПопытки;
    
      КонецЦикла;                          
  
КонецПроцедуры

Создал кнопки сохранения-восстановления настроек в сворачиваемой группе:

&НаКлиенте
Процедура ЗагрузитьНастройки(Команда)   
    Т = Новый ТекстовыйДокумент();
    Т.Прочитать(ВыбИмяФайлаНастроек);
    ИмпортНастроекИзСтроки(Т.ПолучитьТекст());
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройки(Команда)
    Т = Новый ТекстовыйДокумент();
    Т.УстановитьТекст(ЭкспортНастроекВСтрокуНаСервере());
    Т.Записать(ВыбИмяФайлаНастроек);
КонецПроцедуры

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

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

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