Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Записать структуру в реквизит с типом ХранилищеЗначения
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
Gigi
Привет!
Заранее говорю что с этим типом ужас как не знаком...
Поэтому никто не подскажет как записать на пример структуру в данный тип реквизита.
Просто я пытался методом тыка... просто ради теста создал реквизит: "ДанныеПериода" с типом: ХранилищеЗначения
И взял и тупо в модуле объекта че то попытался туда запихнуть:
Процедура ПриЗаписи(Отказ)
СтрКвартал_1=Новый Структура("январь,февраль,март");
ДанныеПериода=СтрКвартал_1;
КонецПроцедуры

А потом уже от кнопки на форме получить то что пытался впихнуть.
Сообщить(Объект.ДанныеПериода);

Но система не видит реквизит с таким типом
Короче ... вообще не кумекаю что и как и хочу по быстрому ... поэтому если не трудно объясните
Буду признателен!


Bernet
Запись в хранилище значения:
СтруктураПример = Новый Структура;
СтруктураПример.Вставить("Январь", "Январь");
СтруктураПример.Вставить("Февраль", "Февраль");
СтруктураПример.Вставить("Март", "Март");

ХранилищеЗнч = Новый ХранилищеЗначения(СтруктураПример);

Чтение из хранилища значения:
СтруктураПример = ХранилищеЗнч .Получить();
Если СтруктураПример  <> Неопределено Тогда
      Сообщить(СтруктураПример.Январь);
КонецЕсли;
Gigi
Bernet @ Сегодня, 21:54 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо ... вопрос думаю решен.. главное разом ..быстро и коротко.
А то перерыл все ... от страниц до видео уроков .. толи не въехал толи скорее натыкался не на то что нужно .
Теперь в таком виде...
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СтруктураПример = Новый Структура;
СтруктураПример.Вставить("Январь", "Январь");
СтруктураПример.Вставить("Февраль", "Февраль");
СтруктураПример.Вставить("Март", "Март");
ХранилищеЗнч = Новый ХранилищеЗначения(СтруктураПример);
КонецПроцедуры


&НаКлиенте
Процедура Тест(Команда)
ХранилищеЗнч_Получить()    
КонецПроцедуры
&НаСервере
Процедура ХранилищеЗнч_Получить(ОбъектСсылка)
СтруктураПример = ОбъектСсылка.ХранилищеЗнч.Получить();
Если СтруктураПример  <> Неопределено Тогда
Для Каждого Элемент Из СтруктураПример Цикл
ЭлементКлюч=Элемент.Ключ;
ЭлементЗначение=Элемент.Значение;
Сообщить(Строка(ЭлементКлюч)+" - "+Строка(ЭлементЗначение));
КонецЦикла;
КонецЕсли;
КонецПроцедуры

И работает.
Т.е. реквизит: "ХранилищеЗнч" доступен только на сервере. И из него почитать данные даже если это реквизит родного объекта невозможно как понимаю..
Имею ввиду как обычно Объект.ИмяРеквизита
Ладно спасибо!
Prospero
Gigi, чисто академический интерес, не ругайте сильно, еще сам многого не знаю, но:
Вы описываете процедуру с фактическим параметром
Процедура ХранилищеЗнч_Получить(ОбъектСсылка)

а вызываете ее без оного
ХранилищеЗнч_Получить()

и код работает.
Цитата
И работает.

я верно понял?
andr_andrey
Цитата(Prospero @ 21.04.18, 22:39) необходимо зарегистрироваться для просмотра ссылки
я верно понял?

Автор как-то упоминал, что программирует на других языках, возможно там все так и работает.
Vofka
andr_andrey @ Сегодня, 9:55 необходимо зарегистрироваться для просмотра ссылки ,
у Prospero вопрос в контексте 1С, полагаю.

Prospero, вряд ли так работает. Gigi, скорее всего, просто копировал этот код в разные промежутки времени.
Petre
QUOTE (Vofka @ 23.04.18, 9:18) необходимо зарегистрироваться для просмотра ссылки
у Prospero вопрос в контексте 1С, полагаю.

Это, скорее, намек на то, что в любом языке это работать не будет.
Vofka
Petre, в Яваскрипте это отлично работает.
andr_andrey
Vofka @ Сегодня, 14:24 необходимо зарегистрироваться для просмотра ссылки ,
По идее, внутри процедуры, "ОбъектСсылка." должно вызывать исключение.
Vofka
andr_andrey, по идее оно ещё при сохранении должно ругнуться. Так же, по-моему, ругнется при попытке запуска и в итоге не запустится.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.