HelpF.pro

Как для Подбора Элемента Справочника Открыть Форму Подбора с нужной Открытой Группой?

В продолжении Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? опишу как настроить Подбор, на примере Типовой Бухгалтерии:

1. Откроем документ Реализации и зайдем в Свойства Кнопки Подбор
title

2. И так попорядку:
Кнопка вызывает процедуру:
Код 1C v 8.х
 Процедура КоманднаяПанельТоварыДействиеПодбор(Кнопка)
                ДействиеПодбор(Товары);
КонецПроцедуры   


Далее вызывается процедура ДействиеПодбор
Код 1C v 8.х
 Процедура ДействиеПодбор(ТабличнаяЧасть)
                Перем Команда, Валюта;
                ЕстьЦена  = Истина;
                Если ТабличнаяЧасть = Товары Тогда
                               Команда         = "ПодборВТабличнуюЧастьТовары";
                               Валюта          = ВалютаДокумента;
                               СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;
                               ИмяТабличнойЧасти = "Товары";
                ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
                               //.................Прочие условия и т.д.
                КонецЕсли;

                СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
                ПредставлениеДок = Метаданные().Представление();
                СтруктураПараметровПодбора = Новый Структура();
                СтруктураПараметровПодбора.Вставить("Команда"            , Команда);
                СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);
                // Параметры запросов.
                ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
                СтруктураПараметровПодбора.Вставить("ДатаРасчетов"         , ВременнаяДатаРасчетов);
                СтруктураПараметровПодбора.Вставить("Склад"                , Склад);
                СтруктураПараметровПодбора.Вставить("ТипЦен"               , ТипЦен);
                СтруктураПараметровПодбора.Вставить("ДоговорКонтрагента", ДоговорКонтрагента);
                СтруктураПараметровПодбора.Вставить("Контрагент"           ,Контрагент);
                СтруктураПараметровПодбора.Вставить("Организация"          , Организация);
                СтруктураПараметровПодбора.Вставить("СпособЗаполненияЦен"  , СпособЗаполненияЦен);
                СтруктураПараметровПодбора.Вставить("ЕстьЦена"             , ЕстьЦена);
                СтруктураПараметровПодбора.Вставить("ВалютаДокумента"      , Валюта);
                СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в документ " + ПредставлениеДок + " № " + Номер + " (" + ИмяТабличнойЧасти + ")");

                РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, мФормаПодбораНоменклатуры);
КонецПроцедуры   


Из нее для открытия Подбора вызывается ОткрытьПодборНоменклатуры из общего Модуля РаботаСДиалогами:
Сюда и добавляем Наши изменения
Код 1C v 8.х
 Процедура ОткрытьПодборНоменклатуры(ФормаДокумента, СтруктураПараметров, ФормаПодбора = Неопределено) Экспорт

                // Добавляем обработчики в форму
                МетаданныеДокумента = ФормаДокумента.ДокументОбъект.Метаданные();
                Для Каждого ЭлементСтруктурыПараметров Из СтруктураПараметров Цикл
                               Если ОбщегоНазначения.ЕстьРеквизитДокумента(ЭлементСтруктурыПараметров.Ключ, МетаданныеДокумента) Тогда
                                               ФормаДокумента.ПодключитьОбработчикИзмененияДанных(ЭлементСтруктурыПараметров.Ключ, "ОбновитьФормуПодбора", Ложь);
                               КонецЕсли;
                КонецЦикла;
                
                // Открываем форму подбора.
                ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", ФормаДокумента, ФормаДокумента);
                ФормаПодбора.ОбработкаОбъект.СтруктураИсходныхПараметров = СтруктураПараметров;

                //- НАЧАЛО Изменения для Установки Родителя В Подборе
                //НУЖНО чтобы при открытии Подбора номенклатуры Открывалась номенклатура из Групы Оргтехника (код 00000013608)
                // НА ФОРМЕ ВЫБОРА СЛЕВА ЕСТЬ ДЕРЕВО ГРУПП, установим значение нужного нам Родителя в нем:
                 ФормаПодбора.ЭлементыФормы.ДеревоНоменклатуры.ТекущаяСтрока = Справочники.Номенклатура.НайтиПоКоду("00000013608");
                // - КОНЕЦ Изменений

                ФормаПодбора.Открыть();
КонецПроцедуры   


Все, перезапускаем и пользуемся )
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/863.html