Табличная часть ~ Как программно отловить изменение отбора строк? Иногда, при установке отбора строк табличного поля необходимо выполнить какие-либо действия - но как это отловить!?
решение ниже:
Код 1C v 8.х Процедура ПриОткрытии()
ПодключитьОбработчикИзмененияДанных("ЭлементыФормы.ТабличнаяЧасть1.Отбор", "ПриИзмененииОтбора", Истина);
КонецПроцедуры
Процедура ПриИзмененииОтбора(ПутьКДанным)
Сообщить("Изменился отбор - " + ПутьКДанным);
КонецПроцедуры
Категория:
Работа с Формой (Диалог) и её элементами Как для Подбора Элемента Справочника Открыть Форму Подбора с нужной Открытой Группой? В продолжении
Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? опишу как настроить Подбор, на примере Типовой Бухгалтерии:
1. Откроем документ Реализации и зайдем в Свойства Кнопки
Подбор
2. И так попорядку:
Кнопка вызывает процедуру:
Код 1C v 8.х Процедура КоманднаяПанельТоварыДействиеПодбор(Кнопка)
ДействиеПодбор(Товары);
КонецПроцедуры
Далее вызывается процедура
ДействиеПодбор
Код 1C v 8.х Процедура ДействиеПодбор(ТабличнаяЧасть)
Перем Команда, Валюта;
ЕстьЦена = Истина;
Если ТабличнаяЧасть = Товары Тогда
Команда = "ПодборВТабличнуюЧастьТовары";
Валюта = ВалютаДокумента;
СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;
ИмяТабличнойЧасти = "Товары";
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
//.................Прочие условия и т.д.
КонецЕсли;
СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
ПредставлениеДок = Метаданные().Представление();
СтруктураПараметровПодбора = Новый Структура();
СтруктураПараметровПодбора.Вставить("Команда" , Команда);
СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);
// Параметры запросов.
ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
СтруктураПараметровПодбора.Вставить("ДатаРасчетов" , ВременнаяДатаРасчетов);
СтруктураПараметровПодбора.Вставить("Склад" , Склад);
СтруктураПараметровПодбора.Вставить("ТипЦен" , ТипЦен);
СтруктураПараметровПодбора.Вставить("ДоговорКонтрагента", ДоговорКонтрагента);
СтруктураПараметровПодбора.Вставить("Контрагент" ,Контрагент);
СтруктураПараметровПодбора.Вставить("Организация" , Организация);
СтруктураПараметровПодбора.Вставить("СпособЗаполненияЦен" , СпособЗаполненияЦен);
СтруктураПараметровПодбора.Вставить("ЕстьЦена" , ЕстьЦена);
СтруктураПараметровПодбора.Вставить("ВалютаДокумента" , Валюта);
СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в документ " + ПредставлениеДок + " № " + Номер + " (" + ИмяТабличнойЧасти + ")");
РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, мФормаПодбораНоменклатуры);
КонецПроцедуры
Из нее для открытия Подбора вызывается
ОткрытьПодборНоменклатуры из общего Модуля
РаботаСДиалогами :
Сюда и добавляем Наши изменения
Код 1C v 8.х Процедура ОткрытьПодборНоменклатуры(ФормаДокумента, СтруктураПараметров, ФормаПодбора = Неопределено) Экспорт
// Добавляем обработчики в форму
МетаданныеДокумента = ФормаДокумента.ДокументОбъект.Метаданные();
Для Каждого ЭлементСтруктурыПараметров Из СтруктураПараметров Цикл
Если ОбщегоНазначения.ЕстьРеквизитДокумента(ЭлементСтруктурыПараметров.Ключ, МетаданныеДокумента) Тогда
ФормаДокумента.ПодключитьОбработчикИзмененияДанных(ЭлементСтруктурыПараметров.Ключ, "ОбновитьФормуПодбора", Ложь);
КонецЕсли;
КонецЦикла;
// Открываем форму подбора.
ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", ФормаДокумента, ФормаДокумента);
ФормаПодбора.ОбработкаОбъект.СтруктураИсходныхПараметров = СтруктураПараметров;
//- НАЧАЛО Изменения для Установки Родителя В Подборе
//НУЖНО чтобы при открытии Подбора номенклатуры Открывалась номенклатура из Групы Оргтехника (код 00000013608)
// НА ФОРМЕ ВЫБОРА СЛЕВА ЕСТЬ ДЕРЕВО ГРУПП, установим значение нужного нам Родителя в нем:
ФормаПодбора.ЭлементыФормы.ДеревоНоменклатуры.ТекущаяСтрока = Справочники.Номенклатура.НайтиПоКоду("00000013608");
// - КОНЕЦ Изменений
ФормаПодбора.Открыть();
КонецПроцедуры
Все, перезапускаем и пользуемся
Категория:
Справочники Форма ~ Как получить данные одной формы, находясь на другой? Например, на 1 форме есть поле ввода. Как поместить данные этого поля ввода на форму 2, используя внешние обработки?
Самый простой способ - инициировать открытие формы программно и программно получить данные с нее после закрытия:
Код 1C v 8.х Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.ОткрытьМодально();
Сообщить(Форма.ПолеВВода1);
Второй вариант - переподключить обработчик событий:
Код 1C v 8.х Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.ПодключитьОбработчикИзмененияДанных("РеквизитФормы","ПриНоменклатуре");
Форма.ОткрытьМодально();
Но в этом случае процедура ПриНоменклатуре(РасшифровкаСобытия) должна находиться в модуле открываемой формы.
Стандартных способов 1С для других видов обработки событий не существует. Т.к. в 1С все процедуры-обработчики событий должны находиться в модуле этого элемента и никак иначе из внешней обработки процедуру не подключишь.
Категория:
Работа с Формой (Диалог) и её элементами Универсальная процедура, которая инициирует механизм подбора элементов справочника Код 1C v 8.х
// Универсальная процедура, которая инициирует механизм подбора
// номенклатуры в документы (открывает основную форму обработки подбор).
//
// Параметры:
// ФормаДокумента - форма документа, в который осуществляется подбор,
// СтруктураПараметров - параметры, которые передаются в форму подбора.
//
Процедура ОткрытьПодборНоменклатуры(ФормаДокумента, СтруктураПараметров, ФормаПодбора = Неопределено) Экспорт
// Добавляем обработчики в форму
МетаданныеДокумента = ФормаДокумента.ДокументОбъект.Метаданные();
Для Каждого ЭлементСтруктурыПараметров Из СтруктураПараметров Цикл
Если ОбщегоНазначения.ЕстьРеквизитДокумента(ЭлементСтруктурыПараметров.Ключ, МетаданныеДокумента) Тогда
ФормаДокумента.ПодключитьОбработчикИзмененияДанных(ЭлементСтруктурыПараметров.Ключ, "ОбновитьФормуПодбора", Ложь);
КонецЕсли;
КонецЦикла;
// Открываем форму подбора.
ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", ФормаДокумента, ФормаДокумента);
ФормаПодбора.ОбработкаОбъект.СтруктураИсходныхПараметров = СтруктураПараметров;
ФормаПодбора.Открыть();
КонецПроцедуры
Категория:
Полезные, Универсальные Функции