gifts2017

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

Опубликовал Илья (i132) в раздел Программирование - Практика программирования

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

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

 

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

-------------------------------------

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

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

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

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

 -------------------------------------

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

http://infostart.ru/public/102847/

 

 

Скачать файлы

Наименование Файл Версия Размер
АнализТЗ.ert 18
.ert 181,00Kb
22.03.12
18
.ert 181,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
0. Илья (i132) 23.03.12 11:52
Использование подбора для передачи данных между формами

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

1. Илья (i132) 23.03.12 11:52
Эту идею публиковал на Мисте (2007год), ее даже добавляли в книгу знаний, но сейчас там найтине удалось (?)