INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Макаров Дмитрий | Руководитель проектного отдела | ООО "Информационные Технологии"

«Poka-yoke. Оператор производственной линии - пользователь 1С, кто сказал что 1С только для финансов»

Опыт автоматизации непосредственно на производственной линии или складе. В докладе поделимся опытом разработки и запуска Poka-yoke систем. 1. Что такое Poka-yoke системы и зачем они нужны. Как меняется работа на предприятии при внедрении подобных систем. 2. Почему используем 1С. 2. Чем отличается запуск системы классического учета от Poka-yoke систем. 3. "Подводные камни". На что необходимо обратить внимание при проектировании/внедрении и чем грозят ошибки, примеры из опыта. 4. Возможности интеграции. Arduino, Мобильный клиент 1С, MobileLogistics, технология штрих кодирования. Как все это применить для своего проекта, как связать "кучу" оборудования и тех. процессов в единую систему, какие проблемы встречаются, какие плюсы для предприятия - об этом мой доклад.

Оповещение об изменении таблицы MS SQL

Программирование - Практика программирования

6
Цель: подписка на изменения в таблицах MSSQL, неизменность конфигурации, использование популярного языка программирования c#, создание дальнейшей цепочки событий, не связанной с 1С.

Для оповещения об изменениях в MSSQL можно использовать класс SqlDependencyEx.

Он работает на основе MSSQL Service broker, который нужно предварительно включить, выгнав пользователей и запустив скрипт:

ALTER DATABASE dbName
            SET NEW_BROKER
            WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE dbName
            SET DISABLE_BROKER
GO
ALTER DATABASE dbName
            SET ENABLE_BROKER
GO
ALTER DATABASE dbName SET TRUSTWORTHY ON
go

Выясняем через SQL profiler таблицу, за которой мы хотим наблюдать.

1

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

using ServiceBrokerListener.Domain;
using System;
using System.Data.SqlClient;

namespace MSSQLOrderChangeNotification
{
    class MSSQLOrderChangeNotification
    {
        static void Main(string[] args)
        {
            var listener = new SqlDependencyEx(connectionString, DbName, "_AccumRgT16572"); 
            //// e.Data contains actual changed data in the XML format
            listener.TableChanged += (o, e) =>
            {
                Console.WriteLine("Your table was changed!" + Environment.NewLine +
                e.NotificationType + Environment.NewLine + e.Data);
            };
            //// After you call the Start method you will receive table notifications with 
            //// the actual changed data in the XML format
            listener.Start();
            Console.WriteLine(" Press [enter] to exit.");
            Console.ReadLine();
            listener.Stop();
        }

    }

}

В итоге можем отправлять это событие куда угодно, используя все возможности C# .NET. Например, в RabbitMQ.

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

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

6

См. также

Комментарии
Сортировка: Древо
1. МихаилМ 01.08.17 17:01 Сейчас в теме
какое применение технологии применительно к 1с ?

при реструктуризации таблицы триггер либо будет удален либо дисейбится.

технология асинхронная.
2. yaxinr 33 01.08.17 22:27 Сейчас в теме
(1) реструктуризация происходит не часто и изменение C# программы занимает не больше часа времени.
и вышел анонс в котором говорится
Добавление или удаление столбцов таблиц. Эти операции проводятся теперь на текущих таблицах

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