#0
by bahtik
Здравствуйте! Такая задача. При интерактивном проведении документа необходимо проверить некое условие, задать вопрос пользователю и в зависимости от его ответа либо выполнить проведение, либо отменить команду. Т.к. режим использования модальности отключен, то такой код: &НаКлиенте ТекстВопроса = "У клиента имеется достаточно средств на депозите, чтобы оплатить оказанные ему услуги. Клиент действительно хочет рассчитаться наличными?"; Иначе ТекстВопроса = "У клиента имеются средства на депозите для частичной оплаты оказанных ему услуг. Клиент действительно хочет оплатить всю сумма наличными?"; КонецЕсли; Все работает, но возникает проблема, что если пользователь нажал "Провести и закрыть", то после его утвердительного ответа документ проведется но форма не закроется. В общем, нужно узнать, какую кнопку нажал пользователь: "Провести и закрыть" или просто "Провести". Как это сделать?
#2
by Ёпрст
примитив - записать в переменную что либо в принажатиикнопки. потом смотри эту переменную где угодно
#3
by Лефмихалыч
Но так делают только мудаки. Ответы на такие вопросы должны храниться в документе, а для этого предусмотрены реквизиты объектов и проверки заполнения
#4
by bahtik
Это понятно. А стандартных механизмов никаких нет? Что-то вроде кода возврата диалога и т.п.?
#5
by bahtik
Как тут использовать реквизиты объектов и проверки заполнения? Нужно задать уточняющий вопрос, а не проверять, все ли правильно заполнил пользователь.
#6
by Fish
Когда же люди научатся читать СП? "Глобальный контекст (Global context) ПоказатьВопрос (ShowQueryBox) Синтаксис: ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>) Параметры: Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после закрытия окна ввода значения со следующими параметрами: <РезультатВопроса> - результат выбора пользователя: значение системного перечисления или значение, связанное с нажатой кнопкой. В случае закрытия диалога по истечении времени - значение Таймаут, <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения"
#8
by bahtik
Ну и? Читать умею вроде. И в курсе про дополнительные параметры. И если посмотришь на код, то я их там и использую. И вопрос как раз и заключается в том, как узнать, что нажал пользователь, чтобы передать это значение в дополнительные параметры.
#10
by bahtik
Еще раз повторяю, если кто неправильно понял мой вопрос: нужно просто узнать, нажал пользователь "Провести и закрыть" или "Провести". Еще до самого вопроса.
#11
by Лефмихалыч
ниух все уточняющие вопросы. Если для проведения нужно какое-то значение, его нужно хранить в документе и не давать проводить, пока значение не заполнено.
#13
by bahtik
Да причем тут заполнено или не заполнено? Еще раз: пользователь выбрал, что клиент рассчитывается наличными, но при этом на депозите клиента есть бабло. Вот я и спрашиваю пользователя, а клиент реально не хочет использовать бабло с депозита, или это ты забыл изменить режим оплаты с "наличными" на "с депозита"? Никаких тут реквизитов и т.п.
#14
by bahtik
Если пользователь отвечает "Да" (т.е. "ну да, ничего я не забыл, просто клиент так хочет"), то так и продолжаем проводить документ. А если пользователь выбирает "нет" (т.е. "ой, да, забыл, ща выберу, что надо"), то отменяем команду и позволяем пользователю подумать и выбрать другой режим оплаты.
#17
by bahtik
Блин, ну и зачем мне про "режим модальности". Короче, упрощаю вопрос. Просто ситуация: пользователь нажал одну из двух кнопок в документе, либо "Провести и закрыть", либо "Провести". Как узнать какую из них?
#18
by Лефмихалыч
ни как. Удалить генерируемые системой кнопки и сделай свои, которые будут вызывать нужные тебе методы
#20
by bahtik
Ну это я и так понимаю, просто думал, что должны же быть какие-то стандартные механизмы.
#21
by Fragster
потому что в той статье написано, цитата: В обработчике события формы ПередЗаписью также может возникнуть потребность задать вопрос. Как и в предыдущем примере. Однако здесь вопрос так просто не решается. Отличие заключается в следующем. В предыдущем примере, оказываясь в обработчике ПередЗакрытием, мы однозначно знали действие, которое должно быть выполнено. Это закрытие формы. Поэтому в обработке оповещения мы смело писали Закрыть. Но в обработчике ПередЗаписью мы такой однозначной информации не имеем. В этом обработчике мы можем оказаться по двум причинам: если пользователь нажал Записать, или если он нажал Записать и закрыть. То есть дальнейший сценарий действий нам неизвестен. Определить его стандартными способами, находясь внутри этого обработчика, мы не можем. Поэтому тут можно предложить три варианта, но все они, к сожалению, обладают недостатками: Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике. Это не всегда возможно; В обработке оповещения с помощью собственной блокирующей формы задавать пользователю развернутый вопрос, предполагающий точное описание дальнейших действий: Отказаться?, Только записать?, Записать и закрыть? Это может выглядеть не очень красиво, ведь пользователь уже нажал "Записать и закрыть", а его опять об этом спрашивают; Не использовать стандартные команды формы Записать, "Записать и закрыть". Вместо них создать собственные команды, в которых и выполнять необходимые алгоритмы. Создание собственных команд потребует дополнительных трудозатрат.
#22
by bahtik
Понятно. Т.е. стандартного механизма нет. Печально. Ладно, придется делать свои кнопки... Спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- как узнать остаток по кассе в любой валюте имеющейся в справочнике валют?
- Как узнать размер таблицы в SQL базе?
- Как узнать узнать идентификатор конфигурации
- Как узнать на какую версию платформы рассчитана конфигурация?
- Как узнать на какую фирму hasp ключ?
- v7: Как узнать какую строку в документе выбрал пользователь?
- В подписке на событие узнать Интерактивная запись или нет?
- Как узнать, на какую кнопку нажал пользователь (Управляемые формы)
В этой группе 1С
- журнал регистрации нетленка 1С
- Размер файла CF и оптимизация конфы
- Зависание процесса 1cv8.exe при закрытии программы
- Ocvita Barcode, иногда вываливается 1с
- Не освобождается порт сканера ШК при закрытии программы. Как поменять?
- Картинка в динамическом списке 1с8.3
- % скидки (наценки)
- Что такое GUID
- 1с УПП 1.3 восстановление последовательности партионного в разрезе контрагентов
- Как откатить присвоение значения в поле ввода УП
- УТП, Оборотно-сальдовая ведомость по счету. Не совпадает с Карточкой Счета
- SOAP-запрос по методу POST
- KLS Backup - как удалить некоторые файлы после бэкапа?
- Как в УТ 11.1 продавать товар по шт, а в ТОРГ12 чтобы он попадал КОРОБКАМИ
- ЗУП. 8.2 или 8.3 ?
- Отчет Товары на складах по документам УТ 10.3
- Ищу софт для настройки сканера ШК NCR 7872-0693
- Камин 5.0 начисление по среднему средний заработок = 0 что не заполнено ??
- Выбрать в табличной части документа элемент табличной части справочника
- Недостаточно полномочий для печати непроведенного документа