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

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

Разработка - Разработка внешних компонент

Продукт позволяет реализовать взаимодействие нескольких экземпляров 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%\PAUT\1.3\udf_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%\PAUT\Manager1CObjNotify\1.0\Demo» в каталоге «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%\PAUT\1.3\udf_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 и является свободно распространяемым.

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

Наименование Файл Версия Размер
Нотификация объектов 1С.rar
.rar 99,62Mb
28.11.12
33
.rar 99,62Mb 33 Скачать
Руководство по работе с продуктом Менеджер нотификации объектов 1С.pdf
.pdf 674,19Kb
16.05.12
15
.pdf 674,19Kb 15 Скачать
Руководство по установке Менеджера нотификации объектов 1С.pdf
.pdf 372,84Kb
16.05.12
13
.pdf 372,84Kb 13 Скачать
Руководство по установке Addin нотификации объектов 1С.pdf
.pdf 415,88Kb
16.05.12
14
.pdf 415,88Kb 14 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. retif 1 10.04.13 17:59 Сейчас в теме
а где скачать VisualBatch ?
Сайт не работает
2. dzuyba 43 19.04.13 08:35 Сейчас в теме
Здравствуйте. Возможно сайт был отключен на небольшой период. Но сейчас он включен и можно качать. Извиняюсь за то что так поздно заметил ваше сообщение.
3. KotMurza 11.05.13 14:14 Сейчас в теме
Огромное спасибо за разработку!
Чесно говоря, я долго "тормозил" с ее внедрениемм.
Но когда наконец-то дошли руки - я "реально прибалдел" от того, насколько все просто и чЁтко!

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

Еще раз: БЛАГОДАРЮ и РЕКОМЕНДУЮ!
4. dzuyba 43 20.05.13 12:31 Сейчас в теме
Здравствуйте, KotMurza!
Благодарим за ваш отзыв.
Работаем над следующей версией.
5. KotMurza 10.07.13 14:36 Сейчас в теме
В процессе эксплуатации версии 1.3 обнаружил пренеприятнейшее явление:
компьютер не в домене, ОС Win8, 1сv7:
метод СгенерироватьСобытиеНаХосте выполняется больше 5 секунд - чрезвычайно ощутимая пауза.
Анамнез пока не установлен, есть подозрения на DNS, хотя сама 1С функционирует нормально и нет никаких сетевых проблем.

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

П.С. Сайт PAUT.RU не работает...
6. dzuyba 43 24.07.13 07:48 Сейчас в теме
(5) KotMurza,

Добрый день.

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

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

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


Смысл в генерации события на хосте в следующем:
Клиенты регистрируются на каком-то хосте и «ждут» когда придёт оповещение.
Но сгенерить событие может не только сам сервер, но и любой другой хост.
Поэтому есть возможность вызвать функцию с указанием имени хоста на котором есть слушатели этого события.
Если источником события является сам сервер – то он генерит локальное событие.
7. roadman 30.04.14 06:25 Сейчас в теме
Очень полезная штука, знаю, куда прикрутить...
8. artemka 02.06.14 09:42 Сейчас в теме
Скажите, а компонента будет работать в сеансе сервера 1с без клиентов?
У меня есть 2 сервера 1с. После того как на 1-ом произошло какое-либо событие он должен оповестить 2-ой сервер о нем. Функция ЗагрузитьВнешнююКомпоненту доступна только в толстом клиенте, соответственно через внешние события не передать.
stanislav1esnik; +1 Ответить
9. pashaapex 08.09.14 20:29 Сейчас в теме
10. mas-prog1c 25.02.15 18:34 Сейчас в теме
(9) pashaapex, присоединяюсь, очень нужная вещь для 8.3
11. pbazeliuk 1726 04.10.16 22:41 Сейчас в теме
12. dzuyba 43 06.10.16 17:30 Сейчас в теме
(11) pbazeliuk, Да, проект жив. Поправлю приложение для работы с 1С 8.3 и выложу обновлённый дистрибутив.
13. Varsaavius 13.02.17 11:33 Сейчас в теме
Добрый день. Планируется ли выпуск версии под 8.3? ):
15. dzuyba 43 16.02.17 14:27 Сейчас в теме
(13) Добрый день. Сегодня мы выложили новую версию продукта в которую добавили пример для файловой базы данных 1с83.
16. gorvin 102 23.02.17 13:27 Сейчас в теме
(15) Добрый день. А где можна найти эту новую версию продукта?
Спасибо.
14. dzuyba 43 16.02.17 14:26 Сейчас в теме
Добрый день. Сегодня мы выложили новую версию продукта в которую добавили пример для файловой базы данных 1с83.
18. demientut 10.08.17 13:34 Сейчас в теме
сайт недоступен. Обидно. Скачал то что есть, но она максимум на 8.2.
Автор!!! Может на инфостарте лучше обновите!
20. dzuyba 43 22.08.17 19:29 Сейчас в теме
(18)Работу сайта восстановил. Переезжал на новый хостинг.
22. stiv1968 13.09.17 10:41 Сейчас в теме
(20) Скачать ничего нельзя, рисунка CAPTCHA нет на экране
Прикрепленные файлы:
19. yaxinr 49 17.08.17 06:22 Сейчас в теме
21. demientut 25.08.17 13:31 Сейчас в теме
"Welcome to nginx on Fedora!" вот что на сайте
23. stiv1968 04.10.17 10:55 Сейчас в теме
Captcha появилась, но теперь отсутствуют файлы
Прикрепленные файлы:
24. stiv1968 28.11.18 17:59 Сейчас в теме
Windows 7 SP1 64bit
Прикрепленные файлы:
Оставьте свое сообщение

См. также

Маленькая и скромная мобильная внешняя компонента

Вопрос Программист Архив с данными v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

21.10.2019    4606    1    ripreal1    16       

PgConf.Russia 2020. 3-5 февраля 2020 г. Москва. Промо

PGConf.Russia – международная техническая конференция по открытой СУБД PostgreSQL, ежегодно собирающая более 700 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения. Для участников сообщества infostart.ru скидка 5% на участие в конференции.

от 12350 рублей

Native внешняя компонента для оповещения по UDP или TCP

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    4159    7    vdv2701    10       

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

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

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

Оповещение пользователей в трее с обратной связью через DLL

Инструменты и обработки Системный администратор Программист Архив с данными Россия Windows Абонемент ($m) Разработка внешних компонент

Библиотеки для 32 и 64 клиентов для оповещения пользователей в трее с обработкой кликов во внешних событиях.

1 стартмани

20.02.2019    2807    3    xxxAndricxxx    5       

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

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

Внешние компоненты мобильной платформы 1С для ОС Андроид

Статья Программист Нет файла v8::Mobile Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

На трех простых примерах описана процедура разработки внешних компонент для Андроид. Статья написана по мотивам доклада на конференции INFOSTART 2018 EDUCATION.

31.01.2019    10495    109    IgorKissil    18       

Внешняя компонента для выполнения регулярных выражений

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Разработка внешних компонент

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    7792    24    KAV2    57       

Перенос данных УПП 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 руб.

TextRadar - нечеткий поиск в тексте

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Абонемент ($m) Разработка внешних компонент Поиск данных

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

5 стартмани

19.09.2018    9517    15    TSSV    14       

Класс-обработка “Работа с картами Яндекс”

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Разработка внешних компонент WEB

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    14578    149    RSConsulting    14       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

Распознавание лиц (off-line). Демонстрационная база.

Инструменты и обработки Системный администратор Пользователь Руководитель проекта Архив с данными v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

17.07.2018    11969    75    nomadon    45       

JVM Native API плагин - для запуска в 1С плагинов написанных на Java

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент

Запускаем виртуальную машину Java в 1С. Собрана внешняя компонента которая позволяет запускать виртуальную машину java в среде 1С. Позволяет как передавать параметры в java - так и получать уведомление через externalevent. Предпосылкой создания являлся тот факт, что есть много готового функционала которого не хватает в 1С. Язык сpp - довольно сложен для быстрой разработки, и теперь возможно использовать готовые сборки java классов (так называемые jar-файлы) для использования в 1С.

1 стартмани

20.06.2018    7445    16    minimajack    62       

Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо

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

Telegram Native API

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8::УФ 1cv8.cf Абонемент ($m) Разработка внешних компонент Внешние источники данных

Взаимодействие с Telegram без Bot API. Только C++ компоненты. Только хардкор.

1 стартмани

24.05.2018    12561    29    Infactum    23       

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

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

Tool1CD Beta в деле

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 Абонемент ($m) Разработка внешних компонент

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    19574    29    baton_pk    26       

Внешняя компонента для работы по Web-socket протоколу

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент WEB

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    16010    11    Ditron    63       

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

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

Внешняя компонента 1С для подключения весового терминала Т3 и Т9 фирмы ФИЗТЕХ

Инструменты и обработки Системный администратор Программист Архив с данными Windows Абонемент ($m) Разработка внешних компонент Весы

Внешняя компонента 1С (*.dll) для подключения и получения данных с весового терминала Т3 и Т9 фирмы ФИЗТЕХ Update 22/01/2019 Компонента доработана для взаимодействия с терминалом Т9 (пока без возможности отправлять команды в терминал). Старую версию компоненты оставляю в файлах для скачивания, учитывайте это при скачивании.

10 стартмани

13.11.2017    9106    2    dungeonkeeper    0       

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

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

4500/9500 рублей

CSV Converter

Инструменты и обработки Программист Архив с данными Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки Разработка внешних компонент

Представляю вам мою первую программу. CSV Converter. Компонента читает файл с разделителями и переводит в структуру, которую мы можем получить, выгрузив любую ТЗ в файл стандартной функцией "ЗначениеВФайл()".

1 стартмани

03.03.2017    12200    4    ziercool    2       

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

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

от 1500 руб.

Внешние компоненты. Мобильное приложение 1С

Статья Программист Архив с данными v8::Mobile 1cv8.cf Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

Пример применения технологии внешних компонент для мобильной платформы 1С (Android)

1 стартмани

17.02.2017    37768    119    flyer    35       

1С:ExcelReport - COM компонента для вывода в Excel в стиле 1С

Инструменты и обработки Программист Архив с данными Windows Абонемент ($m) Разработка внешних компонент Загрузка и выгрузка в Excel

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

1 стартмани

02.12.2016    14245    12    Perfolenta    7       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

1sqlite reborn

Инструменты и обработки Программист Архив с данными v7.7 1cv7.md Россия Windows Абонемент ($m) Разработка внешних компонент

Обновленная версия внешней компоненты для работы с базами данных SQLite и прямыми запросы в ДБФ-базах 1С.

1 стартмани

07.11.2016    21110    87    Djelf    39       

1С+Классы. Версия-0

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент Математика и алгоритмы

Разработано ООП-расширение языка 1С, включающее (но не ограничивающееся): Классы как абстрактные типы данных с элементами «переменная», «свойство», «функция», «процедура»; Интерфейсы как абстрактные классы без элементов состояния («переменная») и без привязки к реализации методов (свойств, процедур, функций) при определении; Имплементация (реализация) интерфейсов классами; - одиночное открытое наследование; Области видимости «внутренняя» (private), «экспорт» (public), «защищенная» (protected); Статические элементы классов (общие для всех экземпляров класса); Замещение (переопределение реализации) методов при наследовании – «виртуальные методы, свойства»; Сокрытие (затенение) обычных (не замещаемых) элементов при наследовании; Перегрузка процедур и функций по количеству и типам данных аргументов; Конструкторы класса; Деструктор класса; Слабые ссылки; Делегаты.

1 стартмани

28.10.2016    17552    14    IntelInside    68       

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

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

9000 рублей

"Внешнее событие" и мобильная платформа 1С

Инструменты и обработки Программист Архив с данными v8 Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

Внешние компоненты в Android для Мобильной Платформы 1С или как вызвать внешнее событие, когда его нет.

1 стартмани

09.09.2016    31617    84    dewersia    49       

Организация файлового хранилища на базе MS SQL Server с доступом из 1С

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент Сервисные утилиты

Пример реализации хранения файлов в базе MS SQL Server с использованием различных технологий. Подробно рассмотрен потоковый доступ к файлам с использованием технологии FileStream.

1 стартмани

27.07.2016    20448    42    tohandr    36