|
v7: Проброс параметра из формы в документ | ☑ | ||
---|---|---|---|---|
0
Askor
08.09.19
✎
08:44
|
Добрый день, коллеги,
ситуация такая, есть документ чекккм, из него открывается форма подбора номенклатуры. Нужно, чтобы при сканировании штрихкода карты лояльности в открытой форме подбора, найденный контрагент пробросился (сразу или при закрытии формы) в чекККМ, из которого была открыта эта форма. С помощью чего это делается в 7.7? |
|||
1
welwel
08.09.19
✎
08:51
|
При вызове ОткрытьФорму можно передать параметр.
В нем можно передать контекст вызывающей формы непосредственно в этом параметре либо завернув в СписокЗначений. В типовых нередко в ГМ есть функция глВзятьКонтекст для получения контекста в переменную. |
|||
2
MWWRuza
гуру
08.09.19
✎
08:57
|
+(1) Только форму подбора надо модально открывать, что-бы этот параметр потом в чеке поймать.(есть конечно и другие варианты, но так проще всего).
|
|||
3
Сияющий в темноте
08.09.19
✎
10:03
|
не обязательно модально
при открытии сохранили переданный контекст и потом пользуемся. через контекст можно установить поле на форме. немодальный подбор хорош тем,что его можно не закрывать,а просто переключаться в чек и обратно. |
|||
4
Cthulhu
08.09.19
✎
11:51
|
(3) ... и инициировать в вызвавшей форме выполнение нужных действий.
это можно сделать через контекст вызвавшей формы, полученный из параметра - типа КонтекстВызвавшейФормы.Форма.ОбработкаОжидания("КакаяТоПроцедураРеализующаяЛействияПоЗавершенииПодбора",1) |
|||
5
Cthulhu
08.09.19
✎
11:52
|
(4)+: ну и конечно же в той процедуре должно быть Форма.ОбработкаОжидания("",0)
|
|||
6
Askor
08.09.19
✎
11:56
|
Пробросить параметр в форму подбора из документа вроде как получилось, а вот забрать из формы пока не очень....((((
Весь процесс по сути следующий из чекаККМ дергается процедура ПоКнопкеПодбор, в ней создается список значений параметров для подбора (фирма, типцена и пр.) и они передаются в процедуру главного модуля вместе с контекстом - глПодбор(Контекст, Параметры), там для заданного контекста дергается метод "ОткрытьПодбор", куда пробрасывается справочник Номенклатуры, тип формы для открытия, и параметры - Конт.ОткрытьПодбор("Номенклатура","ПриПодборе",Параметры); Но сам контекст не пробрасывается, насколько я понимаю, так как переменные документа ЧекККМ там недоступны. Я пробовал пробросить нужные переменные в параметрах, но, при возврате в документ ЧекККМ туда возвращается только таблица товаров с ценами и количеством, измененные параметры через Форма.Параметр.Установить() сбрасываются в исходные, как пришли из ЧекаККМ. Чтобы не спамить кучей кода, кратко описал, как это реализовано, прошу прощения, если здесь так не принято. Пишу потому, что непонятно, как через столько дерганий разных процедур можно протащить контекст чекаККМ в форму подбора, чтобы измененные там его переменные не сбрасывались. |
|||
7
Askor
08.09.19
✎
11:59
|
Очень не хотелось бы все как-то кардинально менять и переписывать, чтобы потом в этих конструкциях не погиб еще один разработчик. Хочется все сделать минимально вмешиваясь в существующий код, особенно глобального модуля.
|
|||
8
Cthulhu
08.09.19
✎
11:59
|
(6): когтекст пробрасывается через параметр - только его "просто так" в параметре хрен установишь, надо устанавливать глВзятьКонтекст(Контекст) (вроде так)
|
|||
9
Cthulhu
08.09.19
✎
12:01
|
(6) и - получить из подбора можно все что угодно, см. синтаксис ВыполнитьВыбор()
|
|||
10
Cthulhu
08.09.19
✎
12:03
|
(8),(9) - касаются именно подбора, параметр выполнитьвыбор-а получается прямо в параметре предопределенной процедуры обработкародбора вызвавшей подбор формы без всяких плясок с реквизитами и параметрами
|
|||
11
Askor
08.09.19
✎
12:56
|
(10) А как правильно добавить еще одно значение в форме подбора? Синтаксис говорит, что значение должно быть одно.
Форма.ВыполнитьВыбор(ТаблицаПодбора); Там таблица подобранных товаров сейчас, как впихнуть туда еще одно значение переменной, не понимаю. |
|||
12
Сияющий в темноте
08.09.19
✎
13:08
|
если в параметре список значений,а в нем все,что душа пожелает,то параметр всегда один.
|
|||
13
Cthulhu
08.09.19
✎
13:28
|
и не надо юзать гоподбор.
1) делай свой блок с "открытьподбор" 2) форме списка, которая используется для подбора - делай свой блок с ВыполнитьВыбор(СпецСЗ) в котором в СЗ запихивай все что надо 3)в обработкаподбора - добавляй свой блок с анализом полученного из подбора значения, и если это тот самый СЗ, который в п.2 - выполняй этот блок. |
|||
14
HawkEye
08.09.19
✎
14:44
|
один я не понял, на кой черт сканировать карту лояльности в форме подбора, когда это надо делать в форме Чека?
(0) у тебя на каждую позицию номенклатуры своя карта лояльности что-ли? |
|||
15
Злопчинский
08.09.19
✎
18:44
|
(14) тихо, не спугни. ТС видимо от фузиновцев херней какой-то заразился...
|
|||
16
Kigo_Kigo
08.09.19
✎
18:50
|
в форме подбора в Процедура ОбработкаВнешнегоСобытия(Источник,Данные)
Если Лев(СокрЛП(Данные),4) = "2244" Тогда Предупреждение("Сканируйте карту лояльности клиента в форме чека"); СтатусВозврата(0); Возврат; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |