Универсальная выгрузка в xml для 1с 7.7. Подходы к загрузке данных в XML-формат

С версии 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 (eXtensible Markup Language) представляет собой современное средство для хранения и конвертирования данных. В документе XML данные образуют древовидную структуру, что для большинства пользователей является наиболее понятным способом организации данных. Для начала приведем краткое описание самых простых правил языка XML.

Весь текст xml-документа можно грубо разделить на две категории - символьные данные и тэги. Тэг представляет собой команду, которая начинается с символа "<" и заканчивается символом ">". В отличие от фиксированного набора тэгов языка HTML имена и структуру тэгов XML разработчик xml-документа задает сам. Символьные данные - это те структурированные данные, которые хранятся в документе.

Xml-документ начинается со строки, самый простой вариант, которой имеет следующий вид:

Эта строка называется определением xml .За ним следуют элементы, которые представляют собой узлы древовидной структуры xml-документа. В силу древовидности структуры xml-документ должен иметь единственный корневой элемент, являющийся контейнером для всех остальных. Любой элемент состоит из открывающего и закрывающего тэгов, например, ... . Имя элемента называют его общим идентификатором или типом. Текст между открывающим и закрывающим тэгами называется содержимым элемента. Например, в следующем фрагменте:

О.В.Бартеньев. 1С:Предприятие. Опыты программирования.

book - это тип элемента, а строка "О.В.Бартеньев. 1С:Предприятие. Опыты программирования." - его содержимое. Элемент, лишенный содержимого, называется пустым элементом. Открывающий и закрывающий тэги пустого элемента можно объединить в один тэг, поместив в его конец косую черту . В принципе, допускается запись пустого элемента с помощью открывающего и закрывающего тэгов без содержимого ( ). Фактически оба способа имеют свое применение, поскольку могут быть элементы, которые случайно оказываются пустыми с точки зрения хранения пустого содержимого, а могут существовать элементы, которые не имеют содержимого по определению.

У элементов могут быть атрибуты. Атрибут - это пара имя-значение, расположенная в открывающем тэге элемента. Значения атрибутов должны быть заключены в одинарные или двойные кавычки. Фактически в виде атрибутов часто хранятся значения некоторых свойств. Например, предыдущий пример с элементом, хранящим информацию о книге, можно переформулировать так:

1С:Предприятие. Опыты программирования.

Для работы с документами xml требуется наличие так называемого парсера - специальной программы-анализатора, которая отслеживает выполнение синтаксических правил языка. Браузер MS Internet Explorer имеет встроенный парсер языка XML. Для работы с xml-документами в среде 1С:Предприятие используется внешняя компонента v7plus.dll . Таким образом, первый шаг при работе с xml-документами в системе 1С:Предприятие состоит в том, что требуется загрузить эту внешнюю компоненту. Следующий фрагмент кода позволяет осуществить эту загрузку внешней компоненты, если она находится в каталоге информационной базы для конфигурации

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll") <> 1 Тогда

Предупреждение("Компонента v7plus.dll не найдена!");

Возврат; //прервать выполнение процедуры

КонецЕсли;

Анализатор = СоздатьОбъект("AddIn.XMLParser");

Разберем процесс работы по созданию нового xml-документа. С помощью объекта-анализатора создадим пустой xml-документ.

xml=Анализатор.СоздатьДокумент();

Далее создаются все элементы документа с помощью функции СоздатьПодчиненныйЭлемент(ИмяПодчиненногоЭлемента) , примененной к объекту родительского элемента для вновь создаваемого. В результате работы будет возвращена ссылка на созданный элемент данных. Например, создаем корневой элемент и подчиненный к нему.

Корень=xml.СоздатьПодчиненныйЭлемент("КорневойЭлемент");

Подчинен=Корень.СоздатьПодчиненныйЭлемент("ПодчиненныйЭлемент");

В результате в xml-документ будут построены два элемента КорневойЭлемент и ПодчиненныйЭлемент , причем второй будет подчинен первому.

Если элемент имеет атрибут, то его значение можно установить с помощью процедуры УстановитьАтрибут(НазваниеАтрибута, ЗначениеАтрибута) . Эту процедуру нужно вызвать для объекта, хранящего ссылку на конкретный элемент xml-документа, указав в качестве первого параметра символьную строку с названием атрибута и в качестве второго параметра - его значение. Например, установим подчиненному элементу атрибут имя со значением Подчиненный .

Подчинен.УстановитьАтрибут("имя","Подчиненный");

Установить содержимое элемента можно напрямую с помощью атрибута Значение объекта, соответствующего этому элементу.

Подчинен.Значение="Это текст внутри подчиненного элемента";

В результате будет создан xml-документ такого вида:

<КорневойЭлемент>

<ПодчиненныйЭлемент имя="Подчиненный">

Это текст внутри подчиненного элемента

Как и при работе с любыми другими форматами данных, сделанные изменения требуется зафиксировать, т.е. записать в файл. Это делает процедура Записать(ПутьКФайлу) , которая вызывается для объекта Анализатор , отвечающего за весь документ.

Теперь посмотрим, как производить чтение данных из xml-файла. Загрузка внешней компоненты и создание объекта-парсера, естественно, обязательно провести и здесь. Далее также создается ссылка на xml-документ с помощью функции СоздатьДокумент . Далее следует связать его с конкретным файлом с помощью метода Загрузить(ИмяФайла) . Доступ к отдельным узлам xml-документа осуществляется с помощью функции ВыбратьУзел(НазваниеУзла) . Функция вернет ссылку на требуемый узел xml-документа, если он один. Например,

ФайлДанных=Анализатор.СоздатьДокумент();

ФайлДанных.Загрузить(Файл);

Корень=ФайлДанных.ВыбратьУзел("КорневойУзел");

Эта же функция применяется и к любому другому элементу xml-документа для получения доступа к его подчиненным элементам. Если подчиненных элементов несколько, узнать их количество можно с помощью функции КоличествоПодчиненных() , примененной к объекту родительского элемента. Далее каждый из подчиненных элементов можно получить с помощью функции ПолучитьПодчиненныйПоНомеру(НомерЭлемента) . Для каждого элемента можно получить его атрибуты с помощью функции ПолучитьАтрибут(НазваниеАтрибута) , а также содержимое элемента с помощью атрибута Значение объекта, содержащего ссылку на элемент.

Экспорт/импорт данных с помощью файлов формата XML.

Разберем тот же пример, что и при использовании файла формата DBF для экспорта и импорта данных. Создадим обработку в типовой конфигурации для экспорта плана счетов. Структура xml-файла должна быть такой. Корневой элемент xml-документа соответствует плану счетов в целом. В нем располагаются подчиненные элементы с именем Счет , содержащие информацию о счетах. В качестве содержимого элементов указывается наименование счета. Остальные данные записываются в качестве атрибутов (код, признаки валютного, количественного учета и пр.). В качестве подчиненных элементов для элемента Счет задаются элементы, обозначающие его субсчета с теми же атрибутами. Приведем код процедуры экспорта плана счетов.

Процедура Выполнить()

<>1 Тогда

Предупреждение("Компонента не обнаружена");

Возврат;

КонецЕсли;

Корень=Анализатор.СоздатьДокумент();

План=Корень.СоздатьПодчиненныйЭлемент("ПланСчетов");

Родитель=СоздатьОбъект("Счет.Основной");

Счет.ВыбратьСчета();

Пока Счет.ПолучитьСчет()=1 Цикл

// если это счет, а не субсчет

Если Счет.Уровень()=1 Тогда

Родитель.НайтиПоКоду(Счет.Код);

СчетXML=План.СоздатьПодчиненныйЭлемент("Счет");

СчетXML.УстановитьАтрибут("Код", Счет.Код);

СчетXML.УстановитьАтрибут("Валютный", Счет.Валютный);

СчетXML.УстановитьАтрибут("Количественный", Счет.Количественный);

СчетXML.УстановитьАтрибут("Забалансовый", Счет.Забалансовый);

Если Счет.Активный=1 Тогда

СчетXML.УстановитьАтрибут("вид","активный");

ИначеЕсли Счет.Активный=2 Тогда

СчетXML.УстановитьАтрибут("вид","пассивный");

Иначе

СчетXML.УстановитьАтрибут("вид","активно-пассивный");

КонецЕсли;

СчетXML.Значение=Счет.Наименование;

Иначе

Если Счет.ПринадлежитГруппе(Родитель)=1 Тогда

СубсчетXML=СчетXML.СоздатьПодчиненныйЭлемент("Субсчет");

СубсчетXML.УстановитьАтрибут("Код", Счет.Код);

// аналогично устанавливаем все атрибуты на элемент СубсчетXML

СубсчетXML.Значение=Счет.Наименование;

КонецЕсли;

КонецЕсли;

КонецЦикла;

Корень.Записать(КаталогПрограммы()+"plan.xml");

КонецПроцедуры

В результате будет получен файл, фрагмент которого представлен на следующем рисунке.

А теперь приведем код для импорта плана счетов из xml-файла в новую конфигурацию. Код модуля соответствующей обработки должен содержать процедуру Выполнить() , которая имеет такой вид.

Процедура Выполнить()

Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"v7plus.dll")<>1 Тогда

Предупреждение("Внешняя компонента не найдена");

Возврат;

КонецЕсли;

Анализатор=СоздатьОбъект("AddIn.XMLParser");

Файл=Анализатор.СоздатьДокумент();

Файл.Загрузить(КаталогПрограммы()+"plan.xml");

План=Файл.ВыбратьУзел("ПланСчетов");

кол=План.КоличествоПодчиненных();

Счет=СоздатьОбъект("Счет.Основной");

Для инд=1 по кол Цикл

СчетXML=План.ПолучитьПодчиненныйПоНомеру(инд);

КолСубсчетов=СчетXML.КоличествоПодчиненных();

// подчиненным элементом является и содержимое элемента

Если КолСубсчетов>1 Тогда

Счет.Новый(1);

Иначе

Счет.Новый(0);

КонецЕсли;

Счет.Код=СчетXML.ПолучитьАтрибут("Код");

Счет.Наименование=СчетXML.Значение;

Счет.Валютный=СчетXML.ПолучитьАтрибут("Валютный");

Счет.Количественный=СчетXML.ПолучитьАтрибут("Количественный");

Счет.Забалансовый=СчетXML.ПолучитьАтрибут("Забалансовый");

Если СчетXML.ПолучитьАтрибут("вид")="активный" Тогда

Счет.Активный=1;

ИначеЕсли СчетXML.ПолучитьАтрибут("вид")="пассивный" Тогда

Счет.Активный=2;

Иначе

Счет.Активный=3;

КонецЕсли;

Счет.Записать();

Если КолСубсчетов>1 Тогда

Счет1=СоздатьОбъект("Счет.Основной");

Для инд1=2 По кол_субсчетов Цикл

Субсчет=СчетXML.ПолучитьПодчиненныйПоНомеру(инд1);

Счет1.Новый(0);

Счет1.Код=Субсчет.ПолучитьАтрибут("Код");

// аналогично устанавливаются все атрибуты создаваемого субсчета

Счет1.Записать();

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

****************************************************************************

//функция проверяет возможность загрузки компоненты

Функция гВнешняяКомпонента_Загрузить(Значение) Экспорт

Если ЗагрузитьВнешнююКомпоненту(Значение)=1 Тогда

Возврат(1);

Сообщить("Ошибка при загрузке компоненты: "+Значение,"!");

Возврат(0);

КонецЕсли;

КонецФункции

//***********************************************************************************************************************

//процедура чтения xlm файла

Процедура ЧитаемФайл()

//имя файла и директория по умолчанию

пИмяФайла = "first.xml";

пИмяДиректории = "c:\1Cv77\skript\";

//открываем файл xml

Если ФС.ВыбратьФайл(0,пИмяФайла,пИмяДиректории,"Выберите файл для импорта","XML (*.xml)|*.xml","*.xml") = 1 Тогда

ПутьКФайлу = СокрЛП(пИмяДиректории)+СокрЛП(пИмяФайла);

сообщить(ПутьКФайлу);

КонецЕсли;

//пытаемся загрузить внешню компоненту разсобора xml

Если гВнешняяКомпонента_Загрузить("v7plus.dll")=0 Тогда

КонецЕсли;

//создаем xlm парсер

Анализатор=СоздатьОбъект("AddIn.XMLParser");

Файл=Анализатор.СоздатьДокумент();

Файл.Загрузить(ПутьКФайлу);

//читаем корень xml

Корень=Файл.ВыбратьУзел("XML_Root");

//цикл по первому уровню с выводом атрибутов

Для i=1 По Корень.КоличествоПодчиненных() Цикл

Узел=Корень.ПолучитьПодчиненныйПоНомеру(i);

Сообщить("***************************************************************************") ;

Сообщить(Узел.ПолучитьАтрибут("Наименование"));

Сообщить(Узел.ПолучитьАтрибут("ИНН"));

Сообщить(Узел.ПолучитьАтрибут("Контрагент_Nrec"));

//цикл по подуровню с выводом атрибутов

Для j=1 По Узел.КоличествоПодчиненных() Цикл

ПодУзел = Узел.ПолучитьПодчиненныйПоНомеру(j);

Сообщить("*********спецификация*****************") ;

Сообщить(ПодУзел.ПолучитьАтрибут("Банк"));

Сообщить(ПодУзел.ПолучитьАтрибут("БИК"));

Сообщить(ПодУзел.ПолучитьАтрибут("РасчетныйСчет"));

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Сделайте ссылку на эту статью в Вашем блоге:

Решение: Выгрузка/Загрузка документов из/в 1С (7.7) в текстовом файле

Скачав и установив наше программное обеспечение Вы можете опробовать его в демонстрационном, ознакомительном режиме. Если Вы хотите изучать наш программный продукт - используйте версию Trial, которая не имеет ограничений по срокам использования. Для работы - используйте рабочую версию. Обе версии находятся в одном архиве. Рабочая версия идентична версии Trial (ознакомительной) в течение оговоренного срока (обычно - месяц).

Описание:

Универсальная обработка "Выгрузка документов из 1С (7.7) в текстовый файл" позволяет легко и просто выгрузить документы за определенный период, с отбором по заполнению этих документов. Можно определить перечень документов, которые были зарегистрированы в системе в указанном периоде времени и выгрузить их в текстовый файл переноса. Можно указать для выбранных документов условие отбора по общим для них реквизитам и их заполнению. Формат файла переноса является оригинальной авторской разработкой и построен на принципе отображения объектов в 1С в текстовом представлении: то, что видит пользователь в документе - то и будет выгружено.

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

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

Порядок использования: Скопировать файл с архивом. Распаковать. Скопировать файлы из каталога установки (Файлы информационной базы) в каталог Вашей информационной базы. Обработка ВЫГРУЗКА предназначена для использования в базе-источнике, а обработка ЗАГРУЗКА - в базе-приемнике. При таком копировании каталог ExtForms пополнится несколькими файлами - отчетами и их описанием. Открыть отчет через меню "Сервис - Дополнительные возможности": и УОБ.Выгрузка документов . Если запомнить настройку диалоговой формы обработки - при последующем открытии программа восстановит ее автоматически. Это может быть удобно для организации простого обмена документами между центральным офисом и периферийным рабочим местом.

Использование: 1 месяц ознакомительный (демо-режим), с ограничением по загрузке документов: не более 1 документа каждого загружаемого вида в демо-режиме.

Полноценное использование: после приобретения и активации.

Поддержка: технические консультации, консультации по использованию, исправление обнаруженных ошибок - бесплатно. Доработки, усовершенствования - по заказу клиента, на договорной основе.

Преимущества продукта

Функционирование обработки является очень простым. Пользователю не нужно настраивать несколько форм, чтобы выгрузить документы. Ему также не нужно беспокоиться о наличии под рукой правил выгрузки/загрузки, которые нужны для XML-обмена документами. Этот комплекс каждый пользователь может настроить самостоятельно без приглашения программистов-консультантов.

Причины купить

Вы экономите время и деньги. Вы можете использовать любую программу, и выгружать документы из нее в другую, также - произвольную. Нет необходимости беспокоиться о наличии правил конвертации объектов - все работает и без них. Не забывайте только просматривать результаты загрузки и корректировать реквизиты вновь-созданных элементов справочников. Кстати - обработка загрузки может использовать дополнительные обработки и печатные формы, которые можно запускать после обработки файла переноса. Вы можете написать их сами или поручить это профессионалам, чтобы решать дополнительные задачи одновременно с загрузкой документов.

Сравнение версий

В настоящее время предлагается одна версия данного решения, состоящая из двух обработок: выгрузка и загрузка.

Легальность

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

Гарантии

В случае, если данная обработка не устроит Вас своими характеристиками, Вы можете обратиться за возвратом уплаченной за данное решение суммы, прислав по электронной почте цветной скан обращения на фирменном бланке Вашей обрагнизации, с печатью и подписью руководителя организации. Мы гарантируем сервис "Maney back guarantee" (Возврат денег по первому требованию покупателя). Мы уверены в качестве своих продуктов.

Видео:

Выгрузка документов из 1С (7.7) в текстовом файле:

Загрузка документов в 1С (7.7) из текстового файла:

Выгрузка-Загрузка документов в 1С:Торговля и Склад 7.7 из текстового файла:

Демонстрация процесса активации программного обеспечения:

Стоимость программного обеспечения:

Локальная* версия

  • Наименование: Решение: Выгрузка/Загрузка документов из/в 1С (7.7) в текстовом файле. Локальная*
  • Валюта расчетов: рубль
  • Цена для пользователя: 1500

Локальная* - означает то, что Вы приобретаете версию для использования на одном компьютере (для одного пользователя) в своей организации. Для определения понятия "пользователь" используется соотношение Компьютер/База/Пользователь.

Сетевая* версия

  • Код программного продукта: RESH012
  • Наименование: Решение: Выгрузка/Загрузка документов из/в 1С (7.7) в текстовом файле. Сетевая*
  • Валюта расчетов: рубль
  • Цена для пользователя: 6000
  • Ставка НДС: НДС не облагается на основании пп.26 п.2 ст.149 НК РФ

Сетевая* - означает то, что Вы приобретаете версию для использования на нескольких компьютерах (для нескольких пользователей) в своей организации. Ограничение количества лицензий: 6. Вы можете запросить активацию для указанных пользователей без дополнительной оплаты.

Примечание
Под термином КОПИЯ понимается экземпляр программного обеспечения, готовый к использованию и применению на каждом компьютере в соответствии с его предназнанием внутри каждой информационной базы программы "1С:Предприятие 7.7". Приобретая отдельные лицензии, Вы приобретаете право использования программного продукта различными пользователями, на различных компьютерах. Если у Вас имеется несколько информационных баз "1С:Предприятие 7.7", в которых Вы хотели бы использовать данный программный продукт - Вы должны приобрести дополнительные лицензии для каждой информационной базы. Если Вы хотели бы использовать данный программный продукт на нескольких компьютерах - Вы должны приобрести дополнительные лицензии для каждого компьютера.
ПРИМЕР 1
У Вас одна информационная база, с которой работают несколько пользователей (например посменно), т.е. работают с одного компьютера - Вы приобретаете одну лицензию. Файл с кодом активации Вы сможете использовать для нескольких пользователей данной информационной базы, которые будут использовать программный продукт на одном и том же компьютере.
ПРИМЕР 2
У Вас одна информационная база, с которой работают несколько пользователей (одновременно, с разных компьютеров, в сетевом или терминальном режиме) - Вы приобретаете несколько лицензий. Коды активации будут отличаться для пользователей, работающих на различных компьютерах, поэтому придется получить несколько файлов с кодами активации (несколько лицензий).

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

Вы можете обратиться к нам по электронной почте:

Хотите купить прямо сейчас? Интернет-магазин: СофтКей.Ру, или напишите нам письмо с заявкой!

Правовые основы применения льготы по НДС

Налогоплательщики имеют право на применение льготы в соответствии с подп. 26 п. 2 ст. 149 НК РФ, только при соблюдении условий, предусмотренных в Налоговом кодексе РФ, а также правильном понимании понятийного аппарата, связанного с применением этой льготы.

Рассмотрим вопросы применения льготы по НДС, предусмотренной подп. 26 п. 2 ст. 149 НК РФ, в части реализации на территории РФ права на использование программ для ЭВМ и баз данных на основании лицензионного договора.

В соответствии с подп. 26 п. 2 ст. 149 Налогового кодекса РФ не подлежит обложению НДС реализация «исключительных прав на изобретения, полезные модели, промышленные образцы, программы для электронных вычислительных машин, базы данных, топологии интегральных микросхем, секреты производства (ноу-хау), а также прав на использование указанных результатов интеллектуальной деятельности на основании лицензионного договора».

Реализация прав на использование программ для ЭВМ и баз данных

Согласно п. 1 ст. 39 НК РФ реализация товаров, работ, услуг для целей налогообложения – это передача на возмездной основе (в установленных НК РФ случаях на безвозмездной основе) права собственности на товары, результаты выполненных работ, оказанных услуг. В п. 1 ст. 39 НК РФ говорится о реализации товаров, результатах выполненных работ, оказанных услуг, но не о реализации прав. Поэтому можно сделать вывод, что в п. 1 ст. 39 НК РФ не раскрывается содержание понятия «реализация прав на использование программ для ЭВМ и баз данных». Поскольку содержание указанного понятия не раскрывается и в других нормах НК РФ, то нужно обратиться к норме п. 1 ст. 11 НК РФ, согласно которой при отсутствии в нормах НК РФ значений понятий и терминов для установления значений соответствующих понятий и терминов следует руководствоваться актами других отраслей законодательства РФ. На основании п. 1 ст. 11 НК РФ нужно обратиться к нормам Гражданского кодекса РФ.

В соответствии с абзацем 1 п. 1 ст. 1235 ГК РФ по лицензионному договору одна сторона – обладатель исключительного права на результат творческой деятельности (лицензиар) предоставляет или обязуется предоставить другому лицу (лицензиату) право использования такого результата в предусмотренных договором пределах. Согласно п. 1 ст. 1286 ГК РФ по лицензионному договору одна сторона – автор или иной правообладатель (лицензиар) предоставляет или обязуется предоставить другой стороне (лицензиату) право использования такого произведения в установленных договором пределах.

Системное толкование подп. 26 п. 2 ст. 149 НК РФ, абзаца 1 п. 1 ст. 1235 ГК РФ и п. 1 ст. 1286 ГК РФ позволяет сделать вывод, что под реализацией права на использование программ для ЭВМ и баз данных понимается предоставление права использования программ для ЭВМ и баз данных на основании лицензионного договора

Предоставление "права использования"

Понятие «предоставление права использования» при применении налоговой льготы по НДС, установленной в подп. 26 п. 2 ст. 149 НК РФ, вызывает много вопросов.

Согласно п. 1 ст. 1236 ГК РФ лицензионный договор может быть двух видов:

  • лицензионный договор, по которому лицензиату предоставляется право использования результата интеллектуальной деятельности с сохранением за лицензиаром права выдачи лицензий другим лицам (простая (неисключительная лицензия);
  • лицензионный договор, по которому лицензиату предоставляется право использования результата интеллектуальной деятельности без сохранения за лицензиаром права выдачи лицензий другим лицам (исключительная лицензия).
Из приведенного п. 1 ст. 1236 ГК РФ следует, что предоставление права использования сводится к предоставлению лицензиаром лицензиату исключительной или неисключительной лицензии в виде лицензионного договора. Естественно, что такое понимание понятия «лицензия» достаточно непривычно. В нашем привычном понимании под лицензией понимается собственно документ, выдаваемый уполномоченным государственным органом, являющийся разрешением на осуществление лицом, которому выдается такой документ, определенного вида деятельности.

На первый взгляд, из п. 1 ст. 1236 ГК РФ можно сделать вывод, что понятие «предоставление права использования» идентично понятию «лицензия». Однако такой вывод ошибочен, поскольку лицензия предоставляет собой сложный объект, включающий несколько элементов.

Предоставление права использования является лишь одним из элементов предоставления лицензии.

Вторым элементом предоставления лицензии может быть передача лицензиаром лицензиату соответствующего документа на бумажном носителе.

Документ на бумажном носителе

По договоренности сторон лицензионного договора лицензиар может передавать лицензиату документ на бумажном носителе с названием «Лицензия». Этот документ содержит информацию о содержании предоставляемого права, о способе доступа к программного обеспечению и иную необходимую информацию.

Третьим элементом предоставления лицензии является способ доступа к программному обеспечению.

Способы доступа к программному обеспечению

Предоставление лицензиаром лицензиату лицензии не имеет смысла без наличия программного обеспечения, в отношении которого предоставляется соответствующая лицензия.

В связи с этим можно выделить следующие способы доступа к программному обеспечению:

  • Лицензиар передает лицензиату пароли, шифры, коды, ключи доступа и т.п. путем направления через сеть «Интернет», передачи на носителях или другими способами.
  • Лицензиар передает лицензиату пароли, шифры, коды, ключи доступа и т.п. путем направления через сеть «Интернет», передачи на носителях или другими способами, а также лицензию в виде бумажного документа, в котором содержатся необходимая соответствующая информация.
  • Лицензиар передает лицензиату лицензию в виде бумажного документа, в котором указаны пароли, шифры, коды, ключи доступа и т.п. и иная соответствующая необходимая информация.

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

  • Лицензиар передает лицензиату непосредственно программное обеспечение на соответствующих носителях.
  • Лицензиар передает лицензиату непосредственно программное обеспечение на соответствующих носителях, а также лицензию в виде бумажного документа, в котором указывается необходимая соответствующая информация.
Могут существовать и иные способы доступа к программному обеспечению в рамках предоставляемой лицензии. Т.е. приведенный перечень способов не является исчерпывающим.

Акт приема-передачи

Помимо лицензионного договора, регулирующего вопросы предоставления лицензиаром лицензиату лицензии, необходимо подтвердить момент непосредственного предоставления лицензии. Документом, подтверждающим непосредственное предоставление лицензии, является акт приема-передачи.

В настоящее время существует полемика относительно названия и положений содержания указанного акта. Некоторые специалисты предлагают называть указанный акт приема-передачи прав. Такое название акта (и, соответственно, понимание сути процесса) является ошибочным, поскольку права невозможно передать физически виду их нематериального характера. Поэтому для указанного акта является точным и верным такое название, как «акт приема-передачи» или «акт приема-передачи лицензии». Предлагаемое название акта верно и для случая, если лицензиар передает лицензиату только пароли, шифры, коды, ключи доступа и т.п. в электронном виде путем пересылки через сеть «Интернет». В указанном акте отражается, что:

  • Лицензиар предоставил лицензиату лицензию с указанием ее наименования, количества, суммы (размера) вознаграждения за лицензию. Необходимо отдельно указать, что сумма (размер) вознаграждения за лицензию не облагается НДС на основании пп. 26 п. 2 ст. 149 НК РФ. Термины «сумма» и «размер» по отношению к термину «вознаграждение» являются равнозначными, поэтому возможно употребление обоих терминов – соответственно сумма вознаграждения или размер вознаграждения;
  • Лицензия считается предоставленной лицензиаром лицензиату с момента подписания ими данного акта.
Если передаются экземпляры программного обеспечении, то в акте указывается также количество экземпляров по каждому виду программного обеспечения и их носители (обычно CD (DVD)-диски).

Примечание. Если предоставляется несколько лицензий, то, соответственно, указываются перечисленные данные по каждому виду лицензий.

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

Применительно к 1С с его помощью можно реализовать множество задач, в частности по документообороту внутри компании и с внешними корреспондентами, всевозможные переносы справочников и документов между конфигурациями, обмен данными с другими приложениями, поддерживающими формат XML.

XML-документ вкратце можно представить следующим образом. Верхним в иерархии является корневой элемент. Все остальные элементы (кроме сведений о формате файла) являются вложенными по отношению к нему (подчиненными), назовем их ветви. Каждый элемент, в т.ч. и корневой поименован. Каждый элемент имеет атрибуты, может содержать данные, а также может иметь множество других вложенных в него элементов. В качестве примера разберем задачу по переносу приходно-кассовых ордеров и банковских выписок, формируемых оперативным отделом с помощью ТиС в бухгалтерию. Данный пример показывает простые приемы работы со структурой XML-документа. Код с пояснениями:

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

//Теперь начнем строить дерево документа. Заодно занесем служебную информацию о файле выгрузки в атрибуты корневого элемента
Корень = Анализатор .СоздатьДокумент ();
Данные = Корень.СоздатьПодчиненныйЭлемент ("Данные"); Данные . УстановитьАтрибут ("ИБ",КаталогИБ());
Данные . УстановитьАтрибут ("Дата",Строка(РабочаяДата()));
Данные . УстановитьАтрибут ("Оператор",ИмяПользователя());

//И создади две основные ветви Справочники и Документы
Справочники = Данные . СоздатьПодчиненныйЭлемент ("Справочники");
Документы = Данные . СоздатьПодчиненныйЭлемент ("Документы");

// в общей ветке Справочники создадим ветку для справочника Контрагентов
Клиенты = Справочники . СоздатьПодчиненныйЭлемент ("Клиенты");

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


// выгружаем все нужные реквизиты контрагента
ПН = Клиент . СоздатьПодчиненныйЭлемент ("ПолнНаименование");
ПН . Значение = К .ПолнНаименование ;
ВК = Клиент .СоздатьПодчиненныйЭлемент ("ВидКонтрагента");
ВК . Значение = К .ВидКонтрагента .Идентификатор ();


// и так далее по всем необходимым реквизитам, аналогично заполняется информация о документах в соответствии с разработанной схемой обмена с бухгалтерией.

// Завершающие шаги и сохранение файла
ИмяФайла = СтрЗаменить(Строка(ДатаВыгрузки )+Строка(ДатаВыгрузки1 ), ".", "") + ".xml";
ПапкаФайла = "C:\1C\Change\Sweet\";
Корень . Записать (ПапкаФайла + ИмяФайла );

Чтение данных.

В первой части статьи были рассмотрены простейшие приемы работы по созданию XML-документа. В этой части будут описаны способы получения данных. Основным моментом, на который я хотел бы обратить Ваше внимание, является следующее правило: сперва с помощью методов .ВыбратьУзел() или .ВыбратьУзлы() производится выборка узла/элемента, а затем с помощью методов соответственно .ПолучитьПодчиненныйПоНомеру() и .ПолучитьУзел() обеспечивается непосредственный доступ к узлам/элементам документа. Впрочем, здесь можно провести аналогию работы со справочниками и документами в 1С: сначала делаем выборку с помощью .ВыбратьЭлементы() или .ВыбратьДокументы() , а затем получаем сами объекты .ПолучитьЭлемент() или ПолучитьДокумент() . Оба приема используются в данном примере. Код с пояснениями:

Инициализацию компоненты опустим. Для чтения она ничем не отличается.
//создадим объект для доступа к xml-файлу, загрузим в него файл и получим ссылку на корневой элемент xml-документа. Напомню, что у нас он назван "Данные"
ФайлДанных = Анализатор . СоздатьДокумент ();
ФайлДанных . Загрузить (ФайлЭксп );
ВсеУзлы = ФайлДанных . ВыбратьУзлы ("Данные");

// получаем доступ к корневому узлу/элементу и читаем его атрибуты Данные = ВсеУзлы Данные .ПолучитьАтрибут ("ИБ"));
Сообщить("Выгрузка производилась: " + Данные .ПолучитьАтрибут ("Дата"));
Сообщить("Выгрузку произвел/произвела: " + Данные .ПолучитьАтрибут ("Оператор"));

// следующими операторами мы получаем доступ к двум основным ветвям: ветки Справочники и ветке Клиенты
Справочники = Данные .ВыбратьУзел ("Справочники");
Документы = Данные .ВыбратьУзел ("Документы");

// "спускаемся" по иерархии глубже и получаем доступ к элементу Клиенты, Выписки и Приходники
Клиенты = Справочники .ВыбратьУзел ("Клиенты");
Выписки = Документы .ВыбратьУзел ("Выписки");
Приходники = Документы .ВыбратьУзел ("Приходники");

//если очень интересно сколько прийдется загружать Контрагентов, то можно воспользоваться следующей конструкцией
Сообщить("Количество клиентов: " + Строка(Клиенты . КоличествоПодчиненных ()));

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

КонецЕсли;
КонецЦикла;

Сегодня мы рассмотрим с Вами обработку "Универсальная выгрузка в 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.