Как организовать подбор элемента справочника Форма справочника должна быть открыта как подчинённая данной форме (или элементу формы), а в нашей форме (или элементе формы) кодируем событие “Обработка выбора”:
Код 1C v 8.х Процедура кнПодборНажатие(Элемент)
ОчиститьСообщения();
форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
форма.ВладелецФормы = ЭтаФорма;//указали владельца;
форма.РежимВыбора = Истина;
форма.ЗакрыватьПриВыборе = Ложь;
форма.Открыть();
КонецПроцедуры
//Это обработчик выбора для формы, т.к. форма - владелец
//открываемой формы выбора справочника;
Процедура ОбработкаВыбора(значениеВыбора, Источник)
перем стр;
стр = табл.Найти(строка(значениеВыбора), "Вторая");
если стр = Неопределено тогда
кол = табл.Количество();
новаяСтрока = табл.Добавить();
новаяСтрока.Первая = кол + 1;
новаяСтрока.Вторая = строка(значениеВыбора);
иначе
Сообщить("Наименование " + строка(значениеВыбора) + " уже имеется в таблице.");
конецЕсли;
конецПроцедуры
Категория:
Справочники Форма ~ Получение списка открытых окон и вывод свойств элементов Код 1C v 8.х Функция ПолучитьСписокОткрытыхОкон() Экспорт
ВключатьФормыЭлементов = ЭтаФорма.ВладелецФормы.ЭлементыФормы.ВключатьФормыЭлементов.Значение;
// Определим перебором, сколько у нас объектов в системе
КолвоОбъектов = 0;
Для Каждого ТипОбъекта Из ВсеТипы Цикл
Если (ТипОбъекта.Ключ <> "Константы") и (ТипОбъекта.Ключ <> "ОбщиеФормы") Тогда
Для каждого Объект из Метаданные[ТипОбъекта.Ключ] Цикл
Для каждого Фрм из Объект.Формы Цикл
КолвоОбъектов = КолвоОбъектов + 1;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.ХодВыполненияОперации.МинимальноеЗначение = 1;
ЭлементыФормы.ХодВыполненияОперации.МаксимальноеЗначение = КолвоОбъектов;
ЭлементыФормы.ХодВыполненияОперации.Шаг = 100 / КолвоОбъектов;
КолвоОбъектов = 0;
сзСписокОкон = Новый СписокЗначений;
// Перебор типов метаданных
Для Каждого ТипОбъекта Из ВсеТипы Цикл
Если (ТипОбъекта.Ключ <> "Константы") и (ТипОбъекта.Ключ <> "ОбщиеФормы") Тогда
Для каждого Объект из Метаданные[ТипОбъекта.Ключ] Цикл
Если ВключатьФормыЭлементов И(ТипОбъекта.Ключ = "Справочники" Или ТипОбъекта.Ключ = "Документы") Тогда
// для элементов справочников и документов
Менеджер = Вычислить((ТипОбъекта.Ключ + "[Объект.Имя]"));
Выборка = Менеджер.выбрать();
пока Выборка.Следующий() Цикл
ФормаЭлем = Выборка.Ссылка.ПолучитьФорму();
Если ФормаЭлем.Открыта() Тогда
сзСписокОкон.Добавить(ФормаЭлем, Строка(Выборка.Ссылка) + " (" + Объект.Имя + ", форма элемента)");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для каждого Фрм из Объект.Формы Цикл
Форма = Вычислить(ТипОбъекта.Ключ + "[Объект.Имя].ПолучитьФорму(Фрм)");
КолвоОбъектов = КолвоОбъектов + 1;
ЭлементыФормы.ХодВыполненияОперации.Значение = КолвоОбъектов;
Попытка
Если Форма.открыта() Тогда
сзСписокОкон.Добавить(Форма, Объект.Имя + " (" + Фрм + ")");
КонецЕсли;
Исключение
Сообщить("ошибка");
КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат сзСписокОкон;
КонецФункции
Категория:
Работа с Формой (Диалог) и её элементами