Имя: Пароль:
1C
1C 7.7
v7: Обработка в режиме подбора
0 lostfoton
 
27.11.11
19:03
Здравствуйте уважаемые.

Если с помощью метода ОткрытьПодбор() открывать форму справочника, журнала документов и т.д. - для каждого подбора открывается отдельная форма.

Если же выполнять ОткрытьПодбор() для обработки, то отдельная форма не открывается и подбор нарушается - не срабатывает ОбработкаПодбора() (срабатывает только для того контекста который первый открыл форму обработки для подбора).

Подскажите кто как борется с этим.
1 Ёпрст
 
27.11.11
19:05
Сам то понял, что спросил ?
2 lostfoton
 
27.11.11
19:07
Что ты не понял?
Я постараюсь объяснить.
3 lostfoton
 
27.11.11
19:08
Подбор открывается так:
ОткрытьПодбор("Обработка.ПодборТоваров",,ПеремПараметрПодбора,1,);
4 Ёпрст
 
27.11.11
19:08
да всё собственно нипанятна, чего ты там открываешь и открыть на можешь
5 Ёпрст
 
27.11.11
19:09
(3) И ? И чего, не открывается ? %)
6 lostfoton
 
27.11.11
19:12
Допустим есть два документа.
Из каждого вызывается:
ОткрытьПодбор("Обработка.ПодборТоваров",,ПеремПараметрПодбора,1,);

Две формы обработки Обработка.ПодборТоваров не открывается, а происходит повторное открытие формы.
В обработке отрабатывает ПриПовторномОткрытии()
При этом в этих 2-х документах ОбработкаПодбора() отрабатывает только в первом кто выполнил:
ОткрытьПодбор("Обработка.ПодборТоваров",,ПеремПараметрПодбора,1,);
7 Злопчинский
 
27.11.11
19:19
ОткрытьПодбор("Обработка.ПодборТоваров#"+_GetPerformanceCounter(),,ПеремПарамПодбора,1,)
8 lostfoton
 
27.11.11
19:22
(7):
ОткрытьПодбор("Обработка.ПодборТоваров#"+_GetPerformanceCounter(),,ПеремПараметрПодбора,1,)
{Документ.Счет.Форма.Модуль(237)}: Неверный вид. ПодборТоваров#5155674
9 ДенисЧ
 
27.11.11
19:23
Продам кусок СП для открытьФорму()....
10 Aleksey
 
27.11.11
19:23
(9) А там нет этой фичи
11 lostfoton
 
27.11.11
19:29
(7) - # работает только для ОткрытьФорму()?
12 lostfoton
 
27.11.11
20:11
Пока не нашел ничего лучше программного закрытия формы обработки при повторном открытии и предупреждения пользователя о том что нужно еще раз открывать подбор.
13 Эльниньо
 
27.11.11
20:25
А у меня не 5155674, а другое число. Ужас! Что делать?
14 mehfk
 
27.11.11
21:29
(13) Прострели ногу (8)
15 Torquader
 
28.11.11
01:13
А почему нельзя обработку открывать через ОткрытьФорму и в параметр передавать всё, что хотят выбрать (ну и получать обратно также).
16 lostfoton
 
28.11.11
08:23
(8) - ты предлагаешь открывать форму обработки модально, а при закрытии формы обработки присваивать значение Форма.Параметр для обработки в документе.
В принципе это вариант. Единственное что не совсем подходит - модальность.
17 Rie
 
28.11.11
08:26
(16) Модально - не обязательно.
18 lostfoton
 
28.11.11
09:26
(17) - ?
Отслеживать ТипЗначения()=0 для контекста открытой формы обработки?
19 lostfoton
 
28.11.11
09:27
(16) - поясни что предлагаешь?
20 Guk
 
28.11.11
09:30
по-моему автору пора познакомиться с методом формы ВыполнитьВыбор...
21 lostfoton
 
28.11.11
18:16
(20) - если я открою обработку через ОткрытьФорму(). ВыполнитьВыбор() будет бесполезен, т.к. ОбработкаПодбора() - не сработает.
22 lostfoton
 
29.11.11
23:03
Решил проблему для своего случая (подбор с вводом кол-ва) так:

В модуле документа для которого идет подбор:
//------------------------------------------
Процедура прНачатьПодборТовара()
ПеремПараметрПодбора=глфнПолучитьКонтекст(Контекст);
ОткрытьФорму("Обработка.ПодборТоваров#"+_GetPerformanceCounter()),ПеремПараметрПодбора);
КонецПроцедуры
//------------------------------------------
Процедура ОбработкаПодбора(ПеремЗнач,ПеремКонтекст)
//действия по обработке значения подбора
КонецПроцедуры
//------------------------------------------

В "Обработка.ПодборТоваров"
//------------------------------------------
ПеремКонтекст=Форма.Параметр; // это контекст документа для которого нужен подбор

Если ТипЗначения(ПеремКонтекст)=100 Тогда
ПеремКонтекст.ОткрытьПодбор("Обработка.ВводКолВа",,ПеремСписокАргументов,1,);
КонецЕсли;
//------------------------------------------

В "Обработка.ВводКолВа" вводится кол-во в ПеремСписокАргументов и вызывается:
//------------------------------------------
Форма.ВыполнитьВыбор(ПеремСписокАргументов);
Форма.Закрыть(0);
//------------------------------------------

Спасибо всем за ответы.
23 КонецЦикла
 
29.11.11
23:11
Непонятен практический смысл открытия нескольких форм вообще
А вообще смотреть торговлю и склад, там это работает почему-то
24 lostfoton
 
30.11.11
15:20
(23) Смысл в том что обработка подбора может быть открыта из нескольких документов одновременно и просто открыта (без подбора, для просмотра).
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший