|
синхронные вызовы и вопрос на форме "перед записью" | ☑ | ||
---|---|---|---|---|
0
vde69
10.07.15
✎
09:04
|
как правильно сделать вопрос в событием с установкой Отказ=Истина для режима синхронных вызовов? модальные окна запрещены...
Что-то я теоретически не догоняю... вот пример того, что надо переделать &НаКлиенте Процедура ПользователиИнфБазыПередУдалением(Элемент, Отказ) Если Вопрос(НСтр("ru = 'Удалить пользователя информационной базы?'"), РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда УдалитьПользователяИБ(Элементы.ПользователиИнфБазы.ТекущиеДанные.ИдентификаторПользователяИБ, Отказ); Иначе Отказ = Истина; КонецЕсли; КонецПроцедуры |
|||
1
Marine Band
10.07.15
✎
09:09
|
(0) Может речь об асинхронных вызовах?
|
|||
2
Marine Band
10.07.15
✎
09:10
|
вместо стандартной кнопки добавить свою, в которой можно реализовать все что захочешь
|
|||
3
vde69
10.07.15
✎
09:14
|
(1) пытаюсь мучить такси последней версии, короче модальность запрещена...
как сделать вопрос например при закрытии системы я понимаю, а вот тут - не очень, по идее нужно отказать а по результату вопроса попытаться сделать все повторно, но мне это претит, по тому как это будет работать только на простых случаях... |
|||
4
vde69
10.07.15
✎
09:15
|
(2) ага и переопределить кнопу делейт, контр+с и еще 545 вариантов :)
|
|||
5
Cube
10.07.15
✎
09:23
|
(3) Так модальность это и есть синхронный вызов... А без модальности, это на асинхронных вызовах...
|
|||
6
Cube
10.07.15
✎
09:23
|
(3) Делай что хочешь ПередЗакрытием() формы.
|
|||
7
vde69
10.07.15
✎
09:33
|
(6) мне надо перед началом транзакции...
как я понимаю мне надо делать так 1. перед записью я проверяю висит был-ли получен ответ на нужный вопрос в отдельном окне 2. если ответа не было я ставлю отказ = истина 3. если ответ был иду дальше 4. в обработке ответа явным образом вызываю событие повторно что мне не нравится 1. куча новых процедур, и всяких флагов 2. как минимум в 2 раза увеличивается количество вызовов обработчиков (и обращений к серверу) 3. существует вероятность изменений и висящий вопрос будет уже не валидным |
|||
8
Marine Band
10.07.15
✎
10:07
|
(7) Если не используется веб клиент, то забей и делай через модальные вызовы. Так проще
|
|||
9
Serg_1960
10.07.15
✎
10:40
|
(7) Почему бы тебе заранее в самой форме не получать ответы на "нужные" вопросы? Например, флажки с текстами вопросов в виде утверждений, где наличие отметки можно считать ответом "Да" или "Нет". Как то так. Надеюсь ты поймёшь что я хотел сказать...
|
|||
10
vde69
10.07.15
✎
10:41
|
а теперь самый смешной вопрос:
как запустить правильную цепочку события (сначала события формы, потом события объекта и подписки) то есть нужно сымитировать интерактивное действие вот пример &НаКлиенте Процедура ПользователиИнфБазыПередУдалением(Элемент, Отказ) Если Элементы.ПользователиИнфБазы.ТекущиеДанные.КодПроблемы = 0 Тогда Если ФлУдалитьПользователя = Истина Тогда УдалитьПользователяИБ(Элементы.ПользователиИнфБазы.ТекущиеДанные.ИдентификаторПользователяИБ, Отказ); Иначе Отказ = Истина; ПоказатьВопрос(Новый ОписаниеОповещения("ПользователиИнфБазыПередУдалениемЗавершение", ЭтотОбъект, Новый Структура("ТекущиеДанные", Элементы.ПользователиИнфБазы.ТекущиеДанные)), НСтр("ru = 'Удалить пользователя информационной базы?'"), РежимДиалогаВопрос.ДаНет); КонецЕсли; Иначе Отказ = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПользователиИнфБазыПередУдалениемЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда ФлУдалитьПользователя = Истина; ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные; ПользователиИнфБазы.Удалить(ТекущиеДанные); // этот код не запускает событие формы "Перед удалением" и т.д. // а событие формы "после удаления" вообще в пролете :) Иначе ФлУдалитьПользователя = Ложь; КонецЕсли; КонецПроцедуры |
|||
11
Господин ПЖ
10.07.15
✎
10:47
|
||||
12
Господин ПЖ
10.07.15
✎
10:49
|
в перед "записью" вообще ж.па
неизвестно как туда попали |
|||
13
fisher
10.07.15
✎
11:07
|
(10) Ты ж уже сымитировал? Чего тебе еще? Если дополнительно нужно вызывать обработчики соответствующих событий формы - ну и их явно вызови. Делов-то. Хотя конечно, асинхронный интерактив, особенно несколько вызовов в одном блоке, превращает линейный по сути код в жуткое спагетти обработчиков.
Я тут было попытался предложить извратное решение: Борьба с вложенным немодальным интерактивом с помощью GoTo. К обсуждению. Но модеры сказали, что это слишком тонкая шутка для нашего цирка. |
|||
14
PR третий
10.07.15
✎
11:07
|
||||
15
vde69
10.07.15
✎
11:16
|
(13) суть в том, что бы предусмотреть будущее подключение обработчика формы "после удаления", сейчас его нет, но в будущем может появится.
то есть сейчас нарушена системная последовательность вызова обработчиков |
|||
16
fisher
10.07.15
✎
11:19
|
(15) Хм... А какая штатная последовательность вызова? Сначала форма, потом подписка? Если в форме отказ, то подписка не вызывается?
|
|||
17
fisher
10.07.15
✎
11:25
|
(16) + Я к тому, что если это так, то всё путем будет.
|
|||
18
fisher
10.07.15
✎
11:36
|
(15) Тьфу, понял. В общем да - если в будущем появится, то тоже придется его явно вызывать после программного удаления.
|
|||
19
vde69
10.07.15
✎
11:39
|
(16) прикинем следующий вариант:
Есть форма на этой форме таблица, у таблице есть 2 обработчика 1. ПередУдалением 2. ПослеУдаления они должны выполнятся строго 1 потом 2 в "ПередУдалением" ставим отказ и вопрос (отказ нужен что бы ждать ответа) когда получили ответ мне в процедуре нужно выполнить ту-же цепочку обработчиков ФОРМЫ, а именно 1 и потом 2 никакие ухищрения с объектом не помогут, прямой вызов обработчиков то же не катит (обработчики могут быть программно переопределены) единственное разумное решение 1. "запомнить, что ответ уже получен" 2. заново послать событие элементу формы, что бы система сама вызывала цепочку реакторов... так вот я и не понимаю как заставить систему вызывать цепочку реакторов... |
|||
20
Остап Сулейманович
10.07.15
✎
11:41
|
(19) На девтрейнинге рекомендуют пользоваться флагами.
|
|||
21
Fragster
гуру
10.07.15
✎
11:42
|
так называемый "отказ от модальности" в платформе должен был вообще пройти незамеченным для прикладных разработчиков.
|
|||
22
Fragster
гуру
10.07.15
✎
11:42
|
а теперь вычислите на клиенте размер папки...
|
|||
23
vde69
10.07.15
✎
11:42
|
пользоваться флагами = "запомнить, что ответ уже получен"
я это уже написал, а что дальше? |
|||
24
Гёдза
10.07.15
✎
11:42
|
1с рекомендует: Отказаться от вопросов в "Перед записью"
|
|||
25
vde69
10.07.15
✎
11:44
|
(24) и от вопросов "перед удалением" ????
три раза ХА |
|||
26
Fragster
гуру
10.07.15
✎
11:44
|
вернее помещение папки с файлами на сервер для пакетной обработки
|
|||
27
Гёдза
10.07.15
✎
11:44
|
(25) перед удалением можно.
Перед записью просто отказ выбрасывает исключение |
|||
28
vde69
10.07.15
✎
11:47
|
(27) тогда ответь на (19) как мне быть?
|
|||
29
Гёдза
10.07.15
✎
11:48
|
(28) Отказ и удалять руками
|
|||
30
Гёдза
10.07.15
✎
11:49
|
Универсальный механизм уже НЕ напишешь
|
|||
31
vde69
10.07.15
✎
11:50
|
(29) тогда не выполнится обработчик "ПослеУдаления"...
|
|||
32
Гёдза
10.07.15
✎
11:52
|
(31) Все руками
|
|||
33
fisher
10.07.15
✎
12:02
|
(19) Когда получили положительный ответ на вопрос перед удалением, повторно "ПередУдалением" вызывать уже не нужно ведь. Если остались несделанные дела перед удалением - это будет отдельный блок.
После которого будет программное удаление и потом программный же вызов алгоритмов ПослеУдаления. Я не вижу, в каком месте проблема. Неудобства есть. Проблемы нет. |
|||
34
vde69
10.07.15
✎
12:16
|
короче нужно по максимуму отказываться от всех вопросов, нужно пересматривать практически всю идеологию интерактивного общения с пользователем.
хаял я БСП, вот она и умерла не родившись :) |
|||
35
fisher
10.07.15
✎
12:19
|
Про БСП не понял.
|
|||
36
PR третий
10.07.15
✎
12:20
|
(34) В (11) же все расписано
|
|||
37
vde69
10.07.15
✎
12:22
|
(35) я пробовал использовать типовые модули БСП, реально невозможно корректно переделать...
вероятно скоро начнут разрабатывать новую версию БСП и как следствие будут БП 4.0 и т.д. |
|||
38
Гёдза
10.07.15
✎
12:24
|
(36) Вопрос "как вызвать ПослеУдаления"
|
|||
39
fisher
10.07.15
✎
12:26
|
(37) А что, последние версии еще на асинхронные вызовы не перепилили разве? Я не в курсе просто. Ну, если нет, то скоро перепилят. Сами же кашу заварили. Самому перепиливать - ессно дело неблагодарное.
|
|||
40
PR третий
10.07.15
✎
12:52
|
(38) Вручную.
|
|||
41
1sanekmaloi1
10.07.15
✎
13:11
|
(37)
Версия 2.3.1 является новой редакцией 2.3 продукта "1С:Библиотека стандартных подсистем". Предназначена для разработки конфигураций, которые рассчитаны для работы на платформе 1С:Предприятие 8.3 версии 8.3.6 и выше. Значения свойств конфигурации: · Режим совместимости должно быть установлено в «Не использовать». · Режим использования модальности может быть установлен в «Не использовать». · Режим совместимости интерфейса может принимать значения «Версия 8.2», «Версия 8.2. Разрешить Такси» или «Такси. Разрешить Версия 8.2». · Режим использования синхронных вызовов расширений и внешних компонент должен быть установлен в значение «Использовать». |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |