1С:Предприятие 8.2 /
Разработчикам /
Разработка пользовательских интерфейсов
Информирование пользователя
1. Случаи, когда необходимо довести информацию до пользователя :
- Множество сообщений (протокол) по поводу невозможности выполнения того или иного действия.
- Множество сообщений (протокол) по поводу выполнения того или иного действия.
- Информация об ошибке выполнения действия.
- Информация об успешном выполнении того или иного действия при работе в форме .
- Информация об успешном выполнении того или иного действия в условиях отсутствия формы.
1.1. Информация об ошибках, выявленных при проверке заполнения, должна выводиться в панели сообщений формы. Например, такой способ информирования пользователя предлагает платформа для наименования справочников. Проверки заполнения можно разделить на два случая:
А) Проверку заполнения реквизитов объекта следует выполнять вне транзакции записи объекта.
Пример:
- При попытке записать объект необходимо выдать ряд сообщений о его неправильном заполнении;
- При выполнении команды "Пересчитать цены" необходимо выдать сообщения об ошибках пересчета цен товаров, выбранных в документе.
Средства для реализации:
- Свойство Проверка заполнения
- Обработчик ОбработкаПроверкиЗаполнения (в этом случае для формирования сообщений об ошибках следует применять объект СообщениеПользователю)
Б) Проверку целостности объекта и связанных с ним данных следует выполнять в транзакции записи объекта.
Пример:
- Проверка складских остатков товаров и выдача сообщений о нехватке товаров
Средства для реализации:
- Обработчики ПередЗаписью и ПриЗаписи
- Для формирования сообщений об ошибках следует применять объект СообщениеПользователю
- Для отказа от записи объекта устанавливать параметр Отказ = Истина
При этом
- если ошибочная ситуация возникает в процедуре или функции, которая носит общий характер (не имеет прямого отношения к записи объекта, может вызываться в контексте самых разных действий), то следует использовать ВызватьИсключение (см. ниже п.1.3, пример №2) Но если ошибочная ситуация возникает в процедуре или функции, которая непосредственно связана с записью объекта, пользователь может оперативно устранить эту ошибку (то есть это ошибка ввода данных пользователем, а не ошибка настройки системы ), то следует применять вариант (Б).
- следует минимизировать число проверок, которые выполняются во время записи объекта. Во время записи должны выполняться только проверки, которые носят транзакционный характер. Например, если подразделение сотрудника можно сменить в любой момент времени и при этом не проверяется, существуют ли уже документы, в которых выбран данный сотрудник, то также не имеет смысла проверять при записи документа соответствие выбранного сотрудника и заданного подразделения. Такую проверку следует выполнять в процедуре ОбработкаПроверкиЗаполнения до начала транзакции записи.
1.2. Информация о протоколе выполненных действий может выводиться в отдельном поле в форме.
Пример:
- При выполнении команды формы "Прокомментировать расчет" выдать информацию об использованных при расчете данных и промежуточных результатах расчета
Средства для реализации:
- Формирование сообщений в отдельном реквизите формы и изменение видимости поля в форме;
- Открытие отдельной формы со списком сообщений.
1.3. Информация об ошибке должна доводиться до пользователя в модальном диалоге. Например, такой способ информирования пользователя предлагает платформа при выводе системных сообщений об ошибке: сообщения о неуникальности кода, неуникальности записи регистра сведений, незаданной дате документа и т.п.
Пример №1:
- При выполнении локальной команды формы "Заполнить скидку" необходимо сообщить, что еще не выбран контрагент
- При выполнении локальной команды " Рассчитать зарплату " необходимо сообщить, что в системе еще не задан курс валюты на текущий месяц.
Способ реализации:
- Проверять необходимые значения в коде формы и использовать метод глобального контекста Предупреждение.
- В случае если есть вариант решения проблемы, рекомендуется использовать функцию Вопрос. Например:
Вопрос(НСтр("ru='В этом месяце еще не задан курс валюты. Использовать курс за прошлый месяц?'"), ...))
Пример №2:
- При выполнении функции расчета кросс-курса валюты по отношению к управленческой валюте сообщить, что не задан курс валюты, не задана управленческая валюта и т.п.
Способ реализации:
- Вызвать исключение. Например:
ВызватьИсключение НСтр("ru='Не установлена управленческая валюта'")
1.4. Информация об успешном выполнении действия в форме должна выводиться в случае, если факт выполнения команды не очевиден для пользователя. Система должна выдавать ту или иную реакцию на любую команду. Например, неправильно "проглатывать" молча нажатие на кнопку формы.
Доводить информацию до пользователя рекомендуется как при помощи модального диалога (например, процедуры Предупреждение), так и при помощи метода ПоказатьОповещениеПользователя. Применять процедуру Предупреждение следует в том случае, если требуется "приостановить" работу пользователя и обратить его внимание на результат выполнения команды.
Пример:
- При выполнении команды формы " Проверить заполнение " необходимо сообщить, что проверка ошибок не обнаружила;
- При выполнении команды формы "Ограничить остатками на складе" необходимо сообщить, что количество товаров проверено и не было уменьшено;
- При выполнении команды формы "Принять изменения" необходимо сообщить, что обработаны все пять выбранных документов.
Способ реализации:
- Использовать процедуру Предупреждение
Вместе с тем, не следует информировать пользователя об очевидно выполненном действии. Например, не следует сообщать об успешном выполнении команды "Заполнить" в условиях, когда заполняемый список товаров у пользователя "на виду", и пользователь и так отчетливо видит результат выполнения команды.
1.5. Информация об успешном выполнении действия в условиях отсутствия формы на экране должна также выводиться в том случае, когда для пользователя может оказаться неочевидным тот факт, что действие выполнено.
Пример:
- При выполнении стартовой обработки информационной базы сообщить, что обработка выполнена успешно.
Способ реализации:
- Использовать процедуру Состояние.
- В отдельных случаях, когда требуется записать факт действия над объектом в историю (меню Сервис - История), использовать процедуру ПоказатьОповещениеПользователя, передав в нее навигационную ссылку на объект информационной базы.
2. В случаях когда сообщения пользователю выводятся программно с помощью объекта СообщениеПользователю, следует избегать вывода большого количества сообщений в цикле (несколько сотен и более), т.к. это может приводить к существенному замедлению или аварийному завершению работы клиентского приложения. Например, если в документе при проведении количество ошибок заполнения превышает разумные пределы, необходимо прекращать проверку заполнения и останавливаться, сообщая о наличии множества ошибок ("Также не заполнены и другие 256 строк табличной части Товары." или "Также не удалось провести еще 256 документов."). Предельное число сообщений следует выбирать исходя из прикладной задачи.
Но при этом не требуется предпринимать никаких мер в прикладном коде в других случаях, когда сообщения выводятся автоматически при проверке заполнения реквизитов, или когда число выводимых сообщений в штатных сценариях работы заведомо невелико.
См. также
- Сообщения пользователю
Индивидуальные компьютерные курсы
Курс "Бухгалтерский учет + 1С:Бухгалтерия 8.2 для начинающих"
Курс Microsoft Excel
Курс Microsoft PowerPoint для начинающих
Курсы программирования 1С:Предприятие 8.2
Другие материалы по теме:
проверить заполнение, рассчитать зарплату, проверка заполнения, пример:, команды, функции, валюты, курс, средства, действия..., буфер обмена, копировать, пользователь, формы, объект, информация, результат, количество, конфигурирование, пример, сотрудник, документов, действия, расчет, счет
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Разработка пользовательских интерфейсов
Другие материалы по теме:
Общие механизмы товарных документов
Общесистемные механизмы и принципы
Зачем в "Нормах затрат" нужно задавать суммы по материалам и где эти суммы потом используются?
Нас находят: 1С ПередЗаписью вопрос пользователю, 1с 8 2 сообщениепользователю, способы информирования пользователей, сообщениепользователю примеры, СообщениеПользователю, ПоказатьОповещениеПользователя 1с, ПоказатьОповещениеПользователя, ошибка при выполнении обработчика передзаписью, ошибка при выполнении обработчика - обработка заполнения, как исправить ошибку при выполнении обработчика передзаписью
Мы на Facebook