Имя: Пароль:
1C
1С v8
Ограничить тип значений массивом типов
0 Stim213
 
11.08.11
14:17
На форме есть поле ввода с типом Значения ЛюбаяСсылка. Хочу ограничить тип только видами субконто счета, на этой же форме.

Процедура Счет(Элемент)
   МассивТипов = Новый Массив();
   Для Ном = 1 по 3 Цикл
   Если Ном <= СчетИскать.ВидыСубконто.Количество() Тогда
   МассивТипов.Добавить(СчетИскать.ВидыСубконто[Ном-1].ВидСубконто.ТипЗначения);
КОнецЕсли;
КонецЦикла;

   ЭлементыФОрмы.Субконто.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);

КонецПроцедуры


Код не работает - доступны все типы. Если использовать
ЭлементыФОрмы.Субконто.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов[0])
или
ЭлементыФОрмы.Субконто.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов[1])
то все работает. В Массиве всего 2 значения.

А как быть с массивом, почему ограничение на массив не работает?
1 golden-pack
 
11.08.11
14:18
(0) посмотреть типовую бух не але ?
2 butterbean
 
11.08.11
14:18
может сделать ему тип Характеристика.ВидыСубконто??
3 Defender aka LINN
 
11.08.11
14:21
(0) ты что, вслепую код пишешь? СчетИскать.ВидыСубконто[Ном-1].ВидСубконто.ТипЗначения - это не Тип.
4 Stim213
 
11.08.11
14:22
(1) смотрю. Там добавляют явно:
   МассивТипов = Новый Массив();
   МассивТипов.Добавить(Тип("ПланОбменаСсылка.Полный"));
   МассивТипов.Добавить(Тип("ПланОбменаСсылка.ПоОрганизации"));
   
   ФормаЭлемента = Элемент.ТекущиеДанные.Ссылка.ПолучитьФорму(, Элемент);
   ФормаЭлемента.УстановитьНедоступностьИзмененияТипаУзла(МассивТипов);
   ФормаЭлемента.Открыть();
5 golden-pack
 
11.08.11
14:22
Велосипедист
6 golden-pack
 
11.08.11
14:23
(4) это что за код. Посмотри платежку например
7 unregistered
 
11.08.11
14:23
(4) Не туда смотришь. Где тут про субконто?
8 golden-pack
 
11.08.11
14:24
Вот так и пишутся нетленки ...
9 Stim213
 
11.08.11
14:24
(8)давай свой код
10 Reset
 
11.08.11
14:26
<
Для Ном = 1 по 3 Цикл
   Если Ном <= СчетИскать.ВидыСубконто.Количество() Тогда
>
Почему нельзя было просто написать:
Для Ном=0 по СчетИскать.ВидыСубконто.Количество()-1
11 golden-pack
 
11.08.11
14:28
(9) открой ка упп бп и посмотри
12 Stim213
 
11.08.11
14:28
(10) скатал с СП, честно. Все вопросы к ним
13 _Demos_
 
11.08.11
14:28
еще небольшой пример может поможет:

   Типы = Новый Массив;
   ВидыТипов = Новый Структура("Справочники,Документы");
   Для каждого КлючИЗначение Из ВидыТипов Цикл
       Для каждого ОбъектМетаданных Из Метаданные[КлючИЗначение.Ключ] Цикл
           Если ОбъектМетаданных.ТабличныеЧасти.Количество() Тогда
               Типы.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(),".","Ссылка.")));
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
   ЭлементыФормы.СсылкаИсточника.ОграничениеТипа = Новый ОписаниеТипов(Типы);
14 Stim213
 
11.08.11
14:33
МассивТипов.Добавить(СчетИскать.ВидыСубконто[Ном-1].ВидСубконто.ТипЗначения.ПривестиЗначение())

тоже не работает
15 Stim213
 
11.08.11
14:33
(11)смотрю. Там через перечисление типов, тупо перебираются основные типы объектов
16 Reset
 
11.08.11
14:44
Ответ же в (3) уже написан. О чем разговор?