Единая федеральная автоматизированная информационная система сведений о показах фильмов в кинозалах (ЕАИС) + 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С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    3187    5    0    

11

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

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

60000 руб.

07.05.2019    35317    70    45    

30

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

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

57600 руб.

26.11.2024    2903    2    3    

5

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

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

36000 руб.

03.08.2020    19352    24    22    

20

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1159    7    2    

9

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4921    4    2    

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