Показать вопрос в процедуре обработка проведения

1. user1619761 02.12.21 12:52 Сейчас в теме
Доброго времени суток. Подскажите, пожалуйста, есть ли какая то возможность вызвать ПоказатьВопрос(Новый ОписаниеОповещения.... из Процедура ОбработкаПроведения ? Пробовал создавать экспортную процедуру, но ругается, что метод не обнаружен, в принципе догадываюсь, ошибка возникает из за вызова клиентской процедуры на сервере.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

ЭтотОбъект.ВопросПерезаписиДок();

КонецПроцедуры

&НаКлиенте
Процедура ВопросПерезаписиДок() Экспорт

ПоказатьВопрос(Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект), "Будет осуществлена перезапись документа.Продолжить?", РежимДиалогаВопрос.ДаНет, 0);

КонецПроцедуры
По теме из базы знаний
Найденные решения
22. ixijixi 1808 02.12.21 15:37 Сейчас в теме
Спрашивай &НаКлиенте ПослеЗаписи, по моему отличный вариант. Транзакция уже завершена, ошибок нет, можно обновить подчиненный документ.
28. ixijixi 1808 02.12.21 17:08 Сейчас в теме
(27) Завести реквизит формы, назвать Новый(Булево). Перед записью писать туда Параметры.Ключ.Пустая(), после записи читать оттуда.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Al_Capone 02.12.21 12:59 Сейчас в теме
(1) Вызвать клиентскую процедуру на сервере нельзя. Лучше перенести вообще на форму документа в ПередЗаписью и там все проверить и спросить что надо.
7. user1619761 02.12.21 13:19 Сейчас в теме
(2) Спасибо, но там вроде нельзя проверить режим записи документа, а у меня есть процедуры и функции в модуле объекта, связанные с обработкой проведения. Поэтому не вариант(
8. ДмитрийС 02.12.21 14:04 Сейчас в теме
(7) Процедуры ПередЗаписью что формы, что объекта имеют вид:

Объект


Форма


На крайний случай ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)

Если я правильно вас понял.
9. user1619761 02.12.21 14:18 Сейчас в теме
(8) я пробовал вопрос вставлять в Процедуру формы ПередЗаписью, но во время вызова вопроса полностью успевает отработать код Процедуры ОбработкаПроведения и Процедуры ПередЗаписью из модуля объекта, то есть все мои процедуры, которые связаны с проведением, отработают еще до того ,как пользователь ответит на вопрос. Или вы имеете ввиду, что еще в процедуре формы ПослеЗаписи повторно записать документ, чтобы повторно вызвать срабатывание процедур из модуля объекта? Но опять же, это сломает логику кода из модуля объекта. Если только создать реквизиты, им присваивать определенные значения в зависимости от условий, и потом уже в зависимости от значений реквизитов вызывать ту или иную процедуру/функцию.
11. ДмитрийС 02.12.21 14:50 Сейчас в теме
(9) так поиск вам в помощь)
например это "Вопрос в Перед записью"
Сам не читал, но рекомендую ознакомиться))
4. dmbarchenkov 02.12.21 13:02 Сейчас в теме
(1) в "ОбработкеПроведения" и в принципе в модуле объекта (УФ) - нельзя, т.к. отрабатывается на сервере. Если вам это необходимо при интерактивном проведении из формы документа, то можно "задать вопрос" в процедуре модуля формы "ПередЗаписью".
user712426; +1 Ответить
3. ДмитрийС 02.12.21 13:00 Сейчас в теме
Вы уверены, что это стоит делать именно в обработке проведения? Какая цель? Может в процедуре Перед записью? Причем формы документа, т.к. документы могут обработками массово проводиться.
6. user1619761 02.12.21 13:08 Сейчас в теме
(3) во время проведения создается документ еще и в другой базе, на основании проводимого документа. Цель такая, чтоб спрашивать у пользователя, перезаписать документ в другой базе или нет (например данные в документе поменялись), и завязано это все именно с процедурой обработки проведения.
12. nomad_irk 76 02.12.21 14:54 Сейчас в теме
(6)святая корова.........

Вот представьте себе ситуацию: пользователь поставил перепроведение месяца и пошел домой.


Все вопросы нужно задавать ДО, И НИКОГДА НЕ делать "во время проведения создается документ еще и в другой базе, на основании проводимого документа".
FatPanzer; EVKash; dehro; +3 Ответить
13. user1619761 02.12.21 15:02 Сейчас в теме
(12) из процедуры передзаписью так же не вызвать вопрос, если брать модуль объекта, если брать модуль формы - то сначала отрабатывают все процедуры из модуля объекта, а именно (ПередЗапись, ОброботкаПроведения), потом уже задается вопрос, который по сути ничего уже и не решает. Я уже все эти варианты перепробовал.
15. nomad_irk 76 02.12.21 15:05 Сейчас в теме
(13)Ваше желание задавать вопросы при проведении документа - нонсенс, потому что проведение документа может быть вызвано кодом, кому в таком случае задавать вопросы будете?

Все вопросы задаются при интерактивной работе пользователя, т.е. до попытки записи объекта в БД, в его форме.
ixijixi; dehro; +2 Ответить
17. user1619761 02.12.21 15:14 Сейчас в теме
(15) это я понимаю все, но вот, к примеру, ситуация. При проведении проверяется заполненность определенного реквизита документа, если он заполнен то документ проводится, иначе просто записывается. Если документ проводится, то на его основании должен создаваться документ в другой базе (такое условие поставленной задачи), и вот например ситуация,пользователь не правильно указал , например, количество, изменяет реквизит, пытается провести, а из другой базы приходит ответ что документ уже создан, так как запись со ссылкой на документ основания уже имеется в регистрах, можно, конечно, на модифицированность реквизитов проверку делать, но условие задачи именно спрашивать перед проведением, если данные изменились, пересоздавать документ в другой базе или нет. Как то так. Приношу извинения, если некорректно описал ситуацию.
25. nomad_irk 76 02.12.21 15:50 Сейчас в теме
(17)Да вы поймите, что другая база - это другая вселенная. Лезть в нее и открывать транзакцию при открытой транзакции в какой-то другой БД - это убийство производительности обеих БД.

Ваша задача сводится к тому, чтобы при интерактивной работе пользователя выяснить ВСЕ условия проведения документа, пользователю абсолютно по-барабану, что будет происходить в какой-то не ведомой ему БД.

Вы должны принять условия проведения текущего документа от пользователя и на основании этих условий провести документ в текущей БД и при необходимости зафиксировать, что данный документ должен быть передан в другую(-ие) БД.

Все упоминания, того, что заказчик хочет непременно так можете засунуть куда подальше, т.к. заказчик ВООБЩЕ не представляет технических особенностей реализации его хотелок. БД - это не реал-тайм учет, как многим хочется, это ТРАНЗАКЦИОННОСТЬ прежде всего.
nance; FatPanzer; +2 Ответить
5. AHDP 8 02.12.21 13:06 Сейчас в теме
+ в открытой транзакции, с поправкой на управляемые блокировки
10. Степной 27 02.12.21 14:45 Сейчас в теме
(6) Нет ли возможности, в принципе, отказаться от вопроса пользователю? Зафиксировать все возможные причины для перезаписи документа и система сама будет понимать что перезаписывать, а что нет.
14. user1619761 02.12.21 15:02 Сейчас в теме
(10) если бы такая возможность была, то тему я не поднимал бы(
23. dehro 5 02.12.21 15:38 Сейчас в теме
(14) Реквизит документа "Создать в другой базе" типа "Булево"
И создавать не при проведении, растягивая транзакцию на создание COM-объекта и создания и записи документа во второй базе, а регистрации этого документа на узле обмена, с последующим переносом в другую базу регзаданием.
24. user1619761 02.12.21 15:49 Сейчас в теме
(23) у меня ком объектов не создается, данные передаются через веб сервис, если только большой объем данных улетит на сторону другой базы, тогда да, там долго будет создаваться документ, но на данный момент для пользователя проведение проходит незаметно по времени. Насчет реквизита я думал, но у меня слишком много операций в вебсервисе, придется для каждой свой реквизит или уникальное значение реквизита пилить, что не очень то хочется...
26. dehro 5 02.12.21 15:57 Сейчас в теме
(24) В любом случае вопрос в транзакции плохо.
Был случай с курящим оператором: она нажимала "Провести" и шла курить. У неё не экране 10 минут висел вопрос, а часть остальных операторов бомбила техподдержку: "Почему заказы не проводятся?"
А те не могли найти ошибку: часть проводятся, часть не проводятся, зависимость непонятная.
16. Степной 27 02.12.21 15:08 Сейчас в теме
(14) Продумывали как будет происходить групповое проведение с вопросом?
18. user1619761 02.12.21 15:15 Сейчас в теме
(16) в том то и дело, что группового проведения не планируется.
20. dehro 5 02.12.21 15:27 Сейчас в теме
(18)Это пока. Аппетит приходит внезапно!
FatPanzer; +1 Ответить
21. user1619761 02.12.21 15:30 Сейчас в теме
(20) это верно, но на данный момент имею что имею.
19. dehro 5 02.12.21 15:22 Сейчас в теме
Ни в коем случае! Внутри транзакции никаких вопросов быть не должно.
За (12) и (15) жирный плюс.
22. ixijixi 1808 02.12.21 15:37 Сейчас в теме
Спрашивай &НаКлиенте ПослеЗаписи, по моему отличный вариант. Транзакция уже завершена, ошибок нет, можно обновить подчиненный документ.
27. user1619761 02.12.21 16:54 Сейчас в теме
(22) Спасибо! Вариант действительно отличный, только он будет всегда вопрос задавать, и если новый документ, и если уже есть в инфо базе, так как ЭтаФорма.Параметры.Ключ.Пустая() всегда будет иметь значение Ложь.
28. ixijixi 1808 02.12.21 17:08 Сейчас в теме
(27) Завести реквизит формы, назвать Новый(Булево). Перед записью писать туда Параметры.Ключ.Пустая(), после записи читать оттуда.
29. user1619761 02.12.21 17:12 Сейчас в теме
30. ixijixi 1808 03.12.21 08:39 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот