Единая федеральная автоматизированная информационная система сведений о показах фильмов в кинозалах (ЕАИС) + 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 запрос кинотеатры

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15955    13    18    

13

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    84907    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС 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    89038    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25894    9    0    

7

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16500    42    49    

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