8.3 Программное изменение типа реквизита в табличной части документа

1. temi4444 11.01.17 14:11 Сейчас в теме
Добрый день, подскажите как программно изменять тип реквизита в тч документа. Например реквизит составного типа (Спр.Номенклатура и Строка) пользователь вводит наименование с клавиатуры если автоподбор по спр Номеклатура ничего не нашел, то оставлять в поле что ввел пользователь и продолжить редактирование документа дальше
Найденные решения
3. Sergey Andreev (starik-2005) 1046 11.01.17 14:16 Сейчас в теме
(2) при начале редактирования смотреть, какого типа элемент в поле, Если строка - ставить ограничение типа по строке, если номенклатура - по номенклатуре. Фактически тип поля не меняется при этом - просто вводимое значение ограничивается тем, что вводится.

С другой стороны, можно обрабатывать событие при вводе текста, а не при окончании ввода. Тогда всегда ограничивать тип справочником, а при вводе текста смотреть, что вводится. Если находится номенклатура - устанавливать ее, если не находится - просто в данные выбора передавать введенный текст.
Остальные ответы
2. temi4444 11.01.17 14:12 Сейчас в теме
Пробую сделать так:
&НаКлиенте
Процедура СоставНоменклатураСсылкаСтрокаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	Элементы.СоставНоменклатураСсылкаСтрока.ОграничениеТипа = Новый ОписаниеТипов("Строка");
КонецПроцедуры


но тогда меняется тип у всей колонки, а нужно чтоб только у текущей строки.
3. Sergey Andreev (starik-2005) 1046 11.01.17 14:16 Сейчас в теме
(2) при начале редактирования смотреть, какого типа элемент в поле, Если строка - ставить ограничение типа по строке, если номенклатура - по номенклатуре. Фактически тип поля не меняется при этом - просто вводимое значение ограничивается тем, что вводится.

С другой стороны, можно обрабатывать событие при вводе текста, а не при окончании ввода. Тогда всегда ограничивать тип справочником, а при вводе текста смотреть, что вводится. Если находится номенклатура - устанавливать ее, если не находится - просто в данные выбора передавать введенный текст.
Оставьте свое сообщение