Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 24
1C 8.x

УНФ для Украины 1.6. Сохранение\Восстановление настроек отбора списка документов

11.07.2017, 11:38. Показов 2332. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1С:Підприємство 8.3 (8.3.6.2449)
УНФ для Украины, редакция 1.6 (1.6.2.1)
Управляемые формы.

Добрый день.
Есть задача - сохранять и восстанавливать разные комбинации настроек отбора списка документов "Заказ покупателя"
Пытаюсь реализовать разными способами (как чтение\запись настроек, так и их хранение). Успешным результатом пока не могу похвастаться.
Подскажите пожалуйста, как лучше реализовать?

актуальный тестовый вариант такой:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
&НаКлиенте
Процедура Д_СохранитьНастройкуОтбора(Команда)
    МассивОтборов  = Новый Массив;
    Для Каждого ЭлементОтбора из Список.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл 
        Если ЭлементОтбора["Представление"]   = "Период" Тогда 
            Продолжить;
        КонецЕсли;
        
        ЗаписьОтбора    = Новый Структура;
        ЗаписьОтбора.Вставить("Использование",ЭлементОтбора["Использование"]);
        ЗаписьОтбора.Вставить("ЛевоеЗначение",ЭлементОтбора["ЛевоеЗначение"]);
        ЗаписьОтбора.Вставить("ВидСравнения",ЭлементОтбора["ВидСравнения"]);
        ЗаписьОтбора.Вставить("ПравоеЗначение",ЭлементОтбора["ПравоеЗначение"]);
        МассивОтборов.Добавить(ЗаписьОтбора);      
    КонецЦикла;
    
    Д_СохранитьНастройку(МассивОтборов);
    
КонецПроцедуры
 
&НаСервере
Функция Д_СохранитьНастройку(СохраненнаяНастройка = Неопределено,СтруктураЗаменяемойНастройки = Неопределено) //Экспорт
    
    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Вставить("ИмяОбъекта", "СписокЗаказов");
    СтруктураНастройки.Вставить("НаименованиеНастройки", "СписокЗаказов1");
    СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
    
    Если ТипЗнч(СтруктураНастройки) <> Тип("Структура") Тогда
        
        Возврат Ложь;
        
    КонецЕсли;
    
//Тут непосредственно записывает структуру в добавленный РС. Резульат Ложь\Истина
    Возврат СохранитьДанныеНастройки(СтруктураНастройки, СтруктураЗаменяемойНастройки);
    
 
&НаКлиенте
Процедура Д_ОткрытьНастройкуОтбора(Команда)
    МассивОтборов  = ПолучитьНастройку();
    Если МассивОтборов = Неопределено Тогда 
        Возврат;
    КонецЕсли;     
    
        Для Каждого ЭлементМассива из МассивОтборов Цикл         
        ЗаписьОтбора    = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЗаписьОтбора.Использование = ЭлементМассива.Использование;
        ЗаписьОтбора.ЛевоеЗначение = ЭлементМассива.ЛевоеЗначение;
        ЗаписьОтбора.ВидСравнения   = ЭлементМассива.ВидСравнения;
        ЗаписьОтбора.ПравоеЗначение   = ЭлементМассива.ПравоеЗначение;
        ЗаписьОтбора.Применение   = ТипПримененияОтбораКомпоновкиДанных.Элементы;
    КонецЦикла;
    ЭтаФорма.ОбновитьОтображениеДанных();
    
КонецПроцедуры
 
&НаСервере
Функция ПолучитьНастройку() //Экспорт
    
    СтруктураНастройки    = Новый Структура;
    СтруктураНастройки.Вставить("ИмяОбъекта", "СписокЗаказов");
    СтруктураНастройки.Вставить("НаименованиеНастройки", "СписокЗаказов1");
    
    Если ТипЗнч(СтруктураНастройки) <> Тип("Структура") Тогда
        
        Возврат Неопределено;
        
    КонецЕсли;
    
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |   СохраненныеНастройки.Пользователь,
    |   СохраненныеНастройки.ИмяОбъекта,
    |   СохраненныеНастройки.НаименованиеНастройки КАК НаименованиеНастройки,
    |   СохраненныеНастройки.СохраненнаяНастройка,
    |   СохраненныеНастройки.ИспользоватьПриОткрытии,
    |   СохраненныеНастройки.СохранятьАвтоматически
    |ИЗ
    |   РегистрСведений.Д_СохраненныеНастройки КАК СохраненныеНастройки
    |ГДЕ
    |   СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
    |   И СохраненныеНастройки.НаименованиеНастройки = &НаименованиеНастройки");
    
    Запрос.УстановитьПараметр("ИмяОбъекта", СтруктураНастройки.ИмяОбъекта);
    Запрос.УстановитьПараметр("НаименованиеНастройки", СтруктураНастройки.НаименованиеНастройки);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если РезультатЗапроса.Пустой() Тогда
        
        Возврат Неопределено;
        
    Иначе
        
        ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
        ВыборкаИзРезультатаЗапроса.Следующий();
        
        СтруктураНастройки.Вставить("СохраненнаяНастройка", ВыборкаИзРезультатаЗапроса.СохраненнаяНастройка.Получить());
        СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", ВыборкаИзРезультатаЗапроса.ИспользоватьПриОткрытии);
        СтруктураНастройки.Вставить("СохранятьАвтоматически", ВыборкаИзРезультатаЗапроса.СохранятьАвтоматически);
        
    КонецЕсли;
    
    Возврат СтруктураНастройки.СохраненнаяНастройка;//Истина;
    
КонецФункции // ПолучитьНастройку()
 
КонецФункции
Выгрузка проходит вроде нормально. Сохраняется.
Далее выбирается тоже нормально. в процедуре Д_ОткрытьНастройкуОтбора переменная МассивОтборов получается и имеет вид:
del

Далее, массив обрабатывается, и Список.КомпоновщикНастроек.Настройки.Отб ор.Элементы получается таким:
del

Потом делается обновление отображения - и на форме ничего не происходит (список не отобран, управляющие элементы фильтров справа - все пустые)
del
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2017, 11:38
Ответы с готовыми решениями:

Сохранение и восстановление настроек браузеров
Как известно, средствами самих браузеров можно сохранить и восстановить лишь закладки и куки. Однако существуют специальные утилиты,...

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

Формула отбора документов для конкретного юзера
В общем, есть некие документы, обладающие полем Login, в котором находится список пользователей, для которых документ предназначен. Стоит...

5
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 24
12.07.2017, 11:10  [ТС]
Выгрузка проходит вроде нормально. Сохраняется.
Далее выбирается тоже нормально. в процедуре Д_ОткрытьНастройкуОтбора переменная МассивОтборов получается и имеет вид:
(скрин 1)

Далее, массив обрабатывается, и Список.КомпоновщикНастроек.Настройки.Отб ор.Элементы получается таким:
(скрин 2)

Потом делается обновление отображения - и на форме ничего не происходит (список не отобран, управляющие элементы фильтров справа - все пустые)
(скрин 3)
Миниатюры
УНФ для Украины 1.6. Сохранение\Восстановление настроек отбора списка документов   УНФ для Украины 1.6. Сохранение\Восстановление настроек отбора списка документов   УНФ для Украины 1.6. Сохранение\Восстановление настроек отбора списка документов  

0
Эксперт 1С
 Аватар для GreenkA
3065 / 2012 / 525
Регистрация: 25.06.2009
Сообщений: 6,964
13.07.2017, 01:01
AlexHummer, а покажите код процедуры СохранитьДанныеНастройки().
0
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 24
13.07.2017, 09:42  [ТС]
В отладчике проходил, неоднократно. Собственно из него и сделаны скрины...

Сохранение насколько я понимаю отрабатывает. В той функции только сохранение. Вот код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
&НаСервере 
Функция СохранитьДанныеНастройки(СтруктураНастройки, СтруктураЗаменяемойНастройки)
    Если СтруктураНастройки.Свойство("ИспользоватьПриОткрытии") И СтруктураНастройки.ИспользоватьПриОткрытии = Истина Тогда
        
        Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   СохраненныеНастройки.Пользователь,
        |   СохраненныеНастройки.ИмяОбъекта,
        |   СохраненныеНастройки.НаименованиеНастройки
        |ИЗ
        |   РегистрСведений.Д_СохраненныеНастройки КАК СохраненныеНастройки
        |ГДЕ
        |   СохраненныеНастройки.ИспользоватьПриОткрытии = ИСТИНА
        |   И СохраненныеНастройки.Пользователь = &Пользователь
        |   И СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
        |   И СохраненныеНастройки.НаименованиеНастройки <> &НаименованиеНастройки");
        
        Запрос.УстановитьПараметр("Пользователь", СтруктураНастройки.Пользователь);
        Запрос.УстановитьПараметр("ИмяОбъекта", СтруктураНастройки.ИмяОбъекта);
        Запрос.УстановитьПараметр("НаименованиеНастройки", СтруктураНастройки.НаименованиеНастройки);
        
        РезультаЗапроса = Запрос.Выполнить();
        
        Если РезультаЗапроса.Пустой() = Ложь Тогда
            
            МенеджерЗаписи = РегистрыСведений.Д_СохраненныеНастройки.СоздатьМенеджерЗаписи();
            
            Выборка = РезультаЗапроса.Выбрать();
            
            Пока Выборка.Следующий() Цикл
                
                МенеджерЗаписи.Пользователь = Выборка.Пользователь;
                МенеджерЗаписи.ИмяОбъекта = Выборка.ИмяОбъекта;
                МенеджерЗаписи.НаименованиеНастройки = Выборка.НаименованиеНастройки;
                
                МенеджерЗаписи.Прочитать();
                
                Если МенеджерЗаписи.Выбран() Тогда
                    
                    МенеджерЗаписи.ИспользоватьПриОткрытии = Ложь;
                    МенеджерЗаписи.Записать();
                    
                КонецЕсли;
                
            КонецЦикла;
            
        КонецЕсли;
        
    КонецЕсли;
    
    МенеджерЗаписи = РегистрыСведений.Д_СохраненныеНастройки.СоздатьМенеджерЗаписи();
    
    Если СтруктураЗаменяемойНастройки <> Неопределено Тогда
        
        МенеджерЗаписи.Пользователь = СтруктураЗаменяемойНастройки.Пользователь;
        МенеджерЗаписи.ИмяОбъекта = СтруктураЗаменяемойНастройки.ИмяОбъекта;
        МенеджерЗаписи.НаименованиеНастройки = СтруктураЗаменяемойНастройки.НаименованиеНастройки;
        
        МенеджерЗаписи.Прочитать();
        
        Если МенеджерЗаписи.Выбран() Тогда
            
            МенеджерЗаписи.НаименованиеНастройки = СтруктураНастройки.НаименованиеНастройки;
            
            Если СтруктураНастройки.Свойство("СохраненнаяНастройка") Тогда
                
                МенеджерЗаписи.СохраненнаяНастройка = Новый ХранилищеЗначения(СтруктураНастройки.СохраненнаяНастройка, Новый СжатиеДанных(9));
                
            КонецЕсли;
            
            Если СтруктураНастройки.Свойство("ИспользоватьПриОткрытии") Тогда
                
                МенеджерЗаписи.ИспользоватьПриОткрытии = СтруктураНастройки.ИспользоватьПриОткрытии;
                
            КонецЕсли;
            
            Если СтруктураНастройки.Свойство("СохранятьАвтоматически") Тогда
                
                МенеджерЗаписи.СохранятьАвтоматически = СтруктураНастройки.СохранятьАвтоматически;
                
            КонецЕсли;
            
        Иначе
            
            Возврат Ложь;
            
        КонецЕсли;
        
    Иначе
        
        //МенеджерЗаписи.Пользователь = СтруктураНастройки.Пользователь;
        МенеджерЗаписи.ИмяОбъекта = СтруктураНастройки.ИмяОбъекта;
        МенеджерЗаписи.НаименованиеНастройки = СтруктураНастройки.НаименованиеНастройки;
        МенеджерЗаписи.СохраненнаяНастройка = Новый ХранилищеЗначения(СтруктураНастройки.СохраненнаяНастройка, Новый СжатиеДанных(9));
        
        Если СтруктураНастройки.Свойство("ИспользоватьПриОткрытии") Тогда
            
            МенеджерЗаписи.ИспользоватьПриОткрытии = СтруктураНастройки.ИспользоватьПриОткрытии;
            
        КонецЕсли;
        
        Если СтруктураНастройки.Свойство("СохранятьАвтоматически") Тогда
            
            МенеджерЗаписи.СохранятьАвтоматически = СтруктураНастройки.СохранятьАвтоматически;
            
        КонецЕсли;
        
    КонецЕсли;
    
    МенеджерЗаписи.Записать();
    
    Возврат Истина;
    
КонецФункции // СохранитьНастройку()
з.ы. да, в первом посте, при переносе кода ошибочно осталась лишняя строка "КонецФункции" (стр.109). В коде модуля, она конечно же не может просто так болтаться... =)
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
13.07.2017, 20:21
а хранилище общих настроек чем не подошло?

Почему не используется свойство формы, сохранять настройки автоматически?
0
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 24
14.07.2017, 08:50  [ТС]
Нужно сохранять разные комбинации настроек для пользователя под различные требования. Чтоб пользователь мог выбрать себе вариант.
Свойство ж формы, насколько я понимаю, сохраняет одно значение только...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2017, 08:50
Помогаю со студенческими работами здесь

Сохранение списка документов в текстовый файл
Привет! Пишу программку вывода списка документов в выбранной папке. Список в самой программке выводит, но еще нужно сделать чтобы она этот...

Проведение документов и восстановление последовательностей для 8.2
Никто не подскажет где взять обработку Проведение документов и восстановление последовательностей для 8.2, в БСП даже нет:(

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

Поле отбора компоновщика настроек
На форме есть компоновщик настроек, есть поле для отбора &quot;склад&quot; там по умолчанию быстрый выбор(не путать быстрый выбор в настройках СКД),...

Чтение/сохранение настроек для библиотека классов
есть необходимость хранить настройки для библиотеке классов, но не могу придумать как это реализовать, попытки через app.config окончились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru