Имя: Пароль:
1C
1C 7.7
v7: Открыть форму подбора из формы открытой модально
0 MaxStarkov
 
21.11.11
10:56
Ситуация такая. Есть внешняя обработка, которая открывается модально, в этой обработке предусмотрено заполнение таблицы значений данными справочников. При использовании ОткрытьПодбор() он открывается, но так как форма обработки открыта модально, то выбрать из подбора не получается.

В итоге надо из внешней обработки получить таблицу значений для которой надо как то организовать подбор. Не получается у меня
1 andrewks
 
21.11.11
10:56
модальность - зло
2 MaxStarkov
 
21.11.11
10:56
Вопрос по 1С 7.7. Случайно проглядел и запостил его в раздел по 1С 8. Перенесите пожалуйста
3 LAAry
 
21.11.11
10:57
(0)  и не получится. Модально, значит модально.
4 Defender aka LINN
 
21.11.11
10:57
Зачем открывать ее модально?
5 MaxStarkov
 
21.11.11
10:58
Чтобы потом получить из нее в качестве параметра таблицу значений. Или можно получить и не при модальном открытии?
6 Rie
 
21.11.11
11:00
(5) Можно и не при модальном открытии. Посмотри, как в типовой ТиС сделан подбор номенклатуры в документах.
7 MaxStarkov
 
21.11.11
11:01
Спасибо, гляну и попробую
8 MaxStarkov
 
21.11.11
11:08
блин. нет ТиС по рукой сейчас.

ОткрытьФорму("Обработка.ФормированиеУсловий",СписокПараметров);
Сообщить(ЗначениеВСтроку(СписокПараметров));

Форма открывается, но сразу же выдается пустая строка. А вот при:

ОткрытьФормуМодально("Обработка.ФормированиеУсловий",СписокПараметров);
Сообщить(ЗначениеВСтроку(СписокПараметров));

Выдется уже значение
9 MaxStarkov
 
21.11.11
11:09
В форме "Обработка.ФормированиеУсловий" есть код:

Процедура Сформировать()
   СписокПараметровУсловия=СоздатьОбъект("СписокЗначений");
   СписокПараметровУсловия.ДобавитьЗначение(ТипЗначенияУсловия);
   СписокПараметровУсловия.ДобавитьЗначение(ВидЗначенияУсловия);
   СписокПараметровУсловия.ДобавитьЗначение(ВидУсловия);
   Если ПустоеЗначение(ЭлементУсловия)=0 Тогда
       СписокПараметровУсловия.ДобавитьЗначение(ЭлементУсловия);
   КонецЕсли;
   Если ЭлементыУсловия.КоличествоСтрок()>0 Тогда
       СписокПараметровУсловия.ДобавитьЗначение("Список");
   КонецЕсли;
   
   Форма.Параметр=СписокПараметровУсловия;
   Форма.Закрыть();
   
КонецПроцедуры
10 Rie
 
21.11.11
11:14
(8) Форму открой в режиме подбора.
В открытой форме - ОбработкаВыбораСтроки(0);
А как надо вернуть значение - ВыполнитьВыбор(ЧегоТамТебеНужноПередать);
Вызывающая форма получмт это значение через ОбработкаПодбора.
11 MaxStarkov
 
21.11.11
11:57
Работает! В итоге надо делать так:

в первую обработку надо добавить процедуру ОбработкаПодбора()
вызов обработки в которой подбираются значения осуществляется через ОткрытьПодбор()

в вызываемой обработке надо выключить предопределенную процедуру обработки выбора через
ОбработкаВыбораСтроки(0)

вызвать подбор элементов справочника (или еще чего) через ОткрытьПодбор(), а возврат значения осуществить через ВыполнитьВыбор()

Спасибо!