Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 мар 2025, 17:15

Реализация диалогового окна

Автор lhf826, 11 мар 2025, 17:06

0 Пользователей и 1 гость просматривают эту тему.

lhf826

Есть следующий код, который находится в модуле объекта документа.

Хотела реализовать предупреждение о том, что если количества основного не хватает и берется из резерва, то всплывало уведомление или окно "Внимание, затронут резерв" после нажатия "Провести", и пользователь имел возможность согласиться/отказаться.  (в коде условие еще не переписано, изначально думала вообще не трогать резерв).
Попытка реализовать предупреждение о затрагивании резерва через диалоговое окно в модуле объекта привела к ошибкам, так как интерактивные элементы не поддерживаются в серверном коде.

Как грамотно реализовать существующую задумку? Есть ли варианты упростить задачу?

Процедура ОбработкаПроведения(Отказ, Режим)
    СсылкаНаТЗ = Основание;
    ОшибкаВыдачи = ""; // Переменная для хранения ошибки

    Если СсылкаНаТЗ <> Неопределено Тогда
        ДокументТЗ = СсылкаНаТЗ.ПолучитьОбъект();


     
        Для Каждого СтрокаВыдачи Из ТЗДляВыдачи Цикл
            ДоступноеКоличество = ДокументТЗ.Количество - ДокументТЗ.Резерв;

            Если ДоступноеКоличество <= 0 Тогда
                ОшибкаВыдачи = "Ошибка! Недостаточно доступных ТЗ. Доступно: " + ДоступноеКоличество;
            КонецЕсли;

            Если СтрокаВыдачи.Количество > ДоступноеКоличество Тогда
                ОшибкаВыдачи = "Ошибка! Требуемое количество (" + СтрокаВыдачи.Количество + ") превышает доступное (" + ДоступноеКоличество + ")";
            КонецЕсли;
        КонецЦикла;

        Если ОшибкаВыдачи <> "" Тогда
            Сообщить(ОшибкаВыдачи);
            Отказ = Истина;
            Возврат;
        КонецЕсли;

        Для Каждого СтрокаВыдачи Из ТЗДляВыдачи Цикл
            ДокументТЗ.Количество = ДокументТЗ.Количество - СтрокаВыдачи.Количество;
        КонецЦикла;

        ДокументТЗ.Записать();
...
КонецПроцедуры       

antoneus

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

lhf826

antoneus, Спасибо большое! Попробую! :bleh:

lhf826

antoneus, я немного туплю. Весь ли функционал реализовывать в модуле формы?

antoneus

Весь. Поскольку при проверке выполняется обращение к ТЧ документа основания, от которого у нас есть только ссылка, саму проверку надо отнести на сервер и по возвращенным на клиент результатам вступать (или не вступать) в диалог с пользователем.

LexaK

вот как раз весь функционал не надо переносить в модуль формы!
на форме надо сделать только тот код который обрабатывает диалог.
на форме вызываете код из модуля документа, получаете результат,
и в зависимости от него выводите нужные сообщения пользователю.
В этом случае под проверки в модуле документа будет доступен и при
работе с объектом документа без формы.
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск