Інформування користувача
1. Випадки, коли необхідно довести інформацію до користувача:Див. також
1. Випадки, коли необхідно довести інформацію до користувача:
- Безліч повідомлень (протокол) щодо неможливості виконання тієї чи іншої дії.
- Безліч повідомлень (протокол) щодо виконання тієї чи іншої дії.
- Інформація про помилку виконання дії.
- Інформація про успішне виконання тієї чи іншої дії під час роботи у формі.
- Інформація про успішне виконання тієї чи іншої дії за відсутності форми.
1.1. Інформація про помилки, виявлені під час перевірки заповнення, повинна виводитися в панелі повідомлень форми. Наприклад, такий спосіб інформування користувача пропонує платформа для найменування довідників. Перевірки заповнення можна поділити на два випадки:
А) Перевірку заповнення реквізитів об'єкта слід виконувати поза транзакцією запису об'єкта.
Приклад:
- Під час спроби записати об'єкт необхідно видати низку повідомлень про його неправильне заповнення;
- Під час виконання команди "Перерахувати ціни" необхідно видати повідомлення про помилки перерахунку цін товарів, вибраних у документі.
Засоби для реалізації:
- Властивість Проверка заполнения
- Обробник ОбработкаПроверкиЗаполнения (у цьому випадку для формування повідомлень про помилки слід застосовувати об'єкт СообщениеПользователю)
Б) Перевірку цілісності об'єкта та пов'язаних із ним даних слід виконувати в транзакції запису об'єкта.
Приклад:
- Перевірка складських залишків товарів і видавання повідомлень про нестачу товарів
Засоби для реалізації:
- Обробники ПередЗаписью і ПриЗаписи
- Для формування повідомлень про помилки слід застосовувати об'єкт СообщениеПользователю
- Для відмови від запису об'єкта встановлювати параметр Отказ = Истина
При цьому
- якщо помилкова ситуація виникає в процедурі або функції, яка має загальний характер (не має прямого стосунку до запису об'єкта, може викликатися в контексті найрізноманітніших дій), то слід використовувати ВызватьИсключение (див. нижче п.1.3, приклад №2) Але якщо помилкова ситуація виникає в процедурі або функції, яка безпосередньо пов'язана із записом об'єкта, користувач може оперативно усунути цю помилку (тобто це помилка введення даних користувачем, а не помилка налаштування системи), то слід застосовувати варіант (Б).
- слід мінімізувати кількість перевірок, які виконуються під час запису об'єкта. Під час запису повинні виконуватися лише перевірки, що мають транзакційний характер. Наприклад, якщо підрозділ працівника можна змінити в будь-який момент часу і при цьому не перевіряється, чи існують уже документи, у яких вибрано цього працівника, то також немає сенсу перевіряти під час запису документа відповідність вибраного працівника та заданого підрозділу. Таку перевірку слід виконувати в процедурі ОбработкаПроверкиЗаполнения до початку транзакції запису.
1.2. Інформація про протокол виконаних дій може виводитися в окремому полі у формі.
Приклад:
- Під час виконання команди форми "Прокоментувати розрахунок" видати інформацію про використані під час розрахунку дані та проміжні результати розрахунку
Засоби для реалізації:
- Формування повідомлень в окремому реквізиті форми та зміна видимості поля у формі;
- Відкриття окремої форми зі списком повідомлень.
1.3. Інформація про помилку повинна доводитися до користувача в модальному діалозі. Наприклад, такий спосіб інформування користувача пропонує платформа під час виведення системних повідомлень про помилку: повідомлення про неунікальність коду, неунікальність запису регістру відомостей, незадану дату документа тощо.
Приклад №1:
- Під час виконання локальної команди форми "Заповнити знижку" необхідно повідомити, що контрагент ще не вибраний
- Під час виконання локальної команди "Розрахувати зарплату" необхідно повідомити, що в системі ще не задано курс валюти на поточний місяць.
Спосіб реалізації:
- Перевіряти необхідні значення в коді форми та використовувати метод глобального контексту Предупреждение.
- У разі якщо є варіант вирішення проблеми, рекомендується використовувати функцію Вопрос. Наприклад:
Вопрос(НСтр("ru='Цього місяця ще не задано курс валюти. Використовувати курс за минулий місяць?'"), ...))
Приклад №2:
- Під час виконання функції розрахунку крос-курсу валюти щодо управлінської валюти повідомити, що не задано курс валюти, не задано управлінську валюту тощо.
Спосіб реалізації:
- Викликати виняток. Наприклад:
ВызватьИсключение НСтр("ru='Не встановлено управлінську валюту'")
1.4. Інформація про успішне виконання дії у формі повинна виводитися в разі, якщо факт виконання команди не очевидний для користувача. Система повинна видавати ту чи іншу реакцію на будь-яку команду. Наприклад, неправильно мовчки "проковтувати" натискання кнопки форми.
Доводити інформацію до користувача рекомендується як за допомогою модального діалогу (наприклад, процедури Предупреждение), так і за допомогою методу ПоказатьОповещениеПользователя. Застосовувати процедуру Предупреждение слід у тому разі, якщо потрібно "призупинити" роботу користувача та звернути його увагу на результат виконання команди.
Приклад:
- Під час виконання команди форми "Перевірити заповнення" необхідно повідомити, що перевірка не виявила помилок;
- Під час виконання команди форми "Обмежити залишками на складі" необхідно повідомити, що кількість товарів перевірено й не було зменшено;
- Під час виконання команди форми "Прийняти зміни" необхідно повідомити, що оброблено всі п'ять вибраних документів.
Спосіб реалізації:
- Використовувати процедуру Предупреждение
Водночас не слід інформувати користувача про очевидно виконану дію. Наприклад, не слід повідомляти про успішне виконання команди "Заповнити" за умов, коли список товарів, що заповнюється, у користувача "на виду", і користувач і так чітко бачить результат виконання команди.
1.5. Інформація про успішне виконання дії за відсутності форми на екрані також повинна виводитися в тому разі, коли для користувача може виявитися неочевидним факт виконання дії.
Приклад:
- Під час виконання стартової обробки інформаційної бази повідомити, що обробку виконано успішно.
Спосіб реалізації:
- Використовувати процедуру Состояние.
- В окремих випадках, коли потрібно записати факт дії над об'єктом в історію (меню Сервис - История), використовувати процедуру ПоказатьОповещениеПользователя, передавши до неї навігаційне посилання на об'єкт інформаційної бази.
2. У випадках, коли повідомлення користувачу виводяться програмно за допомогою об'єкта СообщениеПользователю, слід уникати виведення великої кількості повідомлень у циклі (кілька сотень і більше), оскільки це може призводити до істотного уповільнення або аварійного завершення роботи клієнтського застосунку. Наприклад, якщо в документі під час проведення кількість помилок заповнення перевищує розумні межі, необхідно припиняти перевірку заповнення та зупинятися, повідомляючи про наявність безлічі помилок ("Також не заповнено й інші 256 рядків табличної частини Товари." або "Також не вдалося провести ще 256 документів."). Граничну кількість повідомлень слід вибирати виходячи з прикладного завдання.
Але при цьому не потрібно вживати жодних заходів у прикладному коді в інших випадках, коли повідомлення виводяться автоматично під час перевірки заповнення реквізитів або коли кількість повідомлень, що виводяться у штатних сценаріях роботи, свідомо невелика.
Див. також
- Повідомлення користувачу