prod_1c‎ > ‎Заметки 1С: 8.3‎ > ‎

Обыкновенные формы (примеры)

Связь в выборе по типу документа в обычной форме


Дано:  Документ "РучнаяОперация" по регистру Бухгалтерии
Субконто меняются на разных Счетах. Выбирается комбинация:
Субконто1 = Контрагент
Субконто2 = Документ (движение по контрагенту)
Надо: Наложить ограничение по выбору субконто2 из списка документов только по Контрагент.
Решение (Передать параметр для настройки фильтра в ФормуВыбора):
1. Обработка события НачалоВыбора, ДокументРучнаяОперация:

СтандартнаяОбработка = Ложь;
фр = Документы[Элемент.Значение.Метаданные().Имя].ПолучитьФормуВыбора(,ЭтаФорма,);
со = Новый Структура;
со.Вставить("Организация",Организация);
со.Вставить("Контрагент",ТекДан.СубконтоКт1);
фр.СтруктураОтбора = со;
фр.Открыть();

Где  СтруктураОтбора - Ревизит в получаемой форме выбора.
2. ФормаВыбора:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   Для Каждого ТекЭлемент Из СтруктураОтбора Цикл
      Отбор[ТекЭлемент.Ключ].Установить(ТекЭлемент.Значение);
   КонецЦикла;
КонецПроцедуры

Ограничение по допустимым типам субконто


Дано:  Документ "РучнаяОперация" по регистру Бухгалтерии
Счет = Любой счет из плана счетов

Надо: Наложить ограничение по выбору на

Субконто1 = 
Субконто2 = 
Субконто2 = 

Решение:

Процедура СчетПриИзменении(Элемент)

Для йй=1 По 3 Цикл
ЭлементыФормы["Субконто"+йй].ВыбиратьТип = Истина;
ЭлементыФормы["Субконто"+йй].Значение = Неопределено;
ЭлементыФормы["Субконто"+йй].Доступность = Ложь;
КонецЦикла;

Для йй=1 По СчетСписания.ВидыСубконто.Количество() Цикл
ТипСубк = СчетСписания.ВидыСубконто[йй-1].ВидСубконто.ТипЗначения;
ЭлементВвода = ЭлементыФормы["Субконто"+йй];
ЭлементВвода.ОграничениеТипа = Новый ОписаниеТипов(ТипСубк.Типы());
й1 = ЭлементВвода.Значение;
ЭлементВвода.Значение = ЭлементВвода.ОграничениеТипа.ПривестиЗначение(й1);
ЭлементВвода.ВыбиратьТип = (ТипСубк.Типы().Количество()>1);
ЭлементВвода.Доступность = (ТипСубк.Типы().Количество()>0);
КонецЦикла;

КонецПроцедуры