Поговорим об интерактивном выборе элемента из справочника в версиях 7.7 и 8.1
В Версии 7.7 выбрать элемент справочника можно функцией Выбрать:
Перем ВыбСпр;
Спр=СоздатьОбъект("Справочник.Товары");
Если Спр.Выбрать("Выберите товар из справочника", "ОсновнаяФорма")=1 Тогда
ВыбСпр=Спр.ТекущийЭлемент();
КонецЕсли;
ОсновнаяФорма
- можно выбратьДля версии 8.1 выбор элемента может выглядеть так:
Спр=Справочники.Товары;
ФормаВыбора=Спр.ПолучитьФормуВыбора("ФормаВыбора");
ФормаВыбора.ЗакрыватьПриВыборе=Истина;
ФормаВыб.РежимВыбора = Истина;
ФормаВыбора.ОткрытьМодально();
Аналогичным образом можно выбирать и документы
Рабочая версия выглядит так:
ВыбСправочника = Справочник.Номенклатура.ПолучитьФормуВыбора("ФормаВыбора",ЭтаФорма);
Выб
Справочник
а.РежимВыбора= Истина;
Выб
Справочник
а.ЗакрыватьПриВыборе=Истина;
ВыбЭлемент= ВыбДокумента.ОткрытьМодально();
Если ВыбЭлемент <> Неопределено Тогда
//<...Действия с выбраным товаром>
КонецЕсли;
ПолучитьФормуВыбора("ФормаВыбора",ЭтаФорма)
- задает форму владелеца (ЭтаФорма) (подробнее описание функции смотрите в справке )Была ситуация в версии 8.1, когда при выборе элемента из списка - элемент не выбирался, а происходило открытие для редактирования.
Проблема оказалась в коде выбираемого документа. Там был код принудительного открытия формы документа при выборе из списка:
Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Если ТекЗначениеУчета.Значение=Перечисления.ВидУчетаЛБ.Соптовары Тогда
СтандартнаяОбработка = Ложь;
ФормаСпецификации = ВыбраннаяСтрока.ПолучитьФорму("ФормаДокументаРозничная");
ФормаСпецификации.Открыть();
КонецЕсли;
КонецПроцедуры
пришлось добавить условие: если существует форма владелец, то производить выбор. В результате получилось так:
Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Если ЭтаФорма.ВладелецФормы = Неопределено Тогда //Добавлено условие - в случае, если Форма-Владелей не определена
Если ТекЗначениеУчета.Значение=Перечисления.ВидУчетаЛБ.Соптовары Тогда
СтандартнаяОбработка = Ложь;
ФормаСпецификации = ВыбраннаяСтрока.ПолучитьФорму("ФормаДокументаРозничнаяЛБ");
ФормаСпецификации.Открыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Ещё можно глянуть более подробный материал здесь
Комментариев нет:
Отправить комментарий