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