Имя: Пароль:
1C
 
1C 8.3 УФ ПолучитьЦветИзХранилищаЗначений
0 Darhon
 
22.01.16
11:26
Доброе утро! Есть вопрос, помогите решить непонятное...Вот код:

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

Статус - это справочник с реквизитом цвет типа ХранЗначений, при записи элемента в ХЗ сохраняется цвет из диалого. А В коде приведенном выше он вытаскивается запросом. Вопрос в следующем, как получить цвет из хранилища из внешней обработки? Заранее спасибо
1 Lexey_
 
22.01.16
11:55
(0) ЦветФона=Цвет.Получить();//А здесь уже неопределено
значит, хранилище пусто
2 Darhon
 
22.01.16
11:56
(0) Причем при открытии самого элемента справочника видно, что значение цвета сохраняется в хранилище.
3 Darhon
 
22.01.16
11:56
(1) В коде справочника
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    Цвет = ТекущийОбъект.Цвет.Получить();
КонецПроцедуры

Все нормально.
4 Fragster
 
гуру
22.01.16
11:57
храни в строке через СериализаторXDTO.XMLСтрока() и СериализаторXDTO.XMLЗначение(). тогда сразу будет понятно, где цвета нет. да и в УФ с клиент-сервером проще, так как хранилища на клиенте нет в принципе
5 Darhon
 
22.01.16
11:58
(4) Не работал с сериализатором Как это можно примерно реализовать?
6 Darhon
 
22.01.16
12:02
XMLСтрока(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Неопределено; Null; Булево; Число; Строка; Дата; УникальныйИдентификатор; ДвоичныеДанные; ХранилищеЗначения; значения перечислений, значения системных перечислений (ВидСчета; ВидДвиженияБухгалтерии; ВидДвиженияНакопления; ДопустимыйЗнак; ДопустимаяДлина; ЧастиДаты) или все ссылки на объекты базы данных.

С цветом не работает :(
7 Fragster
 
гуру
22.01.16
12:02
Строка = СериализатоXDTO.XMLСтрока(Цвет);
Цвет = СериализатоXDTO.XMLЗначение(Тип("Цвет"), Строка);
Ну, или что-то типа того. В СП лень смотреть
8 Fragster
 
гуру
22.01.16
12:02
(6) сериализаторррррр
9 FIXXXL
 
22.01.16
16:07
или подшамань код

Если ЗначениеЗаполнено(Выборка.Статус) Тогда
    Цвет = Выборка.Статус.Цвет;//здесь в отладчике ТИП ХранилищеЗн
     ЦветФона=Цвет.Получить();//А здесь уже неопределено
        Если НЕ ЦветФона= Неопределено Тогда
            

            НовыйЭлемент.ЦветФона = ЦветФона;//Здесь падает с ошибкой несоответствия типов

        КонецЕсли;
    КонецЕсли;