Имя: Пароль:
1C
 
Таблица значений. Ограничение на составной тип значения в колонке.
0 Pro-tone
 
02.06.11
10:09
Есть таблица значений. 2 колонки. "Реквизит", "ЗначениеРеквизита". Заполняется данными из метаданных, ну допустим ревизитами отчетов.

Я ставлю: "Реквизит" - тип, строка. "ЗначениеРеквизита" - составной тип, выбираю все примитивные типы, документы и планы счетов.

Теперь при заполнении этой таблицы значений хотелось бы установить конкретный тип ячейке "ЗначениеРеквизита", пишу код

ТекущиеДанные = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
ТекВидОтчета  = СокрЛП(ТекущиеДанные.ВидОтчета);    

Для каждого ТекСтрока из Метаданные.Отчеты[ТекВидОтчета].Реквизиты  Цикл
              НоваяСтрока = ФормаНастроек.ТаблицаНастроек.Добавить();
              НоваяСтрока.Реквизит = ТекСтрока.Имя;
              //ВОТ ТУТ КАК-ТО НАДО УСТАНОВИТЬ КОНКРЕТНЫЙ ТИП ЯЧЕЙКИ В КОЛОНКЕ "ЗначениеРеквизита", чтобы потом руками сразу выбрать значение
           КонецЦикла;
1 Undefined
 
02.06.11
10:13
Если заранее не устанавливать тип ячейке таблицы значений, она сама типизируется значением которое ты в нее запишешь.
2 Поручик
 
02.06.11
10:14
Могу дать пример

       КвалификаторыСтроки = Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная);
       ОграничениеТипа = Новый ОписаниеТипов("Строка",,КвалификаторыСтроки);
       ЭлементыФормы.ЗначениеСтрока.ОграничениеТипа = ОграничениеТипа;
3 Pro-tone
 
02.06.11
10:15
(1) в табличном поле уже есть тип значения колонки, и там нет "неопределено"
4 Defender aka LINN
 
02.06.11
10:16
(0) Это называется "установить значение".
5 Undefined
 
02.06.11
10:17
ну так говоричто ты имеешь ввиду табличное поле, в (0) ты говорил про таблицу значений. Тогда ответ в (2)
6 Pro-tone
 
02.06.11
10:19
(5) Табличное поле, имеющее тип "ТаблицаЗначений" =)
7 Undefined
 
02.06.11
10:22
помнится я решал такую задачу немного иначе, я просто записывал в ячейки значения по умолчанию и все. Если у тебя тип значения число записываешь туда 0, если ссылка, записываешь пустую ссылку. В свойствах колонки убираешь галочку выбирать тип чтобы пользователь не смог изменить тип значения.
8 lxs
 
02.06.11
10:23
(0) пустую ссылку присвой нужного типа
9 lxs
 
02.06.11
10:23
+(8) тема баян страшнейший, поиском учимся пользоваться по форуму.
10 Pro-tone
 
02.06.11
10:23
(7)(8) кстати это идея ! Спасибо ! А через Ограничение типа хотелось бы тоже разобраться как это сделать )
11 lxs
 
02.06.11
10:42
(10) Главное - это жизнеспособная идея.. и ее эта жизнеспособность проверена годами. Не парь себе мозг своими "хотелось бы". Решение должно быть оптимальным и простым.
12 Pro-tone
 
02.06.11
10:56
(11) решил задачу так:
В табличное поле добавил колонку "РеквизитТип", невидимая, "описание типов". В нее пишу тип реквизита объекта метаданных, и далее

Процедура ТаблицаНастроекЗначениеРеквизитаНачалоВыбора(Элемент, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   ТипСтр = "СправочникСсылка.Номенклатура";
   Элемент.ОграничениеТипа = ЭлементыФормы.ТаблицаНастроек.ТекущаяСтрока.РеквизитТип;
   Значение = Элемент.Значение;
   Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
   Элемент.ВыбиратьТип = Ложь;

КонецПроцедуры
13 Pro-tone
 
02.06.11
10:57
даже так, без типСтр

Процедура ТаблицаНастроекЗначениеРеквизитаНачалоВыбора(Элемент, СтандартнаяОбработка)
   // Вставить содержимое обработчика.

   Элемент.ОграничениеТипа = ЭлементыФормы.ТаблицаНастроек.ТекущаяСтрока.РеквизитТип;
   Значение = Элемент.Значение;
   Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
   Элемент.ВыбиратьТип = Ложь;

КонецПроцедуры
Ошибка? Это не ошибка, это системная функция.