Повышение качества разработок и онлайн контроль ошибок

Публикация № 796913

Администрирование - Администрирование данных 1С - Журнал регистрации

Журнал регистраций http Stackdriver Error Reporting Google Cloud Platform GCP isthisdesign.org

164
Анализ ошибок и сбор ошибок журнала регистраций из десятков и сотен баз в одном месте.

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

О чем я хочу поговорить сегодня ? Если я скажу о том, что я хочу говорить про то, как интегрировать 1С с неким “100500” сервисом, то вряд ли кто-то отнесется к этому с той серьезностью, которую бы мне хотелось получить.

Поэтому я скажу по другому:

Я хочу поговорить про качество обслуживания баз 1С

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

Позвольте задать вопрос - как часто вы пролистываете журнал регистраций на поиск ошибок?

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

Почему я решился на написание именно этой статьи?

Честно? Мне надоело нытье моих собратьев о том, что клиенты жалуются, говорят что в программе много ошибок, что 50 раз в день они нарываются на какие-то баги, а по факту - это всего лишь 2-3 ошибки в день.
Что коллегам по цеху не удобно листать эти полотнища в виде ЖР и искать в них зерно истины. Что вот прям завтра, они поднимут свою систему для этих целей и вот тогда то...

И так, для кого эта статья предназначена?

  1. Для администраторов баз данных клиента (как внутренних, так и внешних)
  2. Для специалистов тех поддержки
  3. Для разработчиков (наконец).

 

Теперь предлагаю пофантазировать и ответить на вопрос “А следили ли Вы бы за ошибками?”, если:

  1. Была подписка на все ошибки
  2. Можно было бы в онлайне отлавливать ошибки по всем клиентам, по всем базам данных, по 500 РИБам, по мобильным устройствам? И видеть это все в браузере/телефоне/телевизоре?
  3. Если бы ошибки можно было группировать, смотреть когда они появились в первый раз, когда был последний раз, сколько пользователей с ними столкнулись, как часто это было?
  4. Если бы сервис показывал в каких версиях расширения/конфигурации эта ошибка была ранее?
  5. Если бы для реализации всего этого - не надо было бы платить ни копейки и иметь квоту в 170 000 запросов в день? (во всяком случае - пока)
  6. Если бы вы могли взять любую базу клиента, прописать пару строк, потратить 10 минут времени на перекур и собрать анализ по всем ошибкам этого клиента, которые попали в журнал регистраций за последних 30 дней?
  7. Если бы можно было дать доступ клиенту к спискам именно его ошибок, чтобы он сам отмечал те ошибки, которые являются критичными, и мог “затыкать” рот Марьи Ивановне, которая говорит, что у нее 100500 ошибок в день, а по факту всего 2-3?
  8. Если бы на внедрение всего этого - надо было бы потратить всего 15 минут времени?
  9. Если бы этот ресурс предоставлял гигант IT мира?
  10. Если бы вы были клиентом, а не программистом, и вы хотели бы “втихаря” собирать реальную статистику ошибок в базе данных, для того, чтобы дать нагоняя IT отделу, или компании, которая обслуживает, и вам бы для этого не понадобилось владеть огромными навыками программирования?
  11. … куча всяких других рекламных если…

Надеюсь, что ответ - “да”. И я уже не один...

Раскрываем карты

Сервис Google Cloud Platform

Размещается по адресу https://console.cloud.google.com

Там появился новый сервис, который позволяет отлавливать баги. Сейчас он находится в статусе беты, так что им можно пользоваться почти безвозмездно. Кроме этого - Google дает нам бесплатный бонус на 300$ на один год, который можно активировать уже после того, как сервис выйдет из беты. Пока Google дает 170 000 запросов в день бесплатно, про остальное - надо с ними списываться и решать, цен в открытом доступе пока нет.

Выглядит это все в итоге вот так:


По пунктам:

  1. Выбор проекта, т.е. можно завести под каждого клиента отдельный проект
  2. Сервисы, мы их используем в качестве имени конфигурации/расширения где произошла ошибка
  3. Версии - версии конфигурации или расширения
  4. Фильтр по типам задач
  5. Автоматическое обновление страницы ошибок. Очень помогает, когда в офисе на стене висит телевизор и в нем появляются все ошибки за текущий день.
  6. Можно включить уведомления, которые бы отправлялись в случае новых ошибок
  7. Период анализа ошибок.

Посмотрим одну ошибку детальнее:

Тут есть - описание ошибки, где она возникла, в какой строке, в каком модуле.
Кроме этого - четко видно, сколько раз она проявлялась и сколько РАЗНЫХ пользователей было затронуто ею.
Так же видно, где она проявлялась, в каких расширениях/конфигурациях и их версиях.
Ну и когда она была зарегистрирована первый раз и последний.
Ну и вишенка на торте, для тех, кто уже перешел в гит - если нажать на ссылку ошибки, там где ее путь слева вверху, то появится вот такое окно:

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

Краткий план действий

Понравилось? Если да, то чтобы это все реализовать, нам необходимо проделать несколько шагов:

  1. Зарегистрировать Google аккаунт (если еще есть те, у кого его нет)
  2. Зайти в консоль Google Cloud Platform
  3. Создать нужный проект
  4. Включить использование API Stackdriver Error Reporting
  5. Сгенерировать ключ для API
  6. Накатить расширение на базу и прописать в модуле настроек ID проекта и ключ
  7. Нажать кнопку - выгрузить данные ЖР
  8. Выпить кофе
  9. Посмотреть на результат в консоле

Если знать что и как делать - все шаги занимают 10 минут. Приступим.

Создание проекта для выгрузки

Я надеюсь, что обычный Google аккаунт есть уже у всех, так что идем сразу дальше.
Переходим по ссылке: https://console.cloud.google.com
Соглашаемся с условиями.
Идем в раздел регистрации ошибок:

Нас попросят создать проект:

Нажимаем на создание, и пишем имя проекта, оно нам надо будет далее. Я называю их как “ua-company-db”, т.е. страна, внутренне названии компании и имя базы, если я их разделяю.
Если все будет хорошо, то мы увидим вот такую картинку:

 

Теперь нам надо активировать API, для этого идем по этой ссылке: https://cloud.google.com/error-reporting/reference/
И нажимаем вот на эту кнопку:

Нас перекинет потом вот на эту страницу:


Где мы выбираем ранее созданный проект. И жмем Далее.
Теперь нас просят создать ключи, по которым мы будем подключаться к сервису:

Теперь нам надо создать ключ доступа через API, для этого идем в нужный раздел:

И создаем ключ для доступа к API:


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

И жмем на кнопку Создать.
После этого - появится окошко с ключем:

Копируем его куда-то и закрываем окно.

В итоге у нас должно быть вот такое:

И последнее что нам надо - это ID проекта:


Все, теперь мы создали все, что нам было необходимо, идем обратно в дашборд ошибок:

Итого, все это мы проделывали для двух вещей:

  • ID проекта, в нашем случае это test-1c-log
  • Ключ доступа, в нашем случае это AIzaSyB3cq1-9TksRyzP_r00wYlwi1pL-d2G7x4

Тестирование

Для теста нам понадобится просто платформа 8.3.10 или новее. Создадим пустую базу, и подключим туда расширение.
Вообще - механизмы будут работать везде, но, платформа должна уметь формировать JSON, хотя, можно и собрать его руками, через СтрШаблон. Кроме этого - платформа должна будет уметь отправлять POST запросы, но опять таки, есть cURL, так что по большому счету - этот сервис можно интегрировать даже с 7.7. При желании. При достаточном желании.


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

Сюда мы потом пропишем ключи доступа. НО! Пока ничего не пишем. Запускаем в режиме предприятия, открываем обработку GCP тест:

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

После того как ткнем кнопку пару раз, идем в журнал регистрации и проверяем там, что ошибки наши зафиксированы:

Теперь возвращаемся в конфигуратор, в модуль настроек, и заполняем данными:

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

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

Итого

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

Кейс. Обращается ко мне клиент, хочет чтобы его взяли на обслуживание. Я создаю новый проект, подключаю к базе расширение, или выношу весь функционал во внешнюю обработку, запускаю выгрузку ТЖ. Иду курить и пить кофе. Прихожу через 15 минут и показываю ему “весь ужас” его базы. Где количество ошибок может достигать сотен, а одни и те же ошибки - тысяч, а то и десятков.

Кстати, если вы посмотрите функцию НеОшибки, то она так раз и сделала чтобы отлавливать не ошибки конфигурации:

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

Где это реально используется? Мы используем это у клиентов где сотни РИБ узлов, для анализа ошибок.

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

P.S.

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

P.P.S. Сервис бесплатный, по крайней мере пока он находится в стадии теста, но даже если он станет платным, есть возможность активировать 300$ бонуса на один год, и таки год им пользоваться бесплатно, а дальше уже решать.
Ну и конечно, просмотреть текущий уровень квот можно в специальном разделе


И тут красиво показывается сколько запросов за текущий день было сделано.


Заключение

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

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

Кстати, про Google Analitics будет доклад на майском хакатоне . https://isthisdesign.org/

Цель подобного подхода

На самом деле на ближайшем хакатоне (если кто не в курсе он пройдет в мае в Москве), будет второй день для разбора проблем https://isthisdesign.org/shedule#day2

Я предполагаю, что проблема “Мониторинг 1С” на ней возникнет, и если возникнет я поделюсь вот этими своими наработками и/или расскажу - как мы с этим работаем. Видь просто выгрузить куда то это одно, а уметь читать и использовать - это уже другое. Возможно это не похоже на пропагандируемый ЦУП и elasticSearch, но проблему ведь решает и результат отличный. Тем более, что для этого не надо иметь свою инфраструктуру и специализированные знания.

 

164

Скачать файлы

Наименование Файл Версия Размер
Расширение GCP Error
.cfe 14,61Kb
08.03.18
141
.cfe 1.3.7 14,61Kb 141 Скачать бесплатно

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
3. infosoft-v 324 11.03.18 19:51 Сейчас в теме
4. vlad.frost 186 11.03.18 20:37 Сейчас в теме
Герман Клименко:
Технически российское государство готово к отключению от мировой глобальной паутины.
yarsort; kote; vano-ekt; TreeDogNight; Lo1jke; pm74; 9-pm; +7 Ответить
6. DitriX 1777 12.03.18 14:04 Сейчас в теме
(4) если не будут доступны сервисы гугла, то я боюсь, что не работающая онлайн система ошибок - будет наименьшей проблемой из всех :)

(5)Уникального ничего нету, просто пост запросы с парсингом ЖР. Я этот модуль с нуля написал за 2 часа (так как мы используем более глобальные вещи, и объяснять их тут заняло бы кучу времени).

На счет физиков - вы же не можете работать с клиентами как физик ;) Вы либо сотрудник компании (ЧП, ООО и т.д.) или сами являетесь этой компанией. А физика можно использовать просто для тестов :)
37. sergathome 21.03.18 17:19 Сейчас в теме
(6) Счастье в другом. Вся эта красотища влёгкую нарушает практически любое соглашение с клиентом о конфиденциальности...
38. DitriX 1777 21.03.18 21:20 Сейчас в теме
(37)например? Я не знаком ни с одним соглашением, которое бы можно было нарушить этим сервисом.
С каких это пор - код конфигурации, а точнее не код, а его эпизоды - стали конфеденциальной информацией?
Или название расширения это запрещенные данные?
Конечно, если вы туда будете выгружать цифр по рентабельности, долгам и прочее -- тогда да, но сервис как бы не для того.
В этом случае вы и гитом не можете пользоваться, и пуши отправлять на мобильники и т.д. Но в таком случае - это просто статья не для вашего случая :)
С другой стороны, скорее проще взломать сервер клиента и получить доступ к базе, чем взломать гугл аккаунт и получить доступ к списку багов :)
elephant_x; TreeDogNight; user597616_i.d.kravchenko; JohnyDeath; +4 Ответить
40. sergathome 22.03.18 09:00 Сейчас в теме
(38) и тем не менее. клиент, неожиданно узнавший, что его данные попали на некий внешний, а тем паче - вражеский ресурс, способен выиграть суд. это шутка, пока оно шутка.
41. DitriX 1777 22.03.18 21:47 Сейчас в теме
(40) А вы собираетесь такое проделывать без согласия пользователя?
43. sergathome 23.03.18 13:48 Сейчас в теме
(41) я - нет, но знаю тех, кто об этом даже не задумывается ;))
45. yarsort 19.04.18 15:56 Сейчас в теме
(4) Голову пусть себе отключат...
5. MaCCapAkIII 12.03.18 01:40 Сейчас в теме
Все очень грамотно и полезно. А самостоятельно можно создать подобное расширение или у вас уникальное там что-то?

И еще. Есть информация, что физикам в принципе нельзя использовать теперь GCP... https://goo.gl/ior7gh
7. Scorpion4eg 291 12.03.18 14:12 Сейчас в теме
Все больше убеждаюсь что Google это корпорация добра. Столько всего предоставляет на бесплатной или почти бесплатной основе.
Google Analytics(а я думаю почему я икаю), Google Vision(распозновалка фото), естественно Google Maps, Google shortner, такая еще штука.
9. lustin 12.03.18 20:52 Сейчас в теме
(7) Еще firebase - мы тут её к OScript прикручиваем, ваще вещь
10. DitriX 1777 13.03.18 02:29 Сейчас в теме
(9)и че я не в теме и не при делах. Давай кооперироваться :) Я сейчас тоже это делаю.
15. lustin 14.03.18 18:49 Сейчас в теме
(10) это кстати тема доклада Алексея Соснового + моя на блиц докладах. Я покажу код. Тебе как докладчику могу показать чуть раньше ;-)

Я хочу чтобы к октябрьской конференции это было готово вкупе с наработками Андрюхи по Oscript Web - тогда к октябрю для Инфостарта мы сделаем самый крутой Веб фреймворк в мире ;-).

а чтобы быть в теме ;-) надо следить за моим facebook акаунтом - я там выкладываю гифки того над чем работаю.



kote; Brawler; TreeDogNight; +3 Ответить
24. DitriX 1777 16.03.18 17:43 Сейчас в теме
(15)увы, соцсети не мое, нет на них время. Лучшая соцсеть - бокал пива и беседа :)
22. vano-ekt 532 15.03.18 15:03 Сейчас в теме
46. Region102 20.06.18 06:40 Сейчас в теме
(7) Google уже давно корпорация бабла
8. support 4456 12.03.18 19:09 Сейчас в теме
11. spezc 616 13.03.18 12:10 Сейчас в теме
Божественно! Держи звезду.
12. Alias 153 14.03.18 14:46 Сейчас в теме
Можете уточнить, как "дать доступ клиенту к спискам именно его ошибок, чтобы он сам отмечал те ошибки, которые являются критичными, и мог “затыкать” рот Марьи Ивановне, которая говорит, что у нее 100500 ошибок в день"?
Или, иначе говоря, даже по скриншоту видно -- есть общее количество ошибок, есть количество затронутых пользователей. И если провалиться в ошибку, то видно список последних ошибок, опять в них провалиться и увидеть пользователя. А как сделать фильтр по ошибкам одного пользователя? Как посмотреть не "список последних ошибок", а полный?
13. DitriX 1777 14.03.18 18:16 Сейчас в теме
(12) не одного пользователя, а по проекту. Вы создаете на каждого клиента свой проект, и даете доступ только к их проекту.
14. mitia.mackarevich 28 14.03.18 18:47 Сейчас в теме
В транзакции также вставляете обращение к сервису напрямую, при записи документа например?))
Вопрос снят, перечитал статью, под вечер голова не варит=)
16. Gladkov_Anton 128 14.03.18 21:04 Сейчас в теме
Без изменения кода конфигурации и без конструкции "попытка" логирование ошибок в googole будет?
25. DitriX 1777 16.03.18 17:43 Сейчас в теме
(16) собираются данные из ЖР. В этом варианте.
28. Gladkov_Anton 128 19.03.18 09:26 Сейчас в теме
(25) Прошу прощения, но я так и не понял.
Есть базы данных без доработок.
В них происходит исключение. В ЖР оно НЕ попадает.
Я правильно понимаю, что таки ошибки НЕ попадут в google?
29. DitriX 1777 19.03.18 14:21 Сейчас в теме
17. TreeDogNight 17 15.03.18 06:21 Сейчас в теме
Никак не могу понять, по какому принципу происходит группировка ошибок?
Прикрепленные файлы:
18. JohnyDeath 295 15.03.18 08:37 Сейчас в теме
(17) может по тексту самой ошибки?
19. TreeDogNight 17 15.03.18 11:33 Сейчас в теме
(18) Тоже так думал. Но при открытии ошибки, внутри отображаются другие ошибки...
Прикрепленные файлы:
21. vova329 15.03.18 14:26 Сейчас в теме
(19) Я так понял в группировке участвуют и метаданные, копай сюда
Прикрепленные файлы:
20. Adam12345678 9 15.03.18 14:22 Сейчас в теме
23. Adam12345678 9 15.03.18 15:18 Сейчас в теме
Позволил себе добавку в коде, иначе не выводит нужную информацию
Если ОшибкаИТекст.Количество() > 1 Тогда
//Обработка пути ошибки
РасширениеИПуть = СтрРазделить(ОшибкаИТекст[0], " ", Ложь);
Если РасширениеИПуть.Количество() > 1 Тогда
	.........оригинальный код
Иначе   //добавка по смыслу, иначе не заполняет важную информацию об ошибке
 ПутьОшибки =  РасширениеИПуть[0];
 ПутьИСтрокаОшибки = СтрРазделить(ПутьОшибки, "()", Ложь);
Если ПутьИСтрокаОшибки.Количество() > 1 Тогда
Попытка
reportLocation.lineNumber = Число(ПутьИСтрокаОшибки[1]);
Исключение
КонецПопытки;
							
СоставПутиОшибки = СтрРазделить(ПутьИСтрокаОшибки[0], ".", Ложь);
reportLocation.functionName = СоставПутиОшибки[СоставПутиОшибки.ВГраница()];
СоставПутиОшибки.Удалить(СоставПутиОшибки.ВГраница());
reportLocation.filePath = СтрСоединить(СоставПутиОшибки,".");
КонецЕсли;
//конец добавки
КонецЕсли;

Показать
TreeDogNight; +1 Ответить
26. DitriX 1777 16.03.18 17:45 Сейчас в теме
(23) спасибо. Писалось это на коленке, я думаю по стилю кода видно :) Так, в целях обучения. Реальный код много сложнее.
27. TreeDogNight 17 17.03.18 07:57 Сейчас в теме
Сделал доработку, чтобы работало на более старых платформах:
Функция НастройкиОповещенияОбОшибках() Экспорт
	
	СтрокаНастроек = "
	|{
	|  'projName': 'projects/project',
	|  'key': 'key',
	|}
    |";
	СтрНастроек = ПреобразованиеJSON(СтрокаНастроек);

	Возврат СтрНастроек;
	
КонецФункции

Функция ПреобразованиеJSON(СтрокаНастроек)
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаНастроек);
	
	Возврат ПрочитатьJSON(ЧтениеJSON);	

	
	//Чтение = Новый ЧтениеJSON;
	//Чтение.УстановитьСтроку(СтрокаНастроек);
	//Чтение.Прочитать();
	//СтрНастроек = ФабрикаXDTO.ПрочитатьJSON(Чтение);
	//Чтение.Закрыть();
	//Возврат СтрНастроек;
	
КонецФункции

Показать


 Процедура ОтправитьОшибку(СтруктураОшибки,Ошибка = Ложь, ЭтоЖурнал = Ложь) Экспорт
	
	Соединение = Новый HTTPСоединение("clouderrorreporting.googleapis.com",443,,,,10, Новый ЗащищенноеСоединениеOpenSSL);
	СтрСоединения = НастройкиОповещенияОбОшибках();
	Запрос = Новый HTTPЗапрос("v1beta1/" + СтрСоединения.projName + "/events:report?key=" + СтрСоединения.key);
	Запрос.Заголовки.Вставить("Content-Type", "application/json");
	
	//Запись = Новый ЗаписьJSON;
	//Запись.УстановитьСтроку();
	//ФабрикаXDTO.ЗаписатьJSON(Запись,СтруктураОшибки);
	Текст = СериализоватьВJSON(СтруктураОшибки, Истина);     
	
	//Текст = СтрЗаменить(Текст,"""#value"": ",""); //удаляем мусор от 1С
	//Текст = Сред(Текст,2,СтрДлина(Текст) - 2); 	  //Убираем {}
	Запрос.УстановитьТелоИзСтроки(Текст,КодировкаТекста.UTF8);        
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);     
	Если Ответ.КодСостояния <> 200 Тогда                                 
		Если НЕ ЭтоЖурнал Тогда
			ЗаписьЖурналаРегистрации(СтруктураОшибки.message,УровеньЖурналаРегистрации.Ошибка,,,?(Ошибка = Ложь, "", ПодробноеПредставлениеОшибки(Ошибка)));
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Функция СериализоватьВJSON(Объект, ПервыйУровень = Ложь) 
	
	СвойстваОбъекта = Объект.Свойства();
	СтруктураСвойств = Новый Структура;
	
	Для каждого Свойство Из СвойстваОбъекта Цикл
		ЗначениеСвойства = Объект[Свойство.Имя];
		Если ТипЗнч(ЗначениеСвойства) = Тип("ОбъектXDTO") Тогда
			СтруктураСвойств.Вставить(Свойство.Имя, СериализоватьВJSON(ЗначениеСвойства));	
		ИначеЕсли ТипЗнч(ЗначениеСвойства) = Тип("СписокXDTO") Тогда
			МассивЗначений = Новый Массив;
			Для каждого Стр Из ЗначениеСвойства Цикл
				Если ТипЗнч(Стр) = Тип("ОбъектXDTO") Тогда
					МассивЗначений.Добавить(СериализоватьВJSON(Стр));
				Иначе 
					МассивЗначений.Добавить(Стр);
				КонецЕсли; 	
			КонецЦикла; 	
			
			СтруктураСвойств.Вставить(Свойство.Имя, МассивЗначений);	
		Иначе 
			СтруктураСвойств.Вставить(Свойство.Имя, ЗначениеСвойства);	
		КонецЕсли; 	
	КонецЦикла;
	
	Если Не ПервыйУровень Тогда
		Возврат СтруктураСвойств;	
	КонецЕсли; 
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, СтруктураСвойств);
	
	Возврат ЗаписьJSON.Закрыть();	
	
КонецФункции 
Показать
kare; DitriX; +2 Ответить
30. devlabnn 76 20.03.18 06:24 Сейчас в теме
Спасибо! Теперь используем у себя (РИБ 170 узлов).


Группируются ошибки по сочетанию functionName + filePath (без учета ineNumber)
Пришлось включить lineNumber в filePath
reportLocation.functionName = reportLocation.functionName + "_" + reportLocation.lineNumber;


Есть еще проблема - при нажатии Подробнее... на странице ошибки переходим на страницу 404.


Из-за этого использую юзер-цсс (во вложении), чтобы можно было посмотреть текст ошибки полностью, непосредственно в списке ошибок.
Прикрепленные файлы:
console.cloud.google.com_errors.css
DitriX; TreeDogNight; +2 Ответить
31. DitriX 1777 20.03.18 15:20 Сейчас в теме
(30) будет отлично - если напишите встречную статью о том, как вам это все помогло, или не помогло :)
34. devlabnn 76 21.03.18 09:41 Сейчас в теме
(31) Ощущения смешанные. С одной стороны - очень удобно видеть агрегированные данные по количеству инцидентов и затронутых узлов.
С другой - пока прикладная польза не понятна. Но прикольно :).
36. DitriX 1777 21.03.18 14:28 Сейчас в теме
(34)мы этот механизм часто используем при внерении нового функционала в 200 рибах. Когда мы оперативно ловим ошибки и сразу шлем обновления. Благо мы все стараемся через расширения. Так что одна кнопка, 5 минут и 200 касс работают с обновленной версией :)
32. TreeDogNight 17 20.03.18 20:37 Сейчас в теме
(30)
nName + "_" + reportLocation.lineNumber;

Можете подробнее рассказать как вы используете этот "юзер-цсс"?
33. devlabnn 76 21.03.18 08:32 Сейчас в теме
(32)
1. Установить расширение user css или аналог (есть для всех браузеров). Например, для Chrome / Яндекс браузера я использую это

2. Скопировать текст в окно расширения, как на скриншоте:


3. Результат
Прикрепленные файлы:
console.cloud.google.com_errors.css
DitriX; TreeDogNight; +2 Ответить
35. TreeDogNight 17 21.03.18 09:56 Сейчас в теме
39. Avliyarov 22.03.18 06:08 Сейчас в теме
"Исчерпан доступный лимит развертываний. Показаны данные только для последних развертываний." - выдает при создании проекта
это я так понимаю - косяк тестовой среды?
42. DitriX 1777 22.03.18 21:48 Сейчас в теме
(39) где и когда возникает ошибка?
47. elephant_x 17.03.19 13:27 Сейчас в теме
(42) При переходе в стакдрайвер отчеты по ошибкам.
48. elephant_x 17.03.19 14:02 Сейчас в теме
(42) картинку ещё добавил)
Прикрепленные файлы:
49. elephant_x 17.03.19 19:36 Сейчас в теме
(42) Разобрался, все получилось.
1. Не то api создал
2. Такая картинка выходит когда в отчете нет данных.

Спасибо большое за статью, пойду внедрять на продакшн)
44. pbabincev 114 05.04.18 11:41 Сейчас в теме
Это просто великолепная работа!
Автор, Дмитрий, спасибо!
Включаем с ребятами для своей РИБ-12.
Оставьте свое сообщение

См. также

Версионирование (история изменений) объектов в 1С:Предприятие 8 1

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Журнал регистрации

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

1 стартмани

15.01.2020    360    ClickUp    0       

Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 17 февраля по 13 марта 2020 года. Промо

Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом

9000 рублей

Часовой на страже логов 35

Статья no Нет файла Бесплатно (free) Практика программирования

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    1668    Scorpion4eg    6       

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

Статья Программист Нет файла v8 Россия Абонемент ($m) Журнал регистрации

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

1 стартмани

26.12.2019    968    bryantsev.yury    3       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Журнал регистрации SQLite, кластер, метаданные 8

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Журнал регистрации

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

1 стартмани

22.12.2019    1235    1    AlexSTAL    2       

Ускорение типовой 1С 11

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Упрощаем журнал регистрации.

5 стартмани

09.12.2019    7486    1    Mari_Kuznetzova    48       

22 января состоится вебинар "Использование технологии блокчейн в 1С" Промо

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

990 рублей

Универсальная обработка (УФ) для работы с журналом регистрации в формате SQLite через ODBC 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Журнал регистрации

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

1 стартмани

27.11.2019    1103    4    Spartacus    5       

История изменений реквизитов документов 1

Отчеты и формы Программист Пользователь Архив с данными v8 БП2.0 УТ10 УУ Абонемент ($m) Журнал регистрации

Кратко если, то можно посмотреть, кто менял и когда сумму, цену, количество в документах.

4 стартмани

22.11.2019    1269    1    sss999    10       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Управление историей изменения данных 1

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации

Данная обработка позволяет включить версионирование объектов истории изменения данных.

10 стартмани

09.11.2019    1687    D_E_S131    3       

Анализ загруженности сотрудников по Журналу регистрации 6

Отчеты и формы no Внешний отчет (ert,erf) v8 1cv8.cf БП3.0 Беларусь Россия Абонемент ($m) Журнал регистрации Учет рабочего времени

Отчет позволяет оценить активность сотрудников (пользователей 1С) согласно данным, полученным из Журнала регистрации.

1 стартмани

29.10.2019    1643    12    adeptis    0       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.130.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

Версионирование объеков УТ 10 с возможностью перехода к сохраненной версии 6

Инструменты и обработки no Конфигурация (md, cf) v8 УТ10 Абонемент ($m) Журнал регистрации Универсальные функции

Версионирование объектов УТ 10.3 с возможностью перехода к сохраненной версии. Взята стандартная система версионирования УПП, добавлена возможность восстановления ранее сохраненной версии.

1 стартмани

28.10.2019    2342    5    art.prm    0       

История изменений за период УТ 11 7

Отчеты и формы no Внешний отчет (ert,erf) v8 УТ11 Россия Абонемент ($m) Журнал регистрации Администрирование данных 1С

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

1 стартмани

25.10.2019    2174    17    SergeyRomanov    7       

Подборка программ для взаимодействия с ЕГАИС Промо

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

История версий объектов для УФ 52

Отчеты и формы Программист Пользователь Архив с данными v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Журнал регистрации Обработка документов Обработка справочников

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

1 стартмани

17.10.2019    5587    23    dmitrydemenew    19       

Быстрый поиск в журналe регистрации 1С *.lgd 12

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Обработка для быстрого поиска данных в журнале регистрации 1С SQLite (.lgd). 8.3.15.

1 стартмани

10.10.2019    3596    13    andboss    3       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Сложнейшая загрузка журнала регистрации в ElasticSearch (или делаем настоящий ETL) 39

Инструменты и обработки Системный администратор Архив с данными v8 Россия Windows Абонемент ($m) Журнал регистрации

Году в 2017ом возникло (наверное странное на тот момент) желание перегрузить журнал регистраций 1С в ELK. Чтобы журналы место на диске не съедали, 1С программисты забыв поставить фильтр сервер не подвешивали, все журналы лежали в одном месте да и можно было безопасно туда ответственных пользователей пускать, чтобы сами смотрели кто какой документ поправил.На предложение написать выгрузку сразу из 1С программисты благополучно забили ("ой на это минимум месяц", "у нас срочные бизнес-фичи" и т.д. и т.п.). Зато попалась статья от Aleksey.Bochkov (https://infostart.ru/public/182820/). Ну и решили мы все это запилить без 1С программистов. Во что влезаем я тогда еще не понимал. А вылилось почти в год допилок (хорошо хоть в фоновом режиме) в цельный ETL с использованием C#, T-SQL и прочими делами.

1 стартмани

27.09.2019    5245    5    DonAlPatino    32       

Удаление журнала регистрации с отбором 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации

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

2 стартмани

05.09.2019    1647    4    doctorov_s    4       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

Журнали2Ст: сверхбыстрый журнал регистрации 1С 91

Инструменты и обработки Системный администратор Программист Приложение (exe) v8 Windows Абонемент ($m) Журнал регистрации

Строит внешний индекс по журналам регистрации любого формата и делает поиск в них фантастически быстрым. Дополнительно ничего не нужно настраивать! Журналы Регистрации остаются на своём месте и не занимают дополнительного, а сервис Журнали2Ста обеспечивает их постоянную индексацию.

1 стартмани

22.08.2019    6696    65    MrWonder    52       

Отчет по изменению документа 7

Отчеты и формы Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Данная обработка покажет, кто изменил определенный документ.

1 стартмани

30.07.2019    2060    6    ranis888    6       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500/9500 рублей

Отправление событий журнала регистрации в приватный / публичный канал Telegram в виде сообщений и файлов 6

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) WEB Журнал регистрации

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

1 стартмани

29.07.2019    2170    3    serg-lom89    0       

Простейшее использование Elasticsearch для работы с журналом регистрации 19

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Журнал регистрации

Простейшая настройка выгрузки журнала регистрации в Elasticsearch для ускорения поиска.

1 стартмани

20.06.2019    3825    2    milut    11       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.130.х, КА 2.4.11.х и ERP 2.4.11.х! Промо

Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.

29700 руб.

Как отправить ошибки из журнала регистрации на почту? Продолжение. Отдельная база 4

Инструменты и обработки no Конфигурация (md, cf) v8 Windows Абонемент ($m) Журнал регистрации

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

1 стартмани

27.05.2019    2334    2    wowik    0       

Запуск встроенного в платформу механизма История данных для ленивых 17

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

В последних версиях платформы 1С появился замечательный механизм Истории данных. Если кратко, механизм позволяет сохранять историю, просматривать, сверять и самое приятное, это восстанавливать любую версию объекта. А самое главное, чтобы это заработало, не нужно продумывать, писать и поддерживать тонны кода, все уже сделано за нас... Возникает вопрос: Как запустить встроенный в платформу механизм Истории данных ничего не кодируя?

1 стартмани

24.05.2019    4098    5    _root    13       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Отчет для просмотра отчетов, которые запускали пользователи 12

Отчеты и формы Системный администратор Пользователь Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Отчет отвечает на вопрос: кто, и как часто формирует отчеты. Было протестировано на Управлении торговлей, конфигурация 11.4.1.273.

1 стартмани

18.05.2019    2779    8    Mari_Kuznetzova    3       

Подсистема для выгрузки, быстрого поиска и анализа журнала регистрации 1С в Elasticsearch 30

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Журнал регистрации Поиск данных

Elasticsearch - это opensource решение для очень быстрого поиска данных в больших массивах информации. Использование этого решения позволит решить проблемы с поиском и анализом больших объемов информации журнала регистрации. Протестировано на платформах начиная с 8.3.10.2580.

5 стартмани

15.05.2019    4827    18    Nikolo17    12       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

История данных [Расширение] УТ11 7

Инструменты и обработки Программист Расширение (cfe) v8 УТ11 Абонемент ($m) Журнал регистрации

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

10 стартмани

06.05.2019    2776    2    noprogrammer    6       

История выполнения фоновых заданий в виде диаграмм (версия 6.5.19) 20

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

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

1 стартмани

26.04.2019    3741    21    sertak    23