Передача данных между формами 7.7

Использование подбора для передачи данных между формами

Если кто еще дорабатывает 7.7 хочу поделиться интересным методом передачи данных между не модальными окнами.

Это легко делается открывем другую форму для подбора и обработке выбора в родительской форме:

 

СпПараматровОбработки=СоздатьОбъект(«СписокЗначений»);
СпПараматровОбработки.ДобавитьЗначение(ТзОтчета  ,»ТаблицаЗначений»);

СпПараматровОбработки.ДобавитьЗначение(«ОбработатьТЗ»    ,»AnalizTZ_Kommanda»);
ОткрытьПодбор(«Обработка.АнализТЗ»,»Заказы поставщику»,СпПараматровОбработки,1);

 

Обработка «АнализТЗ» приложена к статье. В обработке из параметров берется обрабатываемая таблица, пользователь галочками отмечает нужные строки и обработка по кнопке «Перенести» выполнят выбор таблицы только с отмеченными строками.

Форма.ВыполнитьВыбор(Тз);
Форма.Закрыть();

В родительской обработке надо обработать выполненный подбор:

Процедура ОбработкаПодбора(Значение)  // Предопределенная процедура
    ТипЗначенияИзПобора=ТипЗначенияСтр(Значение);
    Если ТипЗначенияИзПобора=»ТаблицаЗначений» Тогда
        …

    КонецЕсли;    
КонецПроцедуры

Также можно добавлять строки в еще не записанный документ:

Процедура ВвестиОтменуЗаявок(ТЗ) //+Илья 160806
Перем КОнтПобора;

   КОнтекстНовогоДокумента=»»;
   ОткрытьФорму(«Документ.ОтменаЗаявок#»,КОнтекстНовогоДокумента,);
   КОнтекстНовогоДокумента.ОткрытьПодбор(«Обработка.ПустаяФорма»,, КонтПобора,1);
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку()=1 Цикл
      КонтПобора.Форма.ВыполнитьВыбор(Тз.Заявка);
   КонецЦикла;
   КонтПобора.Форма.Закрыть();

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

Почти во всех типовых документах есть обработка побора ввиде таблицы -удобно заполнять накладные -пересчеты служебных данных выполняют штатные функции.

примечание: Обработка Пустаяформа все-таки мелькает, чтобы код работал на ней должен быть хотябы один элемент, например кнопка «ОК», модуль формы может быть пустым.

 

Более оригинальный метод передачи данных между формами: //infostart.ru/public/17048/ и сподвигла поднять эту старую тему.

————————————-

Для 8.2 все гораздо проще, но есть не очевидная вещь как передать в обработку сообщение что документ который она сформировала был проведен (и надо обновить данные формы) без изменений в коде документа:

надо подписаться на событие запись ДокументОбъект:

ДобавитьОбработчик Объект.ПередЗаписью, ЭтаОбработка.ПередЗаписьюДокумента;

пример:  //infostart.ru/public/98910/

 ————————————-

Пример обработки подбора на 8.2:

//infostart.ru/public/102847/

 

 

2 Comments

  1. i132

    Использование подбора для передачи данных между формами

    Перейти к публикации

    Reply
  2. i132

    Эту идею публиковал на Мисте (2007год), ее даже добавляли в книгу знаний, но сейчас там найтине удалось (?)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *