Система автоматической регистрации ошибок в журнале регистрации и отправки их на Email (+CF)

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

Для реализации данной функции мной была разработана подсистема «Регистрация событий журнала регистрации», которая универсальна и может быть внедрена в любую конфигурацию, где есть БСП.
Методы подсистемы выполняют автоматический сбор ошибок в журнале регистрации при запуске приложения, фиксацию их в регистре сведений «ms_ОшибкиЖурналаРегистрации» и отправку порциями на произвольные Email-адреса в форматированном HTML-виде.
После выгрузки событий в регистр и отправки почтой устанавливается новая граница времени выгрузки.

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

Настройка осуществляется в три этапа:
1. В типовом справочнике «Учетные записи электронной почты» настраивается системная учетная запись.
2. В ПВХ «ms_ПредопределенныеЭлементы» в параметре «ПолучателиОшибок» через запятую указываются получатели сообщений.
3. В ПВХ «ms_ПредопределенныеЭлементы» поднимается флаг «ОтправитьОшибкиЖурналаНаПочту», который активизирует механизм извлечения ошибок из журнала регистрации и их отправку на электронную почту.

При объединении c файлом CF требуется сделать отбор по подсистеме «ms_РегистрацияСобытийЖурналаРегистрации», а также не забыть включить запуск выгрузки из события «ПриНачалеРаботыСистемы» модуля управляемого приложения.

Если всё настроено корректно, электронных писем в папке «Входящие» вашего почтового ящика не видно, посмотрите в папку «Спам».

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

Скачать CF-файл подсистемы.

Прикрепление файлов (БСП 2.3)

Чтобы прикреплять файлы к произвольному объекту, нужно выполнить следующую настройку:

1. Включить в определяемый тип «ВладелецПрисоединенныхФайлов» и «ВладелецПрисоединенныхФайловОбъект» требуемый ссылочный и объектный тип.

2. Добавить справочник «ИмяСправочникаПрисоединенныеФайлы» путём копирования аналогичного справочника номенклатуры. «ИмяСправочника» заменить на нужное имя объекта.

3. Изменить у нового справочника него тип реквизита «ВладелецФайла» на требуемый тип объекта.

4. В определяемый тип «ПрисоединенныйФайл» и «ПрисоединенныйФайлОбъект» включить типы нового объекта, который только что создали.

5. В форме списка исходного объекта добавляем поле в запрос динамического списка:

6. В таблицу формы динамического списка выводим новое поле с видом «Картинка» и свойством «КартинкаЗначений» — «КоллекцияСкрепка».

7. В форме элемента исходного объекта в параметры формы добавляем ключевой параметр «ЗначениеКопирования» с типом СправочникСсылка.ИсходныйСправочник или ДокументСсылка.ИсходныйДокумент. Обязательно устанавливаем свойство «Ключевой параметр».

8. В модуле формы элемента в событии «ПриЗаписиНаСервере» вписываем следующий код:

Теперь в форме объекта появляется команда «Файлы»:

faylyi

Как включить версионирование объекта (БСП 2.3)

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

1. В определяемый тип «ВерсионируемыеДанные» добавить ссылку на справочник или документ.

2. В определяемый тип «ВерсионируемыеДанныеОбъект» добавить требуемый объект — справочник или документ.

3. Если включается версионирование документа, то в подписку на событие «ЗаписатьВерсиюДокумента» добавить нужный документ.

4. Включить функциональную опцию по версионированию:

«НСИ и администрирование» — «Поддержка и обслуживание» — «Версионирование объектов» — Включить.

А также в этом же пункте меню перейти в «Настройки хранения» и включить версионирование и параметры хранения версий требуемого объекта.

Версионирование в 1С

Выполнение длительных операций в 1С 8 с помощью БСП 2.3

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

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

В Интернете есть множество примеров, как это сделать неудобно. Благодаря БСП 2.3 мы можем запустить выполнение длительной операции с выводом формы длительной операции («крутящееся колёсико») и сообщение прогресса выполнения буквально в несколько строк кода.

Рассмотрим тестовую задачу.

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

Для решения задачи:

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

Серверный общий модуль

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

2. Создадим обработку «ТестоваяОбработка» с формой обработки.

3. На форме обработки создадим реквизит формы «ДлительнаяОперация» с типом «Произвольный».

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

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

Реквизиты формы

4. Также создаём реквизит формы «РезультатВычислений», в который фоновое задание вернёт результат.

5. В обработчике нажатия кнопки размещаем следующий код:

Также в модуле формы требуется еще два метода:

Вот и всё. Не нужно самим создавать никаких обработчиков ожидания и избыточных методов/реквизитов. Всё уже сделано за нас разработчиками БСП 2.3.

Форма длительной операции:

Форма длительной операции

Результат работы длительной операции — в поле ввода появился текст:

Результат длительной операции

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

Универсальная подсистема печати в Word

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

Как строена универсальная подсистема печати?

  1. В подсистеме создаются шаблоны печати.Шаблоны печатиВ шаблоне указывается наименование и перечень параметров, которые имеются в Word-шаблоне. Параметры указываются в табличной части элемента справочника. Имена параметров шаблона должны совпадать с  именами закладок в Word-шаблоне. Система позволяет использовать три типа параметров:
    а) фиксированное значение — некоторая текстовая константа,
    б) реквизит — произвольный реквизит ссылки, данные которой требуется печатать, например, реквизит договора,
    в) произвольный запрос — произвольный запрос к БД. Запрос должен возвращать некоторые данные, из которых берется представление значения первого поля первой строки выборки.
    Шаблоны печати можно загружать/выгружать в формате XML (команды контекстного меню формы списка шаблонов).
    Также к шаблону печати прикрепляется Word-шаблон с заготовленными закладками.
    Пример Word-шаблона можно скачать здесь.
  2. Обработка «Печать данных по шаблонам» непосредственно выполняет вывод вычисленных параметров в Word-шаблон.
    В ней указывается произвольная ссылка, данные которой требуется печатать, и шаблон печати.
    Для печати используется COM-объект Word (должен быть установлен в системе).
    Печать данных по шаблонам

Пример базы с настроенными шаблонами можно скачать здесь.

В тестовой базе выполняется печать данных документа «Заказ клиента».

Пример печати в шаблон

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

Как прикрутить сервис 1С-Контрагент к любой конфигурации

Замечательный сервис «1С-Контрагент» позволяет по ИНН или части наименования получать реквизиты юридического лица или ИНН. Интеграция с сервисом выполнена почти во всех типовых конфигурациях 1С.

Если вам потребовалось использовать данный функционал в своей конфигурации, можно воспользоваться с подготовленным мной CF-файлом. В CF находится подсистема «ms_Контрагент1С». Объедините свою конфигурацию с этой подсистемой и всеми входящими в неё файлами.

Подсистема полностью автономна и не требует дополнительных методов.

Тестировалась на платформе 8.3.8.1747.

Файл CF.

Как настроить?

В методе «ПараметрыАутентификацииВСервисе» общего модуля «ms_ДанныеЕдиныхГосРеестров» нужно указать логин и пароль от users.v8.1c.ru.

Как использовать?

Для поиска данных контрагента вызываем метод «РеквизитыПоИНН» общего модуля «ms_ДанныеЕдиныхГосРеестров».

Метод принимает любой ИНН, как физического лица, так и юридического.

В результате работы метода формируется структура с данными о контрагенте.

Добавление прозрачной картинки в табличный документ

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

Как разместить картинку-подпись директора/бухгалтера или печать организации на печатной форме, чтобы она отображалась всегда в нужном месте и была прозрачной?

Для этого можно воспользоваться следующей функцией:

Пример вызова метода из кода:

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

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

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

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

 

Универсальное сторнирование документов для УТ 11.2

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

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

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

 

Отображение произвольной таблицы значений на управляемой форме

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

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

При использовании нужно учесть, что код писался под платформу 8.3, а в конфигурацию была внедрена «Библиотека стандартных подсистем» (если у вас не внедрена БСП, отключите вызов функции общего модуля «СтроковыеФункцииКлиентСервер»).

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