Артемов Сергей | Начальник отдела интеграции | БКС Технологии

«История роста и работы команд 1С в условиях HighLoad и BigData»

Хочу поделиться о том как влияют требования бизнеса на изменения в условиях высоконагруженных систем на базе 1С объемом в терабайбы в год и с потоками в миллионы сообщений в сутки. Как командам 1С успевать за изменениями в условиях взрывного роста компании и при этом успевать делать эффективней себя. О том как непрерывно расти профессионально и использовать экспертный подход. А также пример того, как мы решили покрыть тестами наш легаси код. Список тезисов доклада: - Матрица зрелости процессов организации. - Инфраструктура 1С при 24/7/365, HighLoad, BigData. Как цели накладывают отпечаток на инфраструктуру. - Монолиты 1С и Микросервисы - Интеграция: Шины, объемы, регламенты, моральное устаревание архитектуры и новые вызовы. - Как цели накладывают отпечаток на процессы. Agile Spotify. - Как ускорить разработку. Сколько нужно программистов если нужно сделать 2 раза больше фич. - Как ускорить разработку. Анализ потерь. - Как все начали разговаривать на одном языке. - Процессы разработки: Подпольная автоматизация как желание сделать лучше. - Процессы разработки: Пирамида тестирования в голове 1С-ника. - Процессы разработки: Свое тестовое казино в 1С. - Пример перехода на 8.3. Цели. Варианты. Риски. - Пример перехода на 8.3. Регресс. OScript. Git. - Переход на 8.3 Дымовое тестирование и автоматизированное пользовательское тестирование. - Своя подсистема "Статистика" на инструмент.

Получение скриншота (фото) с камеры из 1С. Управляемые формы

Обработки - Универсальные обработки

Получение и вывод на управляемую форму фото с IP камер видео наблюдения.

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

В данной обработке присутствует пример получения фото с камер Hikvision , Dahua и получение фото с ПО TRASSIR (по их словам любую камеру можно к ним подключить).

Камеры Dahua используют Дайджест-аутентификация (Digest), в обработке показано, как с ней работать из 1С.

Ниже привожу пример для TRASSIR 

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); //для получения Джейсона
    Соединение = Неопределено;
    Попытка
        ssl = Новый ЗащищенноеСоединениеOpenSSL(Неопределено,Неопределено);
        Соединение = Новый HTTPСоединение(ИПТрассир,ПортТрассир,,,,,ssl); //ИП и Порт Вашей камеры
    Исключение
        Соединение = Неопределено;    
    КонецПопытки;
    Результат =  Соединение.Получить("/login?password="+ПарольТрассир,ИмяВременногоФайла); //необходимо передать ТОЛЬКО пароль от камеры в ответ прийдет джейсон
    //в котором будет наш ид на текущую сессию
    ЧтениеДжейсон = Новый ЧтениеJSON();
    ЧтениеДжейсон.ОткрытьФайл(ИмяВременногоФайла,"UTF8");
    Текст = ПрочитатьJSON(ЧтениеДжейсон,Истина);
    
    Для Каждого Стр Из Текст Цикл
        
        Если Стр.Ключ = "sid" Тогда
            ИДСессии = Стр.Значение;
            Прервать;
        КонецЕсли;
        
    КонецЦикла;   
    
    ЧтениеДжейсон.Закрыть();    
    УдалитьФайлы(ИмяВременногоФайла); //удалим файл что бы не захламлять

      ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); 
        
        Результат =  Соединение.Получить("/objects/?sid=" + ИДСессии,ИмяВременногоФайла);  //нам прийдет имена всех подключенных камер 
        
        ЧтениеДжейсон = Новый ЧтениеJSON();
        ЧтениеДжейсон.ОткрытьФайл(ИмяВременногоФайла,"UTF8");
        Текст = ПрочитатьJSON(ЧтениеДжейсон,Истина);
        
        Для Каждого Стр Из Текст Цикл
            НоваяСтрока = ТаблицаКамер.Добавить();//ТаблицаКамер ТЧ на форме
            НоваяСтрока.ИмяКамеры = Стр.Получить("guid");
            НоваяСтрока.НазваниеКамеры = Стр.Получить("name");     
        КонецЦикла;  
        
        ЧтениеДжейсон.Закрыть();
        УдалитьФайлы(ИмяВременногоФайла);

///////

//После получения выбираем наше имя камеры

        ИмяВременногоФайлаКартини = ПолучитьИмяВременногоФайла("jpeg");
        
        Результат =  Соединение.Получить("/screenshot/" + Элементы.ТаблицаКамер.ТекущиеДанные.ИмяКамеры + "?timestamp=0&sid=" + ИДСессии ,ИмяВременногоФайлаКартини);  
        
        // и размещение ее на форме:
        Описание = Новый ОписаниеПередаваемогоФайла(ИмяВременногоФайлаКартини, "");
        ПомещаемыеФайлы = Новый Массив;
        ПомещенныеФайлы = Новый Массив;
        
        ПомещаемыеФайлы.Добавить(Описание);    
        ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы,,Ложь);
        ЭтаФорма.КартинкаТрассер = ПомещенныеФайлы[0].Хранение;
        
        УдалитьФайлы(ИмяВременногоФайлаКартини);

 

Интерфейс обработки интуитивно понятен. Присутствуют 3 вкладки для каждой камеры. Необходимо заполнить параметрами и нажать кнопку "Выполнить запрос".

Особенность камер ХикВизион: если камера находится с Вами в одной сети, порт указывать необязательно.

Разработка проводилась на платформе 1С:Предприятие 8.3 (8.3.11.2867).

Работоспособность проверено на конфигурации 1С:CRM для Украины, редакция 2.0 (2.0.13.3).

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

Наименование Файл Версия Размер
: ФотоСКамер
.epf 10,07Kb
20.04.18
3
.epf 1.0.0 10,07Kb 3 Скачать

См. также

Комментарии
Сортировка: Древо
2. androgin 21.04.18 16:28 Сейчас в теме
Уже можно не использовать временные файлы для получения ответа от соединения.
Пример:
Запрос = Новый HTTPЗапрос;
Запрос.АдресРесурса = Настройка_АдресСкрипта;
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
3. harvester_sorrow 6 21.04.18 17:00 Сейчас в теме
(2) Спасибо за информацию, на момент написания обработки, к сожалению не знал об этом, в будущем учту

(2)
5. androgin 22.04.18 02:31 Сейчас в теме
(3)
Текст = ПрочитатьJSON(ЧтениеДжейсон,Истина);
Для Каждого Стр Из Текст Цикл
......


какой объект в Текст?
7. harvester_sorrow 6 22.04.18 09:44 Сейчас в теме
(5) Насколько я помню структуру,но более точно смогу в понедельник сказать если интересно.
9. androgin 22.04.18 14:59 Сейчас в теме
(7) да, интересно ))
хочу узнать зачем вы циклом ключ ищете)))
10. harvester_sorrow 6 23.04.18 09:05 Сейчас в теме
(9)Прошу прощения, запамятовал, там приходит соответствие, а внутри еще ряд соответствий, в которых хранятся значения.
6. androgin 22.04.18 02:48 Сейчас в теме
(3)
Описание = Новый ОписаниеПередаваемогоФайла(ИмяВременногоФайлаКартини, "");
ПомещаемыеФайлы = Новый Массив;
ПомещенныеФайлы = Новый Массив;
        
ПомещаемыеФайлы.Добавить(Описание);    
ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы,,Ложь);

ЭтаФорма.КартинкаТрассер = ПомещенныеФайлы[0].Хранение;
Показать

Это можно заменить этим:
Хранение = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайлаКартини), Новый УникальныйИдентификатор);
ЭтаФорма.КартинкаТрассер = Хранение;
8. harvester_sorrow 6 22.04.18 09:47 Сейчас в теме
(6) можно,не спорю.Также сразу можно избавиться от модальности используя НачатьПомещенияФайла.
В данном примере показан пример работы с камерой, но за критику спасибо,всегда полезно узнать что то новое)
Оставьте свое сообщение