Настройка внешней обработки СБИС для 1С 8.х — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Прямое обращение к данным из базы)
(Общая логика формирования электронного документа)
 
(не показано 249 промежуточных версий 4 участников)
Строка 6: Строка 6:
 
Конфигурации 1С зачастую изменяются пользователями, в результате таблицы, поля, предусмотренные в типовой конфигурации, могут называться по-другому, или вообще отсутствовать.
 
Конфигурации 1С зачастую изменяются пользователями, в результате таблицы, поля, предусмотренные в типовой конфигурации, могут называться по-другому, или вообще отсутствовать.
  
===Что можно настраивать в внешней обработке?===
+
===Что можно настраивать во внешней обработке?===
 
{|{| class="wikitable"
 
{|{| class="wikitable"
 
!|Что можно настраивать||Уровень знаний
 
!|Что можно настраивать||Уровень знаний
Строка 45: Строка 45:
 
==Состав обработки==
 
==Состав обработки==
 
Обработка состоит из одного файла:
 
Обработка состоит из одного файла:
* для толстого клиента ....
+
* для толстого клиента Sbis1C.epf
* для управляемых форм ....
+
* для управляемых форм Sbis1C_UF.epf
  
 
Файл обработки при запуске распаковывает на диск:  
 
Файл обработки при запуске распаковывает на диск:  
Строка 58: Строка 58:
 
# Конфигурационные файлы выгружаемые обработкой ни при каких условиях не изменяются.
 
# Конфигурационные файлы выгружаемые обработкой ни при каких условиях не изменяются.
 
# Вся настройка производится в пользовательских конфигурационных файлах путем переопределения параметров, либо добавления новых.
 
# Вся настройка производится в пользовательских конфигурационных файлах путем переопределения параметров, либо добавления новых.
# При необходимости написать функцию для получения какого либо значения или изменения алгоритма выгрузки создается пользовательская обработка "ВнешниеФункции_Клиент.epf" в которой переопределяются имеющихся функции или создаются новые.
+
# При необходимости написать функцию для получения какого либо значения или изменения алгоритма выгрузки создается пользовательская обработка "ВнешниеФункции_Клиент.epf" в которой переопределяются имеющихся функции или создаются новые. Обработка '''"ВнешниеФункции_Клиент.epf"''' должна лежать или в каталоге настроек или в 1С в справочнике '''"Дополнительные внешние обработки"'''/'''"Внешние обработки"'''.
 +
 
 +
==Общая логика формирования электронного документа==
 +
Универсальность внешней обработки обеспечивается не только отдельными файлами настроек для каждой конфигурации и каждого документа, но и общей структурой и логикой выгрузки всех документов. Если более детально посмотреть файл настроек, то можно заметить что описанные в нем поля хоть и содержат необходимые значения для формирования документа, но не очень похожи на форматы ФНС. Более того, структура инишек для разных документов одинакова. Как же получается, что обработка имея один и тот же набор полей, на выходе формирует разные типы электронных документов?
 +
 
 +
Дело в том, что обработка сначала формирует документ в промежуточный xml файл '''формата 3.01'''. На основе этого формата, например, реальзованы документы «'''Счет'''», «'''Акт сверки взаиморасчето'''», «'''Реестр сертификатов, деклараций'''» и некоторые другие.
 +
 
 +
Полученный xml файл формата 3.01 обработка конвертирует с помощью xslt преобразования '''в формат ФНС'''. И он уже отправляется контрагенту. Xslt файл подбирается исходя из типа, подтипа и версии формата указанного в файле настроек. Если этих полей нет или по ним оработка не смогла найти xslt файл в каталоге настроек, то документ отправляется «'''как есть'''» без преобразования. По такой логике с помощью стандартных настроек отправляются документы «'''Счет'''» и «'''Акт сверки взаиморасчетов'''».
 +
После того как документ отправлен в кабинет, система определяет что это за формат и с помощью xslt файла визуализации показывает его как html.
 +
 
 +
Таким образом при отправке документа получается следующая цепочка:
 +
# С помощью настроек обработка формирует xml формата 3.01
 +
# С помощью xslt преобразовывает документ из 3.01 в формат ФНС
 +
# Отправляет его
 +
# В СБИС документ с помощью xslt визуализации показывает xml как html страницу
 +
 
 +
В случае загрузки в 1С происходит обратная конвертация:
 +
# С помощью xslt «из формата ФНС в 3.01» обработка формирует xml универсальной структуры (3.01)
 +
# С помощью файлов настроек определяет откуда из 3.01 взять поле и куда в 1С его положить
 +
 
 +
Такой принцип работы позволяет сохранить универсальность при изменении форматов ФНС. Ведь для поддержки нового формата достаточно будет заменить xslt файл «'''из 3.01 в формат ФНС'''» без изменения файлов настроек.
 +
 
 +
Для отладки и возможности просмотра файлов формата 3.01 в обработке (начиная с 36 версии) на вкладке «'''Настройки'''» добавлена опция «'''Режим отладки'''», которая позволяет указать каталог куда будут сохраняться файлы формата 3.01
 +
[[Файл:Алгоритм формирования XML.png|Алгоритм формирования XML.png]]
  
 
== Первый запуск обработки ==
 
== Первый запуск обработки ==
 
# Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
 
# Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
 
# Запустить обработку.
 
# Запустить обработку.
# При запуске обработка сама попытается найти каталог с ini-файлами для данной конфигурации и заполнить поле «Каталог настроек». Если после открытия это поле осталось пустым, то необходимо вручную выбрать каталог с настройками, соответствующими конфигурации 1С.
+
# При запуске обработка сама выгрузит файлы настроек в каталог C:\Sbis1C. Для клиент-серверной 1С, запущенной в управляемом режиме, этот каталог будет располагаться на сервере. При необходимости каталог настроек можно изменить на вкладке Настройки/Файлы настроек в обработке.  
В результате на обработке появятся вкладки «Реализация», «Оказание услуг», «Взаиморасчеты», «Поступление» (или часть из них в зависимости от типа и версии конфигурации).
+
 
 
Если конфигурация клиента нестандартная в Служебных сообщениях появится список ошибок – говорящих о том, что в базе данных нет каких-то полей или они заданы неверно.
 
Если конфигурация клиента нестандартная в Служебных сообщениях появится список ошибок – говорящих о том, что в базе данных нет каких-то полей или они заданы неверно.
# Настроить каталог обмена на ту же папку, что и СБиС Коннект.
 
  
 
==Файлы настроек (инишки)==
 
==Файлы настроек (инишки)==
У 1С есть множество разнообразных конфигураций, которые могут заметно отличаться друг от друга по способу хранения данных. Для того, чтобы не делать отдельную обработку под каждую конфигурацию, или не делать кучу условий внутри одной обработки, мы используем файлы настроек, которые говорят обработке, где в текущей конфигурации брать необходимое значение.
+
У 1С есть множество разнообразных конфигураций, которые могут заметно отличаться друг от друга по способу хранения данных. Для того, чтобы не делать отдельную обработку под каждую конфигурацию, или не делать кучу условий внутри одной обработки, мы используем файлы настроек, которые говорят обработке, где в текущей конфигурации хранится необходимое значение.
  
 
Файлы настроек, это xml файлы определенного формата. По старой традиции мы их называем инишками (в внешней обработке первой версии, это были ini файлы).
 
Файлы настроек, это xml файлы определенного формата. По старой традиции мы их называем инишками (в внешней обработке первой версии, это были ini файлы).
  
Для каждой конфигурации делается отдельный набор инишек. Для наиболее популярных конфигураций готовые наборы инишек (стандартные) которые включаются в обработку.  
+
Для каждой конфигурации делается отдельный набор инишек. Для наиболее популярных конфигураций готовые наборы инишек (стандартные) уже включены в обработку.  
  
 
Если обработка при запуске определила, что у Вас одна из поддерживаемых версий 1С, то она автоматически установит нужный набор инишек.
 
Если обработка при запуске определила, что у Вас одна из поддерживаемых версий 1С, то она автоматически установит нужный набор инишек.
  
Стандартные инишки автоматически обновляются вместе с обработкой, именно по этому их нельзя редактировать. Для внесения исправлений в стандартные инишки реализован механизм Пользовательских файлов настроек (пользовательских инишек). Если кратко, то при каждом запуске обработки содержимое пользовательской инишки накладывается сверху на стандартную.
+
Стандартные инишки автоматически обновляются вместе с обработкой, именно поэтому их нельзя редактировать. Для внесения исправлений в стандартные инишки реализован механизм заплаток - Пользовательских файлов настроек (пользовательских инишек).Пользовательские инишки отличаются от стандартных расширением файла ( у стандартного расширение .sbis3.xml, у пользовательского .xml). При каждом запуске обработки формируется сводный файл настроек, в котором параметры из пользовательской инишки заменяют аналогичные параметры стандартной.
  
 
Как было сказано ранее, для каждой конфигурации делается отдельный набор файлов настроек. Данный набор состоит из:
 
Как было сказано ранее, для каждой конфигурации делается отдельный набор файлов настроек. Данный набор состоит из:
 
* [[#Файл настроек конфигурации|Файл настроек конфигурации]]
 
* [[#Файл настроек конфигурации|Файл настроек конфигурации]]
 
* [[#Файлы настроек реестров Продажа / Покупка|Файлы настроек реестров Продажа / Покупка]]
 
* [[#Файлы настроек реестров Продажа / Покупка|Файлы настроек реестров Продажа / Покупка]]
* [[#Файлы настроек загрузки для каждого типа (формат + версия) электронного документа |Файлы настроек загрузки для каждого типа электронного документа (формат + версия)]]
+
* [[#Файлы настроек загрузки|Файлы настроек загрузки]]
  
 
===Файл настроек конфигурации===
 
===Файл настроек конфигурации===
 +
В данном файле описаны общие параметры, необходимые для работы обработки
 +
 
====Имя файла====
 
====Имя файла====
Название файла формируется по шаблону «ВО82_[Код конфигурации]_Конфигурация.sbis3.xml» Например для Бухгалтерии 2.0 это будет ВО2_БУХ2_Конфигурация.sbis3.xml
+
Название файла формируется по шаблону «ВО82[Код конфигурации]_Конфигурация.sbis3.xml» Например, для Бухгалтерии 2.0 это будет ВО2БУХ2_Конфигурация.sbis3.xml
  
 
Коды типовых конфигураций поддерживаемых обработкой:
 
Коды типовых конфигураций поддерживаемых обработкой:
Строка 99: Строка 123:
  
 
====Структура файла====
 
====Структура файла====
 +
 
Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки:
 
Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки:
Организации - Справочник Организации
+
<source lang="xml">
 +
    <!--Данные для поиска контрагента в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
 +
<Контрагенты>Справочник.Контрагенты</Контрагенты>
 +
<Контрагенты_ИНН>[Контрагенты].ИНН</Контрагенты_ИНН>
 +
<Контрагенты_КПП>[Контрагенты].КПП</Контрагенты_КПП>
 +
 
 +
    <!--Данные для поиска организации в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
 +
<Организации>Справочник.Организации</Организации>
 +
<Организации_ИНН>[Организации].ИНН</Организации_ИНН>
 +
<Организации_КПП>[Организации].КПП</Организации_КПП>
 +
   
 +
    <!--Определение формы работы со статусами. В зависимости от места хранения статусов электронных документов возможны значения: 'Статусы_Регистры', 'Статусы_ДБФ' и 'Статусы_СостоянияЭД' (одновременно записывается в регистры и дополнительно в статусы модуля Такском) -->
 +
<ФормаРаботыСоСтатусами>'Статусы_Регистры'</ФормаРаботыСоСтатусами>
 +
 
 +
    <!--Определение формы работы с номенклатурой контрагентов. В зависимости от места хранения сопоставления номенклатуры возможны значения: 'СопоставлениеНоменклатуры_ДБФ',
 +
    'СопоставлениеНоменклатуры_Регистры', 'СопоставлениеНоменклатуры_Справочники','СопоставлениеНоменклатуры_СуммовойУчет'.
 +
    'СопоставлениеНоменклатуры_ДБФ' - означает, что сопоставление нашей номенклатуры с номенклатурой контрагента хранится в dbf-файлах в подкаталоге НоменклатураПоставщиков каталога настроек.
 +
    'СопоставлениеНоменклатуры_Регистры' - сопоставление номенклатуры хранится в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов")
 +
    'СопоставлениеНоменклатуры_Справочники' - сопоставление хранится в справочнике (обычно справочник называется "НоменклатураПоставщиков")
 +
    'СопоставлениеНоменклатуры_СуммовойУчет' - используется, если ведется суммовой учет и в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента
 +
    сопоставляется одна и та же карточка номенклатуры в нашей системе. Для определения, какая именно это будет карточка необходимо добавить параметр "СуммовойУчетКодНоменклатуры",
 +
    в котором указать в одинарных кавычках код номенклатуры.-->
 +
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_ДБФ'</ФормаРаботыСНоменклатуройПоставщика>
 +
 
 +
    <!--Определение параметров для сопоставления номенклатуры в случае, если сопоставление хранится в базе 1С (в справочнике или регистре сведений)-->
 +
<НоменклатураПоставщиков Отбор_Идентификатор="НоменклатураПоставщиков_Идентификатор" Отбор_Владелец="НоменклатураПоставщиков_Контрагент">Справочник.НоменклатураПоставщиков</НоменклатураПоставщиков>
 +
<НоменклатураПоставщиков_Наименование Данные="Название">[НоменклатураПоставщиков].Наименование</НоменклатураПоставщиков_Наименование>
 +
<НоменклатураПоставщиков_Идентификатор Данные="Идентификатор">[НоменклатураПоставщиков].Идентификатор</НоменклатураПоставщиков_Идентификатор>
 +
<НоменклатураПоставщиков_Номенклатура Данные="Номенклатура">[НоменклатураПоставщиков].Номенклатура</НоменклатураПоставщиков_Номенклатура>
 +
<НоменклатураПоставщиков_Характеристика Данные="Характеристика">''</НоменклатураПоставщиков_Характеристика>
 +
<НоменклатураПоставщиков_Контрагент Данные="Контрагент">[НоменклатураПоставщиков].Владелец</НоменклатураПоставщиков_Контрагент>
 +
 
 +
    <!--Данные для автоматического создания карточек номенклатуры-->
 +
    <!--Параметр Номенклатура так же используется при сопоставлении номенклатуры. Он определяет, из какого справочника выбирается наша номенклатура, при сопоставлении с номенклатурой контрагента.-->
 +
<Номенклатура>Справочник.Номенклатура</Номенклатура>
 +
<Номенклатура_Наименование Данные="Название">[Номенклатура].Наименование</Номенклатура_Наименование>
 +
<Номенклатура_ПолноеНаименование Данные="Название">[Номенклатура].НаименованиеПолное</Номенклатура_ПолноеНаименование>
 +
<Номенклатура_ЕдиницаИзмерения>[Номенклатура].БазоваяЕдиницаИзмерения</Номенклатура_ЕдиницаИзмерения>
 +
<ЕдиницаИзмерения>Справочник.КлассификаторЕдиницИзмерения</ЕдиницаИзмерения>
 +
<Номенклатура_Комментарий>[Номенклатура].Комментарий</Номенклатура_Комментарий>
 +
<Номенклатура_Услуга>[Номенклатура].Услуга</Номенклатура_Услуга>
 +
 
 +
<!--Параметр ХарактеристикиНоменклатуры определяет, из какого справочника выбирается характеристика номенклатуры, при сопоставлении с номенклатурой контрагента.
 +
В стандартных настройках отсутствует. Используется только в случае хранения характеристик в нестандартном справочнике (например, справочник "Характеристики", а не "ХарактеристикиНоменклатуры")-->
 +
<ХарактеристикиНоменклатуры>Справочник.Характеристики</ХарактеристикиНоменклатуры>
 +
 
 +
</source>
 +
 
 +
Описание основных параметров:
 +
 
 +
'''Форма работы со статусами'''
 +
Понять, в каком состоянии находится документ (доставлен ли он до контрагента, утвержден или отклонен), можно по статусу электронного документа. По умолчанию статус и идентификатор электронного документа, соответствующего документу 1С, записываются в регистр сведений  (ЗначенияСвойствОбъектов или ДополнительныеСведения в зависимости от конфигурации). При этом в файле настроек конфигурации указана форма работы со статусами 'Статусы_Регистры'.
 +
 
 +
Если в конфигурации нет таких регистров или другого места для хранения статусов, в файле настроек необходимо указать 'Статусы_ДБФ' - в этом случае статусы будут храниться в dbf-файле в каталоге настроек обработки.
 +
 
 +
'''Форма работы с номенклатурой контрагентов'''
 +
Перед загрузкой полученных документов необходимо сопоставить номенклатуру контрагента со своей. Результат этого сопоставления сохраняется, чтобы в следующий раз, когда от контрагента придет документ с такой же номенклатурой, сопоставление происходило автоматически. По умолчанию сопоставление записывается в dbf-файлы в подкаталоге НоменклатураПоставщиков каталога настроек обработки. При этом в файле настроек конфигурации указана форма работы с номенклатурой контрагентов 'СопоставлениеНоменклатуры_ДБФ'.
 +
 
 +
Во многих конфигурациях 1С есть специальные справочники или регистры сведений для хранения сопоставления номенклатуры.
 +
Запись
 +
<source lang="xml">
 +
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Регистры'</ФормаРаботыСНоменклатуройПоставщика>
 +
</source>
 +
означает, что сопоставление номенклатуры будет храниться в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов"). Минус такого варианта в том, что в большинстве конфигураций данный регистр не позволяет сопоставить нескольким видам номенклатуры контрагента одну и ту же карточку своей номенклатуры.
 +
 
 +
Запись
 +
<source lang="xml">
 +
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Справочники'</ФормаРаботыСНоменклатуройПоставщика>
 +
</source>
 +
означает, что сопоставление номенклатуры будет храниться в справочнике (обычно справочник называется "НоменклатураПоставщиков").
 +
 
 +
Примечание. При загрузке исходящих документов (в случае, если документы были сформированы и отправлены из другой учетной системы), если необходимо сопоставить номенклатуру другой учетной системы с номенклатурой в текущей базе 1С и сопоставление хранится в регистрах или справочниках, то в справочнике Контрагенты должен быть заведен контрагент с реквизитами нашей организации (ИНН/КПП), так как для исходящего документа владельцем номенклатуры контрагента является наша организация.
 +
 
 +
При суммовом учете в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента сопоставляется одна и та же карточка номенклатуры в нашей системе.
 +
В этом случае необходимо указать форму работы с номенклатурой 'СопоставлениеНоменклатуры_СуммовойУчет'.
 +
Для определения, какая именно карточка номенклатуры будет сопоставлена со всей номенклатурой контрагента, необходимо добавить параметр "СуммовойУчетКодНоменклатуры", в котором указать в одинарных кавычках код номенклатуры:
 +
<source lang="xml">
 +
<СуммовойУчетКодНоменклатуры>'00000456'</СуммовойУчетКодНоменклатуры>
 +
</source>
 +
 
 +
'''Строка подключения к dbf-файлам'''
 +
Дополнительно в файле настроек конфигурации может быть указан параметр "СтрокаПодключенияДБФ". Он необходим в том случае, если на компьютере не установлен драйвер работы с dbf-файлами, используемый обработкой по умолчанию (Microsoft dBASE Driver) и при этом сопоставление номенклатуры либо статусы хранятся в dbf. Например:
 +
<source lang="xml">
 +
<СтрокаПодключенияДБФ>'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="DBASE IV;";Data Source='</СтрокаПодключенияДБФ>
 +
</source>
 +
К этой строке в конце обработкой будет дописан путь к каталогу, где лежит нужный dbf-файл с номенклатурой поставщика либо со статусами.
  
 
===Файлы настроек реестров Продажа / Покупка===
 
===Файлы настроек реестров Продажа / Покупка===
 +
 +
Разделы Продажа/Покупка внешней обработки содержат подразделы, в которых отображаются списки документов 1С, например, "Реализация товаров и услуг", "Акт об оказании производственных услуг", "Заказ поставщику" и другие. Из этих разделов документы 1С можно отправить контрагентам в электронном виде. Список пунктов меню раздела Продажа - динамический. Он зависит от количества инишек находящихся в каталоге настроек.
 +
 +
Состав подразделов в Продаже/Покупке определяется файлами настроек.
 +
 
====Имя файла====
 
====Имя файла====
Название файла формируется по шаблону «ВО82_[Код конфигурации]_[Имя документа].sbis3.xml». Например для Реализации товаров и услуг в Бухгалтерии 2.0 это будет ВО82_БУХ2_РеализацияТоваровУслуг.sbis3.xml
+
Название файла формируется по шаблону «ВО82[Код конфигурации]_[Имя документа].sbis3.xml». Например, для Реализации товаров и услуг в Бухгалтерии 2.0 это будет ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml
 +
 
 
====Структура файла====
 
====Структура файла====
 +
 
*Общие параметры данного реестра документов
 
*Общие параметры данного реестра документов
*Массив с параметрами выгружаемых файлов
+
**Запрос для построения списка документов
 +
*Массив с параметрами выгружаемых файлов (мФайл)
 
**Параметры шапки документа
 
**Параметры шапки документа
**Массив табличных частей
+
**Массив табличных частей (мТаблДок)
 
***Параметры табличной части документа
 
***Параметры табличной части документа
  
===Файлы настроек загрузки для каждого типа электронного документа===
+
Подраздел в Продаже или Покупке появляется в том случае, если в соответствующем файле настроек присутствует параметр "ЗапросСпискаДокументов", содержащий текст запроса документов из базы 1С. С помощью запроса можно выбрать не только документы определенного типа, но и связанные с ними документы таким образом, чтобы связанные документы отправлялись контрагенту одним комплектом. Например, в комплекте с реализацией товаров и услуг можно отправить счет-фактуру и счет на оплату.
 +
 
 +
В какой именно раздел будет добавлен тот или иной реестр документов, определяется параметром файла настроек "ДокументРаздел":
 +
<source lang="xml">
 +
<ДокументРаздел>'Продажа'</ДокументРаздел>
 +
</source>
 +
Некоторые документы, например, "Акт сверки", могут присутствовать в обоих разделах:
 +
<source lang="xml">
 +
<ДокументРаздел>'Продажа,Покупка'</ДокументРаздел>
 +
</source>
 +
Имя подраздела, которое отображается в интерфейсе обработки, определяется параметром "Реестр1С_Название":
 +
<source lang="xml">
 +
<Реестр1С_Название>'Реализация товаров и услуг'</Реестр1С_Название>
 +
</source>
 +
 
 +
По умолчанию при выгрузке каждого документа используется файл настроек, соответствующий имени этого документа, то есть для Реализации товаров и услуг используется файл ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml, для Счета-фактуры выданного - ВО82БУХ2_СчетФактураВыданный.sbis3.xml и т.д.
 +
 
 +
Иногда документы одного и того же типа нужно выгружать по-разному в зависимости от определенного условия. Например, логика выгрузки авансовых счетов-фактур отличается от обычных, хотя все они являются одним и тем же документом 1С - "Счет фактура выданный". В этом случае создается отдельный файл настроек со своим запросом и своими параметрами выгружаемых файлов. В запросе указывается условие, что в данный подраздел попадают только счета-фактуры с видом "На аванс". Имя файла настроек будет отличаться от имени документа 1С, т.к. стандартное имя уже занято файлом для выгрузки обычных счетов-фактур. Например, для Бухгалтерии 2.0 это будет ВО82БУХ2_СчетФактураНаАванс.sbis3.xml. Чтобы авансовый счет-фактура выгружался с помощью данного файла настроек, а не стандартного ВО82БУХ2_СчетФактураВыданный.sbis3.xml, необходимо указать название используемого файла в поле запроса "ФайлНастроекДокумента".
 +
 
 +
В файле настроек может присутствовать один или несколько узлов "мФайл" - это означает, что на основании документа 1С может быть сформирован один или несколько электронных документов. Например, для реализации товаров и услуг в файле настроек обычно присутствует два узла "мФайл" - для формирования акта и накладной.
 +
<source lang="xml">
 +
<мФайл Имя="ЭДОНакл">
 +
...
 +
</мФайл>
 +
<мФайл Имя="АктВР">
 +
...
 +
</мФайл>
 +
</source>
 +
Но это не означает, что на основании реализации всегда будет выгружаться два электронных документа. Все зависит от заполнения табличных частей.
 +
 
 +
Внутри каждого узла "мФайл" может быть описана одна или несколько табличных частей. Например, для акта описывается две табличные части:
 +
<source lang="xml">
 +
<мФайл Имя="АктВР">
 +
    ...
 +
    <мТаблДок Имя="Услуги">
 +
        <ТаблДок Тип="ТабличнаяЧасть">[Документ].Услуги</ТаблДок>
 +
        ...
 +
    </мТаблДок>
 +
    <мТаблДок Имя="АгентскиеУслуги">
 +
        <ТаблДок Тип="ТабличнаяЧасть">[Документ].АгентскиеУслуги</ТаблДок>
 +
        ...
 +
    </мТаблДок>
 +
</мФайл>
 +
</source>
 +
Если хотя бы одна из этих табличных частей будет заполнена, то сформируется электронный документ Акт.
 +
 
 +
Для накладной обычно описывается одна табличная часть - "Товары". Если она будет заполнена, то сформируется электронный документ Накладная.
 +
 
 +
Если будут заполнены и товары, и услуги, то сформируются оба документа.
 +
 
 +
 
 +
В файлах настроек есть группа особых параметров, имя которых начинается на "Файл_" или "Документ_". Эти параметры автоматически записываются в выгружаемый файл как атрибуты соответствующего узла ("Файл" или "Документ").
 +
Параметры, имя которых начинается на "ТаблДок_" автоматически записываются в выгружаемый файл в строки табличной части.
 +
 
 +
Рассмотрим один блок мФайл целиком на примере накладной:
 +
<source lang="xml">
 +
<мФайл Имя="ЭДОНакл">
 +
<!--Параметры, необходимые для определения формата электронного документа. Автоматически попадают в выгружаемый файл, т.к. начинаются с "Файл_".-->
 +
<Файл_Формат>'ЭДОНакл'</Файл_Формат>
 +
<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
 +
<Файл_Имя>'DP_OTORG12_'</Файл_Имя>
 +
 
 +
<!--Параметры, определяющие откуда (из какой стороны) нужно взять реквизиты отправителя и получателя комплекта электронных документов. -->
 +
<Отправитель_Роль>'Отправитель'</Отправитель_Роль>
 +
<Получатель_Роль>'Получатель'</Получатель_Роль>
 +
 +
<!--Параметры шапки документа. Все, которые начинаются с "Документ_", автоматически попадают в выгружаемый файл.-->
 +
<Документ>Документ.РеализацияТоваровУслуг</Документ>
 +
<Документ_Название>'Накладная'</Документ_Название>
 +
<Документ_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Документ].Дата</Документ_Дата>
 +
        <Документ_Время Тип="Дата" Формат="ДФ=HH.mm.ss">[Документ].Дата</Документ_Время>
 +
<Документ_Номер>[Документ].Номер</Документ_Номер>
 +
        <Документ_Примечание>[Документ].Комментарий</Документ_Примечание>
 +
<СуммаВключаетНДС>[Документ].СуммаВключаетНДС</СуммаВключаетНДС>
 +
 
 +
<!--Параметры, определяющие ответственного сотрудника и подразделение организации. Сотрудник и подразделение будут проставлены на пакете электронных документов на online.sbis.ru-->
 +
<ОтветственныйПользователь>[Документ].Ответственный</ОтветственныйПользователь>
 +
<Ответственный>[ОтветственныйПользователь].ФизЛицо</Ответственный>
 +
<Ответственный_ФИО>[Ответственный].Наименование</Ответственный_ФИО>
 +
<Сотрудник Отбор_Физлицо="[Ответственный]">Справочник.СотрудникиОрганизаций</Сотрудник>
 +
<Подразделение>[Сотрудник].ТекущееПодразделениеОрганизации</Подразделение>
 +
<Подразделение_Название>[Подразделение].Наименование</Подразделение_Название>
 +
 
 +
<!--Параметры, определяющие реквизиты документа-основания. В данном случае договора.
 +
Если договор с такими реквизитами заведен на online.sbis.ru, то при отправке накладной она будет связана с указанным договором.
 +
Можно указывать несколько связанных документов, например, договор и заказ - для этого добавляются еще узлы "мДокументОснование")-->
 +
<мДокументОснование Имя="Договор">
 +
<ДокументОснование>[Документ].ДоговорКонтрагента</ДокументОснование>
 +
<ДокументОснование_Тип>'ДоговорИсх'</ДокументОснование_Тип>
 +
<ДокументОснование_Номер>[ДокументОснование].Номер</ДокументОснование_Номер>
 +
<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[ДокументОснование].Дата</ДокументОснование_Дата>
 +
</мДокументОснование>
 +
 
 +
<!--Блоки "мСторона" содержат реквизиты участников сделки: ИНН, КПП и другие коды, контактную информацию, банковские реквизиты.-->
 +
<мСторона Имя="Отправитель">
 +
<Сторона>[Документ].Организация</Сторона>
 +
<!--Параметр "Роль" определяет название узла в выгружаемом файле, в который попадут данные об участнике.
 +
В одной из мСторон должна быть роль, соответствующая значению параметра "Отправитель_Роль" и в одной - соответствующая значению параметра "Получатель_Роль",
 +
чтобы было понятно, кто является отправителем, а кто получаетел документа на online.sbis.ru-->
 +
<Роль>'Отправитель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
 +
<Код_ОКОПФ>[Сторона].КодОКОПФ</Код_ОКОПФ>
 +
<Код_ОКФС>[Сторона].КодОКФС</Код_ОКФС>
 +
<Код_ОКВЭД>[Сторона].КодОКВЭД</Код_ОКВЭД>
 +
<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
 +
<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
<АдресЮЛ Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
 +
<АдресФЛ Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресФизЛица" Отбор_Объект="[Сторона].ИндивидуальныйПредприниматель" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресФЛ>
 +
<Сторона_Адрес Кэш="Организация">{сбисПолучитьАдрес()}</Сторона_Адрес>
 +
<Телефон Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон Кэш="Организация">[Телефон].Представление</Контакт_Телефон>
 +
<Факс Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ФаксОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон">РегистрыСведений.КонтактнаяИнформация</Факс>
 +
<Контакт_Факс Кэш="Организация">[Факс].Представление</Контакт_Факс>
 +
<ЭлПочта Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].EmailОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
 +
<Контакт_EMAIL Кэш="Организация">[ЭлПочта].Представление</Контакт_EMAIL>
 +
<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
 +
<Банк>[БанкСчет].Банк</Банк>
 +
<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
 +
<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
 +
<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
 +
<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
 +
</мСторона>
 +
<мСторона Имя="Получатель">
 +
<Сторона>[Документ].Контрагент</Сторона>
 +
<Роль>'Получатель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
 +
<Код_ОКОПФ>''</Код_ОКОПФ>
 +
<Код_ОКДП>''</Код_ОКДП>
 +
<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<АдресЮЛ Кэш="Получатель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
 +
<Сторона_Адрес Кэш="Получатель">{сбисПолучитьАдрес()}</Сторона_Адрес>
 +
<Телефон Кэш="Получатель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон Кэш="Получатель">[Телефон].Представление</Контакт_Телефон>
 +
<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
 +
<Банк>[БанкСчет].Банк</Банк>
 +
<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
 +
<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
 +
<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
 +
<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
 +
</мСторона>
 +
<мСторона Имя="Грузоотправитель">
 +
        <Сторона>[Документ].Грузоотправитель</Сторона>
 +
<Роль>'Грузоотправитель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
 +
<Код_ОКОПФ>''</Код_ОКОПФ>
 +
<Код_ОКДП>''</Код_ОКДП>
 +
<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<АдресЮЛ Кэш="Грузоотправитель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
 +
<Сторона_Адрес Кэш="Грузоотправитель">{сбисПолучитьАдрес()}</Сторона_Адрес>
 +
<Телефон Кэш="Грузоотправитель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон Кэш="Грузоотправитель">[Телефон].Представление</Контакт_Телефон>
 +
<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
 +
<Банк>[БанкСчет].Банк</Банк>
 +
<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
 +
<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
 +
<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
 +
<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
 +
</мСторона>
 +
<мСторона Имя="Грузополучатель">
 +
<Сторона>[Документ].Грузополучатель</Сторона>
 +
<Роль>'Грузополучатель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
 +
<Код_ОКОПФ>''</Код_ОКОПФ>
 +
<Код_ОКДП>''</Код_ОКДП>
 +
<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<АдресЮЛ Кэш="Грузополучатель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
 +
<Сторона_Адрес Кэш="Грузополучатель">{сбисПолучитьАдрес()}</Сторона_Адрес>
 +
<Телефон Кэш="Грузополучатель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон Кэш="Грузополучатель">[Телефон].Представление</Контакт_Телефон>
 +
<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
 +
<Банк>[БанкСчет].Банк</Банк>
 +
<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
 +
<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
 +
<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
 +
<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
 +
</мСторона>
 +
 
 +
<!--Реквизиты документа основания, которые будут записаны в файл-->
 +
<мОснование Имя="Договор">
 +
<Основание>[Документ].ДоговорКонтрагента</Основание>
 +
<Основание_Название>[Основание].Наименование</Основание_Название>
 +
<Основание_Номер>[Основание].Номер</Основание_Номер>
 +
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Основание].Дата</Основание_Дата>
 +
</мОснование>
 +
 
 +
<!--Реквизиты табличной части документа. Параметры, которые начинаются с "ТаблДок_", автоматически попадают в выгружаемый файл.-->
 +
<мТаблДок Имя="Товары">
 +
<ТаблДок Тип="ТабличнаяЧасть">[Документ].Товары</ТаблДок>
 +
<Номенклатура>[ТаблДок].Номенклатура</Номенклатура>
 +
<ЕдИзм>[Номенклатура].БазоваяЕдиницаИзмерения</ЕдИзм>
 +
<ТаблДок_Название>[Номенклатура].НаименованиеПолное</ТаблДок_Название>
 +
<ТаблДок_Код>[Номенклатура].Код</ТаблДок_Код>
 +
<ТаблДок_Артикул>[Номенклатура].Артикул</ТаблДок_Артикул>
 +
<Цена>[ТаблДок].Цена</Цена>
 +
<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
 +
<ТаблДок_Кол_во Формат="ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0; ЧН=0.000">[ТаблДок].Количество</ТаблДок_Кол_во>
 +
<ТаблДок_ЕдИзм>[ЕдИзм].Наименование</ТаблДок_ЕдИзм>
 +
<ТаблДок_ОКЕИ>[ЕдИзм].Код</ТаблДок_ОКЕИ>
 +
<ТаблДок_Сумма Формат="ЧЦ=17; ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00">[ТаблДок].Сумма</ТаблДок_Сумма>
 +
<НомерГТД>[ТаблДок].НомерГТД</НомерГТД>
 +
 
 +
<!--С помощью узла мПараметр можно записать в файл любую дополнительную информацию, которая не предусмотрена форматом электронного документа-->
 +
<мПараметр Имя="НомерГТД">
 +
<Параметр_Имя>'НомерГТД'</Параметр_Имя>
 +
<Параметр_Значение>[НомерГТД].Код</Параметр_Значение>
 +
</мПараметр>
 +
<СтранаПроисхождения>[ТаблДок].СтранаПроисхождения</СтранаПроисхождения>
 +
<ТаблДок_Страна>[СтранаПроисхождения].Код</ТаблДок_Страна>
 +
<СуммаНДС Формат="ЧЦ=17; ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00">[ТаблДок].СуммаНДС</СуммаНДС>
 +
<СтавкаНДС>[ТаблДок].СтавкаНДС</СтавкаНДС>
 +
<СуммаАкциз>'без акциза'</СуммаАкциз>
 +
<ЕдИзмУпаковки>[ТаблДок].ЕдиницаИзмерения</ЕдИзмУпаковки>
 +
<Упаковка_Вместимость Формат="ЧЦ=12; ЧДЦ=0; ЧРД=.; ЧГ=0;">[ТаблДок].Коэффициент</Упаковка_Вместимость>
 +
<Упаковка_Код>[ЕдИзмУпаковки].Код</Упаковка_Код>
 +
<Упаковка_КолМест Формат="ЧЦ=12; ЧДЦ=0; ЧРД=.; ЧГ=0;">[ТаблДок].КоличествоМест</Упаковка_КолМест>
 +
<Упаковка_Название>[ЕдИзмУпаковки].Наименование</Упаковка_Название>
 +
<ТаблДок_Идентификатор>{ОпределитьИдентификаторНоменклатуры()}</ТаблДок_Идентификатор>
 +
</мТаблДок>
 +
</мФайл>
 +
</source>
 +
 
 +
====Дополнительные возможности выгрузки====
 +
=====Форма формирования файла=====
 +
Во внешней обработке есть группа форм, которые используются непосредственно при формировании выгружаемого файла - это формы вида «Файл_[Формат файла]_[Версия формата файла]». Например, для формирования файла счета-фактуры используется форма "Файл_СчФктр_3_01".
 +
 
 +
Формат файла и версия формата определяется в файле настроек в параметрах "Файл_Формат" и "Файл_ВерсияФормата". Например:
 +
<source lang="xml">
 +
<Файл_Формат>'АктВР'</Файл_Формат>
 +
<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
 +
</source>
 +
 
 +
Так как большинство файлов формируются по одному и тому же алгоритму, для их формирования используется форма "Файл_Шаблон". Эта форма используется для всех файлов, для которых в обработке нет формы вида «Файл_[Формат файла]_[Версия формата файла]».
 +
 
 +
Основное отличие формирования счета-фактуры от других документов заключается в том, что в 1С в документе Счет-фактура выданный нет табличной части, содержащей номенклатуру, а есть только ссылки на документы-основания. При формировании файла счета-фактуры табличная часть заполняется из документов-оснований. Для всех остальных документов табличные части заполняются непосредственно из самого документа (из табличных частей "Товары", "Услуги" и т.п.)
 +
Но, например, для авансового счета-фактуры табличная часть должна заполняться из табличной части "Авансы" самого счета-фактуры, поэтому его формирование ничем не отличается от большинства других документов. Поэтому для его формирования необходимо использовать форму "Файл_Шаблон", а не "Файл_СчФктр_3_01". Для этого в файле настроек указан специальный параметр "ФормаФормирования":
 +
<source lang="xml">
 +
<ФормаФормирования>'Файл_Шаблон'</ФормаФормирования>
 +
</source>
 +
Встречаются конфигурации 1С, где табличные части с номенклатурой ("Товары", "Услуги") хранятся в самом счете-фактуре. Для таких конфигураций в файле настроек для выгрузки счета-фактуры так же необходимо указывать форму формирования "Файл_Шаблон".
 +
=====Проверка заполнения кодов номенклатуры контрагента=====
 +
Данный функционал необходим, если при выгрузке в документе обязательно должен быть указан код номенклатуры контрагента. Например, если покупатель договорился со своими поставщиками, что отправляет им заказы с кодами номенклатуры поставщиков. В этом случае поставщику не требуется производить сопоставление номенклатуры, и он сразу понимает, какой товар заказан.
 +
 
 +
Чтобы перед отправкой проводилась проверка, все ли коды поставщиков заполнены, необходимо в файл настроек добавить параметр "НоменклатураКодКонтрагента". В значении параметра указывается имя атрибута файла, в который записывается код номенклатуры контрагента, например, для заказа:
 +
<source lang="xml">
 +
<НоменклатураКодКонтрагента>'КодПоставщика'</НоменклатураКодКонтрагента>
 +
</source>
 +
 
 +
При наличии этого параметра, если не все коды будут заполнены, то при отправке файла выдастся ошибка. А в форме просмотра документа на вкладке сопоставления номенклатуры можно ввести недостающие коды.
 +
 
 +
=====Выгрузка одной табличной части в разные документы по условию=====
 +
 
 +
Обычно для различных видов номенклатуры в документе 1С предусмотрены различные табличные части (Товары или Услуги). Но встречаются случаи, когда в документе есть только одна табличная часть, например, Товары, при этом в нее заносятся и товары, и услуги. Для печати таких документов в 1С обычно предусмотрены несколько печатных форм, причем в печатную форму накладной попадает не вся табличная часть Товары, а только номенклатура с типом Товар, а в печатную форму акта попадает только номенклатура с типом Услуга. Соответственно и при отправке данного документа в электронном виде должно быть сформировано два файла - накладная и акт, каждый с определенным типом номенклатуры.
 +
 
 +
Рассмотрим на примере, какие настройки необходимо сделать для такой выгрузки.
 +
* В стандартном файле настроек для документа с одной табличной частью Товары предусмотрена выгрузка только товарной накладной (то есть в файле настроек присутствует один блок мФайл с именем "ЭДОНакл", например, в Управлении торговлей, 11). Поэтому в первую очередь в пользовательском файле настроек для данного типа документа 1С добавляем еще один блок мФайл для выгрузки акта (проще всего скопировать этот блок с накладной и изменить реквизиты Файл_Формат и Файл_Имя). В результате, если мы откроем на просмотр документ в разделе Продажа, то увидим, что на основании документа 1С сформировались накладная и акт, но и в обоих документах в табличные части попали и товары, и услуги. Чтобы распределить номенклатуру по документам правильно, необходимо в файл настроек добавить признак, от которого зависит принадлежность номенклатуры накладной или акту. В нашем случае добавляется реквизит:
 +
<source lang="xml">
 +
<ТипНоменклатуры>[Номенклатура].ТипНоменклатуры</ТипНоменклатуры>
 +
</source>
 +
Данный реквизит добавляется в табличную часть акта и накладной в пользовательском файле настроек.
 +
* Затем в обработке ВнешниеФункции_Клиент.epf (если такой еще нет, то создаем ее и кладем в каталог настроек обработки) создаем формы по форматам выгружаемых файлов: Файл_ЭДОНакл_3_01 и Файл_АктВР_3_01. В каждой форме пишем функцию сбисПослеФормированияСтроки, которая возвращает Истину в случае, если данная строка табличной части должна попасть в данный файл, и Ложь, если не должна. В нашем случае для накладной функция будет выглядеть следующим образом:
 +
<source lang="1C">
 +
&НаКлиенте
 +
Функция сбисПослеФормированияСтроки(НоваяСтрока, Кэш, Контекст, Стр) Экспорт
 +
Если Контекст.Свойство("СФ") Тогда
 +
Возврат Истина
 +
КонецЕсли;
 +
Если Стр.Свойство("ТипНоменклатуры") Тогда
 +
Если Строка(Стр.ТипНоменклатуры) = "Товар" Тогда
 +
Возврат Истина;
 +
Иначе
 +
Возврат Ложь;
 +
КонецЕсли;
 +
КонецЕсли;
 +
Возврат Истина;
 +
КонецФункции>
 +
</source>
 +
Для акта:
 +
<source lang="1C">
 +
&НаКлиенте
 +
Функция сбисПослеФормированияСтроки(НоваяСтрока, Кэш, Контекст, Стр) Экспорт
 +
Если Контекст.Свойство("СФ") Тогда
 +
Возврат Истина
 +
КонецЕсли;
 +
Если Стр.Свойство("ТипНоменклатуры") Тогда
 +
Если Строка(Стр.ТипНоменклатуры) = "Услуга" или Строка(Стр.ТипНоменклатуры) = "Работа" Тогда
 +
Возврат Истина;
 +
Иначе
 +
Возврат Ложь;
 +
КонецЕсли;
 +
КонецЕсли;
 +
Возврат Истина;
 +
КонецФункции
 +
</source>
 +
Первое условие (Если Контекст.Свойство("СФ")) срабатывает, когда идет выгрузка счета-фактуры, так как его табличная часть заполняется из документов оснований. В счет-фактуру должны попасть и товары, и услуги, поэтому в данном случае всегда возвращается Истина.
 +
 
 +
Далее проверяется тип номенклатуры: для накладной возвращается Истина, если это товар, а для акта, если это работа или услуга.
 +
 
 +
Аналогичным образом можно распределять строки табличной части по разным файлам и по любым другим условиям. Для этого нужно только добавить необходимые параметры в файл настроек и прописать соответствующие условия во внешних функциях.
 +
 
 +
Данный механизм можно применить и для формирования Акта приема-передачи неисключительных прав. Для этого в пользовательском файле настроек добавляется блок мФайл для выгрузки акта приема-передачи. Во внешних функциях создается форма Файл_АктПП_3_01 с функцией сбисПослеФормированияСтроки. Данная функция должна возвращать Истину только для номенклатуры, относящейся к неисключительным правам. Так как обычно такая номенклатура заведена в 1С как товар, то необходимо исключить ее из накладной, а для этого нужно прописать дополнительное условие в форме Файл_ЭДОНакл_3_01 в функции сбисПослеФормированияСтроки.
 +
 
 +
=====Прикрепление внешнего файла к пакету=====
 +
 
 +
Кроме электронных документов, сформированных на основе документов 1С, в комплект можно добавить и внешние файлы, например, договор или соглашение, сформированные в Microsoft Word, сканы приложений к документам отгрузки и вообще любой другой файл. Состав пакета документов определяется в запросе списка документов, поэтому и ссылку на внешний файл необходимо добавить в текст запроса. Например, чтобы добавить к пакету документов реализации файл, который лежит в каталоге "C:\Документы" и называется "Соглашение с [Наименование контрагента]" в запрос добавляем блок:
 +
<source lang="1csql">
 +
ОБЪЕДИНИТЬ
 +
        ВЫБРАТЬ
 +
        ВТ_Реализация.Ссылка КАК Документ,
 +
ВТ_Реализация.Проведен КАК ДокументПроведен,
 +
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
 +
        ВТ_Реализация.Дата КАК ДатаДокумента,
 +
        ВТ_Реализация.Номер КАК НомерДокумента,
 +
        ВТ_Реализация.Контрагент КАК Контрагент,
 +
        ВТ_Реализация.Организация КАК Организация,
 +
        ВТ_Реализация.Комментарий КАК Комментарий,
 +
        ВТ_Реализация.Склад КАК Склад,
 +
        ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
 +
        "C:\Документы\Соглашение с "+ВТ_Реализация.Контрагент+".doc" КАК Приложение,
 +
        0 КАК СуммаПриложения,
 +
NULL КАК ДатаПриложения,
 +
NULL КАК НомерПриложения,
 +
        ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
 +
        ИЗ
 +
        ВТ_Реализация
 +
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
 +
        ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
 +
</source>
 +
Данный текст добавляется в конце запроса перед блоком "УПОРЯДОЧИТЬ ПО".
 +
 
 +
Как видно из примера, полный путь к файлу кладется в поле Приложение, при этом поля СуммаПриложения, ДатаПриложения и НомерПриложения заполняются нулевыми значениями.
 +
 
 +
Если необходимо добавить несколько файлов, то добавляется несколько аналогичных блоков. Все изменения делаются в пользовательском файле настроек, куда выносится параметр "ЗапросСпискаДокументов".
 +
 
 +
На момент отправки внешние файлы должны лежать по указанному пути, иначе комплект документов полностью не будет сформирован.
 +
 
 +
 
 +
=====Формирование пакета электронных документов=====
 +
 
 +
В большинстве случаев отправитель и получатель электронных документов совпадают с поставщиком и покупателем (грузоотправителем/грузополучателем), указанными в самом документе. Поэтому в стандартной настройке данные для формирования пакета электронных документов берутся с первого вложения пакета (с накладной, акта или другого документа).
 +
 
 +
Встречаются ситуации, когда документ нужно отправить за другую организацию, например, когда продажа осуществляется через агента. Для случаев, когда отправитель или получатель электронных документов не совпадает со сторонами, указанными в самом документе, предусмотрена следующая настройка.
 +
 
 +
В файл настроек выгрузки (как всегда в пользовательский) добавляется новый блок мФайл с именем "Конверт":
 +
<source lang="xml">
 +
<мФайл Имя="Конверт">
 +
<!--Параметры, необходимые для определения формата электронного документа. Используются для определения формы формирования конверта.-->
 +
<Файл_Формат>'Конверт'</Файл_Формат>
 +
<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
 +
<!--Параметры для формирования данных конверта. Здесь необходимо указывать ВСЕ данные, необходимые для формирования конверта: тип, регламент, ответственный, подразделение,
 +
связанные документы, стороны - так как в случае наличия мФайла "Конверт" данные берутся полностью из него (с первого вложения ничего не берется) -->
 +
<Тип>'ДокОтгрИсх'</Тип>
 +
<Документ>Документ.РеализацияТоваровУслуг</Документ>
 +
<ОтветственныйПользователь>[Документ].Ответственный</ОтветственныйПользователь>
 +
<Ответственный>[ОтветственныйПользователь].ФизЛицо</Ответственный>
 +
<Ответственный_ФИО>[Ответственный].Наименование</Ответственный_ФИО>
 +
<Подразделение>[Документ].Подразделение</Подразделение>
 +
<Подразделение_Название>[Подразделение].Наименование</Подразделение_Название>
 +
<Регламент_Название>'Реализация'</Регламент_Название>
 +
<Сделка>[Документ].Сделка</Сделка>
 +
<Договор>[Документ].ДоговорКонтрагента</Договор>
 +
<мДокументОснование Имя="Договор">
 +
<ДокументОснование_Тип>'ДоговорИсх'</ДокументОснование_Тип>
 +
<ДокументОснование_Номер>[Договор].Номер</ДокументОснование_Номер>
 +
<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Договор].Дата</ДокументОснование_Дата>
 +
</мДокументОснование>
 +
<мДокументОснование Имя="Заказ">
 +
<ДокументОснование_Тип>'ЗаказВх'</ДокументОснование_Тип>
 +
<ДокументОснование_Номер>[Сделка].НомерПоДаннымПокупателя</ДокументОснование_Номер>
 +
<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Сделка].ДатаПоДаннымПокупателя</ДокументОснование_Дата>
 +
</мДокументОснование>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
        <ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<НазначенияСвойствКатегорийОбъектов>ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов</НазначенияСвойствКатегорийОбъектов>
 +
<ПланВидовХарактеристикКодФилиалаОрг Отбор_Наименование="'КодФилиала'" Отбор_НазначениеСвойства="[НазначенияСвойствКатегорийОбъектов].Справочник_Организации">ПланыВидовХарактеристик.СвойстваОбъектов</ПланВидовХарактеристикКодФилиалаОрг>
 +
<ПланВидовХарактеристикКодФилиалаКонтр Отбор_Наименование="'КодФилиала'" Отбор_НазначениеСвойства="[НазначенияСвойствКатегорийОбъектов].Справочник_Контрагенты">ПланыВидовХарактеристик.СвойстваОбъектов</ПланВидовХарактеристикКодФилиалаКонтр>
 +
<!--Параметры для формирования сторон. В общем случае отправителем и получателем пакета будут стороны с соответствующими ролями "Отправитель" и "Получатель".
 +
Если Грузополучатель является филиалом Получателя (заведен в личном кабинете как филиал и опубликован), то получателем пакета будет сторона с ролью "Грузополучатель".
 +
Аналогично для Грузоотправителя, если он является филиалом Отправителя.
 +
Если в Грузоотправителе и Грузополучателе нет необходимости, то просто не создаем эти блоки.-->
 +
<мСторона Имя="Грузоотправитель">
 +
<Сторона>[Документ].Грузоотправитель</Сторона>
 +
<Роль>'Грузоотправитель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
 +
<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
 +
</мСторона>
 +
<мСторона Имя="Грузополучатель">
 +
<Сторона>[Документ].Грузополучатель</Сторона>
 +
<Роль>'Грузополучатель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Телефон Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон>[Телефон].Представление</Контакт_Телефон>
 +
<ЭлПочта Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
 +
<Контакт_EMAIL>[ЭлПочта].Представление</Контакт_EMAIL>
 +
<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
 +
<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
 +
</мСторона>
 +
<мСторона Имя="Отправитель">
 +
<Сторона>[Документ].Организация</Сторона>
 +
<Роль>'Отправитель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаОрг]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
 +
<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
 +
</мСторона>
 +
<мСторона Имя="Получатель">
 +
<Сторона>[Документ].Контрагент</Сторона>
 +
<Роль>'Получатель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Телефон Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Контакт_Телефон>[Телефон].Представление</Контакт_Телефон>
 +
<ЭлПочта Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
 +
<Контакт_EMAIL>[ЭлПочта].Представление</Контакт_EMAIL>
 +
<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
 +
<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
 +
</мСторона>
 +
</мФайл>
 +
</source>
 +
В данном примере показана возможность указания кодов филиалов для участников документооборота. При необходимости коды филиалов можно завести в регистре сведений ЗначенияСвойствОбъектов/ДополнительныеСведения с названием "КодФилиала" аналогично [[Добавление GLN и GTIN в документы выгружаемые из 1С при помощи внешней обработки СБИС#Заполнение GLN в 1С|заведению GLN]].
 +
Если коды филиалов не требуются, просто не создаем эти параметры в файле настроек.
 +
 
 +
===Файлы настроек загрузки===
 +
 
 +
В разделе внешней обработки Полученные отображаются электронные документы, полученные от контрагентов. Какие из этих документов можно загрузить в 1С, определяется файлами настроек для загрузки.
 +
 
 
====Имя файла====
 
====Имя файла====
Название файла формируется по шаблону «ВО82_[Код конфигурации]_[КодФормата]_[ВерсияФормата].sbis3.xml». Например для счет-фактуры загружаемой в Бухгалтерию 2.0 это будет ВО82_БУХ2_СчФктр_3_01.sbis3.xml
+
Название файла формируется по шаблону «ВО82[Код конфигурации]_[КодФормата]_[ВерсияФормата].sbis3.xml». Например, для счет-фактуры загружаемой в Бухгалтерию 2.0 это будет ВО82БУХ2_СчФктр_3_01.sbis3.xml
 +
 
 
====Структура файла====
 
====Структура файла====
 
*Общие параметры для файлов этого типа
 
*Общие параметры для файлов этого типа
*Массив документов 1С, которые возможно создать при загрузке файла этого типа
+
*Массив документов 1С, которые возможно создать при загрузке файла этого типа (мДокумент)
 
**Параметры шапки создаваемого документа
 
**Параметры шапки создаваемого документа
 
**Параметры табличной части документа
 
**Параметры табличной части документа
 +
 +
В файле настроек может присутствовать один или несколько узлов "мДокумент" - это означает, что полученный электронный документ может быть загружен в 1С как один из перечисленных типов документов 1С. Например, для электронной накладной в файле настроек обычно присутствует два узла "мДокумент" - для формирования поступления товаров и услуг или возврата товаров поставщику.
 +
<source lang="xml">
 +
<мДокумент Имя="ПоступлениеТоваровУслуг">
 +
...
 +
</мДокумент>
 +
<мДокумент Имя="ВозвратТоваровОтПокупателя">
 +
...
 +
</мДокумент>
 +
</source>
 +
 +
При загрузке документов из реестра (не открывая карточку документа) всегда будет создаваться документ, указанный первым в файле настроек. При открытии карточки просмотра можно выбрать, какой документ 1С будет создан при загрузке.
 +
 +
Есть исключение, когда на основании одного электронного документа могут быть созданы сразу два документа 1С - это электронный счет-фактура. Если счет-фактура приходит в комплекте с актом или накладной, то на основании каждого электронного документа создается один документ 1С и эти документы связываются между собой (в основание счета-фактуры ставится основание - поступление товаров и услуг). Если счет-фактура приходит один, то при его загрузке сначала ищется подходящий документ-основание и если он не найден, то на основании электронного счета-фактуры могут быть созданы сразу два документа 1С - счет-фактура и его основание - поступление товаров и услуг.
 +
 +
Рассмотрим назначение блоков файла настроек на примере накладной:
 +
<source lang="xml">
 +
<мДокумент Имя="ПоступлениеТоваровУслуг">
 +
<!--Параметры шапки документа -->
 +
<Документ>Документ.ПоступлениеТоваровУслуг</Документ>
 +
<Контрагент_Роль>'Отправитель'</Контрагент_Роль>
 +
<Организация_Роль>'Получатель'</Организация_Роль>
 +
<Название>'Поступление товаров и услуг'</Название>
 +
<Документ_Дата Тип="Дата" Данные="Файл.Документ.Дата">[Документ].Дата</Документ_Дата>
 +
        <Документ_ДатаВх Тип="Дата" Данные="Файл.Документ.Дата">[Документ].ДатаВходящегоДокумента</Документ_ДатаВх>
 +
        <Документ_НомерВх Данные="Файл.Документ.Номер">[Документ].НомерВходящегоДокумента</Документ_НомерВх>
 +
<Документ_Комментарий Данные="Файл.Документ.Параметр.ИдВизуализации">[Документ].Комментарий</Документ_Комментарий>
 +
        <СправочникЕдиницИзмерения>Справочник.КлассификаторЕдиницИзмерения</СправочникЕдиницИзмерения>
 +
        <ВидыОпераций>Перечисление.ВидыОперацийПоступлениеТоваровУслуг</ВидыОпераций>
 +
<ВидОперации Вычислить="[ВидыОпераций].ПокупкаКомиссия">[Документ].ВидОперации</ВидОперации>
 +
        <СпособыЗачетаАвансов>Перечисление.СпособыЗачетаАвансов</СпособыЗачетаАвансов>
 +
        <СпособЗачетаАвансов Вычислить="[СпособыЗачетаАвансов].Автоматически">[Документ].СпособЗачетаАвансов</СпособЗачетаАвансов>
 +
        <Склад Вычислить='{УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойСклад")}'>[Документ].Склад</Склад>
 +
 +
<!--Блоки "мСторона" содержат реквизиты участников сделки.
 +
Для контрагента описаны ИНН, КПП, контактная информация, банковские реквизиты, т.к. в обработке есть возможность создать карточку контрагента по данным из файла.
 +
Для организации описаны только реквизиты, позволяющие найти ее в справочнике.-->
 +
<мСторона Имя='Отправитель'>
 +
<Сторона Данные="Файл.Документ.Отправитель" Тип="Справочник.Контрагенты">[Документ].Контрагент</Сторона>
 +
<Роль>'Отправитель'</Роль>
 +
<Сторона_ИНН Данные="ИНН">[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП Данные="КПП">[Сторона].КПП</Сторона_КПП>
 +
<Сторона_ОКПО>[Сторона].КодПоОКПО</Сторона_ОКПО>
 +
<Сторона_ОКОПФ>''</Сторона_ОКОПФ>
 +
<Сторона_ОКДП>''</Сторона_ОКДП>
 +
<Сторона_ЮрФизЛицо Вычислить="{ЗаполнитьЮрФизЛицо()}">[Сторона].ЮрФизЛицо</Сторона_ЮрФизЛицо>
 +
<Сторона_НаименованиеПолное Данные="Наименование">[Сторона].НаименованиеПолное</Сторона_НаименованиеПолное>
 +
<Сторона_Наименование Данные="Наименование">[Сторона].Наименование</Сторона_Наименование>
 +
<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
 +
<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
 +
<Адрес Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес"  Отбор_Объект="[Сторона]">РегистрыСведений.КонтактнаяИнформация</Адрес>
 +
<Адрес_Поле1 Данные="Индекс">[Адрес].Поле1</Адрес_Поле1>
 +
<Адрес_Поле2 Вычислить="{ЗаполнитьРегионПоКоду()}">[Адрес].Поле2</Адрес_Поле2>
 +
<Адрес_Поле3 Данные="Район">[Адрес].Поле3</Адрес_Поле3>
 +
<Адрес_Поле4 Данные="Город">[Адрес].Поле4</Адрес_Поле4>
 +
<Адрес_Поле5 Данные="НаселПункт">[Адрес].Поле5</Адрес_Поле5>
 +
<Адрес_Поле6 Данные="Улица">[Адрес].Поле6</Адрес_Поле6>
 +
<Адрес_Поле7 Данные="Дом">[Адрес].Поле7</Адрес_Поле7>
 +
<Адрес_Поле8 Данные="Корпус">[Адрес].Поле8</Адрес_Поле8>
 +
<Адрес_Поле9 Данные="Кварт">[Адрес].Поле9</Адрес_Поле9>
 +
<Адрес_Представление Данные="АдресПредставление">[Адрес].Представление</Адрес_Представление>
 +
<Телефон Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="[Сторона]">РегистрыСведений.КонтактнаяИнформация</Телефон>
 +
<Телефон_Представление Данные="Телефон">[Телефон].Представление</Телефон_Представление>
 +
<Сторона_Факс>''</Сторона_Факс>
 +
<Сторона_ЭлПочта>''</Сторона_ЭлПочта>
 +
<Сторона_Интернет>''</Сторона_Интернет>
 +
<Сторона_ОсновнойБанковскийСчет Вычислить="{ЗаполнитьБанковскийСчет()}">[Сторона].ОсновнойБанковскийСчет</Сторона_ОсновнойБанковскийСчет>
 +
</мСторона>
 +
<мСторона Имя='Получатель'>
 +
<Сторона Данные="Файл.Документ.Получатель" Тип="Справочник.Организации">[Документ].Организация</Сторона>
 +
<Роль>'Получатель'</Роль>
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
 +
<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
 +
</мСторона>
 +
<Договор Вычислить="{ЗаполнитьДоговор()}">[Документ].ДоговорКонтрагента</Договор>
 +
        <Валюта Вычислить="[Договор].ВалютаВзаиморасчетов">[Документ].ВалютаДокумента</Валюта>
 +
        <КурсВалюты Вычислить="{МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>
 +
        <КурсВзаиморасчетов Вычислить="[КурсВалюты].Курс">[Документ].КурсВзаиморасчетов</КурсВзаиморасчетов>
 +
        <КратностьВзаиморасчетов Вычислить="[КурсВалюты].Кратность">[Документ].КратностьВзаиморасчетов</КратностьВзаиморасчетов>
 +
        <СчетаУчетаРасчетов Вычислить="{БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(Документ.Организация, Документ.Контрагент, Документ.ДоговорКонтрагента)}">СчетаУчетаРасчетов</СчетаУчетаРасчетов>
 +
        <СчетУчетаРасчетовСКонтрагентом Вычислить="[СчетаУчетаРасчетов].СчетРасчетов">[Документ].СчетУчетаРасчетовСКонтрагентом</СчетУчетаРасчетовСКонтрагентом>
 +
        <СчетУчетаРасчетовПоАвансам Вычислить="[СчетаУчетаРасчетов].СчетАвансов">[Документ].СчетУчетаРасчетовПоАвансам</СчетУчетаРасчетовПоАвансам>
 +
        <!--Параметр "ИмяТЧ" определяет, в какую табличную часть документа 1С должна попасть та или иная строка электронного документа.
 +
        В данном случае все строки попадают в табличную часть "Товары", т.к. файл настроек предназначен для загрузки накладной.-->
 +
        <ИмяТЧ Вычислить="'Товары'">''</ИмяТЧ>
 +
<!--Параметры табличной части документа -->
 +
<мТаблДок Имя='Товары'>
 +
<ТаблДок>[Документ].Товары</ТаблДок>
 +
<Номенклатура Данные="Номенклатура">[ТаблДок].Номенклатура</Номенклатура>
 +
<ТаблДок_Кол_во Данные="Кол_во">[ТаблДок].Количество</ТаблДок_Кол_во>
 +
<ТаблДок_КолМест Данные="Кол_во">[ТаблДок].КоличествоМест</ТаблДок_КолМест>
 +
<ТаблДок_Сумма Данные="Сумма">[ТаблДок].Сумма</ТаблДок_Сумма>
 +
      <ТаблДок_Цена Вычислить="{сбисРассчитатьЦену()}">[ТаблДок].Цена</ТаблДок_Цена>
 +
<СуммаНДС Данные="НДС.Сумма">[ТаблДок].СуммаНДС</СуммаНДС>
 +
<СтавкаНДС Данные="НДС.Ставка" Вычислить="{ЗаполнитьСтавкуНДС()}">[ТаблДок].СтавкаНДС</СтавкаНДС>
 +
<ЕдиницыИзмерения Данные="ОКЕИ" Вычислить ="{ЗаполнитьЕдиницуИзмерения()}">[ТаблДок].ЕдиницаИзмерения</ЕдиницыИзмерения>
 +
<СчетаУчета Вычислить="{БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Документ.Организация, СтрТабл.Номенклатура)}">СчетаУчета</СчетаУчета>
 +
<СчетУчета Вычислить="[СчетаУчета].СчетУчета">[ТаблДок].СчетУчета</СчетУчета>
 +
<СчетУчетаНДС Вычислить="[СчетаУчета].СчетУчетаНДС">[ТаблДок].СчетУчетаНДС</СчетУчетаНДС>
 +
<Коэффициент  Вычислить="'1'">[ТаблДок].Коэффициент</Коэффициент>
 +
</мТаблДок>
 +
<УчитыватьНДС Вычислить="{УчитыватьНДС()}">[Документ].УчитыватьНДС</УчитыватьНДС>
 +
        <СуммаВключаетНДС Вычислить="[Документ].УчитыватьНДС">[Документ].СуммаВключаетНДС</СуммаВключаетНДС>
 +
</мДокумент>
 +
</source>
 +
 +
==Описание параметров в файлах настроек==
  
 
===Прямое обращение к данным из базы===
 
===Прямое обращение к данным из базы===
 +
Есть два ключевых слова, которые означают, что в данный параметр файла настроек нужно поместить ссылку на текущий выгружаемый объект 1С (документ или элемент справочника):
 +
* Документ
 +
* ЗаписьСправочника
 +
 +
Например, следующая запись означает, что при выгрузке определенного документа 1С в параметре "Документ" будет ссылка на этот документ.
 +
<source lang="xml">
 +
<Документ>Документ.РеализацияТоваровУслуг</Документ>
 +
</source>
 +
 +
В стандартных файлах настроек не используется выгрузка элементов справочника, но в пользовательском файле это вполне можно настроить. Например, если мы хотим отправлять в электронном виде договоры контрагентов (хранящиеся в справочнике "Договоры контрагентов"), то запись в файле настроек будет выглядеть так:
 +
<source lang="xml">
 +
<Документ>ЗаписьСправочника.ДоговорыКонтрагентов</Документ>
 +
</source>
 +
В этом случае в параметре "Документ" будет ссылка на выгружаемый договор.
 +
 +
===Обращение к данным через ранее определенный параметр===
 +
Ранее определенный параметр пишется в квадратных скобках. После скобки ставится точка и далее название реквизита (табличной части, значение перечисления). Например:
 +
<source lang="xml">
 +
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
 +
</source>
 +
Чтобы понять, какое значение попадет в данный параметр, нужно проследить всю цепочку параметров. Смотрим определение параметра "Сторона":
 +
<source lang="xml">
 +
<Сторона>[Документ].Организация</Сторона>
 +
</source>
 +
Далее смотрим определение параметра "Документ":
 +
<source lang="xml">
 
<Документ>Документ.РеализацияТоваровУслуг</Документ>
 
<Документ>Документ.РеализацияТоваровУслуг</Документ>
 +
</source>
 +
Про параметр "Документ" мы уже знаем, что это прямое обращение к выгружаемому документу. Таким образом, мы понимаем, что в параметре "Сторона_ИНН" будет ИНН организации из выгружаемого документа.
  
Документ.РеализацияТоваровУслуг – обращение к данным из базы
+
===Присвоение параметру строкового значения===
 +
В ряде случаев не требуется брать значение из 1С, т. оно заранее известно - например тип документа является константой, в этих случаях это значение можно явно присвоить параметру.
 +
<source lang="xml">
 +
<Файл_Формат>'ЭДОНакл'</Файл_Формат>
 +
</source>
 +
Строковая константа заключается в одинарные кавычки
  
===Обращение к данным через ранее определенную переменную===
 
РеализацияКомментарий = [Реализация].Комментарий
 
[Реализация] – использование ранее предопределенной переменной
 
  
 
===Выбор документов (запрос к базе)===
 
===Выбор документов (запрос к базе)===
Выбор документов из базы выполняется с помощью запроса. Текст запроса прописывается в переменную «ТекстЗапроса», например:
+
 
ТекстЗапроса = "
+
С помощью запроса выбираются документы из базы 1С. Выбранные документы отображаются в определенном подразделе разделов Продажа или Покупка. Запросом определяется состав документов, отправляемых контрагенту одним комплектом.
ВЫБРАТЬ
+
 
Документ.РеализацияТоваровУслуг.Ссылка КАК Реализация,
+
Результатом выполнения запроса является таблица, с определенным набором полей:
Документ.РеализацияТоваровУслуг.Дата,
+
*Документ - основной документ комплекта
Документ.РеализацияТоваровУслуг.Номер,
+
*ДокументПроведен - признак проведения документа, используется при отображении пиктограммы документа в реестре
Документ.РеализацияТоваровУслуг.Контрагент КАК Контрагент,
+
*ДокументПометкаУдаления - признак удаления документа, используется при отображении пиктограммы документа в реестре
Документ.РеализацияТоваровУслуг.СуммаДокумента КАК Сумма,
+
*ДатаДокумента - дата документа, отображается в реестре документов
СвязьДокументов.Ссылка КАК СчетФактура
+
*НомерДокумента - номер документа, отображается в реестре документов
ИЗ
+
*Контрагент - название контрагента, отображается в реестре документов
Документ.РеализацияТоваровУслуг
+
*Организация - название организации, отображается в реестре документов
ЛЕВОЕ СОЕДИНЕНИЕ (
+
*Комментарий - комментарий документа, отображается в реестре документов
ВЫБРАТЬ
+
*Склад - склад документа, отображается в реестре документов
Документ.СчетФактураВыданный.ДокументыОснования.Ссылка,
+
*СуммаДокумента - сумма документа, отображается в реестре документов
Документ.СчетФактураВыданный.ДокументыОснования.ДокументОснование
+
*Приложение - документ, связанный с основным документом комплекта
ИЗ
+
*СуммаПриложения - сумма связанного документа
Документ.СчетФактураВыданный.ДокументыОснования
+
*ДатаПриложения - дата связанного документа
ГДЕ
+
*НомерПриложения - номер связанного документа
Документ.СчетФактураВыданный.ДокументыОснования.Ссылка.Проведен = ИСТИНА)
+
*СтатусЭД - статус электронного документа (заполнен, если документ уже отправлен в электронном виде), отображается пиктограммой в реестре документов
КАК СвязьДокументов
+
 
ПО Документ.РеализацияТоваровУслуг.Ссылка = СвязьДокументов.ДокументОснование
+
Дополнительно могут быть заполнены поля:
ГДЕ
+
*ФайлНастроекДокумента - название файла настроек, который будет использован при выгрузке основного документа комплекта (без префиксов и расширения, например, "СчетФактураНаАванс")
(Документ.РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон)
+
*ФайлНастроекПриложения - название файла настроек, который будет использован при выгрузке  документа-приложения (без префиксов и расширения)
И (Документ.РеализацияТоваровУслуг.Проведен = ИСТИНА)
+
 
И ( (Документ.РеализацияТоваровУслуг.Контрагент = &Контрагент)
+
При обработке результата запроса записи группируются по основному документу, таким образом мы получаем запись с одним основным документом и несколькими приложениями - все это при отправке контрагенту попадет в один комплект документов. Наглядно это можно увидеть, открыв карточку документа из реестров в разделах Продажа или Покупка.
ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено))
+
 
УПОРЯДОЧИТЬ ПО
+
Запрос содержит стандартный набор параметров:
СчетФактура,
+
*ДатНач - начальная дата, с которой запрашиваются документы
Документ.РеализацияТоваровУслуг.Дата" // Текст запроса для реализации
+
*ДатКон - конечная дата, по которую запрашиваются документы
 +
*Контрагент - контрагент, по которому отбираются документы
 +
*ЗначениеКонтрагентЗаполнено - признак заполненности фильтра по контрагенту
 +
*ТекущаяОрганизация - организация, по которой отбираются документы
 +
*ЗначениеТекущаяОрганизацияЗаполнено - признак заполненности фильтра по организации
 +
*ТекущийДокумент - определенный документ (заполняется при использовании внешней обработки, как внешней печатной формы определенного документа)
 +
*ЗначениеТекущийДокументЗаполнено - признак заполненности параметра ТекущийДокумент
 +
 
 +
Значения параметров берутся из фильтра, установленного в интерфейсе обработки.
 +
 
 +
Могут быть установлены дополнительные параметры при использовании пользовательских фильтров (см. '''раздел про пользовательские фильтры''')
 +
 
 +
Текст запроса прописывается в параметр <ЗапросСпискаДокументов>, например:
 +
<source lang="1csql">
 +
ВЫБРАТЬ РАЗРЕШЕННЫЕ
 +
РеализацияТоваровУслуг.Ссылка,  
 +
РеализацияТоваровУслуг.Проведен,
 +
РеализацияТоваровУслуг.ПометкаУдаления,
 +
РеализацияТоваровУслуг.Дата,  
 +
РеализацияТоваровУслуг.Номер,  
 +
РеализацияТоваровУслуг.Контрагент.Наименование КАК Контрагент,  
 +
РеализацияТоваровУслуг.Организация.Наименование КАК Организация,
 +
ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1000)) КАК Комментарий,
 +
РеализацияТоваровУслуг.Склад.Наименование КАК Склад,
 +
РеализацияТоваровУслуг.СуммаДокумента,  
 +
РеализацияТоваровУслуг.СчетНаОплатуПокупателю КАК Приложение,
 +
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаПриложения,
 +
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Дата КАК ДатаПриложения,
 +
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Номер КАК НомерПриложения
 +
ПОМЕСТИТЬ ВТ_Реализация
 +
ИЗ
 +
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
 +
ГДЕ  
 +
((РеализацияТоваровУслуг.Дата МЕЖДУ &amp;ДатаНач И &amp;ДатаКон) ИЛИ (НЕ &amp;ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата &gt; &amp;ДатаНач))  
 +
И ((РеализацияТоваровУслуг.Контрагент = &amp;Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&amp;Контрагент)) ИЛИ (НЕ &amp;ЗначениеКонтрагентЗаполнено))
 +
И ((РеализацияТоваровУслуг.Организация = &amp;ТекущаяОрганизация) ИЛИ (НЕ &amp;ЗначениеТекущаяОрганизацияЗаполнено))
 +
И ((РеализацияТоваровУслуг.Ссылка = &amp;ТекущийДокумент) ИЛИ (НЕ &amp;ЗначениеТекущийДокументЗаполнено))
 +
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
 +
ВЫБРАТЬ
 +
ВТ_Реализация.Ссылка КАК Документ,
 +
ВТ_Реализация.Проведен КАК ДокументПроведен,
 +
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
 +
ВТ_Реализация.Дата КАК ДатаДокумента,
 +
ВТ_Реализация.Номер КАК НомерДокумента,
 +
ВТ_Реализация.Контрагент КАК Контрагент,
 +
ВТ_Реализация.Организация КАК Организация,
 +
ВТ_Реализация.Комментарий КАК Комментарий,
 +
ВТ_Реализация.Склад КАК Склад,
 +
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
 +
ВТ_Реализация.Приложение КАК Приложение,
 +
ВТ_Реализация.СуммаПриложения КАК СуммаПриложения,
 +
ВТ_Реализация.ДатаПриложения КАК ДатаПриложения,
 +
ВТ_Реализация.НомерПриложения КАК НомерПриложения,
 +
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
 +
ИЗ
 +
ВТ_Реализация
 +
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
 +
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
 +
ГДЕ
 +
НЕ ВТ_Реализация.Приложение =  ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка)
 +
ОБЪЕДИНИТЬ
 +
ВЫБРАТЬ
 +
ВТ_Реализация.Ссылка КАК Документ,
 +
ВТ_Реализация.Проведен КАК ДокументПроведен,
 +
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
 +
ВТ_Реализация.Дата КАК ДатаДокумента,
 +
ВТ_Реализация.Номер КАК НомерДокумента,
 +
ВТ_Реализация.Контрагент КАК Контрагент,
 +
ВТ_Реализация.Организация КАК Организация,
 +
ВТ_Реализация.Комментарий КАК Комментарий,
 +
ВТ_Реализация.Склад КАК Склад,
 +
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
 +
СвязьДокументов.Ссылка КАК Приложение,
 +
СвязьДокументов.Ссылка.СуммаДокумента КАК СуммаПриложения,
 +
СвязьДокументов.Ссылка.Дата КАК ДатаПриложения,  
 +
СвязьДокументов.Ссылка.Номер КАК НомерПриложения,
 +
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
 +
ИЗ
 +
ВТ_Реализация
 +
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СвязьДокументов
 +
ПО ВТ_Реализация.Ссылка = СвязьДокументов.ДокументОснование
 +
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
 +
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"  
 +
УПОРЯДОЧИТЬ ПО
 +
ДатаДокумента, НомерДокумента
 +
</source>
 
Текст запроса формируется по правилам 1С.
 
Текст запроса формируется по правилам 1С.
 
Назначения блоков:
 
Назначения блоков:
«ИЗ» - таблица, из которой выбираются данные
+
* «ИЗ» - таблица, из которой выбираются данные
«ВЫБРАТЬ» - выбираемые поля
+
* «ВЫБРАТЬ» - выбираемые поля
«ГДЕ» - условие выбора
+
* «ГДЕ» - условие выбора
«КАК» - присвоение логического имени для более простой адресации
+
* «КАК» - присвоение логического имени для более простой адресации
«УПОРЯДОЧИТЬ ПО» - правила сортировки
+
* «УПОРЯДОЧИТЬ ПО» - правила сортировки
Результатом запроса является таблица, поля который должны соответствовать таблице, получаемой запросом из типового ini-файла (например, Контрагента нельзя переименовывать в Клиента).
+
 
 +
В приведенном примере в один комплект попадают 3 документа - Реализация товаров и услуг, Счет на оплату покупателю и Счет-фактура выданный.
 +
 
 +
===Обращение к данным через формулу===
 +
Для несложных вычислений не обязательно писать функцию во внешней обработке, можно использовать формулы.
 +
 
 +
Формула имеет следующий вид: ^[операция](параметр1,параметр2,...).
 +
 
 +
В качестве параметров могут быть указаны строковые значения или ранее определенные параметры файла настроек.
 +
 
 +
Реализованы следующие варианты формул:
 +
* Сложение строк или чисел: +
 +
<source lang="xml">
 +
<Основание_Номер>[Основание].Номер</Основание_Номер>
 +
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Основание].Дата</Основание_Дата>
 +
<НазваниеЗаказа>^+('Заказ №',Основание_Номер,' от ',Основание_Дата)</НазваниеЗаказа>
 +
</source>
 +
В примере параметр НазваниеЗаказа определяется с помощью формулы. Знак + означает операцию сложения. В скобках указывается произвольное количество параметров. Все параметры должны быть одинакового типа (строка или число).
 +
 
 +
* Операции сравнения: >, <, =, !=
 +
<source lang="xml">
 +
<Параметр_Значение>^=([Договор].Номер,'111','Договор 111','')</Параметр_Значение>
 +
</source>
 +
Для операций сравнения всегда указывается 4 параметра. К первым двум параметрам применяется сама операция (в примере проверяется, что номер договора равен "111"). Если условие выполняется, то возвращается значение третьего параметра, иначе - значение четвертого параметра. То есть, если номер договора будет равен "111", то в реквизит Параметр_Значение попадет строка "Договор 111", а иначе пустая строка.
 +
 
 +
* Проверка заполнения: =, !=
 +
<source lang="xml">
 +
<Параметр_Значение>^=([Документ].Комментарий,[Документ].Комментарий,'Комментарий не заполнен')</Параметр_Значение>
 +
</source>
 +
В случае, если для операций = и != указано три параметра, то выполняется проверка заполненности (незаполненности для !=) первого параметра. Если условие выполняется (параметр заполнен), то возвращается значение второго параметра, иначе - значение третьего параметра. В примере если у документа заполнен комментарий, то вернется текст комментария, а иначе текст "Комментарий не заполнен".
 +
 
 +
* Составные условия: И, ИЛИ
 +
<source lang="xml">
 +
<ЗаполненаГООрганизации>^=([Организация].ГоловнаяОрганизация,'Истина','Ложь')</ЗаполненаГООрганизации>
 +
<Отправитель_Роль>^И([Организация].ОбособленноеПодразделение,ЗаполненаГООрганизации,'ОтправительПакета','Отправитель')</Отправитель_Роль>
 +
</source>
 +
Для данных операций указывается произвольное количество параметров, из которых предпоследний - это значение, возвращаемое в случае выполнения условия, а последний - в случае невыполнения. Все параметры кроме двух последних, должны иметь тип Булево. Для операции "И" для выполнения условия необходимо, чтобы все параметры принимали значение Истина - в этом случае вернется предпоследний параметр, иначе - последний. Для операции "ИЛИ" достаточно, чтобы один из параметров принимал значение Истина - в этом случае вернется предпоследний параметр, иначе - последний.
 +
 
 +
В примере Отправитель_Роль примет значение "ОтправительПакета" в случае, если у организации установлен флаг "Обособленное подразделение" и заполнена головная организация, иначе Отправитель_Роль примет значение "Отправитель".
 +
 
 +
* Получение подстроки: Сред
 +
<source lang="xml">
 +
<ИнициалыИмя>^Сред([СотрудникКонтрагент].Имя,'1','1')</ИнициалыИмя>
 +
</source>
 +
Первый параметр - исходная строка. Второй параметр - номер символа с которого берем подстроку. Третий параметр - количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
 +
 
 +
===Обращение к данным через функцию===
 +
Если выше перечисленных способов не достаточно чтобы рассчитать значение параметра, вы можете написать свою функцию для его расчета.
 +
 
 +
Для сохранения возможности автообновления основной обработки, все новые функции реализованные для конкретного клиента размещаются в отдельной внешней обработке - которая должна называться '''"ВнешниеФункции_Клиент.epf"''' и находиться в или в каталоге настроек или в 1С в справочнике '''"Дополнительные внешние обработки"'''/'''"Внешние обработки"'''.  Функции для расчета параметров должны быть помещены в форму "РаботаСДокументами1С" этой внешней обработки.
 +
 
 +
Для того, чтобы параметр рассчитывался при помощи функции, необходимо указать её название в фигурных скобках. Указанная функция будет искаться сначала в основной обработке, затем в обработке "ВнешниеФункции_Клиент.epf".
 +
 
 +
<source lang="xml">
 +
<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
 +
</source>
 +
 
 +
Функции для расчета параметров имеют единственный параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.
 +
 
 +
Результат выполнения функции записывается в указанный параметр.
  
===Обращение к данным через функцию, описанную в обработке===
+
===Атрибуты в файлах настроек===
  
КонтрагентРасчСчет = {ВозвратБанковскихРеквизитов(Контрагент,'Контрагенты','НомерСчета')}
+
Атрибут "Имя" используется для именования множественных узлов. Например, <мСторона Имя="Грузоотправитель">.
Функция описана в модуле внешней обработки.
 
ВозвратБанковскихРеквизитов — имя функции;
 
Контрагент — ранее определенная переменная
 
'Контрагенты' — строковая константа
 
НовыйАдресКонтрагента = {СоздатьАдрес(*)}
 
Параметр * - говорит о том, что функция содержит стандартный набор параметров и их менять НЕЛЬЗЯ.
 
Текст функций формируется по правилам 1С.
 
  
===Обращение к данным через функцию, описанную в обработке ВнешниеФункции_Клиент.epf===
+
Атрибут "Формат" используется для приведения значения параметра к определенному формату. Например, запись
 +
<source lang="xml">
 +
<ТаблДок_Кол_во Формат="ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0; ЧН=0.000">[ТаблДок].Количество</ТаблДок_Кол_во>
 +
</source>
 +
говорит о том, что атрибут "Кол-во" будет записан в выгружаемый файл с тремя знаками после запятой.
  
При необходимости переопределения каких-то переменных через новую функцию создается внешний обработчик "ВнешниеФункции_Клиент.epf" и в нем описываются пользовательские функции. При этом в ini-файле перед именем функции мы пишем «ВО.»
+
Атрибут "Тип" в обязательном порядке задается для параметров, содержащих табличную часть документа, например,
КонтрагентТелефоны = {ВО.сбисПолучитьТелефон(Контрагент,'Контрагента')} //
+
<source lang="xml">
Файл "ВнешниеФункции_Клиент.epf" должен находиться в каталоге настроек, указанном на вкладке «Настройка».
+
<ТаблДок Тип="ТабличнаяЧасть">[Документ].Товары</ТаблДок>
Обращение к данным через формулу
+
</source>
РеализацияСуммаВключаетНДС = ^Истина
+
Так же он обязательно задается вместе с атрибутом формат для даты, которую необходимо выгрузить в файл в определенном формате. Например,  
Истина — логическое выражение.
+
<source lang="xml">
*Выражение может быть логическим и математическим. Число является частным случаем формулы
+
<Документ_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Документ].Дата</Документ_Дата>
 +
</source>
  
===Обращение к данным через строковые константы===
+
Атрибуты вида "Отбор_..." используются при необходимости выбрать запись справочника, регистра сведений или строку табличной части, отвечающую определенным условиям. Например, нам нужно получить адрес организации из регистра сведений КонтактнаяИнформация. У данного регистра есть измерения "Объект", "Тип" и "Вид". Для установки отбора по данным измерениям мы задаем атрибуты "Отбор_Объект", "Отбор_Тип" и "Отбор_Вид":
НашаОрганизацияПодписант = 'Петров Сергей Сергеевич'
+
<source lang="xml">
* пустая строка вида ''  говорит, что эти данные не ведутся.
+
<АдресЮЛ Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
Особые переменные, участвующие в условиях:
+
</source>
Переменные: КонтрагентЮрФизЛицо, ГрузополучательЮрФизЛицо, ГрузоотправительЮрФизЛицо, НашаОрганизацияЮрФизЛицо — участвуют в условиях, описанных в обработчике при записи в файл реквизитов участников обмена, и должны иметь вид «Физ. лицо» или «Юр. лицо». Если представление в конфигурации не соответствует этому виду, то переменные необходимо переопределить через внешнюю функцию.
+
Значения атрибутов задаются так же, как значения самих параметров, то есть в данном случае - это ссылки на ранее определенные параметры.
 +
Для справочников и табличных частей отбор задается аналогично, только не по измерениям, а по реквизитам, по которым необходимо произвести поиск.  
  
==Настройка==
+
Атрибут "Кэш" используется для кэширования значений параметров, одинаковых для нескольких документов в одном пакете. Например, в одном пакете выгружается накладная, счет-фактура и счет. В каждом документе присутствуют данные по одному и тому же контрагенту (адрес, телефон, факс). Чтобы не искать заново эту информацию в базе 1С для каждого документа, данные кладутся в кэш, что существенно ускоряет выгрузку. Есть одно особенное значение атрибута "Кэш" - это "Организация". Т.к. в базе 1С часто присутствует всего одна организация (иногда несколько, но в любом случае не так много, как контрагентов) имеет смысл кэшировать информацию по организации не в рамках одного пакета, а в целом в рамках запуска внешней обработки.
Если при запуске обработка выводит ошибки – берем в качестве базы типовой ini файл, изменяем название под клиента, настраиваем.
+
 
Если ошибок несколько, то начинаем исправлять их по-одной. Возможно, при исправлении значения одной переменной, другие ошибки пропадут сами, т.к. переменные связаны между собой.
+
====Атрибуты в файлах настроек для загрузки документов====
После исправления ошибки перевыбираем каталог настроек в обработке и смотрим, остались ли еще ошибки. И так далее, пока не будут исправлены все ошибки.
+
Атрибут "Данные" - в значении атрибута указывается путь, откуда должно быть взято значение из загружаемого файла.
=== В конфигурации поля названы по-другому===
+
Например, запись
 +
<source lang="xml">
 +
<Документ_НомерВх Данные="Файл.Документ.Номер">[Документ].НомерВходящегоДокумента</Документ_НомерВх>
 +
</source>
 +
означает, что реквизит "НомерВходящегоДокумента" в создаваемом при загрузке документе 1С будет заполнен из атрибута "Номер" узла "Документ" полученного файла.
 +
 
 +
Атрибут "Вычислить" используется, если при загрузке документа определенный реквизит нужно заполнить не значением из файла, а вычислить с помощью функции либо заполнить определенным значение перечислений, либо строковой константой.
 +
Например, запись
 +
<source lang="xml">
 +
<ВидыОпераций>Перечисление.ВидыОперацийПоступлениеТоваровУслуг</ВидыОпераций>
 +
<ВидОперации Вычислить="[ВидыОпераций].ПокупкаКомиссия">[Документ].ВидОперации</ВидОперации>
 +
</source>
 +
означает, что в создаваемом документе 1С реквизит "ВидОперации" будет заполнен значением "ПокупкаКомиссия" перечисления "ВидыОперацийПоступлениеТоваровУслуг".
 +
 
 +
Запись
 +
<source lang="xml">
 +
<Договор Вычислить="{ЗаполнитьДоговор()}">[Документ].ДоговорКонтрагента</Договор>
 +
</source>
 +
 
 +
означает, что реквизит "ДоговорКонтрагента" в создаваемом документе 1С будет заполнен с помощью функции ЗаполнитьДоговор(). Функция описана в модуле формы "РаботаСДокументами1С" внешней обработки. Как и любую функцию, вызываемую из файла настроек, ее можно переопределить в аналогичной форме обработки "ВнешниеФункции_Клиент.epf"
 +
 
 +
В атрибуте "Вычислить" так же можно использовать функции из общих модулей конфигурации. Название модуля и функции при этом разделяются точкой:
 +
<source lang="xml">
 +
<КурсВалюты Вычислить="{МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>.
 +
</source>
 +
В случае вызова функции из общих модулей необходимо указать параметры функции.
 +
 
 +
Атрибут "ВычислитьНаСервере" используется в управляемом приложении. Нужен для вызова функции из общего модуля, работающего только на сервере. Например, для бухгалтерии 3.0 получаем курс валюты: 
 +
<source lang="xml">
 +
<КурсВалюты ВычислитьНаСервере="{РаботаСКурсамиВалют.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>
 +
</source>
 +
 
 +
==Исправление ошибок в настройках==
 +
Если при запуске обработки выдается протокол проверки файлов настроек, значит необходимо внести изменения в настройки.
 +
 
 +
Для файла настроек, в котором обнаружены ошибки, обработка автоматически создает пользовательский файл настроек, в котором присутствуют только те параметры, в которых обнаружены ошибки. Пользовательский файл настроек называется так же, как и основной, только без расширения sbis3. Например, для файла "ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml" пользовательский файл будет называться "ВО82БУХ2_РеализацияТоваровУслуг.xml". Любые изменения производятся только в пользовательском файле, так как стандартные файлы настроек обновляются при обновлении обработки.
 +
 
 +
Если ошибок несколько, то начинаем исправлять их по-одной. Возможно, при исправлении значения одного параметра, другие ошибки пропадут сами, т.к. параметры связаны между собой.
 +
После исправления ошибки закрываем протокол проверки, нажимаем кнопку "Проверить настройки" в обработке и смотрим, остались ли еще ошибки. И так далее, пока не будут исправлены все ошибки.
 +
=== В конфигурации реквизит назван по-другому===
 
====Диагностика====
 
====Диагностика====
 
   
 
   
При этом в ini файле указана строка:
+
В протоколе проверки выдается ошибка:
Реализация = Документ.АктОбОказанииПроизводственныхУслуг // Документ реализация товаров и услуг
+
 
РеализацияСуммаДокумента = [Реализация].Сумма
+
:Не найден реквизит "Договор".
Т.о., мы понимаем, что в БД у документа АктОбОказанииПроизводственныхУслуг нет поля Сумма
+
 
====Решение====
+
:Значение параметра: [Документ].Договор
Открываем конфигурации в конфигураторе 1С (Конфигуратор/Верхнее меню/Конфигурация/Открыть конфигурацию)
+
 
 +
:Полный путь параметра: Документ.РеализацияТоваровУслуг.Договор
  
В открывшемся окне на Документе/АктОбОказанииПроизводственныхУслуг/Реквизиты видим, что поле называется «СуммаДокумента»
+
:Таблица доступных реквизитов: РеализацияТоваровУслуг
  
[[Файл:Config vo2 001.png]]
+
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг нет реквизита Договор.
  
Изменяем пользовательский файл настроек ... имя файла
+
====Решение====
 +
В протоколе проверки ищем таблицу РеализацияТоваровУслуг (в тексте ошибки указано название таблицы доступных реквизитов). В таблице ищем реквизит по смыслу похожий на "Договор".
  
<code lang="xml">
+
Видим, что есть реквизит "ДоговорКонтрагента". В пользовательском файле настроек вместо параметра [Документ].Договор пишем [Документ].ДоговорКонтрагента.
РеализацияСуммаДокумента = [Реализация].СуммаДокумента
 
</code>
 
  
===В конфигурации поля хранятся по-другому===
+
При наличии доступа в конфигуратор названия реквизитов можно посмотреть там, вместо того, чтобы искать нужную таблицу в протоколе проверки.
 +
 
 +
===В конфигурации реквизит хранится в другом месте===
  
 
====Диагностика====
 
====Диагностика====
 
   
 
   
При этом в ini файле указано:
+
В протоколе проверки выдается ошибка:
<code lang="xml">
+
 
Реализация = Документ.РеализацияТоваровУслуг // Документ реализация товаров и услуг
+
:Не найден реквизит "НомерГТД".
РеализацияТовары1 = [Реализация].ТабличныеЧасти.Товары // Табличная часть
+
 
РеализацияТоварыНомерГТД1 = [РеализацияТовары1].НомерГТД // Номер ГТД товара
+
:Значение параметра: [ТаблДок].НомерГТД
</code>
+
 
Т.о. мы понимаем, что в БД у документа реализации в табличной части Товары либо нет поля НомерГТД, либо его тип не соответствует типу в стандартной конфигурации.
+
:Полный путь параметра: Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.НомерГТД
 +
 
 +
:Таблица доступных реквизитов: Товары
 +
 
 +
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг в табличной части Товары нет реквизита НомерГТД.
  
 
====Решение====
 
====Решение====
  
Открываем конфигурацию
+
В протоколе проверки ищем таблицу Товары. В таблице ищем реквизит по смыслу похожий на "НомерГТД" - ничего похожего на НомерГТД не видим. Получается, что либо номера ГТД не ведутся вообще, либо хранятся в каком-то другом месте. Логичнее всего, что если его нет в табличной части документа, возможно он есть в карточке номенклатуры. Такую же логику можно применить к единицам измерения: в некоторых конфигурациях они указываются в табличной части документа, а в некоторых - только в карточке номенклатуры.
  
 +
В протоколе проверки находим таблицу доступных реквизитов номенклатуры (в таблице Товары есть ее название - обычно это "Номенклатура"). Видим, что в номенклатуре есть реквизит НомерГТД, а значит в пользовательском файле настроек мы заменяем значение параметра [ТаблДок].НомерГТД на [Номенклатура].НомерГТД (параметр [Номенклатура] у нас уже определен в стандартном файле настроек)
 +
 +
Аналогичные поиски реквизитов можно выполнять и в конфигураторе (при наличии доступа в него).
 
В открывшемся окне в табличной части Товары документа РеализацияТоваровУслуг ничего похожего на НомерГТД не видим
 
В открывшемся окне в табличной части Товары документа РеализацияТоваровУслуг ничего похожего на НомерГТД не видим
  
 
[[Файл:Config vo2 002.png]]
 
[[Файл:Config vo2 002.png]]
  
Спрашиваем у клиента или смотрим в печатной форме откуда берется данное значение. В нашем примере номер ГТД хранился не документе реализации, а в справочнике Номенклатуры.
+
Спрашиваем у клиента, где они заполняют номера ГТД. В нашем примере номер ГТД хранился не в документе реализации, а в справочнике Номенклатуры.
  
 
[[Файл:Config vo2 003.png]]  
 
[[Файл:Config vo2 003.png]]  
  
так как наименование табличной части реализации уже берет часть данных в справочника номенклатуры, нам остается только переопределить параметр на новый источник данных.
+
Более сложный, но самый правильный вариант узнать, где хранится нужный реквизит - это посмотреть модуль печатной формы документа в 1С, чтобы понять, откуда данные выводятся на печать.
  
<code lang="xml">
+
===Документы хранятся в нестандартном реестре===
РеализацияТоварыНомерГТД1 = [РеализацияТоварыНоменклатура 1].НомерГТД // Номер ГТД товара
 
</code>
 
  
===В конфигурации другие значения перечислений===
 
 
====Диагностика====
 
====Диагностика====
В данном случае обработка может не выдать никаких ошибок, но файл сформируется неправильно. Увидеть это можно, открыв выгруженный файл (при настройке нужно обязательно это сделать) .
+
В протоколе проверки выдается ошибка:
 +
 
 +
: "Неправильный текст запроса.
 +
:({(14, 2)}: Таблица не найдена ""Документ.КорректировкаРеализации""
 +
:<<?>>Документ.КорректировкаРеализации КАК КорректировкаРеализации)"
 +
 
 +
Т.о., мы понимаем, что в БД нет документа КорректировкаРеализации.
 +
 
 +
====Решение====
 +
Самый простой вариант, если в данной конфигурации вообще не ведутся документы такого типа. В этом случае просто удаляем и стандартный и пользовательский файлы настроек.
 +
 
 +
Второй вариант - документы данного типа ведутся, но называются по-другому, например "КорректировкаРеализацииТоваров". В этом случае создаем новый пользовательский файл настроек по имени документа и полностью заполняем его. За основу можно взять стандартный файл корректировки реализации и внести в него необходимые изменения.
  
Как уже говорилось в разделе «Структура ini файла» существуют особые переменные (КонтрагентЮрФизЛицо, ГрузополучательЮрФизЛицо, ГрузоотправительЮрФизЛицо, НашаОрганизацияЮрФизЛицо), от которых зависит формирование в выгружаемом файле сведений об участниках обмена, то есть сформируются сведения о юридическом лице, либо о физическом.
+
==Настройка==
  
Если обработка не выдала никаких ошибок, а в выгруженном файле мы видим, что данные об организации (юридическом лице) записались как реквизиты физического лица:
+
Бывают случаи, когда ошибок в файлах настроек нет, но клиент хочет чтобы при выгрузке или при загрузке документов определенные реквизиты рассчитывались нестандартным способом.
  
<РегСвед>
+
===Изменение выгрузки документа===
<СведФЛ  ИННФЛ="4908962257">
 
  
<ФИО Фамилия="ООО" Фамилия="Солнышко">
+
====Изменение выгрузки существующего реквизита====
При этом в ini файле указана строка:
 
  
НашаОрганизацияЮрФизЛицо = [НашаОрганизация].ЮрФизЛицо
+
Например, мы хотим, чтобы при выгрузке накладной сумма НДС бралась не из реквизита СуммаНДС табличной части Товары документа Реализация товаров и услуг, а рассчитывалась с помощью функции.  
  
Т.о. мы понимаем, что в БД в справочнике Организации реквизит ЮрФизЛицо не принимает значение «Юр. лицо»
+
Для этого создаем пользовательский файл настроек. В пользовательском файле не должно быть лишних параметров - только тот, который мы хотим изменить, но должна соблюдаться структура вложенности узлов xml. То есть в нашем случае пользовательский файл будет выглядеть следующим образом:
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мФайл Имя="ЭДОНакл">
 +
        <мТаблДок Имя="Товары">
 +
            <СуммаНДС>{сбисВычислитьСуммуНДС()}</СуммаНДС>
 +
        </мТаблДок>
 +
    </мФайл>
 +
</ини>
 +
</source>
  
====Решение====
+
где сбисВычислитьСуммуНДС() - функция, которую мы должны определить в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf"
 +
 
 +
====Добавление параметра в выгружаемый файл====
 +
При необходимости выгрузить какую-то дополнительную информацию по документу, мы добавляем в пользовательский файл настроек параметры. Например, хотим добавить информацию о производителе товара. Информация о нем хранится в номенклатуре. Соответственно параметры добавляем в табличную часть. Пользовательский файл настроек будет выглядеть следующим образом:
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мФайл Имя="ЭДОНакл">
 +
        <мТаблДок Имя="Товары">
 +
            <Производитель>[Номенклатура].Производитель</Производитель>
 +
            <мПараметр Имя="НаимПроизв">
 +
                <Параметр_Имя>'НаимПроизв'</Параметр_Имя>
 +
                <Параметр_Значение>[Производитель].Наименование</Параметр_Значение>
 +
            </мПараметр>
 +
            <мПараметр Имя="ИННПроизв">
 +
                <Параметр_Имя>'ИННПроизв'</Параметр_Имя>
 +
                <Параметр_Значение>[Производитель].ИНН</Параметр_Значение>
 +
            </мПараметр>
 +
            <мПараметр Имя="КПППроизв">
 +
                <Параметр_Имя>'КПППроизв'</Параметр_Имя>
 +
                <Параметр_Значение>[Производитель].КПП</Параметр_Значение>
 +
            </мПараметр>
 +
        </мТаблДок>
 +
    </мФайл>
 +
</ини>
 +
</source>
 +
В данном случае мы добавили три параметра в табличную часть документа НаимПроизв, ИННПроиз, КПППроизв - наименовании, ИНН, КПП производителя. Данная информация будет присутствовать в выгружаемом файле. При необходимости ее можно вывести в печатную форму документа - для этого необходимо сделать пользовательскую визуализацию документа.
 +
 
 +
Аналогичным способом можно добавить параметры и в шапку документа.
 +
=====Используемые параметры=====
 +
В параметры можно выгрузить абсолютно любую информацию, а также задать для них любые имена. НО! Для систематизации данных, чтобы однотипная информация всегда выгружалась в параметр с определенным именем, составлен список параметров, которые рекомендуется использовать:
 +
{|class="wikitable" style="vertical-align:top;width:80%"
 +
!Имя параметра
 +
!Описание параметра
 +
!Комментарий
 +
|-
 +
|colspan="3" |'''Параметры шапки документа'''
 +
|-
 +
|GLNПокуп
 +
|GLN покупателя
 +
|rowspan="4" |Глобальный идентификационный номер GLN (Global Location Number) представляет собой 13-разрядный цифровой код (номер), предназначенный для идентификации предприятий, функциональных подразделений, физических местоположений. Данные параметры необходимо заполнять при обмене EDI
 +
|-
 +
|GLNПост
 +
|GLN поставщика
 +
|-
 +
|GLNГрузОтпр
 +
|GLN грузоотправителя
 +
|-
 +
|GLNГрузПолуч
 +
|GLN грузополучателя
 +
|-
 +
|ДоверДата
 +
|Дата доверенности
 +
|rowspan="4" |Сведения о доверенности
 +
|-
 +
|ДоверНомер
 +
|Номер доверенности
 +
|-
 +
|ДоверКем
 +
|Кем выдана доверенность
 +
|-
 +
|ДоверКому
 +
|Кому выдана доверенность
 +
|-
 +
|Договор
 +
|Название договора
 +
|rowspan="3" |Используются для документов, у которых в формате отсутствует информация о договоре
 +
|-
 +
|ДоговорДата
 +
|Дата договора
 +
|-
 +
|ДоговорНомер
 +
|Номер договора
 +
|-
 +
|ЗаказДата
 +
|Дата заказа
 +
|rowspan="2" |Сведения о заказе. Указываются в накладной, созданной на основании данного заказа.
 +
|-
 +
|ЗаказНомер
 +
|Номер заказа
 +
|-
 +
|Заказчик
 +
|Наименование заказчика
 +
|rowspan="4" |Используются в акте выполненных работ, так как по формату ФНС не предусмотрена информация о заказчике. При наличии выводятся в печатную форму.
 +
|-
 +
|ЗаказчикИНН
 +
|ИНН заказчика
 +
|-
 +
|ЗаказчикКПП
 +
|КПП заказчика
 +
|-
 +
|ЗаказчикАдрес
 +
|Адрес заказчика
 +
|-
 +
|ИнфШапка
 +
|Информация, выводимая перед шапкой документа
 +
|rowspan="4" |Используются для вывода любой дополнительной информации в печатной форме документа. См. раздел [[#Визуализация дополнительной информации|Визуализация дополнительной информации]]
 +
|-
 +
|ИнфПередТабл
 +
|Информация, выводимая перед табличной частью документа
 +
|-
 +
|ИнфПослеТабл
 +
|Информация, выводимая после табличной части документа
 +
|-
 +
|ИнфПодвал
 +
|Информация, выводимая после подвала документа
 +
|-
 +
|КодПокуп
 +
|Код филиала покупателя
 +
|rowspan="4" |Код филиала участника. Используется при наличии нескольких филиалов с одинаковыми ИНН/КПП для однозначного определения участника документооборота.
 +
|-
 +
|КодПост
 +
|Код филиала поставщика
 +
|-
 +
|КодГрузОтпр
 +
|Код филиала грузоотправителя
 +
|-
 +
|КодГрузПолуч
 +
|Код филиала грузополучателя
 +
|-
 +
|КолМестВсего
 +
|Количество мест всего
 +
|Используется в документах, где форматом не предусмотрено указание количества мест
 +
|-
 +
|width="15%"|КСчетПокуп
 +
|width="45%"|Корреспондентский счет покупателя
 +
|rowspan="4" |Используются в накладной, так как по формату данные реквизиты не предусмотрены. При наличии выводятся в печатную форму.
 +
|-
 +
|КСчетПост
 +
|Корреспондентский счет поставщика
 +
|-
 +
|КСчетГрузОтпр
 +
|Корреспондентский счет грузоотправителя
 +
|-
 +
|КСчетГрузПолуч
 +
|Корреспондентский счет грузополучателя
 +
|-
 +
|НаимПокуп
 +
|Наименование покупателя
 +
|rowspan="4" |Используются для физических лиц, так как по формату предусмотрено только ФИО, а в печатной форме нужно полное наименование. При наличии выводятся в печатную форму.
 +
|-
 +
|НаимПост
 +
|Наименование поставщика
 +
|-
 +
|НаимГрузОтпр
 +
|Наименование грузоотправителя
 +
|-
 +
|НаимГрузПолуч
 +
|Наименование грузополучателя
 +
|-
 +
|ОбщийВес
 +
|Общий вес товаров
 +
|Используется в документах, где данный реквизит не предусмотрен форматом
 +
|-
 +
|ОснованиеДата
 +
|Дата документа-основания
 +
|rowspan="2" |Сведения о документе-основании. Используется в счете-фактуре для указания реквизитов накладной/акта. В случае отправки счета-фактуры отдельным пакетом при загрузке на стороне получателя производится поиск документа основания по данным реквизитам.
 +
|-
 +
|ОснованиеНомер
 +
|Номер документа-основания
 +
|-
 +
|ПРД
 +
|Сведения о платежно-расчетных документах
 +
|Используется если данные хранятся одной произвольной строкой и нет возможности записать отдельно дату и номер, как предусмотрено форматом счета-фактуры.
 +
|-
 +
|width="15%"|РСчетПокуп
 +
|width="45%"|Расчетный счет покупателя
 +
|rowspan="4" |Используются в документах, где по формату не предусмотрены банковские реквизиты.
 +
|-
 +
|РСчетПост
 +
|Расчетный счет поставщика
 +
|-
 +
|РСчетГрузОтпр
 +
|Расчетный счет грузоотправителя
 +
|-
 +
|РСчетГрузПолуч
 +
|Расчетный счет грузополучателя
 +
|-
 +
|Срок
 +
|Срок поставки товара
 +
|Используется в документах, где данный реквизит не предусмотрен форматом
 +
|-
 +
|СФДата
 +
|Дата счета-фактуры
 +
|rowspan="2" |Сведения о счете-фактуре, для которого текущий документ является основанием.
 +
|-
 +
|СФНомер
 +
|Номер счета-фактуры
 +
|-
 +
|ТТНДата
 +
|Дата товарно-транспортной накладной
 +
|rowspan="2" |Сведения о товарно-транспортной накладной
 +
|-
 +
|ТТННомер
 +
|Номер товарно-транспортной накладной
 +
|-
 +
|colspan="3" |'''Параметры табличной части документа'''
 +
|-
 +
|GTIN
 +
|GTIN товара
 +
|Глобальный номер товара (Global Trade Item Number; GTIN) предназначен для уникальной идентификации продукта в торговле. Данный параметр необходимо заполнять при обмене EDI.
 +
|-
 +
|Брутто
 +
|Масса брутто
 +
|Используется в документах, где форматом не предусмотрено указание массы брутто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
 +
|-
 +
|КолМест
 +
|Количество мест (упаковок)
 +
|Используется в документах, где форматом не предусмотрено указание количества мест, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
 +
|-
 +
|Кол_во
 +
|Количество
 +
|Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Кол_во.
 +
|-
 +
|НаимПроизв
 +
|Наименование производителя
 +
|rowspan="4" |Сведения об алкогольной продукции
 +
|-
 +
|ИННПроизв
 +
|ИНН производителя
 +
|-
 +
|КПППроизв
 +
|КПП производителя
 +
|-
 +
|КодВидаАлкПрод
 +
|Код вида алкогольной продукции по классификатору
 +
|-
 +
|Нетто
 +
|Масса нетто
 +
|Используется в документах, где форматом не предусмотрено указание массы нетто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
 +
|-
 +
|Площадь
 +
|Площадь объекта
 +
|-
 +
|Цена
 +
|Цена
 +
|Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом, либо при необходимости указать цену, включающую НДС. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Цена.
 +
|
 +
|-
 +
|}
 +
 
 +
=====Визуализация дополнительной информации=====
 +
Довольно часто печатная форма документа у клиента незначительно отличается от стандартной, например, выводится строчка с какой-то дополнительной информацией перед табличной частью. Чтобы для каждого такого клиента не делать отдельную визуализацию, существует особая группа параметров, которые автоматически попадают в печатную форму документа:
 +
* ИнфШапка - значение параметра отображается в шапке документа
 +
* ИнфПередТабл - значение параметра отображается перед табличной частью документа
 +
* ИнфПослеТабл - значение параметра отображается после табличной части документа
 +
* ИнфПодвал - значение параметра отображается в подвале документа
 +
 
 +
[[Файл:ВизуализацияДопИнформации.png]]
 +
 
 +
Например, клиент хочет в счет-фактуре перед табличной частью видеть название договора. В этом случае в пользовательский файл настроек добавляется параметр "ИнфПередТабл":
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мФайл Имя="СчФктр">
 +
        <мПараметр Имя="ИнфПередТабл">
 +
            <Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
 +
            <Параметр_Значение>[Договор].Наименование</Параметр_Значение>
 +
        </мПараметр>
 +
    </мФайл>
 +
</ини>
 +
</source>
 +
При необходимости к добавляемой строке можно применить форматирование (с помощью html-кода). Например, название договора должно выводиться жирным шрифтом. В этом случае параметр придется определить через внешнюю функцию:
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мФайл Имя="СчФктр">
 +
        <ДоговорНаименование>[Договор].Наименование</ДоговорНаименование>
 +
        <мПараметр Имя="ИнфПередТабл">
 +
            <Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
 +
            <Параметр_Значение>{сбисИнфПередТаблСФ()}</Параметр_Значение>
 +
        </мПараметр>
 +
    </мФайл>
 +
</ини>
 +
</source>
 +
Внешняя функция будет выглядеть следующим образом:
 +
<source lang="1C">
 +
&НаКлиенте
 +
Функция сбисИнфПередТаблСФ(Контекст) Экспорт
 +
Возврат "<b>"+Контекст.ДоговорНаименование+"</b>";
 +
КонецФункции
 +
</source>
 +
В результате получим печатную форму:
 +
 
 +
[[Файл:SFInfPeredTabl.jpg]]
 +
 
 +
[[Категория:1С]]
 +
 
 +
===Изменение загрузки документа===
 +
 
 +
Чаще всего при загрузке документов возникает необходимость дозаполнить какие-то реквизиты документа, которые при загрузке остались пустыми, т.к. в электронном документе присутствуют далеко не все данные, которые есть в документе 1С.
 +
 
 +
Самый простой пример - всегда при загрузке писать в комментарии документа "Загружен с online.sbis.ru". Для этого в пользовательский файл настроек добавляем строку (соблюдая структуру основного файла настроек):
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мДокумент Имя="ПоступлениеТоваровУслуг">
 +
        <Документ_Комментарий Вычислить="'Загружен с online.sbis.ru'">[Документ].Комментарий</Документ_Комментарий>
 +
    </мДокумент>
 +
</ини>
 +
</source>
 +
 
 +
Немного сложнее - хотим в загружаемом документе заполнять реквизит "ПодразделениеОрганизации", который ссылается на справочник "ПодразделенияОрганизаций", всегда одним и тем же значением - Основным подразделением.
 +
 
 +
Для этого смотрим код этого подразделения в справочнике 1С. Пусть это будет код "000000001".
 +
 
 +
В пользовательский файл настроек необходимо добавить две строки (соблюдая структуру основного файла настроек):
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мДокумент Имя="ПоступлениеТоваровУслуг">
 +
        <ПодразделениеОрганизаций Отбор_Код="'000000001'">Справочник.ПодразделенияОрганизаций</ПодразделениеОрганизаций>
 +
        <Документ_ПодразделениеОрганизации Вычислить="[ПодразделениеОрганизаций]">[Документ].ПодразделениеОрганизации</Документ_ПодразделениеОрганизации>
 +
    </мДокумент>
 +
</ини>
 +
</source>
 +
Данная запись означает, что в справочнике "ПодразделенияОрганизаций" будет выбрана запись с кодом "000000001" и полученным значением будет заполнен реквизит документа "ПодразделениеОрганизации".
 +
 
 +
Аналогично можно заполнить реквизит определенным значением перечисления. Например, в документе поступления в 1С есть реквизит "ВариантРасчетаНДС", который выбирается из перечислений "ВариантыРасчетаНДС". Чтобы заполнить данный реквизит при загрузке документа значением перечисления "ВСумме" делаем пользовательский файл настроек:
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мДокумент Имя="ПоступлениеТоваровУслуг">
 +
        <ВариантыРасчетаНДС>Перечисление.ВариантыРасчетаНДС</ВариантыРасчетаНДС>
 +
        <ВариантРасчетаНДС Вычислить="[ВариантыРасчетаНДС].ВСумме">[Документ].ВариантРасчетаНДС</ВариантРасчетаНДС>
 +
    </мДокумент>
 +
</ини>
 +
</source>
 +
Более сложный вариант, когда реквизит надо заполнить не просто каким-то определенным значением перечисления, справочника или константой, а произвести определенные вычисления. В этом случае реквизит определяется с помощью функции, которую мы должны описать в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf". Например, в загружаемом документе мы хотим заполнить "Ответственного" в зависимости от текущего пользователя. Для этого в файле настроек пишем:
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<ини>
 +
    <мДокумент Имя="ПоступлениеТоваровУслуг">
 +
        <Ответственный Вычислить="{сбисОпределитьОтветственного()}">[Документ].Ответственный</Ответственный>
 +
    </мДокумент>
 +
</ини>
 +
</source>
 +
А в обработке "ВнешниеФункции_Клиент.epf" описываем функцию сбисОпределитьОтветственного(), которая в зависимости от тех или иных условий должна вернуть нужную нам запись справочника "Пользователи".
 +
 
 +
==Пользовательские фильтры в реестрах Продажа/Покупка==
 +
Документы в разделах внешней обработки Продажа и Покупка можно фильтровать по нескольким параметрам:
 +
* период
 +
* статус
 +
* организация
 +
* контрагент
 +
Кроме этого есть возможность добавить пользовательские параметры фильтра. Причем пользовательские фильтры можно добавлять как в целом для всех реестров документов в разделе Продажа или Покупка, так и по-отдельности для каждого типа документа. Рассмотрим механизм на примере добавления фильтра по договору.
 +
 
 +
Добавление пользовательского фильтра состоит из двух шагов:
 +
* Создание формы фильтра во ВнешниеФункции_Клиент.epf
 +
* Добавление условие отбора по новому параметру фильтра в запрос в файле настроек
  
* Открываем описание конфигурации в конфигураторе (Конфигуратор/Верхнее меню/Конфигурация/Открыть конфигурацию)
+
===Создание пользовательской формы фильтра===
* В открывшемся окне находим реквизит Справочники/Организации/Реквизиты/ЮрФизЛицо, двойным щелчком открываем его свойства и видим, что оно ссылается на перечисления:
+
Имя пользовательской формы фильтра формируется по шаблону: "Фильтр_Раздел_[Название раздела]_[Имя настройки]", где название раздела - это "Продажа" или "Покупка", а имя настройки - имя файла настроек, на основании которого строится данный реестр документов (без префикса и расширения).
  
[[Файл:Config vo2 004.png]]
+
Если фильтр добавляется для всех реестров раздела Продажа, то форму нужно назвать "Фильтр_Раздел_Продажа_Шаблон". Если фильтр добавляется для одного типа документов, например, для Оказания услуг, то форма называется соответственно "Фильтр_Раздел_Продажа_ОказаниеУслуг".
  
* В окне конфигурации переходим в Перечисления, находим там ЮрФизЛицо и смотрим, какие значения может принимать этот реквизит. Например, значения следующие: Организация и ФизЛицо
+
Процесс создания формы фильтра немного отличается для обычных и управляемых форм.
* Нам необходимо переопределить переменную в ini-файле через функцию.  
+
====Управляемые формы====
 +
Необходимо скопировать из основной обработки форму "ФормаУстановкиФильтра" во ВнешниеФункции_Клиент.epf и переименовать ее(по шаблону, описанному выше). Теперь при открытии фильтра из соответствующего реестра обработки будет открываться именно эта форма, а не стандартная.
  
В файле ВнешниеФункции_Клиент.epf описываем функцию:
+
Далее на форму добавляем реквизит, в нашем случае "ФильтрДоговор" с типом "СправочникСсылка.ДоговорыКонтрагентов" и соответствующее поле в интерфейсе формы:
 +
[[Файл:ПользовательскийФильтрУФ.jpg]]
  
Функция ТипЛица(Организация) Экспорт  
+
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра:
Если Организация.ЮрФизЛицо = Перечисления.ЮрФизЛицо.Организация Тогда
+
<source lang="1C">
возврат "Юр. лицо"
+
&НаКлиенте
иначе
+
Функция сбисСписокДопПараметровФильтра() Экспорт
возврат "Физ. лицо"
+
СписокДопЭлементов = Новый СписокЗначений;
конецЕсли
+
СписокДопЭлементов.Добавить("ФильтрДоговор");
 +
Возврат СписокДопЭлементов
 
КонецФункции
 
КонецФункции
 +
</source>
  
И соответственно в ini-файле вместо
+
В процедуре "ПриОткрытии" добавляем чтение дополнительных параметров фильтра из объекта Кэш.ПараметрыФильтра (Кэш - общая переменная формы "ФормаГлавноеОкно" обработки):
 +
<source lang="1C">
 +
Для Каждого Элемент Из ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра Цикл
 +
ЭтаФорма[Элемент.Ключ] = Элемент.Значение;
 +
КонецЦикла;
 +
</source>
  
НашаОрганизацияЮрФизЛицо = [НашаОрганизация].ЮрФизЛицо
+
В процедуре "Отобрать" добавляем запись дополнительных параметров фильтра в Кэш.ПараметрыФильтра. В нашем случае:
 +
<source lang="1C">
 +
ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра.Вставить("ФильтрДоговор",ФильтрДоговор);
 +
</source>
 +
И при необходимости в процедуре "ФильтрОчистить" добавляем очистку дополнительных параметров фильтра.
  
пишем
+
====Обычные формы====
 +
Создаем во ВнешниеФункции_Клиент.epf форму, называем ее по шаблону, описанному выше.
  
НашаОрганизацияЮрФизЛицо = {ВО.ТипЛица(НашаОрганизация)}
+
В основной обработке открываем форму "ФормаГлавноеОкно", копируем из нее "ПанельУстановкиФильтра":
 +
[[Файл:ПользовательскийФильтрОФ.jpg]]
  
Файл ВнешниеФункции_Клиент.epf необходимо положить в каталог конфигурации (где лежат стандартные ini файлы и стандартные Внешние функции)
+
Вставляем скопированную панель в пользовательскую форму. Немного растягиваем панель вниз и на свободное место добавляем поле "ФильтрДоговор" и надпись к нему:
  
===Документы хранятся в нестандартном реестре===
+
[[Файл:ПользовательскийФильтрОФ2.jpg]]
 +
 
 +
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра, включая надписи:
 +
<source lang="1C">
 +
Функция сбисСписокДопПараметровФильтра() Экспорт
 +
СписокДопЭлементов = Новый СписокЗначений;
 +
СписокДопЭлементов.Добавить("ФильтрДоговор");
 +
СписокДопЭлементов.Добавить("НадписьДоговор");
 +
Возврат СписокДопЭлементов
 +
КонецФункции
 +
</source>
 +
 
 +
В отличие от управляемых форм, при запуске обработки все поля из данного списка будут скопированы в панель установки фильтра на главном окне, а сама пользовательская форма при работе открываться не будет.
  
====Диагностика====
+
===Добавление условия в запрос===
Может быть выдано сообщение «Запрос построен неверно» или даже без сообщений об ошибках в реестр обработки не будут попадать нужные документы.
+
Чтобы пользовательский фильтр участвовал в отборе документов, необходимо добавить условие с новым параметром в запрос списка документов. Имя параметра соответствует имени поля, которое мы добавили в пользовательскую форму фильтра. В нашем случае - это "ФильтрДоговор".
  
====Решение====
+
Как обычно все изменения делаются в пользовательском файле настроек. Выносим в него параметр "ЗапросСпискаДокументов" с текстом запроса из основного файла настроек. В условия отбора добавляем договор:
Корректируем текст запроса к БД
+
<source lang="1csql">
 +
...
 +
ИЗ
 +
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
 +
ГДЕ
 +
(РеализацияТоваровУслуг.ДоговорКонтрагента = &amp;ФильтрДоговор или &amp;ФильтрДоговор=Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))
 +
И ((РеализацияТоваровУслуг.Дата МЕЖДУ &amp;ДатаНач И &amp;ДатаКон) ИЛИ (НЕ &amp;ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата &gt; &amp;ДатаНач))
 +
И ((РеализацияТоваровУслуг.Контрагент = &amp;Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&amp;Контрагент)) ИЛИ (НЕ &amp;ЗначениеКонтрагентЗаполнено))
 +
И ((РеализацияТоваровУслуг.Организация = &amp;ТекущаяОрганизация) ИЛИ (НЕ &amp;ЗначениеТекущаяОрганизацияЗаполнено))
 +
И ((РеализацияТоваровУслуг.Ссылка = &amp;ТекущийДокумент)  ИЛИ (НЕ &amp;ЗначениеТекущийДокументЗаполнено))
 +
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
 +
...
 +
</source>
  
В разделе «ИЗ» и других разделах указываем название нужного реестра документов, например, вместо типового реестра «РеализацияТоваровУслуг» указываем реестр «РеализацияТоваров»
 
Название реестра берем из описания конфигурации, как открыть описание – см. предыдущий раздел.
 
  
 
[[Категория:1С]]
 
[[Категория:1С]]

Текущая версия на 12:59, 29 октября 2019

Содержание

Общее описание

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

Почему возникает необходимость настройки?

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

Что можно настраивать во внешней обработке?

Что можно настраивать Уровень знаний
Отправка документов
Добавление не поддерживаемого реестра документов в раздел Продажа Средний
Содержание реестров документов в раздела Продажа Средний
Список документов 1С которые необходимы для формирования одного пакета документов Средний
Параметры фильтрации списка документов для каждого реестра Продвинутый
Какие электронные документы будут сформированы из документа 1С Средний
Изменить источники данных для реквизитов электронных документов Начальный
Добавить новые реквизиты в стандартные электронные документы Начальный
Описать условия заполнения реквизитов электронных документов Продвинутый
Описать условия формирования пакета документов Продвинутый
Добавить к пакету документов не формализованный xls или pdf документ сформированный из макета документа 1С Средний
Загрузка документов
Определить какие электронные документы можно загружать в 1С Средний
Определить какие документы 1С можно создать из электронного документа Средний
Определить какие реквизиты документа 1С будут заполнены Начальный
Описать условия заполнения реквизитов документа 1С Продвинутый

Состав обработки

Обработка состоит из одного файла:

  • для толстого клиента Sbis1C.epf
  • для управляемых форм Sbis1C_UF.epf

Файл обработки при запуске распаковывает на диск:

  • ActiveX компонент который отвечает за взаимодействие с СБИС через https
  • Конфигурационные XML файлы описывающие источники данных необходимые для работы обработки.

Обработка может быть дополнена пользовательской обработкой ВнешниеФункции_Клиент.epf.

Основные принципы настройки

  1. Код самой обработки ни при каких условиях не изменяется.
  2. Конфигурационные файлы выгружаемые обработкой ни при каких условиях не изменяются.
  3. Вся настройка производится в пользовательских конфигурационных файлах путем переопределения параметров, либо добавления новых.
  4. При необходимости написать функцию для получения какого либо значения или изменения алгоритма выгрузки создается пользовательская обработка "ВнешниеФункции_Клиент.epf" в которой переопределяются имеющихся функции или создаются новые. Обработка "ВнешниеФункции_Клиент.epf" должна лежать или в каталоге настроек или в 1С в справочнике "Дополнительные внешние обработки"/"Внешние обработки".

Общая логика формирования электронного документа

Универсальность внешней обработки обеспечивается не только отдельными файлами настроек для каждой конфигурации и каждого документа, но и общей структурой и логикой выгрузки всех документов. Если более детально посмотреть файл настроек, то можно заметить что описанные в нем поля хоть и содержат необходимые значения для формирования документа, но не очень похожи на форматы ФНС. Более того, структура инишек для разных документов одинакова. Как же получается, что обработка имея один и тот же набор полей, на выходе формирует разные типы электронных документов?

Дело в том, что обработка сначала формирует документ в промежуточный xml файл формата 3.01. На основе этого формата, например, реальзованы документы «Счет», «Акт сверки взаиморасчето», «Реестр сертификатов, деклараций» и некоторые другие.

Полученный xml файл формата 3.01 обработка конвертирует с помощью xslt преобразования в формат ФНС. И он уже отправляется контрагенту. Xslt файл подбирается исходя из типа, подтипа и версии формата указанного в файле настроек. Если этих полей нет или по ним оработка не смогла найти xslt файл в каталоге настроек, то документ отправляется «как есть» без преобразования. По такой логике с помощью стандартных настроек отправляются документы «Счет» и «Акт сверки взаиморасчетов». После того как документ отправлен в кабинет, система определяет что это за формат и с помощью xslt файла визуализации показывает его как html.

Таким образом при отправке документа получается следующая цепочка:

  1. С помощью настроек обработка формирует xml формата 3.01
  2. С помощью xslt преобразовывает документ из 3.01 в формат ФНС
  3. Отправляет его
  4. В СБИС документ с помощью xslt визуализации показывает xml как html страницу

В случае загрузки в 1С происходит обратная конвертация:

  1. С помощью xslt «из формата ФНС в 3.01» обработка формирует xml универсальной структуры (3.01)
  2. С помощью файлов настроек определяет откуда из 3.01 взять поле и куда в 1С его положить

Такой принцип работы позволяет сохранить универсальность при изменении форматов ФНС. Ведь для поддержки нового формата достаточно будет заменить xslt файл «из 3.01 в формат ФНС» без изменения файлов настроек.

Для отладки и возможности просмотра файлов формата 3.01 в обработке (начиная с 36 версии) на вкладке «Настройки» добавлена опция «Режим отладки», которая позволяет указать каталог куда будут сохраняться файлы формата 3.01 Алгоритм формирования XML.png

Первый запуск обработки

  1. Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
  2. Запустить обработку.
  3. При запуске обработка сама выгрузит файлы настроек в каталог C:\Sbis1C. Для клиент-серверной 1С, запущенной в управляемом режиме, этот каталог будет располагаться на сервере. При необходимости каталог настроек можно изменить на вкладке Настройки/Файлы настроек в обработке.

Если конфигурация клиента нестандартная в Служебных сообщениях появится список ошибок – говорящих о том, что в базе данных нет каких-то полей или они заданы неверно.

Файлы настроек (инишки)

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

Файлы настроек, это xml файлы определенного формата. По старой традиции мы их называем инишками (в внешней обработке первой версии, это были ini файлы).

Для каждой конфигурации делается отдельный набор инишек. Для наиболее популярных конфигураций готовые наборы инишек (стандартные) уже включены в обработку.

Если обработка при запуске определила, что у Вас одна из поддерживаемых версий 1С, то она автоматически установит нужный набор инишек.

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

Как было сказано ранее, для каждой конфигурации делается отдельный набор файлов настроек. Данный набор состоит из:

Файл настроек конфигурации

В данном файле описаны общие параметры, необходимые для работы обработки

Имя файла

Название файла формируется по шаблону «ВО82[Код конфигурации]_Конфигурация.sbis3.xml» Например, для Бухгалтерии 2.0 это будет ВО2БУХ2_Конфигурация.sbis3.xml

Коды типовых конфигураций поддерживаемых обработкой:

  • БУХ1 - Бухгалтерия предприятия 1.6
  • БУХ2 - Бухгалтерия предприятия 2.0
  • БУХ3 - Бухгалтерия предприятия 3.0
  • УТ10 - Управление торговлей 10.х
  • УТ11 - Управление торговлей 11.х
  • УПП - Управление производственным предприятием 1
  • КА - Комплексная автоматизация
  • БГУ - Бухгалтерия госучреждений 1

Структура файла

Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки:

    <!--Данные для поиска контрагента в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
<Контрагенты>Справочник.Контрагенты</Контрагенты>
<Контрагенты_ИНН>[Контрагенты].ИНН</Контрагенты_ИНН>
<Контрагенты_КПП>[Контрагенты].КПП</Контрагенты_КПП>

    <!--Данные для поиска организации в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
<Организации>Справочник.Организации</Организации>
<Организации_ИНН>[Организации].ИНН</Организации_ИНН>
<Организации_КПП>[Организации].КПП</Организации_КПП>
    
    <!--Определение формы работы со статусами. В зависимости от места хранения статусов электронных документов возможны значения: 'Статусы_Регистры', 'Статусы_ДБФ' и 'Статусы_СостоянияЭД' (одновременно записывается в регистры и дополнительно в статусы модуля Такском) -->
<ФормаРаботыСоСтатусами>'Статусы_Регистры'</ФормаРаботыСоСтатусами>

    <!--Определение формы работы с номенклатурой контрагентов. В зависимости от места хранения сопоставления номенклатуры возможны значения: 'СопоставлениеНоменклатуры_ДБФ', 
    'СопоставлениеНоменклатуры_Регистры', 'СопоставлениеНоменклатуры_Справочники','СопоставлениеНоменклатуры_СуммовойУчет'.
    'СопоставлениеНоменклатуры_ДБФ' - означает, что сопоставление нашей номенклатуры с номенклатурой контрагента хранится в dbf-файлах в подкаталоге НоменклатураПоставщиков каталога настроек.
    'СопоставлениеНоменклатуры_Регистры' - сопоставление номенклатуры хранится в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов")
    'СопоставлениеНоменклатуры_Справочники' - сопоставление хранится в справочнике (обычно справочник называется "НоменклатураПоставщиков")
    'СопоставлениеНоменклатуры_СуммовойУчет' - используется, если ведется суммовой учет и в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента
    сопоставляется одна и та же карточка номенклатуры в нашей системе. Для определения, какая именно это будет карточка необходимо добавить параметр "СуммовойУчетКодНоменклатуры",
    в котором указать в одинарных кавычках код номенклатуры.-->
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_ДБФ'</ФормаРаботыСНоменклатуройПоставщика>

    <!--Определение параметров для сопоставления номенклатуры в случае, если сопоставление хранится в базе 1С (в справочнике или регистре сведений)-->
<НоменклатураПоставщиков Отбор_Идентификатор="НоменклатураПоставщиков_Идентификатор" Отбор_Владелец="НоменклатураПоставщиков_Контрагент">Справочник.НоменклатураПоставщиков</НоменклатураПоставщиков>
<НоменклатураПоставщиков_Наименование Данные="Название">[НоменклатураПоставщиков].Наименование</НоменклатураПоставщиков_Наименование>
<НоменклатураПоставщиков_Идентификатор Данные="Идентификатор">[НоменклатураПоставщиков].Идентификатор</НоменклатураПоставщиков_Идентификатор>
<НоменклатураПоставщиков_Номенклатура Данные="Номенклатура">[НоменклатураПоставщиков].Номенклатура</НоменклатураПоставщиков_Номенклатура>
<НоменклатураПоставщиков_Характеристика Данные="Характеристика">''</НоменклатураПоставщиков_Характеристика>
<НоменклатураПоставщиков_Контрагент Данные="Контрагент">[НоменклатураПоставщиков].Владелец</НоменклатураПоставщиков_Контрагент>

    <!--Данные для автоматического создания карточек номенклатуры-->
    <!--Параметр Номенклатура так же используется при сопоставлении номенклатуры. Он определяет, из какого справочника выбирается наша номенклатура, при сопоставлении с номенклатурой контрагента.-->
<Номенклатура>Справочник.Номенклатура</Номенклатура> 
<Номенклатура_Наименование Данные="Название">[Номенклатура].Наименование</Номенклатура_Наименование> 
<Номенклатура_ПолноеНаименование Данные="Название">[Номенклатура].НаименованиеПолное</Номенклатура_ПолноеНаименование> 
<Номенклатура_ЕдиницаИзмерения>[Номенклатура].БазоваяЕдиницаИзмерения</Номенклатура_ЕдиницаИзмерения> 
<ЕдиницаИзмерения>Справочник.КлассификаторЕдиницИзмерения</ЕдиницаИзмерения> 
<Номенклатура_Комментарий>[Номенклатура].Комментарий</Номенклатура_Комментарий> 
<Номенклатура_Услуга>[Номенклатура].Услуга</Номенклатура_Услуга>

<!--Параметр ХарактеристикиНоменклатуры определяет, из какого справочника выбирается характеристика номенклатуры, при сопоставлении с номенклатурой контрагента.
В стандартных настройках отсутствует. Используется только в случае хранения характеристик в нестандартном справочнике (например, справочник "Характеристики", а не "ХарактеристикиНоменклатуры")-->
<ХарактеристикиНоменклатуры>Справочник.Характеристики</ХарактеристикиНоменклатуры>

Описание основных параметров:

Форма работы со статусами Понять, в каком состоянии находится документ (доставлен ли он до контрагента, утвержден или отклонен), можно по статусу электронного документа. По умолчанию статус и идентификатор электронного документа, соответствующего документу 1С, записываются в регистр сведений (ЗначенияСвойствОбъектов или ДополнительныеСведения в зависимости от конфигурации). При этом в файле настроек конфигурации указана форма работы со статусами 'Статусы_Регистры'.

Если в конфигурации нет таких регистров или другого места для хранения статусов, в файле настроек необходимо указать 'Статусы_ДБФ' - в этом случае статусы будут храниться в dbf-файле в каталоге настроек обработки.

Форма работы с номенклатурой контрагентов Перед загрузкой полученных документов необходимо сопоставить номенклатуру контрагента со своей. Результат этого сопоставления сохраняется, чтобы в следующий раз, когда от контрагента придет документ с такой же номенклатурой, сопоставление происходило автоматически. По умолчанию сопоставление записывается в dbf-файлы в подкаталоге НоменклатураПоставщиков каталога настроек обработки. При этом в файле настроек конфигурации указана форма работы с номенклатурой контрагентов 'СопоставлениеНоменклатуры_ДБФ'.

Во многих конфигурациях 1С есть специальные справочники или регистры сведений для хранения сопоставления номенклатуры. Запись

<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Регистры'</ФормаРаботыСНоменклатуройПоставщика>

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

Запись

<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Справочники'</ФормаРаботыСНоменклатуройПоставщика>

означает, что сопоставление номенклатуры будет храниться в справочнике (обычно справочник называется "НоменклатураПоставщиков").

Примечание. При загрузке исходящих документов (в случае, если документы были сформированы и отправлены из другой учетной системы), если необходимо сопоставить номенклатуру другой учетной системы с номенклатурой в текущей базе 1С и сопоставление хранится в регистрах или справочниках, то в справочнике Контрагенты должен быть заведен контрагент с реквизитами нашей организации (ИНН/КПП), так как для исходящего документа владельцем номенклатуры контрагента является наша организация.

При суммовом учете в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента сопоставляется одна и та же карточка номенклатуры в нашей системе. В этом случае необходимо указать форму работы с номенклатурой 'СопоставлениеНоменклатуры_СуммовойУчет'. Для определения, какая именно карточка номенклатуры будет сопоставлена со всей номенклатурой контрагента, необходимо добавить параметр "СуммовойУчетКодНоменклатуры", в котором указать в одинарных кавычках код номенклатуры:

<СуммовойУчетКодНоменклатуры>'00000456'</СуммовойУчетКодНоменклатуры>

Строка подключения к dbf-файлам Дополнительно в файле настроек конфигурации может быть указан параметр "СтрокаПодключенияДБФ". Он необходим в том случае, если на компьютере не установлен драйвер работы с dbf-файлами, используемый обработкой по умолчанию (Microsoft dBASE Driver) и при этом сопоставление номенклатуры либо статусы хранятся в dbf. Например:

<СтрокаПодключенияДБФ>'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="DBASE IV;";Data Source='</СтрокаПодключенияДБФ>

К этой строке в конце обработкой будет дописан путь к каталогу, где лежит нужный dbf-файл с номенклатурой поставщика либо со статусами.

Файлы настроек реестров Продажа / Покупка

Разделы Продажа/Покупка внешней обработки содержат подразделы, в которых отображаются списки документов 1С, например, "Реализация товаров и услуг", "Акт об оказании производственных услуг", "Заказ поставщику" и другие. Из этих разделов документы 1С можно отправить контрагентам в электронном виде. Список пунктов меню раздела Продажа - динамический. Он зависит от количества инишек находящихся в каталоге настроек.

Состав подразделов в Продаже/Покупке определяется файлами настроек.

Имя файла

Название файла формируется по шаблону «ВО82[Код конфигурации]_[Имя документа].sbis3.xml». Например, для Реализации товаров и услуг в Бухгалтерии 2.0 это будет ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml

Структура файла

  • Общие параметры данного реестра документов
    • Запрос для построения списка документов
  • Массив с параметрами выгружаемых файлов (мФайл)
    • Параметры шапки документа
    • Массив табличных частей (мТаблДок)
      • Параметры табличной части документа

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

В какой именно раздел будет добавлен тот или иной реестр документов, определяется параметром файла настроек "ДокументРаздел":

<ДокументРаздел>'Продажа'</ДокументРаздел>

Некоторые документы, например, "Акт сверки", могут присутствовать в обоих разделах:

<ДокументРаздел>'Продажа,Покупка'</ДокументРаздел>

Имя подраздела, которое отображается в интерфейсе обработки, определяется параметром "Реестр1С_Название":

<Реестр1С_Название>'Реализация товаров и услуг'</Реестр1С_Название>

По умолчанию при выгрузке каждого документа используется файл настроек, соответствующий имени этого документа, то есть для Реализации товаров и услуг используется файл ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml, для Счета-фактуры выданного - ВО82БУХ2_СчетФактураВыданный.sbis3.xml и т.д.

Иногда документы одного и того же типа нужно выгружать по-разному в зависимости от определенного условия. Например, логика выгрузки авансовых счетов-фактур отличается от обычных, хотя все они являются одним и тем же документом 1С - "Счет фактура выданный". В этом случае создается отдельный файл настроек со своим запросом и своими параметрами выгружаемых файлов. В запросе указывается условие, что в данный подраздел попадают только счета-фактуры с видом "На аванс". Имя файла настроек будет отличаться от имени документа 1С, т.к. стандартное имя уже занято файлом для выгрузки обычных счетов-фактур. Например, для Бухгалтерии 2.0 это будет ВО82БУХ2_СчетФактураНаАванс.sbis3.xml. Чтобы авансовый счет-фактура выгружался с помощью данного файла настроек, а не стандартного ВО82БУХ2_СчетФактураВыданный.sbis3.xml, необходимо указать название используемого файла в поле запроса "ФайлНастроекДокумента".

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

<мФайл Имя="ЭДОНакл">
...
</мФайл>
<мФайл Имя="АктВР">
...
</мФайл>

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

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

<мФайл Имя="АктВР">
    ...
    <мТаблДок Имя="Услуги">
        <ТаблДок Тип="ТабличнаяЧасть">[Документ].Услуги</ТаблДок>
        ...
    </мТаблДок>
    <мТаблДок Имя="АгентскиеУслуги">
        <ТаблДок Тип="ТабличнаяЧасть">[Документ].АгентскиеУслуги</ТаблДок>
        ...
    </мТаблДок>
</мФайл>

Если хотя бы одна из этих табличных частей будет заполнена, то сформируется электронный документ Акт.

Для накладной обычно описывается одна табличная часть - "Товары". Если она будет заполнена, то сформируется электронный документ Накладная.

Если будут заполнены и товары, и услуги, то сформируются оба документа.


В файлах настроек есть группа особых параметров, имя которых начинается на "Файл_" или "Документ_". Эти параметры автоматически записываются в выгружаемый файл как атрибуты соответствующего узла ("Файл" или "Документ"). Параметры, имя которых начинается на "ТаблДок_" автоматически записываются в выгружаемый файл в строки табличной части.

Рассмотрим один блок мФайл целиком на примере накладной:

<мФайл Имя="ЭДОНакл">
	<!--Параметры, необходимые для определения формата электронного документа. Автоматически попадают в выгружаемый файл, т.к. начинаются с "Файл_".-->
	<Файл_Формат>'ЭДОНакл'</Файл_Формат>
	<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
	<Файл_Имя>'DP_OTORG12_'</Файл_Имя>

	<!--Параметры, определяющие откуда (из какой стороны) нужно взять реквизиты отправителя и получателя комплекта электронных документов. -->
	<Отправитель_Роль>'Отправитель'</Отправитель_Роль>
	<Получатель_Роль>'Получатель'</Получатель_Роль>
	
	<!--Параметры шапки документа. Все, которые начинаются с "Документ_", автоматически попадают в выгружаемый файл.-->
	<Документ>Документ.РеализацияТоваровУслуг</Документ>
	<Документ_Название>'Накладная'</Документ_Название>
	<Документ_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Документ].Дата</Документ_Дата>
        <Документ_Время Тип="Дата" Формат="ДФ=HH.mm.ss">[Документ].Дата</Документ_Время>
	<Документ_Номер>[Документ].Номер</Документ_Номер>
        <Документ_Примечание>[Документ].Комментарий</Документ_Примечание>
	<СуммаВключаетНДС>[Документ].СуммаВключаетНДС</СуммаВключаетНДС>

	<!--Параметры, определяющие ответственного сотрудника и подразделение организации. Сотрудник и подразделение будут проставлены на пакете электронных документов на online.sbis.ru-->
	<ОтветственныйПользователь>[Документ].Ответственный</ОтветственныйПользователь>
	<Ответственный>[ОтветственныйПользователь].ФизЛицо</Ответственный>
	<Ответственный_ФИО>[Ответственный].Наименование</Ответственный_ФИО>
	<Сотрудник Отбор_Физлицо="[Ответственный]">Справочник.СотрудникиОрганизаций</Сотрудник>
	<Подразделение>[Сотрудник].ТекущееПодразделениеОрганизации</Подразделение>
	<Подразделение_Название>[Подразделение].Наименование</Подразделение_Название>

	<!--Параметры, определяющие реквизиты документа-основания. В данном случае договора. 
	Если договор с такими реквизитами заведен на online.sbis.ru, то при отправке накладной она будет связана с указанным договором. 
	Можно указывать несколько связанных документов, например, договор и заказ - для этого добавляются еще узлы "мДокументОснование")-->
	<мДокументОснование Имя="Договор">
		<ДокументОснование>[Документ].ДоговорКонтрагента</ДокументОснование>
		<ДокументОснование_Тип>'ДоговорИсх'</ДокументОснование_Тип>
		<ДокументОснование_Номер>[ДокументОснование].Номер</ДокументОснование_Номер>
		<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[ДокументОснование].Дата</ДокументОснование_Дата>
	</мДокументОснование>

	<!--Блоки "мСторона" содержат реквизиты участников сделки: ИНН, КПП и другие коды, контактную информацию, банковские реквизиты.-->
	<мСторона Имя="Отправитель">
		<Сторона>[Документ].Организация</Сторона>
		<!--Параметр "Роль" определяет название узла в выгружаемом файле, в который попадут данные об участнике. 
		В одной из мСторон должна быть роль, соответствующая значению параметра "Отправитель_Роль" и в одной - соответствующая значению параметра "Получатель_Роль",
		чтобы было понятно, кто является отправителем, а кто получаетел документа на online.sbis.ru-->
		<Роль>'Отправитель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
		<Код_ОКОПФ>[Сторона].КодОКОПФ</Код_ОКОПФ>
		<Код_ОКФС>[Сторона].КодОКФС</Код_ОКФС>
		<Код_ОКВЭД>[Сторона].КодОКВЭД</Код_ОКВЭД>
		<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
		<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
		<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
		<АдресЮЛ Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
		<АдресФЛ Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресФизЛица" Отбор_Объект="[Сторона].ИндивидуальныйПредприниматель" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресФЛ>
		<Сторона_Адрес Кэш="Организация">{сбисПолучитьАдрес()}</Сторона_Адрес>
		<Телефон Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон Кэш="Организация">[Телефон].Представление</Контакт_Телефон>
		<Факс Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].ФаксОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон">РегистрыСведений.КонтактнаяИнформация</Факс>
		<Контакт_Факс Кэш="Организация">[Факс].Представление</Контакт_Факс>
		<ЭлПочта Кэш="Организация" Отбор_Вид="[ВидыКонтактнойИнформации].EmailОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
		<Контакт_EMAIL Кэш="Организация">[ЭлПочта].Представление</Контакт_EMAIL>
		<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
		<Банк>[БанкСчет].Банк</Банк>
		<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
		<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
		<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
		<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
	</мСторона>
	<мСторона Имя="Получатель">
		<Сторона>[Документ].Контрагент</Сторона>
		<Роль>'Получатель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
		<Код_ОКОПФ>''</Код_ОКОПФ>
		<Код_ОКДП>''</Код_ОКДП>
		<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
		<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
		<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
		<АдресЮЛ Кэш="Получатель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
		<Сторона_Адрес Кэш="Получатель">{сбисПолучитьАдрес()}</Сторона_Адрес>
		<Телефон Кэш="Получатель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон Кэш="Получатель">[Телефон].Представление</Контакт_Телефон>
		<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
		<Банк>[БанкСчет].Банк</Банк>
		<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
		<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
		<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
		<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
	</мСторона>
	<мСторона Имя="Грузоотправитель">
	        <Сторона>[Документ].Грузоотправитель</Сторона>
		<Роль>'Грузоотправитель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
		<Код_ОКОПФ>''</Код_ОКОПФ>
		<Код_ОКДП>''</Код_ОКДП>
		<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
		<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
		<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
		<АдресЮЛ Кэш="Грузоотправитель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
		<Сторона_Адрес Кэш="Грузоотправитель">{сбисПолучитьАдрес()}</Сторона_Адрес>
		<Телефон Кэш="Грузоотправитель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон Кэш="Грузоотправитель">[Телефон].Представление</Контакт_Телефон>
		<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
		<Банк>[БанкСчет].Банк</Банк>
		<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
		<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
		<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
		<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
	</мСторона>
	<мСторона Имя="Грузополучатель">
		<Сторона>[Документ].Грузополучатель</Сторона>
		<Роль>'Грузополучатель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Код_ОКПО>[Сторона].КодПоОКПО</Код_ОКПО>
		<Код_ОКОПФ>''</Код_ОКОПФ>
		<Код_ОКДП>''</Код_ОКДП>
		<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
		<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
		<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
		<АдресЮЛ Кэш="Грузополучатель" Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
		<Сторона_Адрес Кэш="Грузополучатель">{сбисПолучитьАдрес()}</Сторона_Адрес>
		<Телефон Кэш="Грузополучатель" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон Кэш="Грузополучатель">[Телефон].Представление</Контакт_Телефон>
		<БанкСчет>[Сторона].ОсновнойБанковскийСчет</БанкСчет>
		<Банк>[БанкСчет].Банк</Банк>
		<БанкРекв_НаимБанк>[Банк].Наименование</БанкРекв_НаимБанк>
		<БанкРекв_БИК>[Банк].Код</БанкРекв_БИК>
		<БанкРекв_КСчет>[Банк].КоррСчет</БанкРекв_КСчет>
		<БанкРекв_РСчет>[БанкСчет].НомерСчета</БанкРекв_РСчет>
	</мСторона>

	<!--Реквизиты документа основания, которые будут записаны в файл-->
	<мОснование Имя="Договор">
		<Основание>[Документ].ДоговорКонтрагента</Основание>
		<Основание_Название>[Основание].Наименование</Основание_Название>
		<Основание_Номер>[Основание].Номер</Основание_Номер>
		<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Основание].Дата</Основание_Дата>
	</мОснование>

	<!--Реквизиты табличной части документа. Параметры, которые начинаются с "ТаблДок_", автоматически попадают в выгружаемый файл.-->
	<мТаблДок Имя="Товары">
		<ТаблДок Тип="ТабличнаяЧасть">[Документ].Товары</ТаблДок>
		<Номенклатура>[ТаблДок].Номенклатура</Номенклатура>
		<ЕдИзм>[Номенклатура].БазоваяЕдиницаИзмерения</ЕдИзм>
		<ТаблДок_Название>[Номенклатура].НаименованиеПолное</ТаблДок_Название>
		<ТаблДок_Код>[Номенклатура].Код</ТаблДок_Код>
		<ТаблДок_Артикул>[Номенклатура].Артикул</ТаблДок_Артикул>
		<Цена>[ТаблДок].Цена</Цена>
		<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
		<ТаблДок_Кол_во Формат="ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0; ЧН=0.000">[ТаблДок].Количество</ТаблДок_Кол_во>
		<ТаблДок_ЕдИзм>[ЕдИзм].Наименование</ТаблДок_ЕдИзм>
		<ТаблДок_ОКЕИ>[ЕдИзм].Код</ТаблДок_ОКЕИ>
		<ТаблДок_Сумма Формат="ЧЦ=17; ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00">[ТаблДок].Сумма</ТаблДок_Сумма>
		<НомерГТД>[ТаблДок].НомерГТД</НомерГТД>

		<!--С помощью узла мПараметр можно записать в файл любую дополнительную информацию, которая не предусмотрена форматом электронного документа-->
		<мПараметр Имя="НомерГТД">
			<Параметр_Имя>'НомерГТД'</Параметр_Имя>
			<Параметр_Значение>[НомерГТД].Код</Параметр_Значение>
		</мПараметр>
		<СтранаПроисхождения>[ТаблДок].СтранаПроисхождения</СтранаПроисхождения>
		<ТаблДок_Страна>[СтранаПроисхождения].Код</ТаблДок_Страна>
		<СуммаНДС Формат="ЧЦ=17; ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00">[ТаблДок].СуммаНДС</СуммаНДС>
		<СтавкаНДС>[ТаблДок].СтавкаНДС</СтавкаНДС>
		<СуммаАкциз>'без акциза'</СуммаАкциз>
		<ЕдИзмУпаковки>[ТаблДок].ЕдиницаИзмерения</ЕдИзмУпаковки>
		<Упаковка_Вместимость Формат="ЧЦ=12; ЧДЦ=0; ЧРД=.; ЧГ=0;">[ТаблДок].Коэффициент</Упаковка_Вместимость>
		<Упаковка_Код>[ЕдИзмУпаковки].Код</Упаковка_Код>
		<Упаковка_КолМест Формат="ЧЦ=12; ЧДЦ=0; ЧРД=.; ЧГ=0;">[ТаблДок].КоличествоМест</Упаковка_КолМест>
		<Упаковка_Название>[ЕдИзмУпаковки].Наименование</Упаковка_Название>
		<ТаблДок_Идентификатор>{ОпределитьИдентификаторНоменклатуры()}</ТаблДок_Идентификатор>
	</мТаблДок>
</мФайл>

Дополнительные возможности выгрузки

Форма формирования файла

Во внешней обработке есть группа форм, которые используются непосредственно при формировании выгружаемого файла - это формы вида «Файл_[Формат файла]_[Версия формата файла]». Например, для формирования файла счета-фактуры используется форма "Файл_СчФктр_3_01".

Формат файла и версия формата определяется в файле настроек в параметрах "Файл_Формат" и "Файл_ВерсияФормата". Например:

<Файл_Формат>'АктВР'</Файл_Формат>
<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>

Так как большинство файлов формируются по одному и тому же алгоритму, для их формирования используется форма "Файл_Шаблон". Эта форма используется для всех файлов, для которых в обработке нет формы вида «Файл_[Формат файла]_[Версия формата файла]».

Основное отличие формирования счета-фактуры от других документов заключается в том, что в 1С в документе Счет-фактура выданный нет табличной части, содержащей номенклатуру, а есть только ссылки на документы-основания. При формировании файла счета-фактуры табличная часть заполняется из документов-оснований. Для всех остальных документов табличные части заполняются непосредственно из самого документа (из табличных частей "Товары", "Услуги" и т.п.) Но, например, для авансового счета-фактуры табличная часть должна заполняться из табличной части "Авансы" самого счета-фактуры, поэтому его формирование ничем не отличается от большинства других документов. Поэтому для его формирования необходимо использовать форму "Файл_Шаблон", а не "Файл_СчФктр_3_01". Для этого в файле настроек указан специальный параметр "ФормаФормирования":

<ФормаФормирования>'Файл_Шаблон'</ФормаФормирования>

Встречаются конфигурации 1С, где табличные части с номенклатурой ("Товары", "Услуги") хранятся в самом счете-фактуре. Для таких конфигураций в файле настроек для выгрузки счета-фактуры так же необходимо указывать форму формирования "Файл_Шаблон".

Проверка заполнения кодов номенклатуры контрагента

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

Чтобы перед отправкой проводилась проверка, все ли коды поставщиков заполнены, необходимо в файл настроек добавить параметр "НоменклатураКодКонтрагента". В значении параметра указывается имя атрибута файла, в который записывается код номенклатуры контрагента, например, для заказа:

<НоменклатураКодКонтрагента>'КодПоставщика'</НоменклатураКодКонтрагента>

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

Выгрузка одной табличной части в разные документы по условию

Обычно для различных видов номенклатуры в документе 1С предусмотрены различные табличные части (Товары или Услуги). Но встречаются случаи, когда в документе есть только одна табличная часть, например, Товары, при этом в нее заносятся и товары, и услуги. Для печати таких документов в 1С обычно предусмотрены несколько печатных форм, причем в печатную форму накладной попадает не вся табличная часть Товары, а только номенклатура с типом Товар, а в печатную форму акта попадает только номенклатура с типом Услуга. Соответственно и при отправке данного документа в электронном виде должно быть сформировано два файла - накладная и акт, каждый с определенным типом номенклатуры.

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

  • В стандартном файле настроек для документа с одной табличной частью Товары предусмотрена выгрузка только товарной накладной (то есть в файле настроек присутствует один блок мФайл с именем "ЭДОНакл", например, в Управлении торговлей, 11). Поэтому в первую очередь в пользовательском файле настроек для данного типа документа 1С добавляем еще один блок мФайл для выгрузки акта (проще всего скопировать этот блок с накладной и изменить реквизиты Файл_Формат и Файл_Имя). В результате, если мы откроем на просмотр документ в разделе Продажа, то увидим, что на основании документа 1С сформировались накладная и акт, но и в обоих документах в табличные части попали и товары, и услуги. Чтобы распределить номенклатуру по документам правильно, необходимо в файл настроек добавить признак, от которого зависит принадлежность номенклатуры накладной или акту. В нашем случае добавляется реквизит:
<ТипНоменклатуры>[Номенклатура].ТипНоменклатуры</ТипНоменклатуры>

Данный реквизит добавляется в табличную часть акта и накладной в пользовательском файле настроек.

  • Затем в обработке ВнешниеФункции_Клиент.epf (если такой еще нет, то создаем ее и кладем в каталог настроек обработки) создаем формы по форматам выгружаемых файлов: Файл_ЭДОНакл_3_01 и Файл_АктВР_3_01. В каждой форме пишем функцию сбисПослеФормированияСтроки, которая возвращает Истину в случае, если данная строка табличной части должна попасть в данный файл, и Ложь, если не должна. В нашем случае для накладной функция будет выглядеть следующим образом:
&НаКлиенте
Функция сбисПослеФормированияСтроки(НоваяСтрока, Кэш, Контекст, Стр) Экспорт
	Если Контекст.Свойство("СФ") Тогда
		Возврат Истина
	КонецЕсли;
	Если Стр.Свойство("ТипНоменклатуры") Тогда
		Если Строка(Стр.ТипНоменклатуры) = "Товар" Тогда
			Возврат Истина;
		Иначе
			Возврат Ложь;
		КонецЕсли;
	КонецЕсли;
	Возврат Истина;
КонецФункции>

Для акта:

&НаКлиенте
Функция сбисПослеФормированияСтроки(НоваяСтрока, Кэш, Контекст, Стр) Экспорт
	Если Контекст.Свойство("СФ") Тогда
		Возврат Истина
	КонецЕсли;
	Если Стр.Свойство("ТипНоменклатуры") Тогда
		Если Строка(Стр.ТипНоменклатуры) = "Услуга" или Строка(Стр.ТипНоменклатуры) = "Работа" Тогда
			Возврат Истина;
		Иначе
			Возврат Ложь;
		КонецЕсли;
	КонецЕсли;
	Возврат Истина;
КонецФункции

Первое условие (Если Контекст.Свойство("СФ")) срабатывает, когда идет выгрузка счета-фактуры, так как его табличная часть заполняется из документов оснований. В счет-фактуру должны попасть и товары, и услуги, поэтому в данном случае всегда возвращается Истина.

Далее проверяется тип номенклатуры: для накладной возвращается Истина, если это товар, а для акта, если это работа или услуга.

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

Данный механизм можно применить и для формирования Акта приема-передачи неисключительных прав. Для этого в пользовательском файле настроек добавляется блок мФайл для выгрузки акта приема-передачи. Во внешних функциях создается форма Файл_АктПП_3_01 с функцией сбисПослеФормированияСтроки. Данная функция должна возвращать Истину только для номенклатуры, относящейся к неисключительным правам. Так как обычно такая номенклатура заведена в 1С как товар, то необходимо исключить ее из накладной, а для этого нужно прописать дополнительное условие в форме Файл_ЭДОНакл_3_01 в функции сбисПослеФормированияСтроки.

Прикрепление внешнего файла к пакету

Кроме электронных документов, сформированных на основе документов 1С, в комплект можно добавить и внешние файлы, например, договор или соглашение, сформированные в Microsoft Word, сканы приложений к документам отгрузки и вообще любой другой файл. Состав пакета документов определяется в запросе списка документов, поэтому и ссылку на внешний файл необходимо добавить в текст запроса. Например, чтобы добавить к пакету документов реализации файл, который лежит в каталоге "C:\Документы" и называется "Соглашение с [Наименование контрагента]" в запрос добавляем блок:

ОБЪЕДИНИТЬ
        ВЫБРАТЬ
        ВТ_Реализация.Ссылка КАК Документ,
	ВТ_Реализация.Проведен КАК ДокументПроведен,
	ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
        ВТ_Реализация.Дата КАК ДатаДокумента,
        ВТ_Реализация.Номер КАК НомерДокумента,
        ВТ_Реализация.Контрагент КАК Контрагент,
        ВТ_Реализация.Организация КАК Организация,
        ВТ_Реализация.Комментарий КАК Комментарий,
        ВТ_Реализация.Склад КАК Склад,
        ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
        "C:\Документы\Соглашение с "+ВТ_Реализация.Контрагент+".doc" КАК Приложение,
        0 КАК СуммаПриложения, 
	NULL КАК ДатаПриложения, 
	NULL КАК НомерПриложения,
        ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
        ИЗ
        ВТ_Реализация
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"

Данный текст добавляется в конце запроса перед блоком "УПОРЯДОЧИТЬ ПО".

Как видно из примера, полный путь к файлу кладется в поле Приложение, при этом поля СуммаПриложения, ДатаПриложения и НомерПриложения заполняются нулевыми значениями.

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

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


Формирование пакета электронных документов

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

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

В файл настроек выгрузки (как всегда в пользовательский) добавляется новый блок мФайл с именем "Конверт":

<мФайл Имя="Конверт">
	<!--Параметры, необходимые для определения формата электронного документа. Используются для определения формы формирования конверта.-->
	<Файл_Формат>'Конверт'</Файл_Формат>
	<Файл_ВерсияФормата>'3.01'</Файл_ВерсияФормата>
	<!--Параметры для формирования данных конверта. Здесь необходимо указывать ВСЕ данные, необходимые для формирования конверта: тип, регламент, ответственный, подразделение, 
	связанные документы, стороны - так как в случае наличия мФайла "Конверт" данные берутся полностью из него (с первого вложения ничего не берется) -->
	<Тип>'ДокОтгрИсх'</Тип>
	<Документ>Документ.РеализацияТоваровУслуг</Документ>
	<ОтветственныйПользователь>[Документ].Ответственный</ОтветственныйПользователь>
	<Ответственный>[ОтветственныйПользователь].ФизЛицо</Ответственный>
	<Ответственный_ФИО>[Ответственный].Наименование</Ответственный_ФИО>
	<Подразделение>[Документ].Подразделение</Подразделение>
	<Подразделение_Название>[Подразделение].Наименование</Подразделение_Название>
	<Регламент_Название>'Реализация'</Регламент_Название>
	<Сделка>[Документ].Сделка</Сделка>
	<Договор>[Документ].ДоговорКонтрагента</Договор>
	<мДокументОснование Имя="Договор">
		<ДокументОснование_Тип>'ДоговорИсх'</ДокументОснование_Тип>
		<ДокументОснование_Номер>[Договор].Номер</ДокументОснование_Номер>
		<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Договор].Дата</ДокументОснование_Дата>
	</мДокументОснование>
	<мДокументОснование Имя="Заказ">
		<ДокументОснование_Тип>'ЗаказВх'</ДокументОснование_Тип>
		<ДокументОснование_Номер>[Сделка].НомерПоДаннымПокупателя</ДокументОснование_Номер>
		<ДокументОснование_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Сделка].ДатаПоДаннымПокупателя</ДокументОснование_Дата>
	</мДокументОснование>
	<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
        <ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
	<НазначенияСвойствКатегорийОбъектов>ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов</НазначенияСвойствКатегорийОбъектов>
	<ПланВидовХарактеристикКодФилиалаОрг Отбор_Наименование="'КодФилиала'" Отбор_НазначениеСвойства="[НазначенияСвойствКатегорийОбъектов].Справочник_Организации">ПланыВидовХарактеристик.СвойстваОбъектов</ПланВидовХарактеристикКодФилиалаОрг>
	<ПланВидовХарактеристикКодФилиалаКонтр Отбор_Наименование="'КодФилиала'" Отбор_НазначениеСвойства="[НазначенияСвойствКатегорийОбъектов].Справочник_Контрагенты">ПланыВидовХарактеристик.СвойстваОбъектов</ПланВидовХарактеристикКодФилиалаКонтр>
	<!--Параметры для формирования сторон. В общем случае отправителем и получателем пакета будут стороны с соответствующими ролями "Отправитель" и "Получатель". 
	Если Грузополучатель является филиалом Получателя (заведен в личном кабинете как филиал и опубликован), то получателем пакета будет сторона с ролью "Грузополучатель". 
	Аналогично для Грузоотправителя, если он является филиалом Отправителя.
	Если в Грузоотправителе и Грузополучателе нет необходимости, то просто не создаем эти блоки.-->
	<мСторона Имя="Грузоотправитель">
		<Сторона>[Документ].Грузоотправитель</Сторона>
		<Роль>'Грузоотправитель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
		<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
	</мСторона>
	<мСторона Имя="Грузополучатель">
		<Сторона>[Документ].Грузополучатель</Сторона>
		<Роль>'Грузополучатель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Телефон Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон>[Телефон].Представление</Контакт_Телефон>
		<ЭлПочта Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
		<Контакт_EMAIL>[ЭлПочта].Представление</Контакт_EMAIL>
		<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
		<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
	</мСторона>
	<мСторона Имя="Отправитель">
		<Сторона>[Документ].Организация</Сторона>
		<Роль>'Отправитель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаОрг]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
		<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
	</мСторона>
	<мСторона Имя="Получатель">
		<Сторона>[Документ].Контрагент</Сторона>
		<Роль>'Получатель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Телефон Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Контакт_Телефон>[Телефон].Представление</Контакт_Телефон>
		<ЭлПочта Отбор_Тип="[ТипыКонтактнойИнформации].АдресЭлектроннойПочты" Отбор_Объект="Сторона" Отбор_Вид="[ВидыКонтактнойИнформации].АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами">РегистрыСведений.КонтактнаяИнформация</ЭлПочта>
		<Контакт_EMAIL>[ЭлПочта].Представление</Контакт_EMAIL>
		<КодФилиала Отбор_Объект="[Сторона]" Отбор_Свойство="[ПланВидовХарактеристикКодФилиалаКонтр]">РегистрыСведений.ЗначенияСвойствОбъектов</КодФилиала>
		<Подразделение_Идентификатор>[КодФилиала].Значение</Подразделение_Идентификатор>
	</мСторона>
</мФайл>

В данном примере показана возможность указания кодов филиалов для участников документооборота. При необходимости коды филиалов можно завести в регистре сведений ЗначенияСвойствОбъектов/ДополнительныеСведения с названием "КодФилиала" аналогично заведению GLN. Если коды филиалов не требуются, просто не создаем эти параметры в файле настроек.

Файлы настроек загрузки

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

Имя файла

Название файла формируется по шаблону «ВО82[Код конфигурации]_[КодФормата]_[ВерсияФормата].sbis3.xml». Например, для счет-фактуры загружаемой в Бухгалтерию 2.0 это будет ВО82БУХ2_СчФктр_3_01.sbis3.xml

Структура файла

  • Общие параметры для файлов этого типа
  • Массив документов 1С, которые возможно создать при загрузке файла этого типа (мДокумент)
    • Параметры шапки создаваемого документа
    • Параметры табличной части документа

В файле настроек может присутствовать один или несколько узлов "мДокумент" - это означает, что полученный электронный документ может быть загружен в 1С как один из перечисленных типов документов 1С. Например, для электронной накладной в файле настроек обычно присутствует два узла "мДокумент" - для формирования поступления товаров и услуг или возврата товаров поставщику.

<мДокумент Имя="ПоступлениеТоваровУслуг">
...
</мДокумент>
<мДокумент Имя="ВозвратТоваровОтПокупателя">
...
</мДокумент>

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

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

Рассмотрим назначение блоков файла настроек на примере накладной:

<мДокумент Имя="ПоступлениеТоваровУслуг">
	<!--Параметры шапки документа -->
	<Документ>Документ.ПоступлениеТоваровУслуг</Документ>
	<Контрагент_Роль>'Отправитель'</Контрагент_Роль>
	<Организация_Роль>'Получатель'</Организация_Роль>
	<Название>'Поступление товаров и услуг'</Название>
	<Документ_Дата Тип="Дата" Данные="Файл.Документ.Дата">[Документ].Дата</Документ_Дата>
        <Документ_ДатаВх Тип="Дата" Данные="Файл.Документ.Дата">[Документ].ДатаВходящегоДокумента</Документ_ДатаВх>
        <Документ_НомерВх Данные="Файл.Документ.Номер">[Документ].НомерВходящегоДокумента</Документ_НомерВх>
	<Документ_Комментарий Данные="Файл.Документ.Параметр.ИдВизуализации">[Документ].Комментарий</Документ_Комментарий>
        <СправочникЕдиницИзмерения>Справочник.КлассификаторЕдиницИзмерения</СправочникЕдиницИзмерения>
        <ВидыОпераций>Перечисление.ВидыОперацийПоступлениеТоваровУслуг</ВидыОпераций>
	<ВидОперации Вычислить="[ВидыОпераций].ПокупкаКомиссия">[Документ].ВидОперации</ВидОперации>
        <СпособыЗачетаАвансов>Перечисление.СпособыЗачетаАвансов</СпособыЗачетаАвансов>
        <СпособЗачетаАвансов Вычислить="[СпособыЗачетаАвансов].Автоматически">[Документ].СпособЗачетаАвансов</СпособЗачетаАвансов>
        <Склад Вычислить='{УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойСклад")}'>[Документ].Склад</Склад>

	<!--Блоки "мСторона" содержат реквизиты участников сделки. 
	Для контрагента описаны ИНН, КПП, контактная информация, банковские реквизиты, т.к. в обработке есть возможность создать карточку контрагента по данным из файла. 
	Для организации описаны только реквизиты, позволяющие найти ее в справочнике.-->
	<мСторона Имя='Отправитель'>
		<Сторона Данные="Файл.Документ.Отправитель" Тип="Справочник.Контрагенты">[Документ].Контрагент</Сторона>
		<Роль>'Отправитель'</Роль>
		<Сторона_ИНН Данные="ИНН">[Сторона].ИНН</Сторона_ИНН> 
		<Сторона_КПП Данные="КПП">[Сторона].КПП</Сторона_КПП>
		<Сторона_ОКПО>[Сторона].КодПоОКПО</Сторона_ОКПО>
		<Сторона_ОКОПФ>''</Сторона_ОКОПФ>
		<Сторона_ОКДП>''</Сторона_ОКДП>
		<Сторона_ЮрФизЛицо Вычислить="{ЗаполнитьЮрФизЛицо()}">[Сторона].ЮрФизЛицо</Сторона_ЮрФизЛицо>
		<Сторона_НаименованиеПолное Данные="Наименование">[Сторона].НаименованиеПолное</Сторона_НаименованиеПолное>
		<Сторона_Наименование Данные="Наименование">[Сторона].Наименование</Сторона_Наименование>
		<ВидыКонтактнойИнформации>Справочник.ВидыКонтактнойИнформации</ВидыКонтактнойИнформации>
		<ТипыКонтактнойИнформации>Перечисление.ТипыКонтактнойИнформации</ТипыКонтактнойИнформации>
		<Адрес Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресКонтрагента" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес"  Отбор_Объект="[Сторона]">РегистрыСведений.КонтактнаяИнформация</Адрес>
		<Адрес_Поле1 Данные="Индекс">[Адрес].Поле1</Адрес_Поле1>
		<Адрес_Поле2 Вычислить="{ЗаполнитьРегионПоКоду()}">[Адрес].Поле2</Адрес_Поле2>
		<Адрес_Поле3 Данные="Район">[Адрес].Поле3</Адрес_Поле3>
		<Адрес_Поле4 Данные="Город">[Адрес].Поле4</Адрес_Поле4>
		<Адрес_Поле5 Данные="НаселПункт">[Адрес].Поле5</Адрес_Поле5>
		<Адрес_Поле6 Данные="Улица">[Адрес].Поле6</Адрес_Поле6>
		<Адрес_Поле7 Данные="Дом">[Адрес].Поле7</Адрес_Поле7>
		<Адрес_Поле8 Данные="Корпус">[Адрес].Поле8</Адрес_Поле8>
		<Адрес_Поле9 Данные="Кварт">[Адрес].Поле9</Адрес_Поле9>
		<Адрес_Представление Данные="АдресПредставление">[Адрес].Представление</Адрес_Представление>
		<Телефон Отбор_Вид="[ВидыКонтактнойИнформации].ТелефонКонтрагента" Отбор_Тип="[ТипыКонтактнойИнформации].Телефон" Отбор_Объект="[Сторона]">РегистрыСведений.КонтактнаяИнформация</Телефон>
		<Телефон_Представление Данные="Телефон">[Телефон].Представление</Телефон_Представление>
		<Сторона_Факс>''</Сторона_Факс>
		<Сторона_ЭлПочта>''</Сторона_ЭлПочта>
		<Сторона_Интернет>''</Сторона_Интернет>
		<Сторона_ОсновнойБанковскийСчет Вычислить="{ЗаполнитьБанковскийСчет()}">[Сторона].ОсновнойБанковскийСчет</Сторона_ОсновнойБанковскийСчет>
	</мСторона>
	<мСторона Имя='Получатель'>
		<Сторона Данные="Файл.Документ.Получатель" Тип="Справочник.Организации">[Документ].Организация</Сторона>
		<Роль>'Получатель'</Роль>
		<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
		<Сторона_КПП>[Сторона].КПП</Сторона_КПП>
		<Сторона_Наименование>[Сторона].НаименованиеПолное</Сторона_Наименование>
	</мСторона>
	<Договор Вычислить="{ЗаполнитьДоговор()}">[Документ].ДоговорКонтрагента</Договор>
        <Валюта Вычислить="[Договор].ВалютаВзаиморасчетов">[Документ].ВалютаДокумента</Валюта>
        <КурсВалюты Вычислить="{МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>
        <КурсВзаиморасчетов Вычислить="[КурсВалюты].Курс">[Документ].КурсВзаиморасчетов</КурсВзаиморасчетов>
        <КратностьВзаиморасчетов Вычислить="[КурсВалюты].Кратность">[Документ].КратностьВзаиморасчетов</КратностьВзаиморасчетов>
        <СчетаУчетаРасчетов Вычислить="{БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(Документ.Организация, Документ.Контрагент, Документ.ДоговорКонтрагента)}">СчетаУчетаРасчетов</СчетаУчетаРасчетов>
        <СчетУчетаРасчетовСКонтрагентом Вычислить="[СчетаУчетаРасчетов].СчетРасчетов">[Документ].СчетУчетаРасчетовСКонтрагентом</СчетУчетаРасчетовСКонтрагентом>
        <СчетУчетаРасчетовПоАвансам Вычислить="[СчетаУчетаРасчетов].СчетАвансов">[Документ].СчетУчетаРасчетовПоАвансам</СчетУчетаРасчетовПоАвансам>
        <!--Параметр "ИмяТЧ" определяет, в какую табличную часть документа 1С должна попасть та или иная строка электронного документа.
        В данном случае все строки попадают в табличную часть "Товары", т.к. файл настроек предназначен для загрузки накладной.-->
        <ИмяТЧ Вычислить="'Товары'">''</ИмяТЧ>
	<!--Параметры табличной части документа -->
	<мТаблДок Имя='Товары'>
		<ТаблДок>[Документ].Товары</ТаблДок>
		<Номенклатура Данные="Номенклатура">[ТаблДок].Номенклатура</Номенклатура>
		<ТаблДок_Кол_во Данные="Кол_во">[ТаблДок].Количество</ТаблДок_Кол_во>
		<ТаблДок_КолМест Данные="Кол_во">[ТаблДок].КоличествоМест</ТаблДок_КолМест>
		<ТаблДок_Сумма Данные="Сумма">[ТаблДок].Сумма</ТаблДок_Сумма>
       		<ТаблДок_Цена Вычислить="{сбисРассчитатьЦену()}">[ТаблДок].Цена</ТаблДок_Цена>
		<СуммаНДС Данные="НДС.Сумма">[ТаблДок].СуммаНДС</СуммаНДС>
		<СтавкаНДС Данные="НДС.Ставка" Вычислить="{ЗаполнитьСтавкуНДС()}">[ТаблДок].СтавкаНДС</СтавкаНДС>
		<ЕдиницыИзмерения Данные="ОКЕИ" Вычислить ="{ЗаполнитьЕдиницуИзмерения()}">[ТаблДок].ЕдиницаИзмерения</ЕдиницыИзмерения>
		<СчетаУчета Вычислить="{БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Документ.Организация, СтрТабл.Номенклатура)}">СчетаУчета</СчетаУчета>
		<СчетУчета Вычислить="[СчетаУчета].СчетУчета">[ТаблДок].СчетУчета</СчетУчета>
		<СчетУчетаНДС Вычислить="[СчетаУчета].СчетУчетаНДС">[ТаблДок].СчетУчетаНДС</СчетУчетаНДС>
		<Коэффициент  Вычислить="'1'">[ТаблДок].Коэффициент</Коэффициент>
	</мТаблДок>
	<УчитыватьНДС Вычислить="{УчитыватьНДС()}">[Документ].УчитыватьНДС</УчитыватьНДС>
        <СуммаВключаетНДС Вычислить="[Документ].УчитыватьНДС">[Документ].СуммаВключаетНДС</СуммаВключаетНДС>
</мДокумент>

Описание параметров в файлах настроек

Прямое обращение к данным из базы

Есть два ключевых слова, которые означают, что в данный параметр файла настроек нужно поместить ссылку на текущий выгружаемый объект 1С (документ или элемент справочника):

  • Документ
  • ЗаписьСправочника

Например, следующая запись означает, что при выгрузке определенного документа 1С в параметре "Документ" будет ссылка на этот документ.

<Документ>Документ.РеализацияТоваровУслуг</Документ>

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

<Документ>ЗаписьСправочника.ДоговорыКонтрагентов</Документ>

В этом случае в параметре "Документ" будет ссылка на выгружаемый договор.

Обращение к данным через ранее определенный параметр

Ранее определенный параметр пишется в квадратных скобках. После скобки ставится точка и далее название реквизита (табличной части, значение перечисления). Например:

<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>

Чтобы понять, какое значение попадет в данный параметр, нужно проследить всю цепочку параметров. Смотрим определение параметра "Сторона":

<Сторона>[Документ].Организация</Сторона>

Далее смотрим определение параметра "Документ":

<Документ>Документ.РеализацияТоваровУслуг</Документ>

Про параметр "Документ" мы уже знаем, что это прямое обращение к выгружаемому документу. Таким образом, мы понимаем, что в параметре "Сторона_ИНН" будет ИНН организации из выгружаемого документа.

Присвоение параметру строкового значения

В ряде случаев не требуется брать значение из 1С, т.к. оно заранее известно - например тип документа является константой, в этих случаях это значение можно явно присвоить параметру.

<Файл_Формат>'ЭДОНакл'</Файл_Формат>

Строковая константа заключается в одинарные кавычки


Выбор документов (запрос к базе)

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

Результатом выполнения запроса является таблица, с определенным набором полей:

  • Документ - основной документ комплекта
  • ДокументПроведен - признак проведения документа, используется при отображении пиктограммы документа в реестре
  • ДокументПометкаУдаления - признак удаления документа, используется при отображении пиктограммы документа в реестре
  • ДатаДокумента - дата документа, отображается в реестре документов
  • НомерДокумента - номер документа, отображается в реестре документов
  • Контрагент - название контрагента, отображается в реестре документов
  • Организация - название организации, отображается в реестре документов
  • Комментарий - комментарий документа, отображается в реестре документов
  • Склад - склад документа, отображается в реестре документов
  • СуммаДокумента - сумма документа, отображается в реестре документов
  • Приложение - документ, связанный с основным документом комплекта
  • СуммаПриложения - сумма связанного документа
  • ДатаПриложения - дата связанного документа
  • НомерПриложения - номер связанного документа
  • СтатусЭД - статус электронного документа (заполнен, если документ уже отправлен в электронном виде), отображается пиктограммой в реестре документов

Дополнительно могут быть заполнены поля:

  • ФайлНастроекДокумента - название файла настроек, который будет использован при выгрузке основного документа комплекта (без префиксов и расширения, например, "СчетФактураНаАванс")
  • ФайлНастроекПриложения - название файла настроек, который будет использован при выгрузке документа-приложения (без префиксов и расширения)

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

Запрос содержит стандартный набор параметров:

  • ДатНач - начальная дата, с которой запрашиваются документы
  • ДатКон - конечная дата, по которую запрашиваются документы
  • Контрагент - контрагент, по которому отбираются документы
  • ЗначениеКонтрагентЗаполнено - признак заполненности фильтра по контрагенту
  • ТекущаяОрганизация - организация, по которой отбираются документы
  • ЗначениеТекущаяОрганизацияЗаполнено - признак заполненности фильтра по организации
  • ТекущийДокумент - определенный документ (заполняется при использовании внешней обработки, как внешней печатной формы определенного документа)
  • ЗначениеТекущийДокументЗаполнено - признак заполненности параметра ТекущийДокумент

Значения параметров берутся из фильтра, установленного в интерфейсе обработки.

Могут быть установлены дополнительные параметры при использовании пользовательских фильтров (см. раздел про пользовательские фильтры)

Текст запроса прописывается в параметр <ЗапросСпискаДокументов>, например:

ВЫБРАТЬ РАЗРЕШЕННЫЕ 
	РеализацияТоваровУслуг.Ссылка, 
	РеализацияТоваровУслуг.Проведен, 
	РеализацияТоваровУслуг.ПометкаУдаления, 
	РеализацияТоваровУслуг.Дата, 
	РеализацияТоваровУслуг.Номер, 
	РеализацияТоваровУслуг.Контрагент.Наименование КАК Контрагент, 
	РеализацияТоваровУслуг.Организация.Наименование КАК Организация,
	ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1000)) КАК Комментарий,
	РеализацияТоваровУслуг.Склад.Наименование КАК Склад,
	РеализацияТоваровУслуг.СуммаДокумента, 
	РеализацияТоваровУслуг.СчетНаОплатуПокупателю КАК Приложение,
	РеализацияТоваровУслуг.СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаПриложения, 
	РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Дата КАК ДатаПриложения, 
	РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Номер КАК НомерПриложения
ПОМЕСТИТЬ ВТ_Реализация 
ИЗ 	
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
ГДЕ 
	((РеализацияТоваровУслуг.Дата МЕЖДУ &amp;ДатаНач И &amp;ДатаКон) ИЛИ (НЕ &amp;ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата &gt; &amp;ДатаНач)) 
	И ((РеализацияТоваровУслуг.Контрагент = &amp;Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&amp;Контрагент)) ИЛИ (НЕ &amp;ЗначениеКонтрагентЗаполнено)) 
	И ((РеализацияТоваровУслуг.Организация = &amp;ТекущаяОрганизация) ИЛИ (НЕ &amp;ЗначениеТекущаяОрганизацияЗаполнено))
	И ((РеализацияТоваровУслуг.Ссылка = &amp;ТекущийДокумент)  ИЛИ (НЕ &amp;ЗначениеТекущийДокументЗаполнено))
	И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
ВЫБРАТЬ 
	ВТ_Реализация.Ссылка КАК Документ, 
	ВТ_Реализация.Проведен КАК ДокументПроведен,
	ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
	ВТ_Реализация.Дата КАК ДатаДокумента, 	
	ВТ_Реализация.Номер КАК НомерДокумента, 
	ВТ_Реализация.Контрагент КАК Контрагент, 
	ВТ_Реализация.Организация КАК Организация,
	ВТ_Реализация.Комментарий КАК Комментарий,
	ВТ_Реализация.Склад КАК Склад,
	ВТ_Реализация.СуммаДокумента КАК СуммаДокумента, 
	ВТ_Реализация.Приложение КАК Приложение, 
	ВТ_Реализация.СуммаПриложения КАК СуммаПриложения, 	
	ВТ_Реализация.ДатаПриложения КАК ДатаПриложения, 
	ВТ_Реализация.НомерПриложения КАК НомерПриложения,
	ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ 
	ВТ_Реализация
	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
ГДЕ
	НЕ ВТ_Реализация.Приложение =  ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка)
ОБЪЕДИНИТЬ 
ВЫБРАТЬ 
	ВТ_Реализация.Ссылка КАК Документ,
	ВТ_Реализация.Проведен КАК ДокументПроведен,
	ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления, 
	ВТ_Реализация.Дата КАК ДатаДокумента, 	
	ВТ_Реализация.Номер КАК НомерДокумента, 
	ВТ_Реализация.Контрагент КАК Контрагент, 
	ВТ_Реализация.Организация КАК Организация,
	ВТ_Реализация.Комментарий КАК Комментарий,
	ВТ_Реализация.Склад КАК Склад,
	ВТ_Реализация.СуммаДокумента КАК СуммаДокумента, 
	СвязьДокументов.Ссылка КАК Приложение,
	СвязьДокументов.Ссылка.СуммаДокумента КАК СуммаПриложения, 
	СвязьДокументов.Ссылка.Дата КАК ДатаПриложения, 
	СвязьДокументов.Ссылка.Номер КАК НомерПриложения,
	ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ 
	ВТ_Реализация 
	ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СвязьДокументов
	ПО ВТ_Реализация.Ссылка = СвязьДокументов.ДокументОснование
	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус" 
УПОРЯДОЧИТЬ ПО
	ДатаДокумента, НомерДокумента

Текст запроса формируется по правилам 1С. Назначения блоков:

  • «ИЗ» - таблица, из которой выбираются данные
  • «ВЫБРАТЬ» - выбираемые поля
  • «ГДЕ» - условие выбора
  • «КАК» - присвоение логического имени для более простой адресации
  • «УПОРЯДОЧИТЬ ПО» - правила сортировки

В приведенном примере в один комплект попадают 3 документа - Реализация товаров и услуг, Счет на оплату покупателю и Счет-фактура выданный.

Обращение к данным через формулу

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

Формула имеет следующий вид: ^[операция](параметр1,параметр2,...).

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

Реализованы следующие варианты формул:

  • Сложение строк или чисел: +
<Основание_Номер>[Основание].Номер</Основание_Номер>
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Основание].Дата</Основание_Дата>
<НазваниеЗаказа>^+('Заказ №',Основание_Номер,' от ',Основание_Дата)</НазваниеЗаказа>

В примере параметр НазваниеЗаказа определяется с помощью формулы. Знак + означает операцию сложения. В скобках указывается произвольное количество параметров. Все параметры должны быть одинакового типа (строка или число).

  • Операции сравнения: >, <, =, !=
<Параметр_Значение>^=([Договор].Номер,'111','Договор 111','')</Параметр_Значение>

Для операций сравнения всегда указывается 4 параметра. К первым двум параметрам применяется сама операция (в примере проверяется, что номер договора равен "111"). Если условие выполняется, то возвращается значение третьего параметра, иначе - значение четвертого параметра. То есть, если номер договора будет равен "111", то в реквизит Параметр_Значение попадет строка "Договор 111", а иначе пустая строка.

  • Проверка заполнения: =, !=
<Параметр_Значение>^=([Документ].Комментарий,[Документ].Комментарий,'Комментарий не заполнен')</Параметр_Значение>

В случае, если для операций = и != указано три параметра, то выполняется проверка заполненности (незаполненности для !=) первого параметра. Если условие выполняется (параметр заполнен), то возвращается значение второго параметра, иначе - значение третьего параметра. В примере если у документа заполнен комментарий, то вернется текст комментария, а иначе текст "Комментарий не заполнен".

  • Составные условия: И, ИЛИ
<ЗаполненаГООрганизации>^=([Организация].ГоловнаяОрганизация,'Истина','Ложь')</ЗаполненаГООрганизации>
<Отправитель_Роль>^И([Организация].ОбособленноеПодразделение,ЗаполненаГООрганизации,'ОтправительПакета','Отправитель')</Отправитель_Роль>

Для данных операций указывается произвольное количество параметров, из которых предпоследний - это значение, возвращаемое в случае выполнения условия, а последний - в случае невыполнения. Все параметры кроме двух последних, должны иметь тип Булево. Для операции "И" для выполнения условия необходимо, чтобы все параметры принимали значение Истина - в этом случае вернется предпоследний параметр, иначе - последний. Для операции "ИЛИ" достаточно, чтобы один из параметров принимал значение Истина - в этом случае вернется предпоследний параметр, иначе - последний.

В примере Отправитель_Роль примет значение "ОтправительПакета" в случае, если у организации установлен флаг "Обособленное подразделение" и заполнена головная организация, иначе Отправитель_Роль примет значение "Отправитель".

  • Получение подстроки: Сред
<ИнициалыИмя>^Сред([СотрудникКонтрагент].Имя,'1','1')</ИнициалыИмя>

Первый параметр - исходная строка. Второй параметр - номер символа с которого берем подстроку. Третий параметр - количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.

Обращение к данным через функцию

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

Для сохранения возможности автообновления основной обработки, все новые функции реализованные для конкретного клиента размещаются в отдельной внешней обработке - которая должна называться "ВнешниеФункции_Клиент.epf" и находиться в или в каталоге настроек или в 1С в справочнике "Дополнительные внешние обработки"/"Внешние обработки". Функции для расчета параметров должны быть помещены в форму "РаботаСДокументами1С" этой внешней обработки.

Для того, чтобы параметр рассчитывался при помощи функции, необходимо указать её название в фигурных скобках. Указанная функция будет искаться сначала в основной обработке, затем в обработке "ВнешниеФункции_Клиент.epf".

<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>

Функции для расчета параметров имеют единственный параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.

Результат выполнения функции записывается в указанный параметр.

Атрибуты в файлах настроек

Атрибут "Имя" используется для именования множественных узлов. Например, <мСторона Имя="Грузоотправитель">.

Атрибут "Формат" используется для приведения значения параметра к определенному формату. Например, запись

<ТаблДок_Кол_во Формат="ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0; ЧН=0.000">[ТаблДок].Количество</ТаблДок_Кол_во>
говорит о том, что атрибут "Кол-во" будет записан в выгружаемый файл с тремя знаками после запятой.

Атрибут "Тип" в обязательном порядке задается для параметров, содержащих табличную часть документа, например,

<ТаблДок Тип="ТабличнаяЧасть">[Документ].Товары</ТаблДок>

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

<Документ_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Документ].Дата</Документ_Дата>

Атрибуты вида "Отбор_..." используются при необходимости выбрать запись справочника, регистра сведений или строку табличной части, отвечающую определенным условиям. Например, нам нужно получить адрес организации из регистра сведений КонтактнаяИнформация. У данного регистра есть измерения "Объект", "Тип" и "Вид". Для установки отбора по данным измерениям мы задаем атрибуты "Отбор_Объект", "Отбор_Тип" и "Отбор_Вид":

<АдресЮЛ Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>

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

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

Атрибуты в файлах настроек для загрузки документов

Атрибут "Данные" - в значении атрибута указывается путь, откуда должно быть взято значение из загружаемого файла. Например, запись

<Документ_НомерВх Данные="Файл.Документ.Номер">[Документ].НомерВходящегоДокумента</Документ_НомерВх>

означает, что реквизит "НомерВходящегоДокумента" в создаваемом при загрузке документе 1С будет заполнен из атрибута "Номер" узла "Документ" полученного файла.

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

<ВидыОпераций>Перечисление.ВидыОперацийПоступлениеТоваровУслуг</ВидыОпераций>
<ВидОперации Вычислить="[ВидыОпераций].ПокупкаКомиссия">[Документ].ВидОперации</ВидОперации>

означает, что в создаваемом документе 1С реквизит "ВидОперации" будет заполнен значением "ПокупкаКомиссия" перечисления "ВидыОперацийПоступлениеТоваровУслуг".

Запись

<Договор Вычислить="{ЗаполнитьДоговор()}">[Документ].ДоговорКонтрагента</Договор>

означает, что реквизит "ДоговорКонтрагента" в создаваемом документе 1С будет заполнен с помощью функции ЗаполнитьДоговор(). Функция описана в модуле формы "РаботаСДокументами1С" внешней обработки. Как и любую функцию, вызываемую из файла настроек, ее можно переопределить в аналогичной форме обработки "ВнешниеФункции_Клиент.epf"

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

<КурсВалюты Вычислить="{МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>.

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

Атрибут "ВычислитьНаСервере" используется в управляемом приложении. Нужен для вызова функции из общего модуля, работающего только на сервере. Например, для бухгалтерии 3.0 получаем курс валюты:

<КурсВалюты ВычислитьНаСервере="{РаботаСКурсамиВалют.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>

Исправление ошибок в настройках

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

Для файла настроек, в котором обнаружены ошибки, обработка автоматически создает пользовательский файл настроек, в котором присутствуют только те параметры, в которых обнаружены ошибки. Пользовательский файл настроек называется так же, как и основной, только без расширения sbis3. Например, для файла "ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml" пользовательский файл будет называться "ВО82БУХ2_РеализацияТоваровУслуг.xml". Любые изменения производятся только в пользовательском файле, так как стандартные файлы настроек обновляются при обновлении обработки.

Если ошибок несколько, то начинаем исправлять их по-одной. Возможно, при исправлении значения одного параметра, другие ошибки пропадут сами, т.к. параметры связаны между собой. После исправления ошибки закрываем протокол проверки, нажимаем кнопку "Проверить настройки" в обработке и смотрим, остались ли еще ошибки. И так далее, пока не будут исправлены все ошибки.

В конфигурации реквизит назван по-другому

Диагностика

В протоколе проверки выдается ошибка:

Не найден реквизит "Договор".
Значение параметра: [Документ].Договор
Полный путь параметра: Документ.РеализацияТоваровУслуг.Договор
Таблица доступных реквизитов: РеализацияТоваровУслуг

Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг нет реквизита Договор.

Решение

В протоколе проверки ищем таблицу РеализацияТоваровУслуг (в тексте ошибки указано название таблицы доступных реквизитов). В таблице ищем реквизит по смыслу похожий на "Договор".

Видим, что есть реквизит "ДоговорКонтрагента". В пользовательском файле настроек вместо параметра [Документ].Договор пишем [Документ].ДоговорКонтрагента.

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

В конфигурации реквизит хранится в другом месте

Диагностика

В протоколе проверки выдается ошибка:

Не найден реквизит "НомерГТД".
Значение параметра: [ТаблДок].НомерГТД
Полный путь параметра: Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.НомерГТД
Таблица доступных реквизитов: Товары

Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг в табличной части Товары нет реквизита НомерГТД.

Решение

В протоколе проверки ищем таблицу Товары. В таблице ищем реквизит по смыслу похожий на "НомерГТД" - ничего похожего на НомерГТД не видим. Получается, что либо номера ГТД не ведутся вообще, либо хранятся в каком-то другом месте. Логичнее всего, что если его нет в табличной части документа, возможно он есть в карточке номенклатуры. Такую же логику можно применить к единицам измерения: в некоторых конфигурациях они указываются в табличной части документа, а в некоторых - только в карточке номенклатуры.

В протоколе проверки находим таблицу доступных реквизитов номенклатуры (в таблице Товары есть ее название - обычно это "Номенклатура"). Видим, что в номенклатуре есть реквизит НомерГТД, а значит в пользовательском файле настроек мы заменяем значение параметра [ТаблДок].НомерГТД на [Номенклатура].НомерГТД (параметр [Номенклатура] у нас уже определен в стандартном файле настроек)

Аналогичные поиски реквизитов можно выполнять и в конфигураторе (при наличии доступа в него). В открывшемся окне в табличной части Товары документа РеализацияТоваровУслуг ничего похожего на НомерГТД не видим

Config vo2 002.png

Спрашиваем у клиента, где они заполняют номера ГТД. В нашем примере номер ГТД хранился не в документе реализации, а в справочнике Номенклатуры.

Config vo2 003.png

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

Документы хранятся в нестандартном реестре

Диагностика

В протоколе проверки выдается ошибка:

"Неправильный текст запроса.
({(14, 2)}: Таблица не найдена ""Документ.КорректировкаРеализации""
<<?>>Документ.КорректировкаРеализации КАК КорректировкаРеализации)"

Т.о., мы понимаем, что в БД нет документа КорректировкаРеализации.

Решение

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

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

Настройка

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

Изменение выгрузки документа

Изменение выгрузки существующего реквизита

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

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

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мФайл Имя="ЭДОНакл">
        <мТаблДок Имя="Товары">
            <СуммаНДС>{сбисВычислитьСуммуНДС()}</СуммаНДС>
        </мТаблДок>
    </мФайл>
</ини>

где сбисВычислитьСуммуНДС() - функция, которую мы должны определить в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf"

Добавление параметра в выгружаемый файл

При необходимости выгрузить какую-то дополнительную информацию по документу, мы добавляем в пользовательский файл настроек параметры. Например, хотим добавить информацию о производителе товара. Информация о нем хранится в номенклатуре. Соответственно параметры добавляем в табличную часть. Пользовательский файл настроек будет выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мФайл Имя="ЭДОНакл">
        <мТаблДок Имя="Товары">
            <Производитель>[Номенклатура].Производитель</Производитель>
            <мПараметр Имя="НаимПроизв">
                <Параметр_Имя>'НаимПроизв'</Параметр_Имя>
                <Параметр_Значение>[Производитель].Наименование</Параметр_Значение>
            </мПараметр>
            <мПараметр Имя="ИННПроизв">
                <Параметр_Имя>'ИННПроизв'</Параметр_Имя>
                <Параметр_Значение>[Производитель].ИНН</Параметр_Значение>
            </мПараметр>
            <мПараметр Имя="КПППроизв">
                <Параметр_Имя>'КПППроизв'</Параметр_Имя>
                <Параметр_Значение>[Производитель].КПП</Параметр_Значение>
            </мПараметр>
        </мТаблДок>
    </мФайл>
</ини>

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

Аналогичным способом можно добавить параметры и в шапку документа.

Используемые параметры

В параметры можно выгрузить абсолютно любую информацию, а также задать для них любые имена. НО! Для систематизации данных, чтобы однотипная информация всегда выгружалась в параметр с определенным именем, составлен список параметров, которые рекомендуется использовать:

Имя параметра Описание параметра Комментарий
Параметры шапки документа
GLNПокуп GLN покупателя Глобальный идентификационный номер GLN (Global Location Number) представляет собой 13-разрядный цифровой код (номер), предназначенный для идентификации предприятий, функциональных подразделений, физических местоположений. Данные параметры необходимо заполнять при обмене EDI
GLNПост GLN поставщика
GLNГрузОтпр GLN грузоотправителя
GLNГрузПолуч GLN грузополучателя
ДоверДата Дата доверенности Сведения о доверенности
ДоверНомер Номер доверенности
ДоверКем Кем выдана доверенность
ДоверКому Кому выдана доверенность
Договор Название договора Используются для документов, у которых в формате отсутствует информация о договоре
ДоговорДата Дата договора
ДоговорНомер Номер договора
ЗаказДата Дата заказа Сведения о заказе. Указываются в накладной, созданной на основании данного заказа.
ЗаказНомер Номер заказа
Заказчик Наименование заказчика Используются в акте выполненных работ, так как по формату ФНС не предусмотрена информация о заказчике. При наличии выводятся в печатную форму.
ЗаказчикИНН ИНН заказчика
ЗаказчикКПП КПП заказчика
ЗаказчикАдрес Адрес заказчика
ИнфШапка Информация, выводимая перед шапкой документа Используются для вывода любой дополнительной информации в печатной форме документа. См. раздел Визуализация дополнительной информации
ИнфПередТабл Информация, выводимая перед табличной частью документа
ИнфПослеТабл Информация, выводимая после табличной части документа
ИнфПодвал Информация, выводимая после подвала документа
КодПокуп Код филиала покупателя Код филиала участника. Используется при наличии нескольких филиалов с одинаковыми ИНН/КПП для однозначного определения участника документооборота.
КодПост Код филиала поставщика
КодГрузОтпр Код филиала грузоотправителя
КодГрузПолуч Код филиала грузополучателя
КолМестВсего Количество мест всего Используется в документах, где форматом не предусмотрено указание количества мест
КСчетПокуп Корреспондентский счет покупателя Используются в накладной, так как по формату данные реквизиты не предусмотрены. При наличии выводятся в печатную форму.
КСчетПост Корреспондентский счет поставщика
КСчетГрузОтпр Корреспондентский счет грузоотправителя
КСчетГрузПолуч Корреспондентский счет грузополучателя
НаимПокуп Наименование покупателя Используются для физических лиц, так как по формату предусмотрено только ФИО, а в печатной форме нужно полное наименование. При наличии выводятся в печатную форму.
НаимПост Наименование поставщика
НаимГрузОтпр Наименование грузоотправителя
НаимГрузПолуч Наименование грузополучателя
ОбщийВес Общий вес товаров Используется в документах, где данный реквизит не предусмотрен форматом
ОснованиеДата Дата документа-основания Сведения о документе-основании. Используется в счете-фактуре для указания реквизитов накладной/акта. В случае отправки счета-фактуры отдельным пакетом при загрузке на стороне получателя производится поиск документа основания по данным реквизитам.
ОснованиеНомер Номер документа-основания
ПРД Сведения о платежно-расчетных документах Используется если данные хранятся одной произвольной строкой и нет возможности записать отдельно дату и номер, как предусмотрено форматом счета-фактуры.
РСчетПокуп Расчетный счет покупателя Используются в документах, где по формату не предусмотрены банковские реквизиты.
РСчетПост Расчетный счет поставщика
РСчетГрузОтпр Расчетный счет грузоотправителя
РСчетГрузПолуч Расчетный счет грузополучателя
Срок Срок поставки товара Используется в документах, где данный реквизит не предусмотрен форматом
СФДата Дата счета-фактуры Сведения о счете-фактуре, для которого текущий документ является основанием.
СФНомер Номер счета-фактуры
ТТНДата Дата товарно-транспортной накладной Сведения о товарно-транспортной накладной
ТТННомер Номер товарно-транспортной накладной
Параметры табличной части документа
GTIN GTIN товара Глобальный номер товара (Global Trade Item Number; GTIN) предназначен для уникальной идентификации продукта в торговле. Данный параметр необходимо заполнять при обмене EDI.
Брутто Масса брутто Используется в документах, где форматом не предусмотрено указание массы брутто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
КолМест Количество мест (упаковок) Используется в документах, где форматом не предусмотрено указание количества мест, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
Кол_во Количество Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Кол_во.
НаимПроизв Наименование производителя Сведения об алкогольной продукции
ИННПроизв ИНН производителя
КПППроизв КПП производителя
КодВидаАлкПрод Код вида алкогольной продукции по классификатору
Нетто Масса нетто Используется в документах, где форматом не предусмотрено указание массы нетто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом.
Площадь Площадь объекта
Цена Цена Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом, либо при необходимости указать цену, включающую НДС. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Цена.
Визуализация дополнительной информации

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

  • ИнфШапка - значение параметра отображается в шапке документа
  • ИнфПередТабл - значение параметра отображается перед табличной частью документа
  • ИнфПослеТабл - значение параметра отображается после табличной части документа
  • ИнфПодвал - значение параметра отображается в подвале документа

ВизуализацияДопИнформации.png

Например, клиент хочет в счет-фактуре перед табличной частью видеть название договора. В этом случае в пользовательский файл настроек добавляется параметр "ИнфПередТабл":

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мФайл Имя="СчФктр">
        <мПараметр Имя="ИнфПередТабл">
             <Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
             <Параметр_Значение>[Договор].Наименование</Параметр_Значение>
        </мПараметр>
    </мФайл>
</ини>

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

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мФайл Имя="СчФктр">
        <ДоговорНаименование>[Договор].Наименование</ДоговорНаименование>
        <мПараметр Имя="ИнфПередТабл">
             <Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
             <Параметр_Значение>{сбисИнфПередТаблСФ()}</Параметр_Значение>
        </мПараметр>
    </мФайл>
</ини>

Внешняя функция будет выглядеть следующим образом:

&НаКлиенте
Функция сбисИнфПередТаблСФ(Контекст) Экспорт
	Возврат "<b>"+Контекст.ДоговорНаименование+"</b>";
КонецФункции

В результате получим печатную форму:

SFInfPeredTabl.jpg

Изменение загрузки документа

Чаще всего при загрузке документов возникает необходимость дозаполнить какие-то реквизиты документа, которые при загрузке остались пустыми, т.к. в электронном документе присутствуют далеко не все данные, которые есть в документе 1С.

Самый простой пример - всегда при загрузке писать в комментарии документа "Загружен с online.sbis.ru". Для этого в пользовательский файл настроек добавляем строку (соблюдая структуру основного файла настроек):

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мДокумент Имя="ПоступлениеТоваровУслуг">
        <Документ_Комментарий Вычислить="'Загружен с online.sbis.ru'">[Документ].Комментарий</Документ_Комментарий>
    </мДокумент>
</ини>

Немного сложнее - хотим в загружаемом документе заполнять реквизит "ПодразделениеОрганизации", который ссылается на справочник "ПодразделенияОрганизаций", всегда одним и тем же значением - Основным подразделением.

Для этого смотрим код этого подразделения в справочнике 1С. Пусть это будет код "000000001".

В пользовательский файл настроек необходимо добавить две строки (соблюдая структуру основного файла настроек):

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мДокумент Имя="ПоступлениеТоваровУслуг">
        <ПодразделениеОрганизаций Отбор_Код="'000000001'">Справочник.ПодразделенияОрганизаций</ПодразделениеОрганизаций>
        <Документ_ПодразделениеОрганизации Вычислить="[ПодразделениеОрганизаций]">[Документ].ПодразделениеОрганизации</Документ_ПодразделениеОрганизации>
    </мДокумент>
</ини>

Данная запись означает, что в справочнике "ПодразделенияОрганизаций" будет выбрана запись с кодом "000000001" и полученным значением будет заполнен реквизит документа "ПодразделениеОрганизации".

Аналогично можно заполнить реквизит определенным значением перечисления. Например, в документе поступления в 1С есть реквизит "ВариантРасчетаНДС", который выбирается из перечислений "ВариантыРасчетаНДС". Чтобы заполнить данный реквизит при загрузке документа значением перечисления "ВСумме" делаем пользовательский файл настроек:

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мДокумент Имя="ПоступлениеТоваровУслуг">
        <ВариантыРасчетаНДС>Перечисление.ВариантыРасчетаНДС</ВариантыРасчетаНДС>
        <ВариантРасчетаНДС Вычислить="[ВариантыРасчетаНДС].ВСумме">[Документ].ВариантРасчетаНДС</ВариантРасчетаНДС>
    </мДокумент>
</ини>

Более сложный вариант, когда реквизит надо заполнить не просто каким-то определенным значением перечисления, справочника или константой, а произвести определенные вычисления. В этом случае реквизит определяется с помощью функции, которую мы должны описать в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf". Например, в загружаемом документе мы хотим заполнить "Ответственного" в зависимости от текущего пользователя. Для этого в файле настроек пишем:

<?xml version="1.0" encoding="utf-8"?>
<ини>
    <мДокумент Имя="ПоступлениеТоваровУслуг">
        <Ответственный Вычислить="{сбисОпределитьОтветственного()}">[Документ].Ответственный</Ответственный>
    </мДокумент>
</ини>

А в обработке "ВнешниеФункции_Клиент.epf" описываем функцию сбисОпределитьОтветственного(), которая в зависимости от тех или иных условий должна вернуть нужную нам запись справочника "Пользователи".

Пользовательские фильтры в реестрах Продажа/Покупка

Документы в разделах внешней обработки Продажа и Покупка можно фильтровать по нескольким параметрам:

  • период
  • статус
  • организация
  • контрагент

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

Добавление пользовательского фильтра состоит из двух шагов:

  • Создание формы фильтра во ВнешниеФункции_Клиент.epf
  • Добавление условие отбора по новому параметру фильтра в запрос в файле настроек

Создание пользовательской формы фильтра

Имя пользовательской формы фильтра формируется по шаблону: "Фильтр_Раздел_[Название раздела]_[Имя настройки]", где название раздела - это "Продажа" или "Покупка", а имя настройки - имя файла настроек, на основании которого строится данный реестр документов (без префикса и расширения).

Если фильтр добавляется для всех реестров раздела Продажа, то форму нужно назвать "Фильтр_Раздел_Продажа_Шаблон". Если фильтр добавляется для одного типа документов, например, для Оказания услуг, то форма называется соответственно "Фильтр_Раздел_Продажа_ОказаниеУслуг".

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

Управляемые формы

Необходимо скопировать из основной обработки форму "ФормаУстановкиФильтра" во ВнешниеФункции_Клиент.epf и переименовать ее(по шаблону, описанному выше). Теперь при открытии фильтра из соответствующего реестра обработки будет открываться именно эта форма, а не стандартная.

Далее на форму добавляем реквизит, в нашем случае "ФильтрДоговор" с типом "СправочникСсылка.ДоговорыКонтрагентов" и соответствующее поле в интерфейсе формы: ПользовательскийФильтрУФ.jpg

В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра:

&НаКлиенте
Функция сбисСписокДопПараметровФильтра() Экспорт
	СписокДопЭлементов = Новый СписокЗначений;
	СписокДопЭлементов.Добавить("ФильтрДоговор");
	Возврат СписокДопЭлементов
КонецФункции

В процедуре "ПриОткрытии" добавляем чтение дополнительных параметров фильтра из объекта Кэш.ПараметрыФильтра (Кэш - общая переменная формы "ФормаГлавноеОкно" обработки):

Для Каждого Элемент Из ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра Цикл
	ЭтаФорма[Элемент.Ключ] = Элемент.Значение;
КонецЦикла;

В процедуре "Отобрать" добавляем запись дополнительных параметров фильтра в Кэш.ПараметрыФильтра. В нашем случае:

ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра.Вставить("ФильтрДоговор",ФильтрДоговор);

И при необходимости в процедуре "ФильтрОчистить" добавляем очистку дополнительных параметров фильтра.

Обычные формы

Создаем во ВнешниеФункции_Клиент.epf форму, называем ее по шаблону, описанному выше.

В основной обработке открываем форму "ФормаГлавноеОкно", копируем из нее "ПанельУстановкиФильтра": ПользовательскийФильтрОФ.jpg

Вставляем скопированную панель в пользовательскую форму. Немного растягиваем панель вниз и на свободное место добавляем поле "ФильтрДоговор" и надпись к нему:

ПользовательскийФильтрОФ2.jpg

В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра, включая надписи:

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

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

Добавление условия в запрос

Чтобы пользовательский фильтр участвовал в отборе документов, необходимо добавить условие с новым параметром в запрос списка документов. Имя параметра соответствует имени поля, которое мы добавили в пользовательскую форму фильтра. В нашем случае - это "ФильтрДоговор".

Как обычно все изменения делаются в пользовательском файле настроек. Выносим в него параметр "ЗапросСпискаДокументов" с текстом запроса из основного файла настроек. В условия отбора добавляем договор:

...
ИЗ 	
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 		
ГДЕ 
	(РеализацияТоваровУслуг.ДоговорКонтрагента = &amp;ФильтрДоговор или &amp;ФильтрДоговор=Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))
	И ((РеализацияТоваровУслуг.Дата МЕЖДУ &amp;ДатаНач И &amp;ДатаКон) ИЛИ (НЕ &amp;ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата &gt; &amp;ДатаНач)) 
	И ((РеализацияТоваровУслуг.Контрагент = &amp;Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&amp;Контрагент)) ИЛИ (НЕ &amp;ЗначениеКонтрагентЗаполнено)) 
	И ((РеализацияТоваровУслуг.Организация = &amp;ТекущаяОрганизация) ИЛИ (НЕ &amp;ЗначениеТекущаяОрганизацияЗаполнено))
	И ((РеализацияТоваровУслуг.Ссылка = &amp;ТекущийДокумент)  ИЛИ (НЕ &amp;ЗначениеТекущийДокументЗаполнено))
	И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
...