Единая федеральная автоматизированная информационная система сведений о показах фильмов в кинозалах (ЕАИС) + 1С

06.11.13

Интеграция - WEB-интеграция

Представляю кусок кода в 1с для отправки POST-запроса сведений о публичной демонстрации кинофильмов в кинозалах российских кинотеатров.
Согласно приказу №56 Минкульта РФ от 08.02.2011.

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

Предистория:

"Во исполнение поручения Президента Российской Федерации Министерством культуры Российской Федерации создана и функционирует единая федеральная автоматизированная информационная система сведений о показах фильмов в кинозалах (ЕАИС). Назначение указанной системы состоит в сборе, учёте и обработке сведений о публичной демонстрации кинофильмов в кинозалах российских кинотеатров."

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

Итак, дано :

"приказа №56 Минкульта РФ от 08.02.2011" - описывается механизм передачи данных.

Сайт ekinobilet.ru - сайт системы (ЕАИС)

Логин, пароль, id(демонстратора фильма) - выдаются при регистрации (процесс регистрации описан на сайте)

Задача:

Реализовать механизм отправки данных по продажам билетов на сайт системы в рамках платформы 1с:8.2

Решение:

Login, Password - имя пользователя и пароль выданный при регистрации в системе ЕАИС

XMLFile - путь к отправляемому файлу "*.zip"(xml - положил в архив)

ИмяФайлаXml - имя отправляемого файла.

Процедура ОтправитьPOSTЗапрос(Login,Password,XMLFile,ИмяФайлаXml)
    //Подготовка переменных
    массивФайлов = Новый Массив;
    Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
    ИмяФайлаСПараметрами = ПолучитьимяВременногоФайла("txt"); // первый файл, содержащий параметры    
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаСПараметрами);
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("xml"); // наш сервер возвращает ответы в виде XML
    
    // параметр "login"
        //Заголовок
        ЗаписьТекста.ЗаписатьСтроку("Content-type: multipart/form-data, boundary="+Boundary);
        ЗаписьТекста.ЗаписатьСтроку("");
        //
        ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
        ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""login""");
        ЗаписьТекста.ЗаписатьСтроку("");
        ЗаписьТекста.ЗаписатьСтроку(Login);
    // параметр "password"
        ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
        ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""password""");
        ЗаписьТекста.ЗаписатьСтроку("");
        ЗаписьТекста.ЗаписатьСтроку(Password);
    // параметр "zip"
        ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
        ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""XMLfile""; filename="+""""+ИмяФайлаXml+"""");
        ЗаписьТекста.ЗаписатьСтроку("Content-Type: application/x-zip-compressed");
        ЗаписьТекста.ЗаписатьСтроку("");
        ЗаписьТекста.Закрыть(); // заканчиваем работу с zip
 
        массивФайлов.Добавить(имяФайлаСПараметрами); // добавляем zip-файл для объединения
        массивФайлов.Добавить(XMLFile); // добавляем архив для объединения
        
        // файл, закрывающий параметры
        ИмяФайлаСПараметрами = ПолучитьимяВременногоФайла("txt");
        ЗаписьТекста = Новый ЗаписьТекста(имяФайлаСПараметрами);
        ЗаписьТекста.ЗаписатьСтроку("");
        ЗаписьТекста.ЗаписатьСтроку("--"+boundary+"--");
        ЗаписьТекста.Закрыть(); // заканчиваем работу с файлом, закрывающим параметры
        массивФайлов.Добавить(имяФайлаСПараметрами); // добавляем файл, закрывающий параметры
        // результирующий файл, который и будет отправлен
        ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("out");
        // объединим все файлы
        ОбъединитьФайлы(МассивФайлов, ИмяФайлаОтправки);
         //Данные для заголовка
        ФайлОтправки = Новый Файл(имяФайлаОтправки);
        РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
        // передадим данные на сервер
        Заголовки = Новый Соответствие();
        Заголовки.Вставить("Content-Type", "multipart/form-data, boundary="+boundary);
        Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);
        Соединение = Новый HTTPСоединение("ekinobilet.ru",,Login,Password,,Истина);
        Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "ekbs/upload.aspx", ИмяВыходногоФайла, Заголовки);

    // удалим файл отправки - он больше не нужен
    Попытка
        УдалитьФайлы(имяФайлаОтправки);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    // обработаем ответ сервера    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(имяВыходногоФайла);
    
    Пока ЧтениеXML.Прочитать() Цикл
        // Прочитать "структурные части" элементов.
        // Проверить, какая часть элемента - текущая.
        Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            ИмяУзла = ЧтениеXML.Имя; Сообщить("--" + ИмяУзла);
            // Атрибуты элементов можно читать только если текущая часть -
            // начало элемента
            Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                // Прочитать данные узла атрибута.
                ТипУзла = ЧтениеXML.ТипУзла;
                Имя = ЧтениеXML.Имя;
                Значение = ЧтениеXML.Значение;
                // Обработать полученные значения.
            КонецЦикла;
        ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
            // В примере просто выводим текст в окно сообщений.
            Сообщить("Текст:" + ЧтениеXML.Значение);
        ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
            // В примере просто выводим признак конца элемента
            // в окно сообщений Сообщить("--Конец:" + Чтение.Имя);
        КонецЕсли;         
    КонецЦикла;
    ЧтениеXML.Закрыть();
    // удаляем файл после использования
    Попытка
        УдалитьФайлы(имяВыходногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;        
КонецПроцедуры  
П.С.
Процедура не претендует на "илитарность", но думаю, может пригодиться.

ЕАИС POST запрос кинотеатры

См. также

WEB-интеграция Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

72000 руб.

19.07.2024    937    1    0    

2

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13857    39    8    

15

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    17490    47    49    

28

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17314    16    20    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WanGoff 138 23.10.13 10:31 Сейчас в теме
Может и мало кого заинтересует, но направление... прикольное. Вот такое слово я использую.
2. пользователь 20.02.20 14:03
Сообщение было скрыто модератором.
...
Оставьте свое сообщение