Универсальная выгрузка данных в формате xml 7.7. Реализация прав на использование программ для ЭВМ и баз данных

Статья рассчитана на продвинутых пользователей или системных администраторов, ориентирующихся в программном коде 1С 7.7 и конфигураторе.

Внимание: Это не готовое решение, это шаблон, образец, который нужно допиливать под себя.

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

Путь выгрузки нужно обязательно изменить через конфигуратор, иначе выгрузка работать не будет.

Фильтры справочника Номенклатура указаны по Кодам групп нашей базы, их нужно скорректировать.

Фильтры справочника Склады, указаны по кодам нашего основного склада.

Технология подключения:

1) В базах создается служебный пользователь Robot.

2) Обработку поместить в каталог ExtForms базы 1С.

3) В конец процедуры глобального модуля "ПриНачалеРаботыСистемы()" вносятся изменения.

//************************************ Если ИмяПользователя() = "Robot" Тогда СтатусВозврата(0); ОткрытьФорму("Отчет", "Robot", КаталогИБ()+"ExtForms\PriceXML_BP_4_5.ert"); Возврат; КонецЕсли; //************************************

Т.е. при запуске 1С под пользователейм Robot, произойдет запуск обработки, у которой в процедуре ПриОткрытии прописана выгрузка остатков в XML, далее сеанс Robot автоматически завершится.

4) Средствами операционной системы "Планировщик заданий" настраивается запуск 1С по расписанию под пользователем Robot.

5)Транспорт файла на FTP сайта, осуществляется сторонними средствами.

Обновление 25.08.2017

Клиент попросил создать аналогичную выгрузку под БП 3.0 платформа 8.3 тонкий клиент.

Выкладываю может кому пригодится. Эта выгрузка не автоматическая, работает в ручном режиме. Поэтому это уже готовое решение. Можно зарегистрировать в справочнике внешних обработок.

Можно использовать как образец, для создания своих выгрузок в ХМЛ под тонково клиента.

P.S. Если обработка вам помогла, поблагодарите автора, поставив звездочку!

Здесь я опишу основные моменты при работе со стандартной компонентой v7plus.dll . Информация сильно устаревшая, и появилась она здесь больше для меня самого — чтобы не забыть, когда в следующий раз появится. Описывается чтение из XML-файла средствами XML-парсера почти стандартной компоненты. Примером послужит файл документа-заявки, выгруженного в файл в формате CommerceML 2.03 (с сайта на Битриксе).

Итак, начинаем. Первым делом нужно загрузить компоненту. Вот типичный код:

Если + "v7plus.dll") <> 1 Тогда Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "v7plus.dll") <> 1 Тогда Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда Предупреждение("Компонента v7plus.dll не найдена!"); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Анализатор = СоздатьОбъект("AddIn.XMLParser");

Анализатор умеет работать со схемами, но этот момент я рассматривать не буду. Простое линейное (ну или почти линейное) чтение файла. Поэтому просто создаём новый документ:

XML_Документ = Анализатор . СоздатьДокумент (); Если ПустоеЗначение(XML_Документ ) = 1 Тогда Возврат КонецЕсли; XML_Документ . Загрузить (ИмяФайла );

В переменной ИмяФайла записана строка с именем открываемого файла. После этого можно читать файл, постепенно расшифровывая его.
Файл XML состоит из узлов и атрибутов. Каждый узел может содержать ноль и более атрибутов и ноль и более дочерних узлов. Корневой узел можно получить прямо из переменной XML_Документ . Для наглядности рассмотрим часть XML-файла:

<КоммерческаяИнформация ВерсияСхемы=»2.03″ ДатаФормирования=»2014-04-09 14:25″>
<Документ>
<Ид>53006
<Номер>53006
<Дата>2014-04-29
<ХозОперация>Заказ товара
<Роль>Продавец
<Валюта>руб
<Курс>1
<Сумма>300000.00
<Контрагенты>…
<Время>11:52
<Комментарий>ТЕСТ…….БСВ
<Товары>
<Товар>
<Ид>ID46
<Наименование>…
<БазоваяЕдиница Код=»796″ НаименованиеПолное=»Штука» МеждународноеСокращение=»PCE»>шт

Здесь приведена сильно сокращённая версия файла, точнее, его часть. Цель этой статьи — не описать формат CommerceML, а показать работу с XML-файлом, поэтому приведу только команды. Файл CommerceML состоит из корневого узла «КоммерческаяИнформация «. Его мы считаем из документа:

ЭлДокумент = XML_Документ . ВыбратьУзел ("КоммерческаяИнформация");

Значением переменной ЭлДокумент будет узел (OLE-объект). У него есть дочерние узлы и атрибуты. В одном файле может быть несколько документов, поэтому перебираем их в цикле:

Выборка = ЭлДокумент . ВыбратьУзлы ("Документ"); Для й = 1 По Выборка . КоличествоУзлов Цикл Док = Выборка . ПолучитьУзел (й - 1);

Свойство КоличествоУзлов возвращает общее число дочерних узлов, а метод ПолучитьУзел() возвращает указанный дочерний узел (нумерация идёт с 0).

Узел «Номер » не имеет ни атрибутов, ни дочерних узлов. Он имеет только значение «00006 «. Аналогично «Дата «, «ХозОперация » и многие другие. Для получения значения узла используется следующая конструкция:

Номер = Док . ВыбратьУзел ("Номер"). Значение ; НомерЧисло = Число(Док .ВыбратьУзел ("Номер"). Значение );

Здесь используется метод ВыбратьУзел() . В отличие от «ВыбратьУзлы() «, он возвращает не список, а самый первый узел с указанным именем. А его свойство «Значение » возвращает строку со значением. Для преобразования значения к нужному типу воспользуемся функциями преобразования. Дату придётся преобразовывать частями (она в XML хранится в виде гггг-мм-дд, не поддерживаемом стандартной функцией Дата()). Возможно, что при использовании схем преобразование типов будет выполняться автоматически — не проверял.
Для чтения атрибутов служит следующий метод:

ОКЕИ = Товар . ВыбратьУзел ("БазоваяЕдиница"). ПолучитьАтрибут ("Код");

Здесь Товар — это узел «Товар «. Значение атрибута, как и единичного дочернего узла, можно получить по имени атрибута. Возвращается всегда строка, поэтому при необходимости надо привести тип значения к требуемому. Если у узла понадобится считать несколько атрибутов, лучше сохранить значение узла в отдельной перменной.
Ну вот и все основные функции, необходимые для полноценного чтения XML-файлов.

Работа с файлами XML из 1С:Бухгалтерии 7.7

С версии 1С 7.7 универсальная загрузка из XML (как и любые процессы обмена) происходит при помощи встроенного механизма "Конвертация данных". В разных его версиях реализованы различные подходы к организации обменных процессов.

Универсальная обработка

С седьмой версии 1С обмениваться информацией между базами и платформами можно при помощи встроенного инструмента "Конвертация данных". Его средства дают возможность преобразовывать информацию из баз 1С в формат XML и переносить ее из седьмой версии в восьмую, из "Управления торговлей" в "Склад" и др. Для 1С 7 этот инструмент включает в себя следующие компоненты:

    База конфигурации;

    Внешние обработки:

    • V77Exp.ert выгрузка из 1С в XML;

      MD77Exp.ert выгружает в XML-файл метаданные.

Конфигурация и обработки доступны на официальном сайте 1С для всех пользователей (партнеров) продукции этой компании. Их же можно найти на диске ИТС, который прилагается к любому продукту 1С при покупке.

Подходы к загрузке данных в XML-формат

Для переноса информации в рамках 1С используются версии 2.0 и 3.0 "Конвертация данных". Их различие заключается в подходах к обработке и преобразованию данных.

1.В версии 2.0 для переноса данных требуется создать правила. Они основываются на метаданных базы-источника и принимающей базы, включая описания объектов всех имеющихся типов. Правила заносятся в отдельный документ. Чтение этого файла производится при каждой выгрузке. Если описание баз изменяется, тогда правила следует перепроверять и обновлять.

2.Версия 3.0 "Конвертации данных" разрабатывалась с целью обособления процессов обмена от структуры информационных баз. Это стало возможным благодаря XML-формату - EnterpriseData. Теперь для каждой базы создаются правила преобразования ее содержимого в этот универсальный формат без необходимости создания правил для каждой конкретной пары "источник-приемник" заново.

Для помощи с установкой конфигурации и отладке обмена данными обращайтесь в компанию «Сетби». Мы не просто подберем инструменты под конкретные задачи и настроим их работу, но и сэкономим ваши нервы и время.

Сегодня мы рассмотрим с Вами обработку "Универсальная выгрузка в XML для 1с 7.7" . Данная обработка предназначена для выгрузки данных по правилам обмена в файл XML. Правила выгрузки данных представляют из себя также файл XML, в котором содержится описание какие данные и в какой структуре должны быть выгружены в файл XML.

Как пользоваться обработкой универсальная выгрузка в XML для 1с 7.7 ?

Ниже на скриншоте Вы видите основную форму обработки универсальная выгрузка в XML для 1с 7.7 , давайте разберем основные параметры, которые необходимы для ее правильной работы. Где стоит цифра 1 там мы указываем файл с правилами выгрузки данных, для чего нужны эти правила мы уже говорили в первом абзаце статьи. Для цифры 2 выбираем файл куда будут выгружаться данные. В 3 пункте необходимо указать дату начала и дату окончания, за этот период будут выгружены данные в файл. После того как мы указали все эти параметры жмем "Загрузить правила", после прочтения правил в пункте 5 появится древовидная структура файла правил обмена с наименованием правил. Теперь все что нам осталось сделать, это нажать кнопку в нашей обработке универсальная выгрузка XML 1с 7.7 под цифрой 6 "Выгрузить", после этого действия будут выгружены все данные согласно текущим правилам выгрузки данных, в файл XML который мы указали в пункте 2.