Управление соляриями из 1С через Arduino

Публикация № 1303042 01.10.20

Интеграция с оборудованием и сервисами - Интеграция с сервисами

Мой опыт автоматизации сети соляриев с интеграцией 1С и оборудования соляриев с помощью платформы Arduino.

Хочу поделиться опытом интеграции 1С с мощным электронным оборудованием. 

Был у меня проект - внедрение конфигурации "Салон красоты" в сеть соляриев - 11 салонов. Клиент захотел чтобы администратор салона включал/выключал сами солярии (кабинки для загорания) из 1С. Ну и учёт и тарификацию времени работы солярия для клиента естественно.

Погуглив я остановился на платформе Arduino. По ней ОЧЕНЬ много материала в сети, на ютьюбе в частности. Язык программирования контроллера там не очень сложный подобный C++.

Это был мой первый опыт, но всё оказалось не так страшно. 

Как это работает.

1. Покупается самый простейший контроллер Арудино (можно даже китайскую подделку, не обязательно оригинальный итальянский).

2. Подключается по USB. Питание контроллера может осуществляться от USB, а может от внешнего источника. Разницы я не заметил, но рекомендуют от внешнего стабилизированного источника потому что при включении соляриев (а это 2-3 кВТ мощности) бывали скачки напряжения.

3. При подключении оригинального контроллера драйвер на Win 10 ставится автоматически. Для китайского клона нужно скачать драйвер и установить - ничего сложного. При этом эмулируется com-порт.

4. Далее через системную библиотеку работы с ком-портами MsCommLib.MsComm идёт работа с контроллером через COM-объект.

5. Для 64-битной Вин 10 для сом-объекта нужно сделать 64-битную обёртку (далее распишу как это делается) чтобы работать с 32-разрядной DLL

 

В 1С код выглядит так:

 

Функция ОткрытьКомПорт() Экспорт
	Попытка
		ComPort = Новый COMОбъект("MsCommLib.MsComm");    
	Исключение
		Если ЗадаватьВопросы Тогда
			Предупреждение("Ошибка создания COMОбъект MsCommLib.MsComm");
		КонецЕсли;
		КонтроллерПодключен = Ложь;
		Возврат Ложь;
	КонецПопытки;
	

	ComPort.CommPort        = НомерКомПорта;
	ComPort.Settings        = "9600,N,8,1";
	ComPort.RTSEnable 		= 1; 
	ComPort.Handshaking     = 0;
	ComPort.InBufferCount   = 0;
	ComPort.InBufferSize    = 0;
	ComPort.InputLen        = 0;
	ComPort.InputMode       = 1;  ////1 (массив байтов) ,по умолчанию 0 (текст)
	ComPort.NullDiscard     = 0;
	
	Попытка
		ComPort.PortOpen 			= 1;
		Возврат Истина
	Исключение
		Если ЗадаватьВопросы Тогда		
			Предупреждение("Ошибка открытия com-порта.");
		КонецЕсли;
		Возврат Ложь;
	КонецПопытки;
КонецФункции

Значения параметров подобраны экспериментально - путём проб и ошибок.

Дальше самое интересное - непосредственно чтение/запись в контроллер.

По обработке ожидания формы 1 раз в секунду происходит чтение и запись через com-объект:

 

Функция ОпроситьКнопки()
	Перем н;
		
	Если ComPort = Неопределено Тогда	 
		Возврат "";
	КонецЕсли; 
	
	Если НЕ КонтроллерПодключен Тогда	 
		Возврат "";
	КонецЕсли; 
	
	// 
	//добавлено для исключения ошибки контроллера
	Если ТипЗнч(ComPort) = Тип("COMОбъект") Тогда
		Data = ComPort.Input;
		Если ComPort.InputMode = 0 Тогда   // если режим "получение текста", а не массива байт	
	    	Возврат  Data;
		КонецЕсли;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
	
	Всего = Data.GetLength(0);
	Если Всего = 0 Тогда
		Возврат "";
	КонецЕсли; 
	Мас = Новый Массив(Всего);
	Для н = 0 По Всего -1 Цикл
		Мас.Добавить(Data.GetValue(н));
	КонецЦикла; 
	
	Возврат ОбработатьРезультат(Мас);
КонецФункции // ОпроситьКнопки()

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

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

Сейчас всё работает стабильно и чётко.

Работает так:
1. Приходит клиент в солярий и заказывает х минут загара.

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

3. В этот момент солярий переходит из состояния "Остановлен" в состояние "Ожидание" и клиент идет в солярий раздеваться.

4. Когда клиент разделся, зашел или лег в кабинку - он нажимает кнопку "Старт" в солярии. Замыкание кнопки даёт команду контроллеру, который переводит солярий на данном канале в режим "Работа" и включаются лампы, вентиляторы и начинается отсчёт времени в 1С. Именно в 1С, а не в солярии. Отчет идёт через функцию Количество миллисекунд с полуночи(). Только так и никак иначе, потому что в противном случае кратковременные зависания и подтормаживания 1С искажают реальное время работы солярия.

Кроме того, в расчет времени добавлена задержка в 2-3 секунды на переходные процессы запуска. Подбирается экспериментально.

После того, как 1С отсчитала положенное время, она даёт команду контроллеру о том, что солярий на таком-то канале должен быть остановлен.

 

В общих чертах это всё. Если нужно подробности - пишите в комментарии, я дополню информацию.

 

Дальше привожу приблизительный код контроллера:

// статусы соляриев 0 - выкл., 1 - ожидание, 2 - работает
char Sol[4] = {'0','0','0','0'};    

// команда на изменение статуса соляриев считанная с Serial
char SolNew[4] = {'0','0','0','0'}; 

boolean pressed_buttons[4] = {HIGH, HIGH, HIGH, HIGH}; // сост. нажатия кнопок
boolean last_pressed_buttons[4] = {HIGH, HIGH, HIGH, HIGH}; // пред сост. нажатия кнопок
boolean change[4] = {LOW,LOW,LOW,LOW,}; // признак изменения состоян. нажатия кнопки

int printed = 0; // флаг для одноразового вывода ответной строки

// момент (millis) последнего изменения сост. соляриев
long time[4] = {0,0,0,0};                      

void setup() {
  Serial.begin(115200);
  pinMode(2, OUTPUT); // реле для солярия 1
  pinMode(3, OUTPUT); // реле для солярия 2
  pinMode(4, OUTPUT); // реле для солярия 3
  pinMode(5, OUTPUT); // реле для солярия 4
  
  pinMode(13, OUTPUT); // светодиод для отладки
  
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  
  pinMode(6, INPUT_PULLUP); // опрос кнопки 1                   
  pinMode(7, INPUT_PULLUP); // опрос кнопки 1                   
  pinMode(8, INPUT_PULLUP); // опрос кнопки 1                   
  pinMode(9, INPUT_PULLUP); // опрос кнопки 1
}

void loop() {
  // ====================================
  // ~~~~~~~~~~~ Опрос кнопок ~~~~~~~~~~~
  while(Serial.available() == 0) {  // пока в порту ничего нет - опрашиваем кнопки
     for (int i = 0; i<4; i++) {         
      pressed_buttons[i] = digitalRead(6+i);      // запоминаем состояние кнопки
      change[i] = last_pressed_buttons[i] != pressed_buttons[i];      
      if (change[i] && pressed_buttons[i] == LOW) { // как только нажали
          if (millis() - time[i] > 5000) {
            switch (SolNew[i]) {
               case '1':
                  Sol[i] = '2';
                  SolNew[i] = '2';
                  digitalWrite(i+2,LOW);              
                  pressed_buttons[i] = HIGH;
                  time[i] = millis();
                  last_pressed_buttons[i] = pressed_buttons[i];
                  change[i] = LOW;                  
                  printed = 0;
                  break;
               case '2':
//                  Sol[i] = '1';
//                  SolNew[i] = '1';
//                  digitalWrite(i+2, HIGH);              
//                  pressed_buttons[i] = HIGH;
//                  time[i] = millis();
//                  last_pressed_buttons[i] = pressed_buttons[i];
//                  change[i] = LOW;
//                  printed = 0;
                break;          
            }
          }     // if (millis() - time[i] > 3000) {
        }     // if (change[i] && pressed_buttons[i] == LOW)
    }   // for (int i = 0; i <4; i++)
    printSerial();
  }   // while(Serial.available() == 0) 
  // ====================================
  
  
  // ====================================
  // ~~~~~~~~~~~ Опрос КОМ_порта ~~~~~~~~~~~
  delay(10);
  int i=0;
  while(Serial.available() > 0) 
  {
       SolNew[i] = Serial.read(); i++;
       printed = 0;
  }
  // ====================================

  // кнопки опросили, новые состояния соляриев из ком-порта считали
  proceedRelay();
  
}   // void loop()

void printSerial() {
  if (printed == 0) {
    String out = "";
    for (int i = 0; i <4; i++) {
      out = out + String(Sol[i]);  
    }
    //Serial.println(Sol);  
    Serial.println(out);   
    printed = 1;
  }
}

void proceedRelay() {           // Включить / выключить реле по массиву состояния соляриев
  for (int i=0; i < 4; i++)    // выходные порты с 2 по 5 включительно
  {
    switch (SolNew[i]) {
      case '0':              // выключение
        Sol[i] = '0';
        digitalWrite(i+2,HIGH);
        last_pressed_buttons[i] = pressed_buttons[i];
        change[i] = LOW;              
        break;
      case '1':              // установка режима ожидания
         if (pressed_buttons[i] == HIGH && last_pressed_buttons[i] == pressed_buttons[i]) {
            Sol[i] = '1';
            digitalWrite(i+2,HIGH);              
            last_pressed_buttons[i] = pressed_buttons[i];
            change[i] = LOW;              
            break;
          }
          else { // режим ожидания и кнопка ВКЛ.
            Sol[i] = '2';
            digitalWrite(i+2,LOW);              
            pressed_buttons[i] = HIGH;
            last_pressed_buttons[i] = pressed_buttons[i];
            change[i] = LOW;              
            break;
          }
       case '2':              // режим РАБОТЫ 
         if (pressed_buttons[i] == HIGH && last_pressed_buttons[i] == pressed_buttons[i]) { // И кнопка OFF
            Sol[i] = '2';
            //Serial.println('8');   
            digitalWrite(i+2,LOW);
            break;              
          }
          else { // режим РАБОТА и кнопка ВКЛ.            
//            Sol[i] = '1';
//            digitalWrite(i+2,HIGH);              
//            pressed_buttons[i] = HIGH;
//            last_pressed_buttons[i] = pressed_buttons[i];
//            change[i] = LOW;              
//            break;            
        }          
      } // switch (SolNew[i]) {
    } // for (int i=0; i < 4; i++)
  printSerial();
} 



Всё это работает сейчас на платформе 1С Предприятие 8.3.9.2170

Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. muskul 02.10.20 04:05 Сейчас в теме
Сколько вы взяли за такую работу если не сикрет?
3. impextr 81 02.10.20 18:56 Сейчас в теме
(1) ну скажем так, заказчик был готов почасово оплатить мои НИОКР, а я в свою очередь отказывался от авторских прав на разработки. Компромисс такой.
Получилось достаточно дорого конечно, но система работает уже несколько лет на всей сети. Думаю всё отбилось уже.
С другой стороны у заказчика не было альтернативы - ничего подобного он не нашел. До 1С работали в какой-то жуткой самописке где управление соляриями происходило через LPT-порт и какие-то релюшки. Всё это глючило, очень плохо и медленно дорабатывалось, а с отмираем Windows XP перестали поддерживаться LPT на уровне операционки. Это и добило заказчика)
29. papami 44 08.01.21 10:21 Сейчас в теме
(3)
Подскажите, а авторские права на что именно? Что является разработкой здесь?
Или просто имеется в виду, что это не будет ставиться конкурентам, если будет аналогичная задача?
30. impextr 81 11.01.21 20:30 Сейчас в теме
(29) в плане прав владения интеллектуальной собственностью - если вдруг я захочу продавать эту систему как тиражируемую
31. papami 44 11.01.21 20:57 Сейчас в теме
(30) По договоренностям ясно. Просто получается, что Вы тут все рассказали в подробностях). В любом случае, это пока единственное Практическое применение связки с Ардуино из того, что коллеги публиковали на ИС.
32. FB_3986935191342576 19.05.21 12:59 Сейчас в теме
(3)здравствуйте) как можно с вами связаться ? Как раз ищем специалиста по данному внедрению
33. пользователь 21.05.21 09:56
Сообщение было скрыто модератором.
...
2. ipoloskov 149 02.10.20 05:55 Сейчас в теме
Как опыт интеграции, интересно, но можно вопрос - зачем контролировать время из 1С? Это просто опасно - компьютер может зависнуть, и клиент получит ожоги.
4. impextr 81 02.10.20 18:59 Сейчас в теме
(2) там было много аргументов, все уже не вспомню. Ну, как минимум:
1) чтобы администратор салона мог из 1С остановить солярий
2) в случае досрочного прекращения процедуры корректно тарифицировалось время работы солярия.

На счёт опасно - верное замечание, поэтому код контроллера был доработан таким образом что если вдруг из 1С переставали поступать управляющие сигналы, то солярий дорабатывал заданное время и отключался.
ipoloskov; +1 Ответить
5. BobNN 02.10.20 20:49 Сейчас в теме
Не соображу, Ардуина одна возле компа? Она воткнута в USB, и управляет припаянным к ней ком-портом, в который заведены всё кабинки??
Или возле каждой кабинки своя Ардуина?
Картинка-схемка бы всё прояснила.
Очень интересное, а главное, практичное применение контроллера.
6. impextr 81 02.10.20 21:34 Сейчас в теме
(5) Да там всё предельно просто. Контроллер подключен к компу через USB. Контролер управляет четырьмя реле на 10 А. А те уже в свою очередь включают/выключают весь солярий. Кнопка "Старт/Стоп" заведена из солярия к контроллеру просто как замыкающийся/размыкающийся контакт, который опрашивает контроллер.
Вот и вся схема.

Вывод такой что в принципе любой железкой можно управлять из 1С и опрашивать что угодно тоже из 1С. Встречал решение - конфигурация для управления школой, где через Ардуино включается / выключается школьный звонок.
7. BobNN 02.10.20 22:49 Сейчас в теме
(6)
А, теперь понятно, спасибо!
(остался ещё вопрос о длине проводов или о применении беспроводных реле, но это уже тонкости)
19. TitanLuchs 294 08.10.20 19:38 Сейчас в теме
(7) Беспроводное реле - это аналог Ардуино с WiFi на борту. Например, Wemos Lolin d1 r2, К ним продаются реле в виде шилда. Минимум проводов, и, соответственно, возможных глюков, а главное - устранение привязки с сом-порту со всеми его глюками.
8. impextr 81 03.10.20 13:03 Сейчас в теме
Использовался самый простой и дешевый контроллер
Arduino UNO R3 (CH340)

Контроллер

Реле вот такие 4-канальные на 10 А 12 В:


Реле
11. Dmitri93 10 08.10.20 10:35 Сейчас в теме
(8) а контакты реле не подгорают от такой мощности? Возможно, лучше бы использовать твердотельные в таком случае.
14. impextr 81 08.10.20 15:24 Сейчас в теме
(11) там на самом деле система много контурная, дальше уже штатный электронщик "шаманил". На сколько я знаю реле Ардуино включает следующее реле, а то уже в свою очередь всю систему.
9. anton.fly7 168 07.10.20 19:25 Сейчас в теме
не было ситуации что COM порт был "занят", помню со сканерами была такая проблема (давно), что пока комп не перегрузишь COM не освобождался

на ESP32 можно через WiFi сделать :) провод от контроллера до компа не нужен, и возможно рулить вообще всеми релешками с единого сервера
10. lmnlmn 65 07.10.20 22:16 Сейчас в теме
Круто, но моя практика показала что Ардуина может зависать. Вовсе даже не из-за ошибок в скетче. Случается нечасто, но полагаться на бесперебойную работу нельзя. Воткните вторую Ардуину на мониторинг или как watchdog чтоб куриц гриль не наделать из посетителей, в случае если контроллер зависнет и администатор в телефоне пропадет.
torbeev; Dmitri93; +2 Ответить
20. TitanLuchs 294 08.10.20 19:41 Сейчас в теме
(10) В Arduino UNO есть встроенный watchdog, при зависании он ее перезагружает на аппаратном уровне. Вторая ардуина не нужна, ее работоспособное состояние может мониторить 1С.
25. lmnlmn 65 08.10.20 23:46 Сейчас в теме
(20) Надеюсь что UNO не превращается в кирпич если заиграться с watchdog. Не проверял. А мониторинг надо после реле цеплять. Мало ли контакты залипнут.
27. TitanLuchs 294 09.10.20 15:30 Сейчас в теме
(25) А там заиграться ИМХО вряд ли получится. Это же штатный функционал.
12. viollan 08.10.20 12:38 Сейчас в теме
Можно было гораздо проще и надежнее сделать.
Берем контроллер, например такой https://ab-log.ru/smart-house/ethernet/megad-2561
Управляется простыми GET/POST запросами вида: http://IPАдрес/megad.php?pt=2
Крепится на DIN рейку питается от 12В. Аккуратно, надежно, с обратной связью, управление из любой точки мира при правильной настройке.
torbeev; Legavaz; Sedaiko; +3 Ответить
13. Sedaiko 422 08.10.20 13:41 Сейчас в теме
(12) Поддерживаю. Зачем юзать COM порты, когда уже куча устройств с управлением по HTTP, с которым платформа работает "из коробки"
Мне больше вкатывает эти модули http://kernelchip.ru/
15. impextr 81 08.10.20 15:41 Сейчас в теме
(13) Отлично, но об этих решениях нужно было знать на момент принятия решения о платформе. Я о них не знал.
Проблемы с подключением по USB не было, поэтому не стали ничего дальше искать.
Кроме того, думаю что управление по HTTP тоже не панацея и не идеал, и тоже может глючить.
22. TitanLuchs 294 08.10.20 19:45 Сейчас в теме
(15) Как показывает практика, управление по HTTP в подобных случаях работает на порядки надежнее, так что в следующий раз лучше использовать его.
16. impextr 81 08.10.20 15:44 Сейчас в теме
(12) Спасибо за наводку. Интересная инфа, буду иметь в виду на будущее. А в чём повышенная надежность по сравнению с USB? Как по мне, то роутер может точно так же зависнуть, да и сам контроллер - не думаю что там прям авиационная надежность.
Моё решение клиент использует уже года 3 и не жалуется. Значит оно его устраивает, верно?
17. viollan 08.10.20 18:30 Сейчас в теме
(16) Я не критикую Ваше решение. Как показало время имеет место быть и решает задачи бизнеса.
Какие аргументы для меня:
+ Крепление на DIN-Рейку в щитке (Крепление/Контакты/Меньше вероятность нечаянно зацепить) при условии правильного монтажа
+ Используются симисторы или реле повышенной надежности (зависит от выбранных модулей)
+ Простые HTTP/S запросы из коробки
- Все Ardunio/Rasberi и подобные имеют привычку убивать SD-карту
Есть еще поддержка MQTT и много другое, но это вне контекста описываемой задачи.
23. TitanLuchs 294 08.10.20 19:49 Сейчас в теме
(16) Работа через http не всегда подразумевает коннект через роутер, можно соединиться напрямую витой парой через ethernet-порт. Но теперь взаимодействие идет не через COM-порт, который в 1С довольно капризный, а через http-запросы, которые сильно более отказоустойчивы.
21. TitanLuchs 294 08.10.20 19:44 Сейчас в теме
(12) Не надо брать такую мегу за 12999 рублей. За эти деньги можно взять 65 штук ESP с вайфайем на борту и теми же возможностями.
24. impextr 81 08.10.20 19:50 Сейчас в теме
(21) кстати да, Ардуино простейшие стоили $5 и работают
26. viollan 09.10.20 07:05 Сейчас в теме
(21)
Контролер MegaD-2561 - 3850 руб.
Исполнительный модуль MegaD-8I7O-R - 3520 руб. (если много портов, тогда MegaD-2R - 1420 руб.)
Итого = 7370 руб.

Но разница в цене аппаратной части по сравнению с затраченным временем и стоимостью работ больше в разы
28. TitanLuchs 294 09.10.20 15:32 Сейчас в теме
(26) Да не нужно там настолько времени, готовых библиотек полно.
18. viollan 08.10.20 19:07 Сейчас в теме
Пушка для воробьев автоматизации и пром. надежность:
https://www.beckhoff.ru/ru/default.htm?beckhoff/products.htm
Оставьте свое сообщение

См. также

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция с сервисами v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    15505    m-rv    2    

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

Интеграция с сервисами v8 Бесплатно (free)

В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.

07.12.2021    1073    kholkin    7    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)

WEB Интеграция с сервисами v8 1cv8.cf Россия Бесплатно (free)

Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).

27.11.2021    506    freegman74    6    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С

WEB Интеграция с сервисами v8 1cv8.cf Россия Бесплатно (free)

Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.

07.11.2021    1457    freegman74    10    

Окей, Google

Интеграция с сервисами Искусственный интеллект (AI) docker v8 Россия Бесплатно (free)

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

28.10.2021    1204    Soloist    6    

Готовые модули для работы с Telegram

Интеграция с сервисами v8 1cv8.cf Бесплатно (free)

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

05.10.2021    1994    M_A_D    6    

Сравнительный анализ вариантов интеграции между системами

Интеграция с сервисами v8 Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.

30.07.2021    2083    SergeyN    1    

Собираем данные для отчетов из +100 баз

Поиск данных Интеграция с сервисами Управленческие v8 Бесплатно (free)

Ведущий разработчик ГАОУ ДПО ТемоЦентр Василий Попов на онлайн-митапе Инфостарта «Интеграционные решения в 1С» поделился кейсом о том, как собрать данные для отчетов из +100 баз, какой стек технологий для этого использовать, и к каким проблемам нужно быть готовым.

23.07.2021    1952    pallid    8    

Описание формата 1С JDTO (JSON data transfer object)

Интеграция с сервисами Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

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

16.07.2021    6565    zhichkin    32    

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

Интеграция с сервисами Документооборот и делопроизводство v8 ДО Бесплатно (free)

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

13.05.2021    2706    Flover    0    

Настраиваем авторизацию пользователей 1С через Okta

Интеграция с сервисами v8 Бесплатно (free)

Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории

30.04.2021    3968    ripreal1    15    

«БИП: Бизнес-Процессы». Интеграция с Telegram и Конструктор чат-ботов

Управление бизнес-процессами (BPM) Интеграция с сервисами v8 УУ Бесплатно (free)

В статье приводятся примеры настройки автоматических оповещений в системе «БИП: Бизнес-Процессы» с использованием мессенджера Telegram. Также, приводятся примеры создания и настройки произвольных чат-ботов с использованием Конструктора чат-ботов.

15.02.2021    1280    YuriYuriev    0    

Архитектурное решение интеграции баз 1С с использованием брокера сообщений Rabbit MQ

Интеграция с сервисами v8 1cv8.cf Бесплатно (free)

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

12.02.2021    1959    Koder_Line    6    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция с сервисами v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    4232    SizovE    25    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

WEB Интеграция с сервисами Универсальные функции Практика программирования v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    2347    SizovE    2    

Сказ о том, как в одной крупной компании документооборот внедряли, или проблемы типовых обменов между КА и ДО

Интеграция с сервисами Перенос данных из 1C8 в 1C8 Документооборот и делопроизводство v8 ДО КА2 Бесплатно (free)

Приветствую всех. Сегодня пойдет речь о том, как на одной крупной компании внедряли 1С:Документооборот 2.1 в связке с КА 2.4. Вроде бы системы типовые, мы практически не добавляли ничего в них, но проблем было столько, что я решил изложить их в статье. Может, кому-то пригодится это в дальнейшем, и не придется тратить кучу времени на поиск решений.

10.11.2020    7650    maks_20    30    

Структура обработки загрузки номенклатуры поставщика с примерами и комментариями (часть 2)

Интеграция с сервисами Практика программирования v8 1cv8.cf Бесплатно (free)

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

17.10.2020    1066    malikov_pro    3    

Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 3 - ElasticSearch

Интеграция с сервисами Журнал регистрации v8 1cv8.cf Бесплатно (free)

Как в статье №1 этого цикла выгрузим через прослойку журнал регистрации (xml формат) в ElasticSearch. Статья будет иметь практическую направленность в минималистичном стиле

14.09.2020    2346    dmitry-irk38    4    

Интеграции с сервером SQL. Быстро и просто

Интеграция с сервисами Внешние источники данных v8 1cv8.cf Бесплатно (free)

Решаем вопросы экспорта/импорта данных в базы отличного от 1С происхождения.

06.07.2020    4745    Infector    4    

Мониторинг факта выполнения обмена с помощью сервиса healthchecks.io

Интеграция с сервисами Администрирование ИТ-инфраструктуры v8 1cv8.cf Россия Бесплатно (free)

В статье опишу вариант простого мониторинга обработчиков, запускаемых по расписанию.

30.06.2020    2671    malikov_pro    7    

Как мы запилили в АЙТАТ.РФ обработку-бота, чтобы ускорить отгрузку в 2 раза или Реальный опыт внедрения нового механизма "Трансляция событий" от 1С-Коннект

Интеграция с сервисами v8 Бесплатно (free)

Статья о внедрении и использовании в решениях задач нового механизма от 1С-Коннект. Будет полезно тем кто использует интеграцию 1С-Коннект с 1С Предприятие. На текущий момент механизм "Трансляция событий" находится в бета-тестировании и доступен только закрытому списку приглашенных участников. Выражаем благодарность разработчикам механизма "Трансляция событий".

24.06.2020    2374    direwest    4    

Маркировка лекарственных препаратов. Часть первая "Быстрая интеграция"

Интеграция с сервисами Розничная торговля v8 1cv8.cf Фармацевтика, аптеки Россия УУ Бесплатно (free)

Данный цикл будет посвящен маркировке лекарственных препаратов (далее ЛП), нюансам работы с "1С: Библиотека интеграции с МДЛП", доступной для скачивания на сайте ИТС, методиками работы с регистраторами выбытия, и проблемам, с которыми пришлось столкнуться при интеграции. Эта статья будет представлять из себя краткую инструкцию, что делать, когда маркировка уже близко и необходимо быстро внедрить ее. Надеюсь, она станет подспорьем в данной задаче. Будут приведены рекомендации, как в короткие сроки с минимально необходимой функциональностью и минимумом чтения документации произвести интеграцию библиотеки МДЛП и выполнить начальные настройки. Также будут даны рекомендации по быстрым, но важным, на мой взгляд, доработкам.

23.06.2020    10354    IssakN    38    

Диадок. Подключаемый модуль. Отладка

Интеграция с сервисами Внешние источники данных v8 1cv8.cf Бесплатно (free)

Небольшой пример, как работать с подключаемым модулем Диадок (для изменения УПД перед выгрузкой на сайт Диадок.). Отладка подключаемого модуля, если не смогли подключить стандартную отладку.

17.06.2020    14744    John_d    17    

1C# – 1С моей мечты

Интеграция с сервисами v8 Бесплатно (free)

Встроенных в платформу 1С возможностей не всегда хватает для построения сложных интеграционных схем между различными 1С и не-1С-решениями на базе MS SQL Server. Как сделать интеграцию между SQL-базами более гибкой с помощью платформы 1С# на конференции Infostart Event 2019 Inception рассказал Дмитрий Жичкин.

01.06.2020    13308    zhichkin    36    

Обработчик "После завершения транзакции" своими руками

Интеграция с сервисами Практика программирования v8::blocking Бесплатно (free)

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

31.05.2020    4093    barelpro    63    

Интеграция Camunda BPM и 1С

WEB Интеграция с сервисами v8 Бесплатно (free)

Быстрый старт. Только практические примеры. Установка, запуск и публикация бизнес-процесса на сервере Camunda BPM. Управление бизнес-процессами из 1С при помощи Camunda REST API.

12.05.2020    6781    zhichkin    31    

Как мы загружаем данные в "Центр управления кассами Магнита"

Внешние источники данных Интеграция с сервисами v8 1cv8.cf Бесплатно (free)

Статья о том, как мы делали механизм загрузки больших объемов данных в "Центр управления кассами Магнита"

08.05.2020    5915    chernenko_vv    26    

Интеграция СуперОкна7 и УНФ

Интеграция с сервисами Внешние источники данных v8 УНФ Россия Бесплатно (free)

Изучаем базу данных СуперОкна7, смотрим возможности передачи и получения информации.

08.05.2020    3263    vostok1.dz    3    

Синхронизация БИТ:СКУД 8 с Parsec.Net 2.5

Интеграция с сервисами Внешние источники данных v8 1cv8.cf Бесплатно (free)

Настройка синхронизации БИТ:СКУД 8 с Parsec.Net.2.5, выгрузка данных из внешней системы контроля доступа.

04.05.2020    5005    RPGrigorev    0    

Измерительная лаборатория с использованием 1С+Ардуино

Периферийные устройства Интеграция с сервисами v8 Россия Бесплатно (free)

1С в автоматизации "научных" и около... экспериментов.

02.05.2020    5292    maxlab    16    

Интеграция БИТ:СКУД с типовой конфигурацией

Интеграция с сервисами v8 1cv8.cf Россия Бесплатно (free)

Интеграция БИТ:СКУД с типовой конфигурацией, обновление БИТ:СКУД в составе конфигурации и отдельно. Обновление системы защиты.

26.04.2020    6454    RPGrigorev    0    

Интеграция 1С и BI-системы: мой опыт с коннектором ATK BIView

Интеграция с сервисами v8 1cv8.cf Россия Бесплатно (free)

Интеграция 1С и BI-системы: мой опыт с коннектором ATK BIView.

06.04.2020    6211    Flyerink    2    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

HighLoad оптимизация WEB Интеграция с сервисами Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    16199    informa1555    35    

Использование таблиц SQL Server в качестве очередей сообщений

Интеграция с сервисами v8 Бесплатно (free)

Статья о событийно-ориентированной интеграции и об асинхронной обработке данных в контексте 1C под управлением SQL Server. Подробно разбирается вопрос использования таблиц СУБД в качестве очередей сообщений.

23.03.2020    4448    zhichkin    9    

Интеграция "Библиотеки интеграции МДЛП 1.1.2.7" с типовой конфигурацией

Интеграция с сервисами v8 Здравоохранение, медицина, стоматология Россия Бесплатно (free)

Инструкция для интеграции “Библиотеки интеграции МДЛП 1.1.2.7” в типовые конфигурации, на примере конфигурации “Управление нашей фирмой, редакция 1.6 (1.6.18.168)”.

02.03.2020    9362    RPGrigorev    3    

Бесшовная интеграция через обмен по правилам - миссия выполнима

Интеграция с сервисами Перенос данных из 1C8 в 1C8 Практика программирования v8 ДО ERP2 Бесплатно (free)

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    7224    e-9    8    

Передача данных с сервера на клиент через WebSocket NativeAPI и Centrifugo

Интеграция с сервисами v8::УФ 1cv8.cf Россия Бесплатно (free)

В статье описываю реализацию обмена для замены передачи сообщений через 1С Сервер взаимодействия.

23.09.2019    9306    malikov_pro    17    

Оповещения боту из 1С за 31 минуту

Интеграция с сервисами Практика программирования v8::УФ 1cv8.cf Бесплатно (free)

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    20297    feva    44