|
Модальные и немодальные окна | ☑ | ||
---|---|---|---|---|
0
Златуся
01.08.17
✎
13:20
|
Добрый день! Есть участок кода:
формирует один чек -открывает модальное окно с просьбой изменить сумму при необходиомсти - отправляет на форму оплаты кассира, затем формирует второй чек -открывает модальное окно с просьбой изменить сумму при необходимости - отправляет на форму оплаты кассира. Проблема: строчки кода не ждут пока кассир пробьет чек, идут дальше , формируют второй, отправляют на оплату. Для кассира выглядит так: появилась форма с оплатой первым чеком и сразу форма с вопросом об изменении второго чека. форма модальная не дает пробить по кассе. если даже эту форму убрать - код пойдет дальше, отправит данные по второму чеку - программа запросит аннулирование первого чека, так как ей нужно забить новые данные. Как включить задержку после отправки первого чека? открыть модально первую форму с кассой не получается - так как форма сначала открывается, потом в нее передаются данные и обрабатывается интерфейс формы. если не открывать, а сначала передать данные - много ошибок связанных с установкой интерфейса формы кассира, который обрабатывает полученные значения. (чеки нужно отправлять именно по два сразу) |
|||
1
Fish
01.08.17
✎
13:32
|
Измените логику таким образом, чтобы вторая форма не появлялась, пока не получен ответ в первой.
|
|||
2
Ganiev
01.08.17
✎
13:40
|
1 Сделай счетчик ожидания! пока не получил отмашку от первой формы не бежать по коду дальше! что-то типа пока не ответполучен цикл конец цикла а при закрытии формы 1 ответполучен = Истина;
|
|||
3
1dvd
01.08.17
✎
13:46
|
нужно дождаться события от первого окна, прежде чем выполнять создание второго чека
|
|||
4
Златуся
01.08.17
✎
13:49
|
пока ФормаФронта.Открыта() цикл
конеццикла; По циклу не прокатывает - получает виснет - вернулся и бегает Как я могу дождаться события от первого окна? открыто немодально? |
|||
5
Златуся
01.08.17
✎
13:50
|
получается мне нужно именно модально, чтобы на код не возвращался. тогда как передать данные - ежели форма сначала открывается немодально, получает параметры, а потом только должна уходить в модальный режим?
|
|||
6
1dvd
01.08.17
✎
13:51
|
(5) создание второго чего должно быть в другой процедуре, которая запустится после закрытия окна вопроса
|
|||
7
Златуся
01.08.17
✎
13:51
|
можно ли как-то перевести открытую форму из немодального в модальный? или только закрытием и повторным открытием?
|
|||
8
1dvd
01.08.17
✎
13:52
|
(7) Забудь про модальные окна. 1С всякими способами заставляет от них избавляться
|
|||
9
Numerus Mikhail
01.08.17
✎
13:52
|
(4) ОписаниеОповещения?
|
|||
10
Златуся
01.08.17
✎
13:53
|
(6) ну вызову из первой вторую - все равно уйдет сразу на код и во вторую процедуру. в первой идет просчет сумм по двум чекам
|
|||
11
1dvd
01.08.17
✎
13:54
|
(10) вторая запустится по событию закрытия окна
|
|||
12
Fish
01.08.17
✎
13:55
|
(10) Если всё правильно напишешь, то не уйдёт.
|
|||
13
Numerus Mikhail
01.08.17
✎
13:57
|
(10) почитай на досуге
http://its.1c.ru/docs/v8nonmodal/ |
|||
14
_stay true_
01.08.17
✎
14:04
|
(10) Вызывай немодально с ОписаниемОповещения о закрытии. Так ты будешь знать что первой каюк и пора пинать вторую. В чем трудность?
|
|||
15
_stay true_
01.08.17
✎
14:36
|
(0) и без фотокарточки не взлетит! :)
|
|||
16
Златуся
01.08.17
✎
14:38
|
доппараметры=новый структура();
доппараметры.Вставить("Документ",документ); доппараметры.Вставить("Формафронта",формафронта); доппараметры.Вставить("Суммавторойчасти", суммавторойчасти); ОткрытьФорму(ФормаФронта, ,,,,,Новый ОписаниеОповещения("Напечататьвторойчек",этотобъект, доппараметры),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); Проходит без ошибок, вторая процедура в этом же модуле, в нее заходит - где не так? |
|||
17
Златуся
01.08.17
✎
14:38
|
т.е. НЕ заходит во вторую
|
|||
18
Златуся
01.08.17
✎
14:40
|
(15) Фотокарточку как-то выставляла, но на мисте человек-женщина - не может быть априори программистом, поэтому извиняйте - обсудили больше не мою проблему а внешность :))))
|
|||
19
Numerus Mikhail
01.08.17
✎
15:04
|
(16) Попробуй ЭтаФорма вместо ЭтотОбъект написать везде
|
|||
20
_stay true_
01.08.17
✎
15:05
|
(18) Вот как пример:
СтандартнаяОбработка = Ложь; ОткрытьФорму("Справочник.Пользователи.ФормаВыбора",,ЭтаФорма,УникальныйИдентификатор,,,Новый ОписаниеОповещения("ВидыУслугТоварыОтветственныйНачалоВыбораЗавершение",ЭтаФорма),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); &НаКлиенте Процедура ВидыУслугТоварыОтветственныйНачалоВыбораЗавершение(Результат,Параметры)Экспорт //2017-07-14-Кулешов-000102632-Н ВыбранноеЗначение = Результат; Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Пользователи") Тогда ЗапрещеноКВыбору = ПроверитьВозможностьВыбораПользователя(ВыбранноеЗначение); Если ЗапрещеноКВыбору Тогда ВыбранноеЗначение = ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка"); ПоказатьПредупреждение(Новый ОписаниеОповещения("ПослеЗакрытияПредупреждение",ЭтаФорма),"Невозможно выбрать данного менеджера!"); Возврат; Иначе Элементы.ВидыУслугТовары.ТекущиеДанные.Ответственный = Результат; КонецЕсли; КонецЕсли; //2017-07-14-Кулешов-000102632-К* КонецПроцедуры |
|||
21
_stay true_
01.08.17
✎
15:06
|
И как только у тебя отработает и закроется первая форма, должно попасть в процедуру из описания оповещения
|
|||
22
lodger
01.08.17
✎
15:09
|
(20) конструкции вида: //2017-07-14-Кулешов-000102632-Н
забавны только первый год, когда они встречаются по 1 на функцию\процедуру максимум. к N-ому году и активному развитию БП получается петрушка вида: //2017-07-14-Кулешов-000102632-Н //2017-07-14-Кулешов-000102632-Н |
|||
23
lodger
01.08.17
✎
15:10
|
ой. недописал
//2017-07-14-Кулешов-000102632-Н //2016-09-12-Петров-000100632-Н //2015-06-17-Пупкин-000100032-Н //2014-01-11-ИванГрозный-000100002-Н |
|||
24
Златуся
01.08.17
✎
15:21
|
а если у меня не из формы вызывается? в документе есть кнопка "Оплата", по ней код уходит в обработку (в модуль обработки) и оттуда вызывает форму этой обработки. Попробовала владельцем указать этотобъект - все равно не идет, попробовала в качестве модуля для второй процедуры указать конкретную форму этой обработки - все равно все проходит без ошибок, но в процедуру не заходит
ОткрытьФорму(ФормаФронта,,этотобъект,,,,Новый ОписаниеОповещения("Напечататьвторойчек",Формафронта.ЭтаФорма, доппараметры),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); |
|||
25
_stay true_
01.08.17
✎
15:37
|
(24) 1. Процедура "Напечататьвторойчек" должна отвечать нескольким требованиям:
1. она должна исполняться &НаКлиенте; 2. Она должна быть экспортной; 3. Она должна иметь не более двух параметров. Скорее-всего, какое-то условие не выполнено. |
|||
26
_stay true_
01.08.17
✎
15:38
|
(24) "а если у меня не из формы вызывается? в документе есть кнопка "Оплата""
Т.е. в ФормеДокумента? А говорите не из формы... |
|||
27
Златуся
01.08.17
✎
15:43
|
нет, вызывается не из формы, из формы документа уходит в модуль обработки, вызывается непосредственно из модуля обработки фронт кассира.
(25) 1-да, 2 да, 3 - имеется ввиду в доп параметрах передача максимум двух переменных? |
|||
28
Златуся
01.08.17
✎
15:48
|
вообще я тут пока тестила поняла, что любом случае будет не так как мне надо. Изначальная цель: документ продажи, оплата из документа формирует чек (типовой вариант). мне нужно переделать так, чтобы в зависимости от проданных товаров формировались два чека - по разным системам налогооблажения. После того, как пользователь пробъет один чек, нужно чтобы подгружался второй автоматом если есть товары по второй системе. Но я увидела что мне не нужно чтобы срабатывало на закрытие формы кассира - неудобно: пробил чек - нужно закрыть фронт, и потом только будет второй опять с открытием. мне нужно на процедуру пробития скорее всего подвесить и передать параметр второй суммы. Эх, "пойду покурю, подумаю". Спасибо всем - сегодня узнала что-то новое :))))
|
|||
29
Златуся
02.08.17
✎
10:24
|
В общем, может кому пригодиться:
Была написана отдельная процедура, которая просчитавает товары с суммой ндс и стоимость основной продажи без ндс уменьшает на необходимую сумму, учитывая предоплату. В процедуры пробития чека и отмены пробития добавлен метод "оповестить", с переходом на проц. "обработкаоповещения", в которой в зависимости от условий срабатывает процедура с выводом во фронт кассира второго чека. Все таки, использовала метод оповещения, так что ваши подсказки мне очень помогли |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |