Имя: Пароль:
1C
1С v8
8.2 Не могу записать в реквизит типа хранилище профи подскажите
0 vladnet
 
24.10.11
15:12
Предыстория, нужно в справочник реквизит табличной части типа хранилище значения, засунуть значение (тип в данном контексте не важен), вроде все форумы уже перекопал и делаю как там написано.

Но тестовый код:
лОбъект=РеквизитФормыВЗначение("НаборОбъект");
Сообщить(ТипЗнч(лОбъект.Назначения[0].НастройкиОтбора.Получить()));
лОбъект.Назначения[0].НастройкиОтбора=Новый ХранилищеЗначения("ыфваы");
ЗначениеВРеквизитФормы(лОбъект, "НаборОбъект");
лОбъект=РеквизитФормыВЗначение("НаборОбъект");
Сообщить(ТипЗнч(лОбъект.Назначения[0].НастройкиОтбора.Получить()));

возвращает мне:
Настройки компоновки данных
Настройки компоновки данных

а мне нужно чтобы во втором случае была строка

если в управляемых формах разбираетесь хорошо - подскажите вроде должна быть мелочь
1 vladnet
 
24.10.11
15:47
вверх, может кто то знает (
2 izekia
 
24.10.11
15:49
то что такое??
лОбъект.Назначения[0].НастройкиОтбора=Новый ХранилищеЗначения("ыфваы");
3 vmv
 
24.10.11
15:50
ЗначениеВРеквизитФормы(лОбъект, "НаборОбъект");

Сообщить(ТипЗнч(лОбъект.Назначения[0].НастройкиОтбора.Получить()));

эти две команды в одном куске коде как бы говорят нам, что автор еще не разобрался, что исполняется на сервере, а что на клиенте.

когда разбереться можно искать ошиьки и давать советы
4 izekia
 
24.10.11
15:54
(3) я вообще немного непонял что этим кодом автор хотел сказать ... и ведь не пятница еще вроде
5 vladnet
 
24.10.11
16:10
В справочнике есть табличная часть с реквизитом типа Хранилище значений. Мне нужно по действию пользователя поменять этот реквизит в определенной строке.

Код отладочный, я вырезал все ненужное. Сообщить там для того чтобы показать что значение не меняется. Кстати сообщить прекрасно работает и на клиенте и на сервере.
6 vladnet
 
24.10.11
16:18
(2) Поясню: Назначения - табличная часть, НастройкиОтбора - реквизит типа хранилища значений
в хранилище значения записывается строка для теста
7 vladnet
 
24.10.11
16:18
(3) А почему эти 2 команды не могут сочетаться? Обе могут быть выполнены на сервере
8 Defender aka LINN
 
24.10.11
16:21
Перед записью на сервере это делай
9 izekia
 
24.10.11
16:26
(3) а, кстати, сообщить же работает на сервере
10 izekia
 
24.10.11
16:30
(0) а тебе не ДанныеФормыВЗначение надо использовать?
11 izekia
 
24.10.11
16:30
(10)2(6)
12 vladnet
 
24.10.11
16:31
(8) Тогда придется отдельный массив хранить для табличной части?

вот тут например написан пример когда это вроде как работает, по уверениям автора:

http://www.1c-pro.ru/index.php?showtopic=35107
13 vladnet
 
24.10.11
16:36
(10) попробовал тоже самое

лОбъект=ДанныеФормыВЗначение(НаборОбъект, Тип("СправочникОбъект.НаборыСвойств"));
Сообщить(ТипЗнч(лОбъект.Назначения[0].НастройкиОтбора.Получить()));
лОбъект.Назначения[0].НастройкиОтбора=Новый ХранилищеЗначения("ыфвафывафывафы");
ЗначениеВДанныеФормы(лОбъект, НаборОбъект);
лОбъект=ДанныеФормыВЗначение(НаборОбъект, Тип("СправочникОбъект.НаборыСвойств"));
Сообщить(ТипЗнч(лОбъект.Назначения[0].НастройкиОтбора.Получить()));
14 vladnet
 
24.10.11
16:36
результат тот же
15 izekia
 
24.10.11
16:43
погоди, а с чего ты взял, что в настройки отбора ты можешь записать другое значение?
16 izekia
 
24.10.11
16:48
(15) немного не в тему, сорри
17 vmv
 
24.10.11
16:59
что касается отбора, то он на компоновке в 8.2. и уставливается так

   //ЭлементыОтбора = МенеджерФорма.Список.Отбор.Элементы;
   //ЭлементыОтбора.Очистить();
   //
   //Для каждого ЭлементСтруктуры Из СтруктураОтбора Цикл
   //    ЭлементОтбораДанных = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   //    ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЭлементСтруктуры.Ключ);
   //    ЭлементОтбораДанных.Использование = Истина;
   //    ЭлементОтбораДанных.ПравоеЗначение = ЭлементСтруктуры.Значение;
   //    Если ТипЗнч(ЭлементСтруктуры.Значение) = Тип("СписокЗначений") Тогда
   //      ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
   //    Иначе
   //        // по умолчанию вид сравнения "Равно"
   //    КонецЕсли;
   //КонецЦикла;


что касается Сообщить(), то как правило сервер - это сервер, он должен работать, а не выводить сообщения.

да и с адресом временного хранилища тоже разберитесь
18 izekia
 
24.10.11
17:01
(17) это не отбор, это у него так реквизит табличной части называется
19 vladnet
 
24.10.11
17:06
(17) Тут вопрос не в отборе, а в том что в Хранилище не могу значение установить. Тут идея такая пользователь кликает на выбор в табличной части представления, отрывается окно с выбором отборов, и после того как пользователь введет, я запихаю данные в строку, а при записи формы уже запишу.

По поводу сообщить - это тест, конечно потом уберу от туда сообщение.
Что значит адрес временного хранилища? Сори пока не везде въезжаю в управляемое приложение.
20 vladnet
 
24.10.11
17:07
Пока абсолютно без разницы что там находится, главное как поменять.
21 vmv
 
24.10.11
17:14
у меня с Тз так работает, в регистр сведений я пишу неважно где и как в ресурс типа "Хранилище..." таблицу значений

ЗаписьНабора.СохраненнаяТаблицаВИ = Новый ХранилищеЗначения(Тз, Новый СжатиеДанных());


Затем на обработчик начало выбора строки в таблице форме, которая показывает измерения этого регистра я вешаю

   ОтборЗаписей = Новый Структура;
   ОтборЗаписей.Вставить("ИмяИсточника", ИмяИсточника);
   ОтборЗаписей.Вставить("ИмяТаблицы"  , ИмяТаблицы  );

   Тз = РегистрыСведений.AddЧНГТаблицыИзВнешнихИсточников.Получить(ОтборЗаписей)[ИмяРесурса].Получить();

ЗначениеВРеквизитФормы(ТзИсточника, ИмяТаблицыФормы);

и все работает

Важно: структуры колонок(ИМЕНА и ТИПЫ) таблицы значений на форме и полученная из храненнища должны ТОЧЬ-В-ТОЧЬ совпадать, иначе будет молчаливый плевок в виде пустой таблицы или исключение в худщем случае.

Я формирую структура ТаблицаФормы динамически - посему проблем нет. В вашем случае проверьте в отладчике структуру РеквизитФормыВЗначение("ВашаТаблица")
и ТзПолученнаяИзСохранения.

усе, больше вариантов нету
22 vmv
 
24.10.11
17:15
и СжатиеДанных не забывайте, управляемая к нему иногда критичка, особенно в тонком и веб
23 vladnet
 
24.10.11
17:52
Да у меня не тз, а табличное поле
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой