|
Активизировать открытую форму управляемого приложения | ☑ | ||
---|---|---|---|---|
0
OnePrg
08.05.23
✎
14:19
|
УникальныйИдентификатор_РМК = Неопределено;
Для каждого эл из ПолучитьОкна() Цикл Если эл.Содержимое.Количество() = 0 Тогда Продолжить; КонецЕсли; Если эл.Содержимое[0].ИмяФормы = "Документ.ЧекККМ.Форма.ФормаДокумента_РМК" Тогда УникальныйИдентификатор_РМК = эл.Содержимое[0].УникальныйИдентификатор; Прервать; КонецЕсли; КонецЦикла; ОткрытьФорму("Документ.ЧекККМ.Форма.ФормаДокумента_РМК",,,УникальныйИдентификатор_РМК); по факту открывает новую форму, хотя передаю туда идентификатор открытого окна что не так? |
|||
1
OnePrg
08.05.23
✎
14:23
|
кажется понял
нужно эл.Содержимое[0].ЭтаФорма.УникальныйИдентификатор |
|||
2
OnePrg
08.05.23
✎
14:27
|
нет, так тоже не работает
|
|||
3
Злопчинский
08.05.23
✎
14:33
|
Для начала я бы не довольствовался голословными заявлениями а вывел в лог уник ид перед циклом и перед открытьформу
|
|||
4
OnePrg
08.05.23
✎
14:42
|
(3) по точке останова проверяю - уник тот, что в ПолучитьОкна()
|
|||
5
OnePrg
08.05.23
✎
14:45
|
кажется нужно эл.Содержимое[0].КлючУникальности
пробую .... |
|||
6
OnePrg
08.05.23
✎
14:48
|
да, так заработало
|
|||
7
OnePrg
08.05.23
✎
18:48
|
Не совсем :(
ФормаДокумента_РМК является формой документа. Работает аналогично другим торговым конфигурациям. Так вот вот этот код (0) срабатывает только если в форме не пробит ни один чек. Стоит пробить чек и код не срабатывает, открывает новую форму. Не пойму где смотреть. |
|||
8
Волшебник
08.05.23
✎
19:04
|
(7) Значит там другой КлючУникальности
|
|||
9
OnePrg
08.05.23
✎
19:44
|
Пока вижу что после пробития чека вызывается процедура ИнициализироватьНовыйЧек()
&НаСервере Процедура ИнициализироватьНовыйЧек(ВыдатьОкноУспешноПробит = Ложь) СсылкаНаЧек_МК = Объект.Ссылка; НовыйЧек = Документы.ЧекККМ.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(НовыйЧек, Объект,, "Запасы, БезналичнаяОплата, СкидкиНаценки, Номер, Проведен, ПометкаУдаления, Заказ"); Если ЗначениеЗаполнено(СтруктураСостояниеКассовойСмены) Тогда МассивРеквизитов = Новый Массив; ПолучитьСтрокуРеквизитыИсключения(МассивРеквизитов); Для Каждого ЗначениеМассива Из МассивРеквизитов Цикл НовыйЧек[ЗначениеМассива] = СтруктураСостояниеКассовойСмены[ЗначениеМассива]; КонецЦикла; КонецЕсли; Попытка РазблокироватьДанныеДляРедактирования(Объект.Ссылка, УникальныйИдентификатор); Исключение // КонецПопытки; ЗначениеВДанныеФормы(НовыйЧек, Объект); <-------------- может это причина потери уникальности? УстановитьОтборОтложенныхЧековПоСсылке(); Объект.СуммаДокумента = 0; ОбновитьНадписьКнопкиКОплатеНаСервере(); Объект.ВидСкидкиНаценки = Неопределено; Объект.ДисконтнаяКарта = Неопределено; Объект.Контрагент = Неопределено; Объект.Договор = Неопределено; Объект.ПроцентСкидкиПоДисконтнойКарте = 0; Объект.СкидкиРассчитаны = Ложь; СуммаСкидки = 0; Объект.ПолученоНаличными = 0; ПолученоПлатежнымиКартами = 0; СуммаЧекаБезСкидки = 0; СуммаСдачи = 0; Объект.Запасы.Очистить(); Объект.БезналичнаяОплата.Очистить(); Объект.СкидкиНаценки.Очистить(); Объект.НомерЧекаККМ = 0; // +локализация ПРРО Кашалот Объект.НомерЧекаCashalot = ""; // -локализация ПРРО Кашалот Объект.Архивный = Ложь; Объект.Статус = Перечисления.СтатусыЧековККМ.ЧекНеПробит; Объект.Телефон = ""; Объект.АдресЭП = ""; Объект.Комментарий = ""; УстановленСерыйЦвет = Истина; Элементы.ЗапасыРассчитатьСкидкиНаценки.Картинка = БиблиотекаКартинок.ОбновитьСерый; ЦеныИВалюта = СформироватьНадписьЦеныИВалюта(ПолучитьСтруктуруНадписиЦеныИВалютаНаСервере()); Если ЭтоМобильныйКлиент Тогда Если ВыдатьОкноУспешноПробит Тогда Элементы.ГруппаПродажаИВозврат.ТекущаяСтраница = Элементы.ГруппаФормаЗавершенияПродажи; Элементы.ПечатьТоварногоЧека_МК.Видимость = Истина; Иначе Элементы.ГруппаПродажаИВозврат.ТекущаяСтраница = Элементы.ГруппаПродажаМК; КонецЕсли; КонецЕсли; КонецПроцедуры // ИнициализироватьНовыйЧек() |
|||
10
OnePrg
08.05.23
✎
19:53
|
(8) по отладчику проверяю - ключ уникальности не меянется
|
|||
11
Волшебник
08.05.23
✎
19:56
|
(10) Проверьте ещё раз. Может Вы не туда смотрите
|
|||
12
OnePrg
08.05.23
✎
19:58
|
(11) я даже вывел в таблицу все реквизиты формы до и после и сравнил через "сравнить файлы" - кроме цифр чека и самого чека ничего не меняется
|
|||
13
Волшебник
08.05.23
✎
20:10
|
(12) Ну Вы же понимаете, что программа не ошибается. Она просто выдаёт ошибку по программе.
|
|||
14
OnePrg
08.05.23
✎
20:23
|
Если бы выдавало ошибку, было бы легче. А так просто открывает другое окно, хотя идентификатор не меняется.
|
|||
15
Волшебник
08.05.23
✎
20:46
|
(14) Значит ошибки нет. Может это Вы ошибаетесь? Проверьте КлючУникальности для каждого открытого окна
|
|||
16
OnePrg
08.05.23
✎
20:56
|
(14) программа сама перебирает открытые окна и находить в них окно, а у окна ключ уникальности: (0)
|
|||
17
Волшебник
08.05.23
✎
20:58
|
(16) Вам надо подумать над программой.
Программа никогда не делает что-то "сама" и никогда "автоматически". Думайте, работайте. |
|||
18
OnePrg
08.05.23
✎
23:34
|
Разобрался
Можете у себя промоделлировать. Создаём внешнюю обработку с двумя кнопками "Открыть форму новой ПН" и "Открыть ПН" &НаКлиенте Процедура ОткрытьФормуНовойПН(Команда) ОткрытьФорму("Документ.ПриходнаяНакладная.Форма.ФормаДокумента",,,Новый УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ОткрытьПН(Команда) КлючУникальности_РМК = Неопределено; Для каждого эл из ПолучитьОкна() Цикл Если эл.Содержимое.Количество() = 0 Тогда Продолжить; КонецЕсли; Если эл.Содержимое[0].ИмяФормы = "Документ.ПриходнаяНакладная.Форма.ФормаДокумента" Тогда КлючУникальности_РМК = эл.Содержимое[0].КлючУникальности; Прервать; КонецЕсли; КонецЦикла; ОткрытьФорму("Документ.ПриходнаяНакладная.Форма.ФормаДокумента",,,КлючУникальности_РМК); КонецПроцедуры Нажимаем первую кнопку, открывается форма нового документа "Поступление товаров и услуг". Если перейти обратно в обработку и нажимать кнопку "Открыть ПН" то будет открываться одна и та же форма нового документа. Но стоит нажать в этой форме кнопку "Записать" и всё - будет открываться новая форма. При этом ключ уникальности этой формы не изменился. Именно так им работает форма кассира. Она есть форма документа и каждый раз как пробивается чек происходит запись объекта. Создаётся новый объект и форме подкладываются новые данные. А мне нужно в эту форму возвратиться. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |