Оповещение приложений 1С об изменении данных на сервере








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

Для свободного скачивания доступна полная версия.

 

Использование службы очередей сообщений PAUTMessageService в конфигурациях 1С

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

Введение

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

  1. Для отображения актуальных данных из какого-либо справочника у разработчиков 1С конфигураций нет механизма получения оповещения от сервера баз данных или приложения изменившего данные. Для этих целей в упрощённом варианте применяется обновление по таймеру.
  2. Выполнение длительных операций возможно с использованием объекта «Фоновое задание», и существующий механизм позволит «узнать» о том, когда задание завершено, но приложение осуществляющее проверку завершения задания не может выполнять каких-либо других действий. Поэтому разработчикам приходится «отмечать» на сервере баз данных, что операция завершена, а на клиентских приложениях снова пользоваться таймерами.
  3. При разработке любой системы приближенной к системам реального времени разработчикам 1С приходится «изобретать» механизм взаимодействия приложений, отвлекаясь от реализации прикладной задачи. К таким продуктам можно отнести системы управления складскими запасами и др.
  4. Разработчикам 1С приходится состыковывать свои продукты с другими учётными системами, «узнавая» об изменениях в «чужих» данных с задержкой.

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

В своей реализации мы предлагаем следующее:

  1. Службу очередей сообщений – простую в установке и использовании;
  2. Универсальную для всех релизов 1С внешнюю компоненту взаимодействия с этой службой;
  3. Расширенная хранимая процедура для СУБД MSSQL также взаимодействующая со службой;
  4. Приложение позволяющее создавать триггеры в базах данных 1С, которые могут оповестить об изменениях в справочниках, документах и других объектах.

На схеме 1 отображено взаимодействие всех предлагаемых компонентов продукта в распределённой сети. Фактически взаимодействие и обмен сообщениями осуществляется экземплярами службы PAUTMessageService установленными на всех узлах сети. Каждый хост может быть наделён одной из указанных ролей или все компоненты продукта могут быть установлены на одном узле.

Схема взаимодействие компонентов продукта

Схема 1. Взаимодействие компонентов продукта.

Сценарий развёртывания компонентов продукта:

  1. На клиентские ПК устанавливается инсталляционный пакет «AddIn нотификации объектов 1С.msi» в который входит служба очередей сообщений и необходимые библиотеки;
  2. На компьютер являющийся сервером баз данных 1С с развёрнутым сервером MSSQL устанавливаем пакет «PAUT Core 1.3.msi»;
  3. На компьютер разработчика устанавливаем пакет «Менеджер нотификации объектов 1С.msi» содержащий приложение для управления триггерами производящими оповещение клиентских приложений об изменении информации в базе данных.

 

Далее будет описано работа службы PAUTMessageService, использование внешней компоненты «PAUT1CObjNotify.dll» и приложения «Менеджер нотификации объектов 1С».

Служба очередей сообщений PAUTMessageService

Служба реализует простой механизм асинхронного взаимодействия приложений с использованием очередей сообщений. Реализована схема подписки на сообщения с сохранением состояния. Необходимо определится с терминологией в контексте данной задачи:

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

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

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

Асинхронная передача – вариант реализации, при котором приложения отправляющие сообщения в очередь могут немедленно продолжить свою работу, а приложения желающие получить сообщение не «ждут» его, а получают оповещение о приходе сообщения, не приостанавливая свою работу для его обработки.

Подписчик (слушатель) – приложение, регистрирующееся на получение сообщений по определённому имени. Регистрация может быть осуществлена на удалённом сетевом узле, на котором развёрнута служба PAUTMessageService. Тогда при поступлении сообщения с таким именем подписчик будет оповещён об этом событии.

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

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

Служба PAUTMessageService фактически является TCP сервером, принимающим входящие соединения. Так как сети строятся с использованием маршрутизаторов, в данной реализации был заложен механизм преодоления трансляторов сетевых адресов (NAT) для передачи сообщений между «закрытыми» сетями.

Что бы использовать функционал службы сообщений в своих разработках, в поставку продукта включена клиентская библиотека «PAUTMessageServiceClient.dll». Она передаёт вызовы в службу и выполняет обратные вызовы (оповещения о принятых сообщениях) из службы.

Внешняя компонента «PAUT1CObjNotify.dll»

Данная внешняя компонента работает в 1С версий 7.7, 8.0 — 8.2. Она взаимодействует со службой очередей сообщений PAUTMessageService через клиентскую библиотеку «PAUTMessageServiceClient.dll» и фактически является «обёрткой» для осуществления вызовов из конфигураций 1С. Разработчики конфигураций 1С могут использовать эту компоненту для обмена сообщениями между своими приложениями 1С и для взаимодействия со сторонними продуктами, использующими клиентскую библиотеку службы очередей сообщений PAUTCommandService.

Чтобы создать экземпляр объекта компоненты, необходимо объявить переменную для объекта.

Перем глСлужбаСообщений Экспорт;

 

Создание экземпляра в различных версиях 1С различно.

В версии 1С 7.7

Если ЗагрузитьВнешнююКомпоненту(«PAUT1CObjNotify.dll») = 1 Тогда

  глСлужбаСообщений = СоздатьОбъект(«Addin.PAUT1CObjNotify»);

  Сообщить(«Компонента PAUT1CObjNotify загружена»); Иначе

  Сообщить(«Компонента PAUT1CObjNotify не загружена!»);

КонецЕсли;

 

В версии 1С 8.х

Попытка

  ЗагрузитьВнешнююКомпоненту(«PAUT1CObjNotify.dll»);

  глСлужбаСообщений = Новый(«Addin.PAUT1CObjNotify»);

  Сообщить(«Компонента PAUT1CObjNotify загружена»);

Исключение

  Сообщить(ОписаниеОшибки());

  Сообщить(«Компонента PAUT1CObjNotify не загружена!», СтатусСообщения.Внимание);

КонецПопытки

 

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

Регистрирует клиента на определенное сообщение.

ЗарегистрироватьНаХосте(НаименованиеСобытия, НаименованиеХоста, «»);

 

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

НаименованиеХоста – строка определяющая имя компьютера или его IP адрес на котором будет осуществлена регистрация на событие. Если значение будет пустой строкой, то регистрация будет выполнена на локальном компьютере.

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

Разрегистрирует клиента с указанного наименования сообщения.

РазрегистрироватьНаХосте(НаименованиеСобытия, НаименованиеХоста);

 

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

Генерирует сообщение, которое должны получить ранее зарегистрированные на него слушатели.

СгенерироватьСобытиеНаХосте(НаименованиеСобытия, ДанныеСобытия, НаименованиеХоста);

 

ДанныеСобытия – это строка представляющая собой любые данные которые будут переданы зарегистрированным слушателям на указанное НаименованиеСобытия.

НаименованиеХоста – строка определяющая имя компьютера или его IP адрес на котором будет осуществлена генерация событие. Если значение будет пустой строкой, то событие будет сгенерировано на локальном компьютере.

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

В версии 1С 7.7

Нужно воспользоваться глобальной процедурой ОбработкаВнешнегоСобытия

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт

  Перем Инфо;

  Сообщить(«ВнешнееСобытие: Источник=» + Источник + «; Событие=» + Событие + «; Данные=» + Данные); 

  Если (Источник = «PAUTMessageService») Тогда

    Данные = СтрЗаменить(Данные, «|», РазделительСтрок);

    // Идентификатор службы того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 1);

    // Идентификатор мессанжера того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 2);

    // Наименование хоста того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 3);

    // IP адреса того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 4);

    // Наименование события

    Инфо = Событие;

    // Данные события

    Инфо = СтрПолучитьСтроку(Данные, 5);

  КонецЕсли

КонецПроцедуры

 

В версии 1С 8.х

Можно воспользоваться  глобальной процедурой ОбработкаВнешнегоСобытия в глобальном модуле приложения или процедурой ВнешнееСобытие формы.

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт

  Сообщить(«ОбработкаВнешнегоСобытия: Источник=» + Источник + «; Событие=» + Событие +

    «; Данные=» + Данные);

КонецПроцедуры


Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт

  Перем Инфо;

  Сообщить(«ВнешнееСобытие: Источник=» + Источник + «; Событие=» + Событие +

    «; Данные=» + Данные);

  Если (Источник = «PAUTMessageService») Тогда

    Данные = СтрЗаменить(Данные, «|», Символы.ПС);

    // Идентификатор службы того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 1);

    // Идентификатор мессанжера того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 2);

    // Наименование хоста того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 3);

    // IP адреса того кто послал событие

    Инфо = СтрПолучитьСтроку(Данные, 4);

    // Наименование события

    Инфо = Событие;

    // Данные события

    Инфо = СтрПолучитьСтроку(Данные, 5);

   КонецЕсли

КонецПроцедуры

 

Источник – При вызове указанных процедур во всех версиях 1С, этот параметр всегда равен строке «PAUTMessageService».

Событие – Строка равная значению строки НаименованиеСобытия на которое было выполнена регистрация события.

Данные – Строка содержащая в себе информацию о компьютере который сгенерировал событие и данные которые он передал в строке ДанныеСобытия во время вызова функции СгенерироватьСобытиеНаХосте. Вся эта информация разделена вертикальной чертой «|». Из примеров видно как можно ее распарсить.

Получение оповещений об изменении информации в базе данных

Для получения оповещений об изменении информации в базах данных 1С, развёрнутых с использованием СУБД MSSQL, разработана библиотека, реализующая расширенную хранимую процедуру. Эта хранимая процедура, используя службу очередей сообщений PAUTMessageService, может оповещать зарегистрированных слушателей об изменении информации в базе данных MSSQL. Исполняемые файлы для этой хранимой процедуры входят в инсталляционный пакет «PAUT Core 1.3.msi», который необходимо развернуть на сервере MSSQL. Так как на компьютере, являющемся сервером баз данных может быть несколько экземпляров серверов MSSQL, процесс регистрации расширенной хранимой процедуры необходимо выполнить вручную. Для этого в папке «%CommonProgramFiles%PAUT1.3udf_mssql» расположено приложение «MSUDFNotifyInstaller.exe». При его запуске будет предложен выбор экземпляра сервера и после прохождения аутентификации произведена регистрация.

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

Синтаксис вызова расширенной хранимой процедуры

 exec master.dbo.PAUTNotify @NotifyName, @NotifyData;

@NotifyName –  Строка содержащая наименование сообщения;

@NotifyData – Строка содержащая данные которые будут переданы слушателям зарегистрированные на сообщение @NotifyName.

 

Код создания таблицы «TestTable»

 /*Создание тестовой таблицы для демонстрации оповещения изменений*/

create table [dbo].[TestTable]

(

 [ID] bigint identity(1,1) NOT NULL,

 [Data] varchar(100),

  primary key (ID)

)

go

 

Код трёх триггеров: на удаление, вставку и обновление данных в таблице «TestTable»

 /*Создание триггера на удаление из таблицы*/

create trigger [dbo].[TestTableDel] on [dbo].[TestTable] after delete as

begin

  set nocount on;

  declare @IDStr varchar(1024);

  select @IDStr = cast(ID as varchar(100)) from deleted

  exec master.dbo.PAUTNotify ‘TestTable_delete’, @IDStr;

end

go

 

/*Создание триггера на вставку в таблицу*/

create trigger [dbo].[TestTableIns] on [dbo].[TestTable] after insert as

begin

  set nocount on;

  declare @IDStr varchar(1024);

  select @IDStr = cast(ID as varchar(100)) from inserted

  exec master.dbo.PAUTNotify ‘TestTable_insert’, @IDStr;

end

go

 

/*Создание триггера на обновление в талице*/

create trigger [dbo].[TestTableUpd] on [dbo].[TestTable] after update as

begin

  set nocount on;

  declare @IDStr varchar(1024);

  select @IDStr = cast(ID as varchar(100)) from inserted

  exec master.dbo.PAUTNotify ‘TestTable_update’, @IDStr;

end

go

 

Эти триггеры будут выполняться при удалении, вставки и изменении данных в таблице. Размещённый в них код вызова расширенной хранимой процедуры произведёт генерацию события на локальном компьютере. Таким образом, удалённые приложения, которые зарегистрируются на компьютере сервере баз данных на события ‘TestTable_delete’, ‘TestTable_insert’, ‘TestTable_update’ будут получать оповещения, когда кто-либо внесет изменения в таблицу [TestTable]. И в качестве данных передаваемых клиенту будут значения поля [ID] той записи, с которой произвели изменения. По этому идентификатору клиентские приложения смогут обновить всю необходимую информацию.

Менеджер нотификации объектов 1С

В инсталляционный пакет входит приложение (Рис. 1), упрощающее выполнение всех описанных выше операций для разработчиков 1С конфигураций. Это приложение может подключается к базам данных 1С различных версий, расположенных на MSSQL серверах. Оно отображает объекты 1С, в привычном для 1С программистов виде и соответствующие им таблицы в базе данных.

 Внешний вид приложения «Менеджер нотификации объектов 1С»

Рис. 1. Внешний вид приложения «Менеджер нотификации объектов 1С».

Слева отображен список алиасов для подключения к SQL базам данных 1С. На данном рисунке в приложении зарегистрировано два алиаса для 1С версии 7.7 и версии 8.1. Сверху над списком находится панель инструментов, с помощью которой можно выполнять редактирование списка алиасов, устанавливать и разрывать соединения для соответствующего алиаса и открывать редактор триггеров для какого-либо объекта 1С.

На рисунке 2 показан вид приложения после установления подключения к алиасу «Тестовая база данных 1С версии 8.1».

Внешний вид приложения после подключения к базе данных

Рис. 2. Внешний вид приложения после подключения к базе данных.

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

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

Для того что бы выставить эту галочку достаточно сделать двойной клик указателем мыши, после чего откроется диалог на создание необходимых триггеров (Рис. 3). Стоит обратить внимание на то, что наименование сообщения генерируемое в триггерах складывается из наименования базы данных, наименования объекта 1С и действия выполняемого над таблицей этого объекта. Для того чтобы получать оповещения обо всех изменениях объекта «СправочникАвтоОбновления», нужно зарегистрироваться на все три события:

  1. Test01_СправочникАвтоОбновления_добавление;
  2. Test01_СправочникАвтоОбновления_изменение;
  3. Test01_СправочникАвтоОбновления_удаление.

Создание триггеров для объекта «СправочникАвтоОбновления»

Рис. 3. Создание триггеров для объекта «СправочникАвтоОбновления».

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

 

Тип объекта 1С

Поле таблицы хранения

1С версии 7.7

Системные

Первичный ключ

Справочник

Code

Документ

IDDoc

Регистр

Первичный ключ

Календарь

Первичный ключ

Журнал расчетов

Первичный ключ

1C версии 8.х

Системные

Первичный ключ

Справочники

_Code

Документы

_Number

Регистры

Первичный ключ

Календари

Первичный ключ

Журналы расчетов

Первичный ключ

Планы обмена

_Code

Последовательности

Первичный ключ

Журналы документов

Первичный ключ

Перечисления

Первичный ключ

Планы видов характеристик

_Code

Планы счетов

_Code

Регистр сведений

Первичный ключ

Регистр накопления

Первичный ключ

Регистр бухгалтерии

Первичный ключ

Регистр расчета

Первичный ключ

План видов расчета

_Code

Бизнес процесс

_Number

Задача

_Number

Таблица №1. Соответствия объектов 1С и данных посылаемых при генерации событий.

Если в приложении сделать двойной клик по объекту напротив которого уже стоит галочка, то откроется диалог, предлагающий удалить эти три триггера у соответствующей таблицы объекта (Рис. 4).

Удаление триггеров для объекта «СправочникАвтоОбновления»

Рис.4. Удаление триггеров для объекта «СправочникАвтоОбновления».

В приложении так же есть возможность отредактировать уже созданные триггеры. Для этого нужно выделить объект с галочкой и нажать на соответствующую кнопку  в панели инструментов. После этого откроется редактор SQL кода триггеров (Рис. 5). В помощь разработчику, в левой части окна расположен список таблиц с их полями, которые можно использовать при редактировании триггеров. Можно внести любые необходимые изменения в этот код и при нажатии кнопки «Применить» будет осуществлена попытка внести изменения в метаданные базы. Сообщения об ошибках выдаваемых серверам баз данных отображаются в области «Сообщения».

Редактирование триггеров объекта «СправочникАвтоОбновления»

Рис. 5. Редактирование триггеров объекта «СправочникАвтоОбновления».

Демонстрационные конфигурации 1С

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

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

Первый пример состоит из двух конфигураций 1С расположенных по пути «%CommonAppDataFolder%PAUTManager1CObjNotify1.0Demo» в каталоге «Demo1C8File» и в каталоге «Demo1C7File». Это файловые варианты конфигураций, не требующие сервера баз данных. Конфигурации загружают внешнюю компоненту «PAUT1CObjNotify.dll» и обе могут выступать как в роли подписчика на сообщения, так и в роли отправителя сообщений. На панели инструментов обеих конфигураций есть кнопка «Демонстрация службы сообщений». При её нажатии отобразится форма (Рис. 6). При открытии формы будет произведена попытка загрузки внешней компоненты. При успехе в окне «Служебные сообщения» появится строка «Компонента PAUT1CObjNotify загружена», в случае ошибки появится строка «Компонента PAUT1CObjNotify не загружена!».

 Пример 1С «Демонстрация службы сообщений»

Рис. 6. Пример 1С «Демонстрация службы сообщений».

Предлагается следующий алгоритм демонстрации работы службы сообщений:

  1. Установите дистрибутив с примерами на двух компьютерах;
  2. На первом компьютере запустите приложения 1С 7 и 8 с демонстрационными конфигурациями.  Далее нажмите кнопку «Зарегистрировать» в обоих приложениях не изменяя другие настройки;
  3. На втором компьютере также запустите две демонстрационные конфигурации, но укажите в поле «Наименование хоста» имя или IP адрес первого компьютера. Далее также нажмите кнопку «Зарегистрировать»;
  4. Теперь можно нажать кнопку «Сгенерировать событие» в любой конфигурации на любом компьютере. Сообщение появится в поле «Информация событий» всех конфигураций которые ранее зарегистрировались в качестве слушателей.

Также в дистрибутив службы сообщений «PAUT Core 1.3.msi» включены примеры, аналогичные данному и реализованные на языках программирования: Delphi XE2, Builder XE2, VisualStudio 2010 C#. Если запустить любой из этих примеров, то он тоже будет способен получать события от 1С:Предприятия и так же оповещать зарегистрированных слушателей. Это покажет использование службы сообщений для взаимодействия программ разработанных на различных языках программирования.

Необходимо отметить следующее:

  1. Можно запустить неограниченное кол-во конфигураций на неограниченном количестве хостов;
  2. Для взаимодействия в реальных сетях необходимо чтобы сетевые узлы корректно «разрешали» указанные NETBIOS или DNS имена в IP адреса и по необходимости были выполнены дополнительные настройки службы сообщений;
  3. Во всех примерах, в поле «Наименование события» указано идентичное значение. При разработке реальных приложений программист может использовать любое количество произвольных имен сообщений, производя их регистрацию и выполняя генерацию оповещений;
  4. Поле «Данные события» является произвольной строкой служащей для передачи необходимой информации между приложениями;
  5. Поле «Идентификатор службы» не используется и служит в отладочных целях.

Следующие два примера размещённые в каталогах «Demo1C7MSSQL» и «Demo1C8MSSQL» идентичны и показывают получение оповещения от сервера баз данных об изменении информации в объектах 1С. Рассмотрим пример для 1С 8. Для успешной демонстрации этого примера необходимо выполнить следующие условия:

  1. необходим MSSQL сервер, на котором установлен инсталляционный пакет «PAUT Core 1.3.msi»;
  2. Необходимо зарегистрировать, в системной базе «Master», расширенную хранимую процедуру «PAUTNotify», для этого в папке «%CommonProgramFiles%PAUT1.3udf_mssql» расположено приложение «MSUDFNotifyInstaller.exe»;
  3. Базу данных на MSSQL сервере, в которой будет храниться конфигурация, необходимо называть «Test01», так как это внесено в исходный код;
  4. Пример необходимо запускать с компьютера сервера баз данных или менять исходный код примера указывая IP адрес хоста в необходимом параметре функции «РазрегистрироватьНаХосте» описанной выше.

Демонстрация второго примера «Справочник автоматического обновления»

Рис. 7. Демонстрация второго примера «Справочник автоматического обновления».

В конфигурации этого примера создан объект «СправочникАвтоОбновления». При открытии этого справочника в 1С:Предприятии загружается внешняя компонента «PAUT1CObjNotify.dll» и выполняет регистрации на локальном компьютере на три события:

  1. Test01_СправочникАвтоОбновления_добавление;
  2. Test01_СправочникАвтоОбновления_изменение;
  3. Test01_СправочникАвтоОбновления_удаление.

 Этот пример следует запускать в двух экземплярах. При внесении изменений в справочник в первом экземпляре приложения 1С:Предприятия, все изменения так же будут отображаться во втором экземпляре 1С:Предприятия. На рисунке 7 отображен запущенный пример 1С:Предприятия с открытым справочником «СправочникАвтоОбновления».

Любые информационные сообщения поступающие от сервера баз данных протоколируются в стандартное окно «Служебные сообщения».

Заключение

Разработанный продукт является достаточно простым в установке и развёртывании, предлагает разработчикам понятный API, являющийся в тоже время очень гибким. С его помощью можно строить распределённые программные системы работающие в реальном времени. Для интеграции разработанных конфигураций 1С с другими информационными системами, исходный код которых не доступен для модификации, можно использовать возможности продукта VisualBatch. Он также базируется на службе очередей сообщений PAUTMessageService и является свободно распространяемым.

23 Comments

  1. retif

    а где скачать VisualBatch ?

    Сайт не работает

    Reply
  2. dzuyba

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

    Reply
  3. KotMurza

    Огромное спасибо за разработку!

    Чесно говоря, я долго «тормозил» с ее внедрениемм.

    Но когда наконец-то дошли руки — я «реально прибалдел» от того, насколько все просто и чЁтко!

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

    Еще раз: БЛАГОДАРЮ и РЕКОМЕНДУЮ!

    Reply
  4. dzuyba

    Здравствуйте, KotMurza!

    Благодарим за ваш отзыв.

    Работаем над следующей версией.

    Reply
  5. KotMurza

    В процессе эксплуатации версии 1.3 обнаружил пренеприятнейшее явление:

    компьютер не в домене, ОС Win8, 1сv7:

    метод СгенерироватьСобытиеНаХосте выполняется больше 5 секунд — чрезвычайно ощутимая пауза.

    Анамнез пока не установлен, есть подозрения на DNS, хотя сама 1С функционирует нормально и нет никаких сетевых проблем.

    Честно говоря, вообще не понимаю смысла в генерации события «на хосте». Почему нельзя генерировать «просто сообщение» (без привязки к хосту). А те, кто подписался на это сообщение — его «слушают»…

    П.С. Сайт PAUT.RU не работает…

    Reply
  6. dzuyba

    (5) KotMurza,

    Добрый день.

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

    «Служба сообщений» входит в дистрибутив «PAUT Core» его последняя версия 1.4.

    Нумерация версий у «Нотификация объектов 1С» своя, последняя 1.2 и она использует «PAUT Core» версии 1.4.

    Задержка может быть только из-за долгого разрешения имени в адрес.

    вопрос: Хост который указываете параметром в СгенерироватьСобытиеНаХосте в одной сети с вызывающим ПК?

    Смысл в генерации события на хосте в следующем:

    Клиенты регистрируются на каком-то хосте и «ждут» когда придёт оповещение.

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

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

    Если источником события является сам сервер – то он генерит локальное событие.

    Reply
  7. roadman

    Очень полезная штука, знаю, куда прикрутить…

    Reply
  8. artemka

    Скажите, а компонента будет работать в сеансе сервера 1с без клиентов?

    У меня есть 2 сервера 1с. После того как на 1-ом произошло какое-либо событие он должен оповестить 2-ой сервер о нем. Функция ЗагрузитьВнешнююКомпоненту доступна только в толстом клиенте, соответственно через внешние события не передать.

    Reply
  9. pashaapex

    Есть версия для 8.3?

    Reply
  10. mas-prog1c

    (9) pashaapex, присоединяюсь, очень нужная вещь для 8.3

    Reply
  11. pbazeliuk

    Проект еще жив?

    Reply
  12. dzuyba

    (11) pbazeliuk, Да, проект жив. Поправлю приложение для работы с 1С 8.3 и выложу обновлённый дистрибутив.

    Reply
  13. Varsaavius

    Добрый день. Планируется ли выпуск версии под 8.3? ):

    Reply
  14. dzuyba

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

    Reply
  15. dzuyba

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

    Reply
  16. gorvin

    (15) Добрый день. А где можна найти эту новую версию продукта?

    Спасибо.

    Reply
  17. demientut

    сайт недоступен. Обидно. Скачал то что есть, но она максимум на 8.2.

    Автор!!! Может на инфостарте лучше обновите!

    Reply
  18. yaxinr

    можно оповещать и таким образом https://infostart.ru/public/656493/

    Reply
  19. dzuyba

    (18)Работу сайта восстановил. Переезжал на новый хостинг.

    Reply
  20. demientut

    «Welcome to nginx on Fedora!» вот что на сайте

    Reply
  21. stiv1968

    (20) Скачать ничего нельзя, рисунка CAPTCHA нет на экране

    Reply
  22. stiv1968

    Captcha появилась, но теперь отсутствуют файлы

    Reply
  23. stiv1968

    Windows 7 SP1 64bit

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *