Имя: Пароль:
1C
 
Задать вопрос пользователю перед пометкой удаления.
0 Ychenik1c
 
28.10.22
04:16
Добрый день. Борюсь с интересной задачей.
Перед тем как пользователь будет отменять проведение документа или помечать его на удаления необходимо проверить есть ли связанные документ и если он есть задать вопрос пользователю что они будут тоже помечены на удаление.

Сейчас добавил проверку и вопрос в расширение ПередЗаписьюПеред, но после того как вопрос пользователю задаётся, стандартная процедура всё равно дальше отрабатывает вне зависимости от ответа.
К тому же минус что этот вопрос можно задать только в формы. Со списка не получится.

Кто-нибудь решал такую задачу?
1 SweetaAngel
 
28.10.22
07:51
Посмотри как у документа Приобретения сделано с ним связана СФ и там предупреждение, что то же распроведется
2 Ychenik1c
 
28.10.22
08:57
(1) Смотрел. В ERP нет вопроса, а документ связанный сразу распроводится.
3 Ychenik1c
 
28.10.22
09:11
И в Бухгалтерии вроде так же. Если мне память не изменяет
4 b_ru
 
28.10.22
09:13
Создаешь переменную ВопросЗадан в модуле формы или реквизит, значение ложь

При попытке удалить, если есть подчиненные и ВопросЗадан равен ложь, задаем вопрос об удалении и безусловно отменяем удаление.

В обработчике вопроса устанавливаем переменную в истину и запускаем удаление.
5 Ychenik1c
 
28.10.22
09:39
(4) ПередЗаписью?
Если вопрос задавать там, то в момент задачи вопроса процедуры выполняется далее и задаётся основной вопрос про пометку удаления
6 Kassern
 
28.10.22
09:47
(0) "но после того как вопрос пользователю задаётся, стандартная процедура всё равно дальше отрабатывает вне зависимости от ответа" - отвыкайте уже от модальности и пишите код в рамках оповещений.
Вам всего лишь нужно структуру кода изменить, тогда все отработает
Структура выглядит примерно так:

Процедура ...
Режим = РежимДиалогаВопрос.ДаНет;
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект, Параметры);
ПоказатьВопрос(Оповещение, НСтр("ru = 'Продолжить выполнение операции?';"
    + " en = 'Do you want to continue?'"), Режим, 0);
//...Убираете от сюда логику отмены проведения и т.д.
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;

    //...Пихаете вашу логику с отменой проведения и т.д.


КонецПроцедуры
7 b_ru
 
28.10.22
09:55
(5) Сразу же после Вопроса:
Отказ = Истина;
Возврат;
8 Serg_1960
 
28.10.22
10:04
Плодить новые темы на один и тот же уже ранее заданный вопрос - это неправильный подход. Во-первых, прерывается обсуждение и сам вопрос остаётся нерешенным; во-вторых, Вы невольно вводите в заблуждение Ваших собеседников - они не обязаны знать о том, что ранее уже было сказано и могут повторно предлагать и обсуждать тоже самое, что уже было в Вашей предыдущей теме Вопрос перед отменой проведения
9 Serg_1960
 
28.10.22
10:29
PS: то, над чем сейчас автор темы мучается, в общем виде называется "передача дополнительных параметров между событиями формы и/или объекта" - гуглите. Решение, например, в духе классики жанра: на форме используются ПараметрыЗаписи для анализа ответа на вопрос; в объекте - ДополнительныеСвойства.
10 Kassern
 
28.10.22
10:38
(9) В той же УТ11 подобный функционал возможен на формах, из-за переопределения кнопок записи/проведения/отмены проведения. Запускается своя логика, куда можно добавить вопросы и прочий функционал.
11 Serg_1960
 
28.10.22
11:07
(10) Всё оно так, но это не снимает главное, в чём автор темы блуждает - в понимание сути асинхронности вопросов и ответов на них.
Может быть ему поможет старая статья из Зазеркалья про "синхронную асинхронность" - https://wonderland.v8.1c.ru/blog/uluchsheniya-v-sintaksise-yazyka-1s-dlya-raboty-s-asinkhronnymi-funktsiyami/
12 Мимохожий Однако
 
28.10.22
11:15
(11) Совместимость конфигурации должна быть 8.3.18
13 Ychenik1c
 
28.10.22
12:19
(8) Что то я запамятовал. Извиняюсь.
(10) Спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс