Имя: Пароль:
1C
 
Тип значения ячейки поля табличного документа, ссылочные типы данных не определя
0 Mr_Best
 
20.08.15
16:06
Всем привет!

Параметры вопроса:
1С:Предприятие 8.3 (8.3.5.1486)
Бухгалтерия предприятия КОРП, редакция 2.0 (2.0.64.19)

Есть форма внешней обработки, на форме размещено поле табличного документа. Если в режиме конфигуратора зайти в свойства ячейки, установить флаг "СодержитЗначение" и выбрать из списка состав типов которые могут быть в данной ячейки то все прекрасно работает!

Но, если этого не делать, а попытаться установить те же типы значений программно, например в событии при активации области:

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));        МассивТипов.Добавить(Тип("СправочникСсылка.Банки"));        МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
        
Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

то типы не добавляются, а в панели свойств (в режиме предприятия), в свойстве тип значения написано: Undefine, Строка, Undefine

Что я делаю не правильно?

И еще одно наблюдение, если в режиме конфигуратора хотя бы одной ячейке добавить данные типы значений, то программный код начинает работать правильно для любой ячейки!!!!

Почему так, может кто нибудь сталкивался?
1 Ёпрст
 
20.08.15
16:22
(0) а СодержитЗначение в истину заточил перед этим ?
2 Ёпрст
 
20.08.15
16:23
+ Так работает ?

Область.СодержитЗначение  = Истина;
Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
3 Mr_Best
 
20.08.15
16:49
(1) да перед этим, из панели свойств.
(2) действительно работает!

У меня стоит условие:

Если Область.СодержитЗначение Тогда
        
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Строка"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Банки"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
        
    Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
        
КонецЕсли;

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

Получается, что так НЕ работает:

Если Область.СодержитЗначение Тогда
        
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Строка"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Банки"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
        
    Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
        
КонецЕсли;

так, всегда будет устанавливатся флаг СодержитЗначение:

Область.СодержитЗначение  = Истина;

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
МассивТипов.Добавить(Тип("СправочникСсылка.Банки"));
МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
        
Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

и так тоже не работет:

Если Область.СодержитЗначение Тогда
        
    Область.СодержитЗначение  = Истина;

    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Строка"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Банки"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
        
    Область.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
        
КонецЕсли;

как же тогда можно реализовать требуемую логику работы программы через событие при активации области?
4 Ёпрст
 
20.08.15
16:56
смотреть на другой признак, а не проверять СодержитЗначение
5 Ёпрст
 
20.08.15
16:57
в расшифровку там запихать чего, или в значение
6 Mr_Best
 
20.08.15
17:01
Спасибо, а вы не знает с какой целью в 1С сделали такое поведение системы? Это недоработка 1С, или так специально?
7 Ёпрст
 
20.08.15
17:02
Да хз :)
Я просто предлагаю пути обхода, не более того, мне проверять лень :)
8 Mr_Best
 
20.08.15
17:07
(7) спасибо, я начинаю понимать, почему тут один местный, выбрал себе ник "Ненавижу 1С", жаль занят уже ....