Создать информацию об ошибке 1с

Отображение ошибок

Механизм отображения ошибок предназначен для улучшения обратной связи пользователей с разработчиками, ускорения реакции на ошибки и улучшения поддержки. Разным целевым группам он предоставляет следующие возможности:

  • Конечные пользователи: если происходит ошибка, пользователь получает либо подсказку для исправления ошибки (если пользователь может ее исправить сам) либо получает удобный способ сообщить об ошибке специалистам (в техподдержку и т. п.).

  • Прикладные разработчики: имеют возможность обрабатывать все ошибки, возникающие в приложении, менять текст и форму отображения ошибки и показывать пользователям полезную для них информацию.

  • ИТ-отделы компаний клиентов, а также компании, осуществляющие внедрения продуктов 1С: имеют возможность быстрого получения информации об ошибках и возможность проинформировать пользователя о том, куда обращаться для решения проблемы.

Сообщение об ошибке

Сообщение об ошибке содержит иконку, соответствующую категории ошибки, текст, а также может содержать ссылку для формирования отчета об ошибке.


Отображение ошибок

Декларативная настройка текста сообщения об ошибке

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


Отображение ошибок


Отображение ошибок

Отчет об ошибке

Сообщение об ошибке может содержать ссылку для автоматического формирования отчета об ошибке. Доступно как интерактивное, так и программное формирование отчета. Программно можно добавлять в отчет свои вложения и объекты. Отчет об ошибке можно сохранить на диск или отправить в сервис регистрации ошибок.


Отображение ошибок

Сервис регистрации ошибок

Сервис регистрации ошибок — внешний по отношению к платформе компонент, представляющий собой набор НТТР-сервисов с определенными интерфейсами. Он может быть реализован с помощью любой подходящей технологии. Например, это может быть информационная база «1С:Предприятия» с набором HTTP-сервисов.

В начале юридического договора, особенно в ИТ области, обычно есть раздел под названием Термины. В нем объясняется — что значит или включает в себя то или иное ИТ слово.

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

В программистом смысле слово ошибки имеет, наверное, два уточнения..

Что означает термин «ошибка» в программировании и в 1С

Ошибка – это поведение программы, отличающееся от задуманного. Каждый компьютер это уникальный комплекс программ и железа, отличающийся от другого компьютера.

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

Сюда же вероятно можно включить те ситуации, когда программа делает что-то не так, потому что программист о чем-то забыл или недодумал.

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

Например, программист задумывал, что сначала пользователь откроет файл, а потом программа сделает то-то и то-то. Однако когда программа была скопирована пользователю на компьютер и пользователь забыл открыть файл. Или пытался открыть, но файл оказался некорректный или винчестер «битый».
И программа сообщает пользователю: Эй, тут ошибка! Я не могу сделать то, что должна.

Ошибки 1С имеют несколько уровней – во первых сообщения об ошибках 1С могут принадлежать платформе 1С, которая сообщает о невозможности выполнить какие-то действия, которые она должна была выполнить из-за сложившихся обстоятельств.

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

Третий уровень – это ошибки 1С в данных. Данные в базе данных взаимосвязаны друг с другом. Тем не менее могут встречаются ситуации когда данные «портятся». Например, в одной из форм не стоят достаточные проверки, чтобы особенно креативный пользователь ввел что-то неправильно. Далее программа может сработать неверно, потому что алгоритм не предполагал что кто-то введет такое..

Сообщение об ошибке 1С

1С сообщает об ошибке выполнения программы на языке 1С с помощью типового окошка с текстом ошибки 1С и кнопками ОК и Подробнее.

Причем секрет тут в том, что в этом окошке отображается только краткое сообщение об ошибке 1С, которое зачастую программисту ни о чем не говорит.

Чтобы увидеть полное – нужно нажать на кнопку Подробно. Уже там будет отображена даже строка программы, в которой произошла ошибка 1С. Также можно перейти прямо в конфигуратор к этой строке.

Но пользователи об этом не знают.. И всегда присылают скриншот того первого окошка. Если присылают 🙂

Генерация исключения

Итак, мы рассматриваем ошибку 1С в программировании как способ/возможность программе сообщить пользователю о том, что она не может что-то сделать.

Пример. Нужно открыть файл. Но при открытии возможны ошибки 1С – например у пользователя нет доступа на чтение файла. Мы можем написать так:

Файл = ОткрытьФайл(ИмяФайла);
Если Файл = Ложь Тогда
      Сообщить(«Не удалось открыть файл»);
Иначе
      //программа идет дальше, делаем что-то с файлом
КонецЕсли;

В данном примере мы учли, что файл может быть не открыт с помощью конструкции «Если».

Однако у данного примера есть очевидные минусы:

  • Таких вариантов может быть много (не откроется файл, не прочитается файл до конца, пользователь пьян, выключили электричество..)
  • Могут быть неучтенные варианты, про которые программист не подумал.

Поэтому в программировании принято использовать прием под названием «генерировать исключение» — то есть позволить ошибке 1С произойти.

Программа делает вид, что файл в любом случае откроется. Никаких «Если» не пишется. Если же что-то пойдет не так, то программа собственно и сообщит об ошибке 1С – ее выполнение прервется.

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

  • Язык 1С – команда открыть файл
  • Платформа 1С – команда открыть файл
  • Windows API – команда открыть файл
  • Программа на ассемблере – команда открыть файл
  • Опа! Файл не открывается!
  • Программа на ассемблере прервана!
  • Функция Windows API прервана!
  • Платформа 1С выполнение программы прервано!
  • Программа на языке 1С прервана!
  • Пользователь видит сообщение.

Вопрос: кто выводит тогда сообщение об ошибке 1С? Откуда оно берется?

Перехват и обработка исключения

Так мы подходим к следующему приему: перехват исключений, сгенерированных во время выполнения этой цепочки.

Исключения переходят с нижнего уровня выполнения наверх, по цепочке. Если последний уровень не обработал исключение – то это сделает предыдущий уровень.

Пример. Обработаем исключение в языке 1С:
Попытка
      Файл = ОткрытьФайл(ИмяФайла);
      Строка = Файл.Прочитать();
Исключение
      Сообщить(«Файл не удалось открыть: не существует или нет прав доступа»);
КонецПопытки;

В этом примере мы обработали самостоятельно исключение (т.е. исключительную ситуацию или ошибку 1С). Таким образом именно мы сообщаем пользователю о произошедшей «ошибке» — невозможности открыть файл.

Когда мы делаем это самостоятельно – мы можем и не сообщать пользователю ничего, а просто пойти по другому варианту выполнения программы.

Легко заметить, что этот способ можно применять в том числе и на случай, когда в каком-то участке кода может произойти «какая-нибудь» ошибка 1С. Мы ее «ловим» и обрабатываем или сообщаем о ней пользователю.

Что будет, если не перехватить и не обработать ошибку 1С на нашем «верхнем» уровне? Тогда о ней сообщит следующий уровень ниже — платформа 1С. Как она это делает, мы только что говорили и смотрели на скриншоте.

Что будет, если платформа не отработает это? Правильно – это обычно отработает более нижний уровень – Windows. В этом случае программа 1С «упадет», а Windows сообщит – программа совершила недопустимую операцию и будет закрыта.

Что будет, если Windows не отработает это? Вы наверняка это видели – компьютер зависнет или перезагрузится.

Вложенный перехват и транзакции

Как Вы думаете, какие сообщения увидит пользователь при выполнении данного примера?

Попытка
      Попытка
           ф = 1/0;
      Исключение
           Сообщить("Конкретная ошибка");
      КонецПопытки;
Исключение
      Сообщить("Общая ошибка");
КонецПопытки;

Верно! Сработает внутренний обработчик и сообщит «Конкретная ошибка», а внешний не сработает.

Однако с точки зрения программы здесь произошла ошибка 1С, хотя она и была отработана. Где-то там у себя в мозгах платформа запомнила – здесь была ошибка 1С.

Это имеет значение для выполнения транзакций. Транзакция – это несколько действий с данными в базе данных, которые должны выполняться только вместе. Как мы понимаем возможно причиной их невыполнения вместе могут быть ошибки 1С. Поэтому существует следующий механизм:

НачатьТранзакцию();
//создали справочник 1, но на самом деле он не записался в базу данных
Спр1.Записать();
//создали справочник 2, но на самом деле он не записался в базу данных
Спр2.Записать();
ЗафиксироватьТранзакцию();
//эта команда записала в базу данных все, что было сделано начиная с ‘НачатьТранзакцию’

Функция ЗафиксироватьТранзакцию() может быть выполнена только в случае, если с момента вызова НачатьТранзакцию() не произошло ни одной ошибки 1С.

Если Вы при написании подобного кода понимаете, что в этой строке кода может быть ошибка 1С – Вы можете поставить ее обработку с помощью Попытка/Исключение. Однако платформа в этом случае все равно учтет, что ошибка 1С произошла и не станет фиксировать транзакцию и записывать данные в базу данных.

Непреднамеренные ошибки 1С

Итак, в программе 1С программистом может быть допущена ошибка 1С. В этом случае платформа 1С сообщит о ней.

В случае, если не удается понять, почему и когда такая ошибка 1С возникает, Вы можете использовать Попытка/Исключение, чтобы обработать ошибку 1С.

Также Попытка/Исключение можно использовать в случае, когда Вы хотели бы создать гарантированно безошибочный участок программы. Вы сможете быть уверены, что если даже ошибка 1С произойдет, то Вы ее отлавливаете и отрабатываете специальным образом.

Преднамеренные ошибки 1С

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

Вы можете в тексте программы делать вид что файл всегда откроется и число всегда поделится. Но использовать Попытка/Исключение как способ переключить программу на другой вариант исправления в случае, если такое произойдет. Или просто сообщить пользователю об ошибке 1С.

Собственный вызов ошибки 1С

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

Это можно сделать вот так:

Функция СделатьЧтото(Параметр)
      Если Параметр = Неопределено Тогда
           ВызватьИсключение «Ошибка в функции СделатьЧтото. Не указан параметр»;
      КонецЕсли;
КонецФункции

Для чего это требуется? В случае, когда Вы создаете функцию, которой будете пользоваться во многих местах, а может будут пользоваться и другие – это красивый способ одновременно убить нескольких зайцев:

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

Более корректные способы сообщения об ошибке 1С

Обычно когда требуется сообщить что-то пользователю, используются функции Сообщить() или Предупреждение().

Однако в типовых конфигурациях, таких как Бухгалтерия, Управление торговлей, УПП – есть специальная функция:
ОбщегоНазначения.СообщитьОбОшибке(«Текст»);

Ее плюсы:

  • Форма сообщения зависит от запущенного клиента
  • Записывает сведения в журнал регистрации
  • В некоторых конфигурациях реализована более красивая форма сообщения об ошибке 1С.

Анализ ошибок

При работе платформы 1С работает журнал регистрации. Кроме действий пользователя он также сохраняет сведения об ошибках 1С, которые происходили в течении работы платформы 1С.

В конфигураторе выберите пункт меню Администрирование/Журнал регистрации.

Нажмите кнопку Отбор (как на картинке). Установите отбор событий только по ошибкам 1С.

Журнал отобразит список происходивших ошибок. Кликните на строчку, чтобы рассмотреть конкретное сообщение подробнее.

Загрузка…

Как правильно сообщить разработчику/программисту об ошибке в базе 1С: Предприятие 8

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

Чаще всего ошибка в базах программы 1С: Предприятие 8 сопровождается минимальной достаточной информацией, чтобы ее локализовать у странить в кратчайшие строки. Но это возможно лишь при правильных действиях пользователя, направленных на сбор данных о проблеме и предоставлении этих данных программисту 1С.

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

* Скриншот(скрин) — изображение с экрана, либо полностью всего экрана, либо его части с актуальным фрагментом.

1. Начните письмо с предоставления информации о том, в какой именно момент работы с базой возникает ошибка, например: после нажатия той или иной кнопки, или при попытке открыть форму документа или справочника. Если проблема с каким-то одним документом, то сообщите специалисту номер и дату документа, если справочник — код элемента справочника. Указывайте точное название типов документов, например «Реализация товаров и услуг», «Акт сверки взаиморасчетов» — как они представлены в базе, а не то, как Вы их привыкли называть в простом общении — т.е. для указанных примеров — не «накладная» или «отгрузка», и не просто «акт». То же касается и справочников — «Контрагенты», а не, как пример, «клиент». Смотрите, как называются пункты меню, через которые Вы получаете доступ к тем или иным объектам базы.

2. Обязательно скрин первоначального окна ошибки:

1С 8 как правильно грамотно предоставить информацию об ошибке в базе программисту по 1С 8

3. Очень часто в окошке сообщения об ошибке имеется кнопка «Подробно…». Нажимаете на нее — откроется новое окно «Обнаруженные ошибки»:

1С 8 предоставление информации об ошибке специалисту из окна обнаруженные ошибки

Необходимо сделать скрин самого этого окна. Так же его вставить/вложить в письмо.

4. Следом, не закрывая окна «Обнаружены ошибки», продоложаем действия по сбору данных об ошибке в нем — необходимо еще вставить текст описания ошибки из этого окна в письмо.

Для этого правой кнопкой мыши вызываем контекстное меню в текстовом поле с ошибкой и выбиарем в открывшемся меню пункт «Выделить все» или, установив курсор мыши в любом месте текстового поля, нажать сочетание клавиш на клавиатуре «Ctrl + А»

как отправить текст ошибки программисту 1С 8

Далее для выделенного текста снова правой кнопкой мыши вызывается контекстное меню и выбрать пукнт «Копировать» или просто нажать сочетание клавиш «Ctrl + C»:

как скопировать текст ошибки в 1С 8 вставить в письмо, чтобы отправить программисту по 1С 8

И последнее действие в этом 4м пункте — вставить скопированный текст сообщения в тело электронного письма:

как правильно составить письмо с описанием ошибки в 1С 8

Почему-то у большинства пользователей часто проблема возникает именно в этом пункте — не могут выделить и вставить текст ошибки в письмо, поэтому этот момент рассмотрен достаточно подробно.

Не помешает так же указать и имя пользователя 1С, который получает ошибку, если на сделанных скринах этого не видно или ошибка возникает не у всех пользователей, а только у некоторых.

5. Начиная с более поздних релизов 1С (8.3.17, 8.3.18) информация об ошибке стала менее информативной, но получить ее расшифровку возможно без особых трудностей.

Если программа выводит при возникновении ошибки окно, содержащее ссылку «Отчет об ошибке», то отчет формировать и пытаться отправлять не нужно, т.к. в нем данные об ошибке представлены в «упакованном» виде, извлечение возможно, но доставит некоторые трудности.

1С 8 как получить текст ошибки, если есть только ссылка сформировать отчет об ошибке

Нужно в таком случае закрыть это предупреждение кнопкой «ОК» и открыть окно «О программе» через одноименный пункт «Главного меню». В нем нажать на ссылку «Информация для технической поддержки» и после текста «Ошибки:» выделить, скопировать и вставить в письмо.

Нажатие на изображении увеличит его
1С 8, получить информацию об ошибке, не формируя отчет об ошибке

6. Иногда за ошибку пользователи воспринимают реакцию программы на неправильные дествия. Даже если в момент возникновения ошибки появляются сообщения в других окнах —  о них тоже необходимо предоставить информацию, сделав скрин и скопировать/вставить текст в отправляемое письмо.

Пример такого информирования в окне «Служебные сообщения» по умолчанию в нижней части рабочей области окна программы 1С: Предприятие 8 для обычного приложения и сообщения. Текст из этого окна по аналогии, как это приведено выше, нужно скопировать и вставить в письмо. А так же в управляемом интерфейсе (как определить вид используемого приложения).

Нажатие на изображении увеличит его
1С 8 пример окна служебные сообщения с информацие об ошибке для предоставления специалисту программисту

1С 8 пример окна сообщения с информацие об ошибке для предоставления специалисту программисту в управляемом приложении

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

какие данны сообщить об ошибке в 1С 8

При выполнении вышеописанных действий существенно сократится время, необходимое для выявления причин ошибки и ее устранения. Если уж специалисту и потребуются уточнящие вопросы, то их будет минимальное количество, что, как уже было отмечено, обеспечит более оперативное решение вопроса.

Оцените, оказалась ли эта публикация полезна для Вас?




© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

02-07-2019

Журавлев А.С.
(Сайт azhur-c.ru)

Назад

О чем эта статья

Статья продолжает цикл статей «Первые шаги в разработке на 1С».

В ней мы рассмотрим способы информирования пользователя, которые присутствуют в платформе «1С:Предприятие» 8, а также акцентируем ваше внимание на некоторых особенностях работы этих механизмов, эти особенности связаны с режимом использования модальности.

Применимость

В статье рассматривается функциональность:

  • Интерфейса в варианте «Версии 8.2» для конфигурации, разработанной на платформе «1С:Предприятие» 8.2.19.130
  • Интерфейса «Такси» для конфигурации, разработанной на платформе «1С:Предприятие» 8.3.4.496 до 8.3.9+
  • Интерфейса «Такси» для конфигурации, разработанной на платформе «1С:Предприятие» 8.3.10-8.3.11

Как в 1С вывести сообщение пользователю

  1. Ознакомительные сообщения
  2. Механизм оповещений
  3. Терминирующие сообщения
  4. Особенности использования модальных окон в Платформе 8.3
  5. Класс СообщениеПользователю
  6. Уведомление о состоянии процесса

Вывод сообщений в пользовательском режиме решает ряд задач:

  • отражение хода выполнения текущего процесса (показ стадии выполнения процесса; показ расчетных значений, полученных в ходе работы алгоритма);
  • выдача ошибок пользователю для возможного их исправления;
  • выдача рекомендаций;

Типы сообщений:

  • терминирующие, которые останавливают выполнение программы и не дают продолжить ее, пока пользователь не ознакомится с этим сообщением и не выполнит определенные действия. Например, на экран пользователю будет выдан вопрос, на который нужно будет ответить Да или Нет. Пока пользователь не ответит – программа не выполняет дальнейшие действия;
  • ознакомительные сообщения, которые просто выводятся для пользователя и позволяют работать дальше (т.е. используются в режиме оповещения).

Терминирующими сообщениями должны быть сообщения об ошибках, а ознакомительными: рекомендации, сообщения о текущем этапе процесса и показ расчетных значений (отладочная печать).

Ознакомительные сообщения

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

Необходимо, чтобы пользователь с ней обязательно ознакомился и, возможно, предпринял какие-то действия, которые описаны в этом сообщении.

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

Тестовые и отладочные сообщения выдавать пользователю не стоит, т.к. рано или поздно он начнет игнорировать абсолютно все сообщения.

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

Открепить от формы окно с сообщением нельзя.

Синтаксис функции:

Сообщить (<Текст сообщения>, <Статус>)

Т.е. первым параметром является сам текст.

Второй параметр (статус сообщения) является необязательным. Для статуса можно указывать значения: Обычное, Важное, ОченьВажное и т.д.

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

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

Ознакомительные сообщения

Дело в том, что если сообщение будет формироваться в момент записи элемента справочника, может произойти следующая ситуация.

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

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

Поэтому в концепции управляемого приложения ознакомительные сообщения рекомендуется выводить с помощью так называемых оповещений. Пример неправильного использования функции Сообщить представлен на рисунке.

Неправильное использование функции Сообщить

Тем не менее, функция Сообщить может использоваться для вывода информации о некоторых ошибках, например в момент проведения документа.

В этом случае системе можно сообщить, что форму закрывать не нужно, и показать пользователю, какие ошибки возникают при проведении документа.

Функция Сообщить полностью поддерживается в Платформе 8.3. Ее можно использовать, и она будет работать (и в файловом варианте, и в клиент-серверном).

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

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

Так, программный код в Платформе 8.3 может быть исполнен как на стороне Клиента, так и на стороне Сервера.

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

Различные диалоговые документы также отображаются только на клиенте. На сервере они не могут быть исполнены, поскольку сервер не имеет возможности взаимодействия с пользователями.

Но функция Сообщить может быть исполнена как на стороне Клиента, так и на стороне Сервера. При этом использование метода Сообщить на Сервере вовсе не означает, что сообщение будет выводиться именно на Сервере, там их просто некуда выводить.

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

В этот момент система запросит данные из буфера и выведет их на экран.

Эта же особенность касается и класса СообщениеПользователю. На рисунке приведен пример использования метода Сообщить на стороне Сервера.

НаСервере Сообщить

В результате использования метода Сообщить на стороне Сервера вывелись сообщения на экран на стороне Клиента.

Сообщения на Клиенте

Механизм оповещений

Механизм оповещений нужен, чтобы информировать пользователя о том, что в системе “что-то” произошло и это “что-то” требует внимания пользователя. Оповещения создаются двумя сценариями:

  1. Самой платформой при интерактивной записи или изменении объекта
  2. Разработчиком при вызове в коде метода ПоказатьОповещениеПользователя().

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

Механизм оповещений

Кроме того, к оповещениям можно обратиться в соответствующей области информационной панели (кнопка “История” слева внизу формы приложения в варианте интерфейса «Версии 8.2»).

Чтобы создавать свои собственные оповещения, необходимо использовать метод глобального контекста ПоказатьОповещениеПользователя(). Его синтаксис до редакции 8.3.10 представлен ниже:

ПоказатьОповещениеПользователя (<Текст>, <НавигационнаяССылка>, <Пояснение>, <Картинка>)

В первом параметре передается текст, который будет выводиться в оповещении.

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

С помощью третьего параметра можно передать пояснение для сообщения, т.е. какое-то расширенное описание.

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

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

Механизм оповещений
Механизм оповещений

В редакции платформы 8.3.10.216 для интерфейса в варианте «Такси» механизм оповещений был существенным образом доработан с целью повышения удобства работы как в тонком, так и в веб-клиенте. По этой причине изменились и передаваемые параметры в метод ПоказатьОповещениеПользователя(). Теперь синтаксис выглядят так:

ПоказатьОповещениеПользователя(<Текст>, <ДействиеПриНажатии>, <Пояснение>, <Картинка>, <СтатусОповещенияПользователя>, <КлючУникальности>)

Видно, что второй параметр, ранее называемый НавигационнаяСсылка, получил новое имя ДействиеПриНажатии. Это связано с тем, что теперь в него стало возможным передавать не только строку с навигационной ссылкой, но и описание оповещения. Это проиллюстрировано скриншотом ниже:

Механизм оповещений

Как видно из примера, у нас появилась возможность программным образом обрабатывать нажатие на окно с оповещением, согласно той логике, которая необходима.

Следующий параметр СтатусОповещенияПользователя появился впервые. В нем указывается статус оповещения (Информация или Важное).

В случае варианта Важное, если пользователь не отреагировал на сообщение, то после того, как оно будет скрыто с экрана, его можно будет прочитать через Центр оповещений (о нем ниже). В случае же варианта Информация, оповещение удаляется без запоминания в этом центре. Давайте перепишем код из нашего примера, как показано ниже:

Механизм оповещений

После выполнения команды получим приблизительно такой вид окна приложения:

Механизм оповещений

В панели инструментов появилась кнопка с пиктограммой звонка, по которой вызывается упомянутый выше Центр оповещений. В нем накапливаются новые важные оповещения, на которые пользователь пока никак не отреагировал.

Если в Центре есть какие-то оповещения, то рядом с ним появляется маленькая оранжевая точка, чтобы привлечь внимание пользователя. Пользователь может открыть Центр оповещений, прочитать текст и, если необходимо, выполнить какие-то действия.

Механизм оповещений

Из Центра оповещение убирается нажатием на кнопку очистки, однако если с оповещением связано какое-то действие, то, как только пользователь щелкнет мышью по тексту сообщения, оно тоже пропадет.

И наконец, последним добавленным параметром стал КлючУникальности. С его помощью можно найти отображенное на экране оповещение и изменить его. Если же оповещения с таким параметром нет, то будет показано новое оповещение.

Как видим, возможностей, предоставляемых соответствующим методом, стало еще больше! Но это не все изменения в механизме оповещений.

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

Также к новым возможностям относится и одновременное отображение на экране до трех оповещений.

На этом завершим наше знакомство с программным формированием оповещений. Однако вспомним, что оповещения формируются не только разработчиком программно, но и самой платформой в момент интерактивной записи или изменения объекта. И часто этот факт вызывает непонимание в первую очередь у начинающих пользователей: зачем нужны эти служебные оповещения, которые, кстати, нельзя отключить?

Давайте представим такую простую ситуацию: пользователь установил фильтр в каком-то списке для удобства. Допустим, он сделал это в форме списка справочника Номенклатуры. Потом, через какое-то время, решил ввести новый элемент с наименованием “Стул”, который не соответствует установленному ранее фильтру. Вводит его, записывает и…? И не видит его в списке. Что будет делать среднестатистический пользователь? Конечно, введет его второй раз, но опять не увидит. Дальше может последовать третий, четвертый, пятый раз. Когда ему надоест вводить одно и тоже, он, наконец, спросит у вас: а куда все пропадает?

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

Механизм оповещений

Терминирующие сообщения

Терминирующие сообщения – это те сообщения, которые не позволят работать, пока пользователь не произведет определенные действия, т.е. пока он не обработает сообщение.

О возможности использования терминирующих сообщений в Платформе 8.3 мы поговорим немного позже (в последнее время их стараются не использовать, поэтому рассмотренный пример больше касается Платформы 8.2).

Существуют два метода для выдачи терминирующих сообщений Предупреждение и Вопрос. Предупреждение отличается от Вопроса тем, что у него есть единственная кнопка ОК.

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

Выведем какое-нибудь предупреждение с помощью строки (например, в модуле управляемого приложения):

Предупреждение(“Сейчас будет открыта база”);

Чтобы открыть модуль управляемого приложения, следует в дереве конфигурации выбрать объект Конфигурация, вызвать контекстное меню и выбрать пункт Открыть модуль управляемого приложения.

Открытие модуля управляемого приложения

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

Модальное окно

Аналогичным образом работает и функция Вопрос.

Синтаксис:
Вопрос(<ТекстВопроса>,<Кнопки>,<Таймаут>,<КнопкаПоУмолчанию>,<Заголовок>,
<КнопкаТаймаута>);

Обязательными являются только первые два параметра. Для второго параметра тип данных составной (РежимДиалогаВопрос или СписокЗначений). Третий параметр (<Таймаут>) характеризует интервал времени в секундах, в течение которого система будет ожидать ответа пользователя.

По истечении интервала окно вопроса будет закрыто. Аналогичный параметр(<Таймаут>) есть и у функции Предупреждение.

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

Модуль управляемого приложения

Использование функции Вопрос

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

Особенности использования модальных окон в Платформе 8.3

В платформе 8.3 существуют режимы работы с использованием и без использования модальности. По умолчанию стоит настройка Не использовать режим модальности.

В этом случае использование терминирующих сообщений невозможно. В случае необходимости использования терминирующих сообщений (функции Предупреждение и Вопрос) следует изменить значение свойства конфигурации Режим использования модальности на Использовать.

Режим использования модальности

Модальное окно выводится на самый верх и блокирует работу с другими окнами до завершения действий с модальным окном. Кроме того, останавливается выполнение программного кода на том месте, где происходит вызов этого окна. Выполнение кода продолжится только после закрытия модального окна.

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

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

Браузеры для планшетных компьютеров и для телефонов в большинстве случаев вообще не поддерживают всплывающие окна.

Для замены функций Вопрос и Предупреждение разработаны новые методы: ПоказатьВопрос, ПоказатьПредупреждение.

Эти методы позволяют вызывать окно, но не останавливать выполнение программного кода. Технически это реализуется формированием псевдоокна внутри родительского окна. Псевдоокно не перекрывает родительское окно. После открытия такого окна код продолжает выполняться.

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

Синтаксис функции ПоказатьПредупреждение:

ПоказатьПредупреждение(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)

Параметр <ОписаниеОповещенияОЗавершении> (необязательный)

Тип данных: ОписаниеОповещения.

Содержит описание процедуры, которая будет вызвана после закрытия окна предупреждения.

Синтаксис функции ПоказатьВопрос:

ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)

Обязательными являются первые три параметра.

Ниже приведен пример использования функции.

Процедура ОписаниеОповещения

Пример функции оповещения в 1С

Класс СообщениеПользователю

Основное удобство класса сообщений СообщениеПользователю заключается в том, что это контекстное сообщение (в отличии от методов Предупреждение и Вопрос).

Сообщения могут быть привязаны к конкретному экранному элементу. Этот объект доступен и на Сервере.

Следует обратить внимание, что, во-первых, данный объект нужно создавать. Например: Сообщение = Новый СообщениеПользователю;

Таким образом мы создаем экземпляр данного объекта.

Во-вторых, нужно прописывать текст сообщения в отдельном свойстве.

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

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

Сообщение.ПутьКДанным = “Объект”;
Сообщение.КлючДанных = ЭтотОбъект.Ссылка;

Чтобы открыть модуль документа, следует в окне редактирования объекта (документа) на закладке Прочее нажать на кнопку Модуль объекта.

Для эксперимента в модуле объекта какого-либо документа разместим код.

Сообщение пользователю

Ниже представлен полученный в пользовательском режиме результат для Платформы 8.3.

Сообщение пользователю в пользовательском режиме 1С

Следует отметить, что сообщения, выводимые с помощью нового объекта системы СообщениеПользователю в общем случае не являются терминирующими. Т.е. система позволит пользователю продолжить дальнейшие действия не отреагировав на выводимые сообщения.

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

Соответственно, в момент обнаружения ошибок отменяется транзакция, т.е. запрещается запись элемента справочника, либо запрещается проведение документа.

Таким образом, происходит своего рода эмуляция терминирующего сообщения. Потому что действие отменяется, пока пользователь не отреагирует на вводимое сообщение, завершить действие, например, провести документ, будет нельзя.

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

Уведомление о состоянии процесса

Существует специальная функция, с помощью которой можно отображать примерный ход выполнения какого-либо процесса.

Синтаксис: Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Параметры: <ТекстСообщения> и <Пояснение> – не обязательные, тип – Строка.
Текст выводится на специальную панель состояния.
<Прогресс> параметр тоже необязательный, но наглядный.
Тип: Число. Значение индикатора прогресса (от 1 до 100).
<Картинка> тоже необязательный параметр.
При обработке какого-либо события могут использоваться периодические вызовы функции типа:

Вызов функции

При этом могут меняться надписи, а могут изменяться значения параметра Прогресс.

Функция может вызываться как из одной процедуры (функции), так и из нескольких. Таким образом можно отслеживать состояние выполнения процесса.

Состояние выполнения процесса

Если вы хотите ознакомиться с механизмом уведомления более подробно, то прямо сейчас прервитесь и прочтите нашу новую статью Отображение прогресса длительных операций в 8.3.10. В ней уже не на уровне новичка объясняются все тонкости и подводные камни работы этого механизма.

Мы же завершаем знакомство со способами информирования пользователя. Надеемся, что у вас сложилось понимание, в каких ситуациях следует применять тот или иной способ.

Хочется еще раз акцентировать ваше внимание на том факте, что если ваша конфигурация (версии 8.3.3+) предполагает работу с помощью веб-клиента, то:

  • на уровне конфигурации должна быть установлена настройка режима модальности «Не использовать»
  • в коде должны использоваться методы асинхронной модели взаимодействия с пользователем. Такие методы начинаются со слов Показать или Начать.

Более подробно об отказе от использования модальных окон в платформе 1С:Предприятие 8.3 можно почитать в финальной статье цикла. А мы идем дальше и, наконец, приступаем к изучению долгожданного интерфейса «Такси», который уже не раз упоминался в наших материалах.

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-формате

Полезные ссылки:

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

О чем эта статья

Эта статья продолжает цикл «Первые шаги в разработке на 1С». Прочитав ее, вы узнаете:

  • Куда обращаться в случае подозрения на ошибку платформы, 1C.EDT и PostgreSQL 1C?
  • Что и как писать в вашем обращении?
  • Где и как посмотреть существующие ошибки?

Применимость

В статье рассматривается порядок регистрации ошибок платформы «1С:Предприятие» 8, 1C.EDT и PostgreSQL 1C. Информация актуальна для текущих релизов указанных продуктов.

Как в 1С регистрировать ошибки

Сегодня речь пойдет об ошибках. Но не о тех, которые допускают программисты в коде, а об ошибках самой платформы, среды разработки 1C.EDT и отдельной сборки PostgreSQL 1C.

К сожалению, сталкиваясь с ошибками в указанных продуктах, большинство программистов не обращают на них внимания. Они вспоминают 1С недобрым словом, и с мыслями «да они уже в курсе, в следующей версии поправят» продолжают работать. Надеемся, после прочтения статьи таких программистов станет меньше.

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

  • v8@1c.ru
  • testplatform@1c.ru
  • betaplatform@1c.ru

Первый адрес – v8@1c.ru. Это первая линия поддержки и консультаций по продуктам. Также используется для вопросов по типовым решениям, лицензированию и т.п. Важно отметить, что все продукты, по которым принимаются обращения на этот адрес, должны иметь статус финальных. Кроме того, перед обращением следует проверить, не была ли зарегистрирована данная ошибка ранее.

При расследовании проблемы, в случае если на демо-базе не удастся воспроизвести ваш проблемный кейс, на данный адрес могут попросить прислать выгрузку базы, на которой наблюдается проблема. Если у вас нет возможности предоставить базу, на которой воспроизводится проблема (не разрешает заказчик, нет доступа к конфигуратору, нет прав, у базы слишком большой размер и т.д.), то максимально подробно смоделируйте вашу ситуацию на демо-базе. Рекомендуем написать очень подробный текстовый сценарий воспроизведения вашей проблемной ситуации со скриншотами. Если есть возможность записать все в формате видео, то запишите – лишним точно не будет!

Учитывая то, сколько обращений поступает в фирму 1С за один день, скорость ответа может быть не мгновенной, т.к. ваше обращение некоторое время будет находиться в очереди, после которого вам должно прийти сообщение о том, что письмо принято и переадресовано разработчикам, а сам ответ от разработчиков поступит позже.

Для отправки писем на этот адрес нужно иметь действующую подписку ИТС.

Второй адрес – testplatform@1c.ru. Представляет куда больший интерес. Он предназначен только для регистрации обращений, связанный с тестовыми версиями платформы (ошибки в финальных версиях, не воспроизводящиеся в крайних тестовых версиях также не регистрируются).

Скорость ответа через данный канал на порядок выше – на письмо, отправленное в будний день, в течение часа приходит ответ и регистрируется ошибка.

Также не требуется подписка ИТС, поэтому Вы можете свободно регистрировать ошибки, обладая учебной версией платформы. Единственное условие – платформа должна быть тестовой.

Следует отметить, что в отличие от v8@1c.ru, по данному адресу не предоставляются никакие консультации, а также не принимаются ошибки типовых конфигурации, если они не являются ошибками платформы.

Для обращения по этому адресу нужно выполнить следующие действия:

  • Указать версию тестовой платформы. Понять, тестовая версия или нет, можно, просто заглянув на releases.1c.ru и убедившись, что данная версия находится в статусе как версия для ознакомления.
  • Максимально подробно по шагам описать сценарий воспроизведения ошибки. Идеально, если вы запишите это в формате видео. Здесь рекомендуется описывать воспроизведение ошибки так, чтобы человек, который будет пытаться её повторить, сделал бы это без уточняющих вопросов. Если вы работаете в коллективе, попробуйте ваше описание отдать коллеге и понаблюдать, сможет ли он воспроизвести ошибку по вашему сценарию без обращения к вам. Если да – работа сделана! Если нет, то нужно попытаться более качественно подготовить информацию об ошибке. И не забываем, что если в вашем сценарии платформа сваливается в дамп, обязательно отправляйте и его тоже.
  • Указать сведения о рабочем окружении, на котором воспроизводится ошибка: вариант развертывания базы (файловый/клиент-серверный), тип клиента, версию ОС, СУБД, если ошибка по мобильному клиенту/платформе, то название устройства, и т.д.

Третий адрес, betaplatform@1c.ru, следует использовать при обнаружении ошибки в предварительной бета-версии продукта, до выпуска тестового релиза. Как правило, этот адрес используется для конструктивной обратной связи по новому функционалу бета-продукта.

Правила обращения на указанный адрес аналогичны обращениям на testplatform@1c.ru с возможным указанием каких-то неудобств в продукте, отсутствующей на ваш взгляд функциональности, сценариев работы и т.д.

Также отметим, что при регистрации ошибок через любой из этих трех каналов важно соблюдать принцип: «одна ошибка – одно обращение». Не следует в одном письме описывать сразу несколько ошибок, на такое обращение Вы получите отказ.

Кроме того, выше речь шла о платформе, но ровно то же самое справедливо и для 1С:EDT и PostgreSQL 1C. Обращения по указанным каналам регистрируются по тем же самым правилам.

Нам кажется, что будет уместно дать еще один небольшой совет по этой теме в ключе планирования перехода с одной версии платформы на другую.
Допустим, ваш продуктовый контур работает на платформе 8.3.14, а вы планируете в недалеком будущем поднять версию платформы до актуальной. На момент написания этой статьи финальная версия платформы 8.3.16, а версия для ознакомления (тестовая) 8.3.17. На какой версии тестировать переход? На финальной 8.3.16 или на ознакомительной 8.3.17?

Правильнее, с нашей точки зрения, для тестирования перехода использовать именно ознакомительный старший тестовый релиз 8.3.17 и вот почему. Ваше тестирование на реальных данных, на реальных рабочих кейсах, возможно, выявит какие-то проблемные кейсы, о которых вы хотели бы сообщить отделу разработки. В этом случае, как описано выше, вы отправляете обращение на testplatform@1c.ru. Если проблема подтвердится, то с большой долей вероятности можно утверждать, что в финальной версии 8.3.17, она уже будет исправлена.

Если же вы будете тестировать переход на финальной 8.3.16, то эти же самые действия вы будете делать позже, при переходе на финальную 8.3.17, но время реакции на ваше обращение, скорее всего, будет выше, т.к. зарегистрировать обращение через testplatform@1c.ru уже не получится и вы будете ждать вашей очереди на v8@1c.ru, оставаясь при этом на версии 8.3.16.

Примеры обращений в тех. поддержку 1C

Рассмотрим несколько примеров обращений в тех. поддержку.

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

Мобильная платформа

На скриншоте заголовки страниц размещены сверху. Однако если разместить их, например, слева, то начинаются проблемы.

Вот, как это выглядит на настольной платформе:

Ошибка на настольной платформе

А так – на мобильной:

Ошибка на мобильной платформе

Думаю, ошибка очевидна.

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

Создаем пустую базу, создаем форму в Общих формах. На форме рисуем простейший пример – 2 страницы с одной кнопкой на каждой из них.

Конфигурация: создание формы

Запускаем базу на мобильном устройстве, делаем скриншоты. Выгружаем базу в dt.

Теперь перейдем к написанию письма. Вот пример моего обращения:

Тема: Мобильная платформа: неверное отображение вкладок

Текст письма:

Добрый день!

Мобильная платформа: 8.3.5.52
В мобильной платформе не корректно отображаются страницы с вариантом отображения «Закладки слева». Воспроизводится на Samsung Galaxy S2 и S4.
Во вложении – пример базы, в которой возникает ошибка.

С уважением, Вадим Невзоров

Вложения:
Страницы.dt
Скриншот страниц.jpg

Не забудьте в письме указать версию мобильной платформы. Также не лишним будет указать устройство, на котором воспроизводится ошибка.

Спустя полчаса получаем ответ:

Ответ тех. поддержки 1С

Это означает, что письмо было принято, и сейчас ошибка рассматривается. Спустя 10 минут приходит еще одно сообщение:

Регистрация ошибки в 1С

Отлично, ошибка зарегистрирована! Более того, у нас есть ее номер. Что с ним делать дальше?

На сайте 1С есть специальный раздел «Публикация ошибок» – https://bugboard.v8.1c.ru/ (доступен только тем, у кого есть подписка ИТС). В этом разделе можно отслеживать исправленные и неисправленные ошибки для разных версий настольной и мобильной платформы.

Публикация ошибок на сайте 1С

Страница «Поиск ошибок» предназначения для удобного поиска нужной ошибки. Ошибки можно искать по коду, номеру обращения (если обращение было через адрес v8@1c.ru) и по словесному описанию.

Например, в предыдущих версиях мобильной платформы на моем телефоне Samsung Galaxy S4 была неприятная ошибка – при попытке сделать фото с помощью метода СредстВамультимедиа.СделатьФотоснимок(), устройство полностью уходило в перезагрузку.

Попробуем найти ошибку по строке «Galaxy S4».

Поиск ошибок на сайте 1С

Как видим, такая ошибка уже зарегистрирована, и была исправлена в тестовой версии платформы. Помните, прежде чем регистрировать ошибку, сначала попробуйте найти ее в этом разделе – возможно, ее регистрировали ранее.

Обратите внимание на ссылки внизу. Первые две предназначены для определения приоритетов – чем больше человек сообщит о важности ее исправления, тем быстрее (теоретически) она будет исправлена.

Ссылка «Включить подписку» нужна для удобного отслеживания ошибки.

Чтобы каждый раз не искать по словам, можно «подписаться» на ошибку, после чего она будет отображаться в разделе «Подписки».

Так этот раздел выглядит в нашем случае:

Подписка на обновление данных публикуемых ошибок

Вернемся к нашей зарегистрированной ошибке. Попробуем найти ее по коду из письма:

Ввод кода ошибки в поиск

Видим, что ошибка с таким номером не найдена. Такое бывает, так как информация об ошибках появляется не сразу.

Причем в некоторых случаях процесс может очень затянуться – приведенная в данном примере ошибка была зарегистрирована 19 мая, однако до сих пор (на момент написания статьи – 10 июля) не выложена на сайт.

Но это просто неудачный пример. В любом случае, рано или поздно ошибка будет опубликована и исправлена.

Рассмотрим еще один пример обращения.

Пример 2. Как известно, в мобильной платформе 8.3.5 добавили средства работы с SMS-сообщениями.

Можно отправлять и получать сообщения, смотреть содержимое, прикрепленные файлы (для MMS) и т.п.

При этом нельзя читать сообщения, хранящиеся в памяти телефона – можно только подписаться на появление новых сообщений, пока работает 1С.

Делается это так:

ПолучательСообщений = Новый ОписаниеОповещения(«ПолучениеСообщения», ЭтотОбъект);
СредстваТелефонии.ПодключитьОбработчикSMSСообщений(ПолучательСообщений);

Метод ПодключитьОбработчикSMSСообщений подключает обработчик ожидания, который срабатывает в момент прихода нового сообщения.

Есть и другой метод – ОтключитьОбработчикSMSСообщений, который выполняет обратное действие.

Проблема только в том, что он не работает – после вызова этого метода, обработчик всё равно продолжает вызываться при получении сообщений.

Создаем простейший пример – форму с двумя кнопками подключения и отключения обработчика SMS-сообщения.

Создание формы в Конфигурации

Исходный код модуля:

&НаКлиенте
Процедура ПодключитьОбработчик(Команда)
ОП = Новый ОписаниеОповещения(“ПолученоСообщение”, ЭтаФорма);
СредстваТелефонии.ПодключитьОбработчикSMSСообщений(ОП);
КонецПроцедуры

&НаКлиенте
Процедура ОтключитьОбработчик(Команда)
ОП = Новый ОписаниеОповещения(“ПолученоСообщение”, ЭтаФорма);
СредстваТелефонии.ОтключитьОбработчикSMSСообщений(ОП);
КонецПроцедуры

&НаКлиенте
Процедура ПолученоСообщение(Сообщение, Параметры) Экспорт
Предупреждение(Сообщение.Текст);
КонецПроцедуры

Пишем письмо:

Тема: Мобильная платформа: не работает отключение обработчика получения сообщений
Текст письма:

Добрый день!

Мобильная платформа: 8.3.5.58
Платформа игнорирует отключения обработчика ожидания для получения смс сообщений. После отключения, при приходе смс обработчик продолжает Вызываться.
Во вложении – пример мобильной БД, в которой возникает ошибка. Воспроизводится на Samsung Galaxy S2 и S4.

С уважением, Вадим Невзоров

Вложения: СМС сообщения – отключение обработчика.dt

Получаем ответ:

Ответ поддержки 1С

Идем на сервис публикации ошибок, ищем нашу ошибку:

Публикация ошибок

Теперь ошибка есть на сайте, и мы можем отслеживать ее статус. В дальнейшем, при выходе следующих версий мобильной платформы, мы сможем отследить, в какой из версий он была исправлена.

Возможно, после прочтения статьи у Вас возникнет вопрос – зачем это все? Ведь у фирмы 1С есть свой отдел тестировщиков, и рано или поздно ошибку выявят и исправят.

Однако, согласитесь, нет ничего сложного в том, чтобы потратить 15 минут на составление письма, которое поможет 1С быстрее исправить недочеты в продукте. И вместе с тем хочется, чтобы данный продукт становился все лучше и лучше.

За день до написания этой статьи вышла новая версия мобильной платформы – и вот результат:

Ошибки Мобильной платформы версии 8.3.5.63

В заключение отметим, что существует официальная партнерская конференция, в которую имеют доступ сотрудники фирм франчайзи и другие специалисты. Часто начинающие разработчики и их старшие коллеги пытаются зарегистрировать ошибку, создавая пост в данной конференции. Но по правилам данный форум не является ресурсом для разбора и регистрации ошибок. Поэтому для детального расследования ошибки, как мы и писали ранее, свое сообщение следует отправлять в службу технической поддержки пользователей на электронную почту v8@1c.ru. Только в этом случае вам:

  • Гарантированно ответят специалисты фирмы «1С»
  • Совместно с вами подготовят всю нужную информацию для прояснения и диагностирования ситуации
  • В случае признания ошибки направят ваше обращение разработчикам для исправления ошибки.

Иногда специалисты фирмы 1С могут зарегистрировать ошибку на основе обсуждений темы в форуме. Но данная регистрация, во-первых, не гарантирована и нигде не регламентирована, во-вторых, если такая ошибка и будет зарегистрирована, то она считается внутренней и не будет опубликована на соответствующем баг-трекере и вы не сможете отслеживать по ней информацию. Поэтому для расследования ошибки свое сообщение лучше и правильнее отправлять на v8@1c.ru.

Скорее всего, у вас уже возник вопрос, для чего же тогда вообще нужен партнерский форум, раз там нельзя официально регистрировать сообщения об ошибках? В первую очередь он нужен для обмена опытом, идеями и мнениями между специалистами в области поддержки и разработки на платформе «1С:Предприятие 8».

То есть если вам хочется обсудить какой-то вопрос, с которым вы столкнулись на практике, или поделиться своим опытом или мнением, или найти путь решения проблемы, через обсуждение с коллегами, то форум – это правильное место, где все это можно сделать, т.к. вопросы адресуются ко всем его активным участникам. Именно поэтому такой формат и не предполагает никаких регламентных ответов и регламентной процедуры регистрации ошибок.

Поэтому призываем относиться с пониманием к просьбе сотрудников фирмы «1С» регистрировать сообщения об ошибках не через форум, а через названные выше каналы регистрации. Ну и, конечно, поменьше вам ошибок!

Но никакие ошибки не смогут помешать нам продолжать знакомство с возможностями платформы «1С:Предприятие 8», и в следующей статье мы вернемся к изучению управляемых форм. :)

Вадим Невзоров,
г. Одесса

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-формате

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Попытка
  //Некоторые действия
Исключение
  //Действия при ошибке
КонецПопытки;

Показ сообщения об ошибке

Для вывода сообщения об ошибке нужно использовать функцию ОписаниеОшибки();

Пример:

Попытка
    НаборЗаписей.Записать(Истина);
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

Для выдачи структуированной информации об ошибке в версии 8.2 служит функция ИнформацияОбОшибке().

    Инфо = ИнформацияОбОшибке();
    Сообщить("Описание='" + Инфо.Описание + "'");
    Сообщить("ИмяМодуля='" + Инфо.ИмяМодуля + "'");
    Сообщить("НомерСтроки=" + Инфо.НомерСтроки);
    Сообщить("ИсходнаяСтрока='" + Инфо.ИсходнаяСтрока + "'");

Вызов исключения

В 1С:Предприятие 7.7 оператор ВызватьИсключение; служит для повторного вызова исключения из блока Исключение-КонецПопытки. Для вызова из других частей программы можно использовать внешнюю компоненту или деление на 0, например а=1/0.

В 1С:Предприятие версии 8 есть оператор ВызватьИсключение:

ВызватьИсключение "Текст сообщения об ошибке";

Возвращает информацию об ошибке (исключительной ситуации).

Синтаксис

Функция ИнформацияОбОшибке() имеет следующий синтаксис:

ИнформацияОбОшибке ИнформацияОбОшибке()

А также альтернативный англоязычный синтаксис:

ErrorInfo ErrorInfo()

Параметры

Функция ИнформацияОбОшибке() не имеет формальных параметров.

Возвращаемое значение

ИнформацияОбОшибке
Объект, содержащий структурированную информацию об ошибке\исключении

Описание

Функция ИнформацияОбОшибке() возвращает структурированную информацию об исключении в одноименном объекте ИнформацияОбОшибке

Внимание! Вызов данной функции имеет смысл только внутри операторных скобок Исключение .. КонецПопытки. В остальных случаях будет возвращен объект с пустыми полями

Доступность

Версия Поддержка
8.1 Сервер, Клиент, Внешнее соединение
8.2 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение
8.3 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение, Мобильный автономный сервер, Мобильный клиент, Мобильное приложение

Пример использования

Пример кода с использованием функции ИнформацияОбОшибке():

Попытка
    //код, приводящий к исключительной ситуации
Исключение
    Ошибка = ИнформацияОбОшибке();
    //для пользователя (любой клиент)
    ОшибкаКратко = КраткоеПредставлениеОшибки(Ошибка);
    Предупреждение(ОшибкаКратко, 5, "Произошла ошибка!");
    //для админа (толстый клиент, внешнее соединение или сервер):
    ОшибкаПодробно = ПодробноеПредставлениеОшибки(Ошибка);
    ЗаписьЖурналаРегистрации("Ошибки", УровеньЖурналаРегистрации.Ошибка,,, ОшибкаПодробно);
КонецПопытки;

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

  • Обработка ошибок на встроенном языке
  • Функция ОписаниеОшибки()
  • Функция КраткоеПредставлениеОшибки()
  • Функция ПодробноеПредставлениеОшибки()
  • Процедура ПоказатьИнформациюОбОшибке()

Поделиться страницей в соц.сетях

Понравилась статья? Поделить с друзьями:
  • Создание mi аккаунта ошибка сервера
  • Содержание фильма роковая ошибка на домашнем
  • Создан файл ошибки wickedwhims exception txt
  • Создатель этой ошибки не указал reason что это
  • Содержание фильма роковая ошибка 2021 чем закончится