Единая федеральная автоматизированная информационная система сведений о показах фильмов в кинозалах (ЕАИС) + 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С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1144    1    1    

4

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

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

36000 руб.

03.08.2020    18310    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20520    13    19    

18

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    91952    181    217    

335

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

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

24000 руб.

27.09.2024    2272    1    0    

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