Провести и закрыть не выводится сообщение

Обновлено: 02.07.2024

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

Нет, 1С. Простой вопрос: перепроводим 100500 документов регламентным заданием. Кто прочитает это все?

Если никто не прочитает и устраивает - то инфа не мегаважная, значит можно и вообще не сообщать. Логика!

>> А для этого есть отчеты. А в типовых можно еще и авторассылку настроить Представь, ты в машине хочешь индикатор непристегнутого ремня. Ты готов заплатить за один светодиод-индикатор. А тебе говорят: "Для этого есть телефон сервис-инженера, звоните ему, он сообщит, все ли у вас пристенгуты. А можно еще настроить рассылку уведомлений о ремне по адресу прописки".

Аналогично, индикатор ремня в машине должен загореться не в момент влетания в камаз, а перед тем как машина поехала.

Вот поэтому и подумал, что не взлетит. Давно им пользовался в последний раз. Пиши в задачу для пользователя. Пиши в ЖР.

Проверить такую ситуацию - продублировать все расчеты, которые выполняются до нужного места в модуле набора записей? Если ХитроРасчитаннаяПоСтаМодулямШтука = ДругаяХитроРасчитаннаяПоСтаМодулямШтука Тогда Сообщить("Проверь, все ли тебе нравится"); КонецЕсли Сейчас попробую с задачей.

Можно запихнуть все ссылки на объекты по которым нужно комментирование в РС, и потом показать в своей форме

варианты: 1.пишешь в регистр, по окончанию проведения читаешь регистр, сообщаешь пользователю 2.создаешь задачу 3.как-то можно извернуться с фоновым заданием

а если переопределить стандартную команду "провести и закрыть" и если чет не так, то сообщать и не закрывать, а если все ок, то со спокойной душой "application.terminate"

ПослеЗаписи - это в форме. вопрос в том, что документ может проводиться еще и из списка, и при восстановлении последовательности или ещё как

* вопрос в том, что видов документов много. и в каждый совать доработку ПослеЗаписи не комильфо * Мы на сервере, ТабДок.Показать там недоступно

Я делаю так. Можно выводить в текстовый лог при помощи FileSystemObject (он не блокирует для чтения и можно непрерывно смотреть ленту FAR-ом по F3 по мере проведения документов).

а если проверки вынести в ПередЗаписью объекта с проверкой режимЗаписи=проведение? тогда словив отказ форма не должна закрыться

При проведении документа нужно кое-что сообщить пользователю.

(1) оно ведет себя аналогично

(6) Нет, 1С.
Простой вопрос: перепроводим 100500 документов регламентным заданием. Кто прочитает это все?

Проблема заказчика решается за 5 минут. В некоем модуле набора записей пишем

(8) Если никто не прочитает и устраивает - то инфа не мегаважная, значит можно и вообще не сообщать. Логика!

(14) >> А для этого есть отчеты. А в типовых можно еще и авторассылку настроить

Представь, ты в машине хочешь индикатор непристегнутого ремня. Ты готов заплатить за один светодиод-индикатор. А тебе говорят: "Для этого есть телефон сервис-инженера, звоните ему, он сообщит, все ли у вас пристенгуты. А можно еще настроить рассылку уведомлений о ремне по адресу прописки".

Тонкий клиент, веб-клиент, толстый клиент.

(15) Аналогично, индикатор ремня в машине должен загореться не в момент влетания в камаз, а перед тем как машина поехала.

(17) Вот поэтому и подумал, что не взлетит. Давно им пользовался в последний раз.

Пиши в задачу для пользователя. Пиши в ЖР.

(16) Проверить такую ситуацию - продублировать все расчеты, которые выполняются до нужного места в модуле набора записей?

(19) Сейчас попробую с задачей.

Можно запихнуть все ссылки на объекты по которым нужно комментирование в РС, и потом показать в своей форме

А то маловато наркотиков.

(0)варианты:
1.пишешь в регистр, по окончанию проведения читаешь регистр, сообщаешь пользователю
2.создаешь задачу
3.как-то можно извернуться с фоновым заданием

а если переопределить стандартную команду "провести и закрыть" и если чет не так, то сообщать и не закрывать, а если все ок, то со спокойной душой "application.terminate"

(27) зачем? не понял немного

Я в процедуре "ПослеЗаписи" выдаю ТабДок, и он весит спокойно.

ПослеЗаписи - это в форме. вопрос в том, что документ может проводиться еще и из списка, и при восстановлении последовательности или ещё как

(0) Я делаю так. Можно выводить в текстовый лог при помощи FileSystemObject (он не блокирует для чтения и можно непрерывно смотреть ленту FAR-ом по F3 по мере проведения документов).

(0) а если проверки вынести в ПередЗаписью объекта с проверкой режимЗаписи=проведение?
тогда словив отказ форма не должна закрыться

Единственное, это способ не подходит для веб-клиента, т.к. цитата из документации:


Рассмотрим подробно, что при этом происходит и как можно добиться такого же поведения в своем коде. В качестве примера возьмем ситуацию проведения документа.

Теперь посмотрим, как можно добиться такого поведения полностью программно.

Первое, что необходимо сделать - зарегистрировать в системе соответствие объекта и имени реквизита формы. Для этого в глобальном контексте реализована функция УстановитьСоответствиеОбъектаИРеквизитаФормы(). Сделать это можно следующим образом:

В данном фрагменте выполняется преобразование объекта из данных формы в реальный объект и устанавливается его соответствие с реквизитом формы по имени "Объект".

ВАЖНО
Привязка объекта к имени реквизита формы действует только для конкретного экземпляр объекта, а не для его ссылки, и живет до тех пор, пока этот экземпляр существует.

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

Впервые этот прием был описан мною в обсуждении темы на Инфостарте.
Здесь же я проверил свои предположения о возможности оптимизации описанной там версии приема, и описал уже результирующую оптимизированную версию.

Ограничения

Общая идея

Подробности реализации на примере

Обоснование

Но если пользователь нажимает на кнопку "Провести и закрыть", то он это предупреждение не увидит (см. видео).

Добавление реквизита формы

В обработчике события формы ПослеЗаписи(. ), подключим обработчик ожидания, который вызовется через минимально возможное время - 0.1 сек. Но вызовется он только в том случае, если форма не закроется. Если же запись объекта была при закрытии формы, то этот обработчик вызван не будет.

Демонстрация результата

В результате мы получили более дружелюбное к пользователю поведение системы (см. видео).

О Лицензии

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

А для информирования о выполняемом действии рекомендуется использовать метод встроенного языка ПоказатьОповещениеПользователя().


При обработке на сервере:

Необходимо зарегистрировать в системе соответствие объекта и имени реквизита формы. Для этого в глобальном контексте реализована функция УстановитьСоответствиеОбъектаИРеквизитаФормы(). Сделать это можно следующим образом:

В данном фрагменте выполняется преобразование объекта из данных формы в реальный объект и устанавливается его соответствие с реквизитом формы по имени "Объект".

ТипШаблонПример
РеквизитИмяРеквизитаКонтрагент
Табличная частьИмяТабличнойЧастиСкидки
Реквизит табличной частиИмяТабличнойЧасти[ИндексСтроки].ИмяРеквизитаНоменклатура[10].Количество
Реквизит набора записей[ИндексСтроки].ИмяРеквизита[10].Курс

ПоказатьОповещениеПользователя - оповещение возникает в правом нижнем углу приложения и сообщает о совершенном действии. В течение нескольких секунд оно постепенно гаснет и пропадает. При этом, если навести на оповещение курсор мышки, оно не гаснет, и есть возможность внимательно его прочитать:


Код 1C v 8.3 Код 1C v 8.3

Распечатать

Похожие FAQ

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента? 21
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка? 15
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Табличная часть ~ Как настроить отбор строк? 4
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство: в обычном приложении параметр для ОтборСтрок - Отбор. в управляемом Список НЕ модальных методов в 1С 4
Найдено в интернете но говорят что с диска ИТС. Динамический список ~ отбор в динамическом списке программно 2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Для того чтобы новый Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Читайте также: