| 
    
            
         
         | 
    
    
  | 
Модальные и немодальные окна | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        В общем, может кому пригодиться:
 
        Была написана отдельная процедура, которая просчитавает товары с суммой ндс и стоимость основной продажи без ндс уменьшает на необходимую сумму, учитывая предоплату. В процедуры пробития чека и отмены пробития добавлен метод "оповестить", с переходом на проц. "обработкаоповещения", в которой в зависимости от условий срабатывает процедура с выводом во фронт кассира второго чека. Все таки, использовала метод оповещения, так что ваши подсказки мне очень помогли  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |