Имя: Пароль:
1C
1С v8
Структура
,
0 mirror1982
 
02.04.13
00:13
Описал структуру. Как сохранить ее в справочник, один из его реквизитов называется "сохраненныеСтруктуры". Какой тип должен быть у этого реквизита?
1 Птица
 
02.04.13
00:17
Похоже, двоичныеДанные. Но насколько это оправдано: ссылочная целостность таких реквизитов поддерживаться не будет.
в смысле, если в структур не примитивные типы, а ссылки
2 miron25
 
02.04.13
00:17
Сохраняй в хранилищеЗначений...
3 Lys
 
02.04.13
00:19
(0) Как это сделать - уже написали.
Вот только непонятно, зачем...
4 mirror1982
 
02.04.13
00:27
(3) сохраняю настройки СКД.
5 mirror1982
 
02.04.13
00:32
я сделал хранилище значений записал в справочник структуру моей настройки. При считывании из справочника не могу ее расшифровать.
6 miron25
 
02.04.13
00:45
записываемвспр=Новый ХранилищеЗначения(твояструктура, <АлгоритмСжатияДанных>).
твояструктура=записываемспр.получить()
не?
7 mirror1982
 
02.04.13
00:55
Сохранение:

СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("ИмяОбъекта",Строка(ЭтотОбъект);СтруктураНастройки.Вставить("НаименованиеНастройки",Неопределено);
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии",Ложь);
СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);
СтруктураНастройки.Вставить("Пользователь", глПользователь);
СохраненнаяНастройка=Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
   МояНастройка=Справочники.НастройкиОтчетов.СоздатьЭлемент();
МояНастройка.Наименование=Строка(ЭтотОбъект.Метаданные().СинМояНастройка.Настройка=СтруктураНастройки;
МояНастройка.Записать();
8 mirror1982
 
02.04.13
00:56
Как теперь получить эту настройку из справочника?
9 miron25
 
02.04.13
01:26
Я вообщето не одинесник..Но вижу краем глаза,что фигня написана.
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("ИмяОбъекта",Строка(ЭтотОбъект);СтруктураНастройки.Вставить("НаименованиеНастройки",Неопределено);
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии",Ложь);
СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);
СтруктураНастройки.Вставить("Пользователь", глПользователь);
СохраненнаяНастройка=Новый ХранилищеЗначения   (СтруктураНастройки);
10 miron25
 
02.04.13
01:28
МояНастройка=Справочники.НастройкиОтчетов.СоздатьЭлемент();
МояНастройка.Наименование=СохраненнаяНастройка;


Реквизит Справочники.НастройкиОтчетов.Наименование имеет тип хранилищезначений;
11 mirror1982
 
02.04.13
01:29
Я просто неправильно скопировал ко, вот он целиком (сохранение):

   Если мТекущаяНастройка<>Неопределено Тогда
        СтруктураНастройки=мТекущаяНастройка;
        Иначе
             СтруктураНастройки = Новый Структура;
             СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект));
             СтруктураНастройки.Вставить("НаименованиеНастройки", Неопределено);
             СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь);
             СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);
   КонецЕсли;
   СтруктураНастройки.Вставить("Пользователь", глПользователь);
   СохраненнаяНастройка=Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
   СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
   МояНастройка=Справочники.НастройкиОтчетов.СоздатьЭлемент();
   МояНастройка.Наименование=Строка(ЭтотОбъект.Метаданные().Синоним);
   СтрокаДоступа=МояНастройка.Доступ.Добавить();
   СтрокаДоступа.Пользователь=глПользователь;
   СтрокаНастройки=МояНастройка.Настройки.Добавить();
   СтрокаНастройки.Наименование="Основная настройка";
   СтрокаНастройки.Настройка=СтруктураНастройки;
   МояНастройка.Записать();
   мТекущаяНастройка=СтруктураНастройки;
12 miron25
 
02.04.13
01:30
обратно получить
СохраненнаяНастройка=этотобъект.наименование;
СтруктураНастройки=СохраненнаяНастройка.получить();
13 mirror1982
 
02.04.13
01:31
(12) Исходя из (11) как получить настройку?
14 miron25
 
02.04.13
01:34
МояНастройка.Наименование=Строка  наименование --тип реквизита хранилищезначений
15 miron25
 
02.04.13
01:35
СохраненнаяНастройка=Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
   СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
зачем хранилище пихаешь в структуру?
16 miron25
 
02.04.13
01:36
то есть изначально не понимаешь как сохранять
17 miron25
 
02.04.13
01:37
В хранилище сохраняешь структуру
и записываешь в реквизит номенклатура с типом хранилищезначений..а не строковой тип
18 miron25
 
02.04.13
01:40
КомпоновщикНастроек.ПолучитьНастройки() а это где такое взяли?
может так КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки()?
19 Torquader
 
02.04.13
01:51
Вопрос, конечно, риторический - но зачем структуру хранить в справочнике ?
20 mirror1982
 
02.04.13
01:53
Разобрался, всем спасибо!
21 miron25
 
02.04.13
01:57
(19)Ну наверно не дочитал,что существует Хранилища настроек..
22 miron25
 
02.04.13
01:58
а точнее ХранилищеПользовательскихНастроекОтчетов
23 Torquader
 
02.04.13
02:40
(21) Ну вот я об этом тоже подумал, хотя - смотрел книгу о программировании под восьмёрку - там этот вопрос не раскрыт.

Мне просто непонятно, как потом будет выбираться настройка - нужно же будет найти элемент справочника - хотя, если это справочник "Пользователи", то в этом что-то есть.

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