Настройка внешней обработки СБИС для 1С 8.х
Содержание
- 1 Общее описание
- 2 Состав обработки
- 3 Основные принципы настройки
- 4 Первый запуск обработки
- 5 Файлы настроек (инишки)
- 6 Описание параметров в файлах настроек
- 7 Исправление ошибок в настройках
- 8 Настройка
- 9 Пользовательские фильтры в реестрах Покупка/Продажа
Общее описание
Внешняя обработка обмена электронными документами для 1С позволяет выгружать файлы документов реализации и актов сверки взаиморасчетов для последующей отправки их контрагентам, а также загружать файлы, присланные контрагентами. Все потребительские настройки выведены в интерфейс обработки, здесь рассматриваются вопросы адаптации внешней обработки под нестандартные конфигурации или особые пожелания клиентов.
Почему возникает необходимость настройки?
Конфигурации 1С зачастую изменяются пользователями, в результате таблицы, поля, предусмотренные в типовой конфигурации, могут называться по-другому, или вообще отсутствовать.
Что можно настраивать в внешней обработке?
Что можно настраивать | Уровень знаний |
---|---|
Отправка документов | |
Добавление не поддерживаемого реестра документов в раздел Продажа | Средний |
Содержание реестров документов в раздела Продажа | Средний |
Список документов 1С которые необходимы для формирования одного пакета документов | Средний |
Параметры фильтрации списка документов для каждого реестра | Продвинутый |
Какие электронные документы будут сформированы из документа 1С | Средний |
Изменить источники данных для реквизитов электронных документов | Начальный |
Добавить новые реквизиты в стандартные электронные документы | Начальный |
Описать условия заполнения реквизитов электронных документов | Продвинутый |
Описать условия формирования пакета документов | Продвинутый |
Добавить к пакету документов не формализованный xls или pdf документ сформированный из макета документа 1С | Средний |
Загрузка документов | |
Определить какие электронные документы можно загружать в 1С | Средний |
Определить какие документы 1С можно создать из электронного документа | Средний |
Определить какие реквизиты документа 1С будут заполнены | Начальный |
Описать условия заполнения реквизитов документа 1С | Продвинутый |
Состав обработки
Обработка состоит из одного файла:
- для толстого клиента ....
- для управляемых форм ....
Файл обработки при запуске распаковывает на диск:
- ActiveX компонент который отвечает за взаимодействие с СБИС через https
- Конфигурационные XML файлы описывающие источники данных необходимые для работы обработки.
Обработка может быть дополнена пользовательской обработкой ВнешниеФункции_Клиент.epf.
Основные принципы настройки
- Код самой обработки ни при каких условиях не изменяется.
- Конфигурационные файлы выгружаемые обработкой ни при каких условиях не изменяются.
- Вся настройка производится в пользовательских конфигурационных файлах путем переопределения параметров, либо добавления новых.
- При необходимости написать функцию для получения какого либо значения или изменения алгоритма выгрузки создается пользовательская обработка "ВнешниеФункции_Клиент.epf" в которой переопределяются имеющихся функции или создаются новые. Обработка "ВнешниеФункции_Клиент.epf" должна лежать в каталоге настроек.
Первый запуск обработки
- Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
- Запустить обработку.
- При запуске обработка сама попытается найти каталог с ini-файлами для данной конфигурации и заполнить поле «Каталог настроек». Если после открытия это поле осталось пустым, то необходимо вручную выбрать каталог с настройками, соответствующими конфигурации 1С.
В результате на обработке появятся вкладки «Реализация», «Оказание услуг», «Взаиморасчеты», «Поступление» (или часть из них в зависимости от типа и версии конфигурации). Если конфигурация клиента нестандартная в Служебных сообщениях появится список ошибок – говорящих о том, что в базе данных нет каких-то полей или они заданы неверно.
- Настроить каталог обмена на ту же папку, что и СБиС Коннект.
Файлы настроек (инишки)
У 1С есть множество разнообразных конфигураций, которые могут заметно отличаться друг от друга по способу хранения данных. Для того, чтобы не делать отдельную обработку под каждую конфигурацию, или не делать кучу условий внутри одной обработки, мы используем файлы настроек, которые говорят обработке, где в текущей конфигурации хранится необходимое значение.
Файлы настроек, это xml файлы определенного формата. По старой традиции мы их называем инишками (в внешней обработке первой версии, это были ini файлы).
Для каждой конфигурации делается отдельный набор инишек. Для наиболее популярных конфигураций готовые наборы инишек (стандартные) уже включены в обработку.
Если обработка при запуске определила, что у Вас одна из поддерживаемых версий 1С, то она автоматически установит нужный набор инишек.
Стандартные инишки автоматически обновляются вместе с обработкой, именно поэтому их нельзя редактировать. Для внесения исправлений в стандартные инишки реализован механизм Пользовательских файлов настроек (пользовательских инишек). Если кратко, то при каждом запуске обработки содержимое пользовательской инишки накладывается сверху на стандартную.
Как было сказано ранее, для каждой конфигурации делается отдельный набор файлов настроек. Данный набор состоит из:
Файл настроек конфигурации
В данном файле описаны общие параметры, необходимые для работы обработки
Имя файла
Название файла формируется по шаблону «ВО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С есть специальные справочники или регистры сведений для хранения сопоставления номенклатуры. Запись
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Регистры'</ФормаРаботыСНоменклатуройПоставщика>
означает, что сопоставление номенклатуры будет храниться в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов"). Минус такого варианта в том, что в большинстве конфигураций данный регистр не позволяет сопоставить нескольком видам номенклатуры контрагента одну и ту же карточку своей номенклатуры.
Запись
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Справочники'</ФормаРаботыСНоменклатуройПоставщика>
означает, что сопоставление номенклатуры будет храниться в справочнике (обычно справочник называется "НоменклатураПоставщиков").
При суммовом учете в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента сопоставляется одна и та же карточка номенклатуры в нашей системе. В этом случае необходимо указать форму работы с номенклатурой 'СопоставлениеНоменклатуры_СуммовойУчет'. Для определения, какая именно карточка номенклатуры будет сопоставлена со всей номенклатурой контрагента, необходимо добавить параметр "СуммовойУчетКодНоменклатуры", в котором указать в одинарных кавычках код номенклатуры:
<СуммовойУчетКодНоменклатуры>'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С, определяется файлами настроек для загрузки.
Имя файла
Название файла формируется по шаблону «ВО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С. Выбранные документы отображаются в определенном подразделе разделов Продажа или Покупка. Запросом определяется состав документов, отправляемых контрагенту одним комплектом.
Результатом выполнения запроса является таблица, с определенным набором полей:
- Документ - основной документ комплекта
- ДокументПроведен - признак проведения документа, используется при отображении пиктограммы документа в реестре
- ДокументПометкаУдаления - признак удаления документа, используется при отображении пиктограммы документа в реестре
- ДатаДокумента - дата документа, отображается в реестре документов
- НомерДокумента - номер документа, отображается в реестре документов
- Контрагент - название контрагента, отображается в реестре документов
- Организация - название организации, отображается в реестре документов
- Комментарий - комментарий документа, отображается в реестре документов
- Склад - склад документа, отображается в реестре документов
- СуммаДокумента - сумма документа, отображается в реестре документов
- Приложение - документ, связанный с основным документом комплекта
- СуммаПриложения - сумма связанного документа
- ДатаПриложения - дата связанного документа
- НомерПриложения - номер связанного документа
- СтатусЭД - статус электронного документа (заполнен, если документ уже отправлен в электронном виде), отображается пиктограммой в реестре документов
Дополнительно могут быть заполнены поля:
- ФайлНастроекДокумента - название файла настроек, который будет использован при выгрузке основного документа комплекта (без префиксов и расширения, например, "СчетФактураНаАванс")
- ФайлНастроекПриложения - название файла настроек, который будет использован при выгрузке документа-приложения (без префиксов и расширения)
При обработке результата запроса записи группируются по основному документу, таким образом мы получаем запись с одним основным документом и несколькими приложениями - все это при отправке контрагенту попадет в один комплект документов. Наглядно это можно увидеть, открыв карточку документа из реестров в разделах Продажа или Покупка.
Запрос содержит стандартный набор параметров:
- ДатНач - начальная дата, с которой запрашиваются документы
- ДатКон - конечная дата, по которую запрашиваются документы
- Контрагент - контрагент, по которому отбираются документы
- ЗначениеКонтрагентЗаполнено - признак заполненности фильтра по контрагенту
- ТекущаяОрганизация - организация, по которой отбираются документы
- ЗначениеТекущаяОрганизацияЗаполнено - признак заполненности фильтра по организации
- ТекущийДокумент - определенный документ (заполняется при использовании внешней обработки, как внешней печатной формы определенного документа)
- ЗначениеТекущийДокументЗаполнено - признак заполненности параметра ТекущийДокумент
Значения параметров берутся из фильтра, установленного в интерфейсе обработки.
Могут быть установлены дополнительные параметры при использовании пользовательских фильтров (см. раздел про пользовательские фильтры)
Текст запроса прописывается в параметр <ЗапросСпискаДокументов>, например:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РеализацияТоваровУслуг.Ссылка,
РеализацияТоваровУслуг.Проведен,
РеализацияТоваровУслуг.ПометкаУдаления,
РеализацияТоваровУслуг.Дата,
РеализацияТоваровУслуг.Номер,
РеализацияТоваровУслуг.Контрагент.Наименование КАК Контрагент,
РеализацияТоваровУслуг.Организация.Наименование КАК Организация,
ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1000)) КАК Комментарий,
РеализацияТоваровУслуг.Склад.Наименование КАК Склад,
РеализацияТоваровУслуг.СуммаДокумента,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю КАК Приложение,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаПриложения,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Дата КАК ДатаПриложения,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Номер КАК НомерПриложения
ПОМЕСТИТЬ ВТ_Реализация
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
((РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон) ИЛИ (НЕ &ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата > &ДатаНач))
И ((РеализацияТоваровУслуг.Контрагент = &Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&Контрагент)) ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено))
И ((РеализацияТоваровУслуг.Организация = &ТекущаяОрганизация) ИЛИ (НЕ &ЗначениеТекущаяОрганизацияЗаполнено))
И ((РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент) ИЛИ (НЕ &ЗначениеТекущийДокументЗаполнено))
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
ВЫБРАТЬ
ВТ_Реализация.Ссылка КАК Документ,
ВТ_Реализация.Проведен КАК ДокументПроведен,
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
ВТ_Реализация.Дата КАК ДатаДокумента,
ВТ_Реализация.Номер КАК НомерДокумента,
ВТ_Реализация.Контрагент КАК Контрагент,
ВТ_Реализация.Организация КАК Организация,
ВТ_Реализация.Комментарий КАК Комментарий,
ВТ_Реализация.Склад КАК Склад,
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
ВТ_Реализация.Приложение КАК Приложение,
ВТ_Реализация.СуммаПриложения КАК СуммаПриложения,
ВТ_Реализация.ДатаПриложения КАК ДатаПриложения,
ВТ_Реализация.НомерПриложения КАК НомерПриложения,
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ
ВТ_Реализация
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
ГДЕ
НЕ ВТ_Реализация.Приложение = ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ВТ_Реализация.Ссылка КАК Документ,
ВТ_Реализация.Проведен КАК ДокументПроведен,
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
ВТ_Реализация.Дата КАК ДатаДокумента,
ВТ_Реализация.Номер КАК НомерДокумента,
ВТ_Реализация.Контрагент КАК Контрагент,
ВТ_Реализация.Организация КАК Организация,
ВТ_Реализация.Комментарий КАК Комментарий,
ВТ_Реализация.Склад КАК Склад,
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
СвязьДокументов.Ссылка КАК Приложение,
СвязьДокументов.Ссылка.СуммаДокумента КАК СуммаПриложения,
СвязьДокументов.Ссылка.Дата КАК ДатаПриложения,
СвязьДокументов.Ссылка.Номер КАК НомерПриложения,
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ
ВТ_Реализация
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СвязьДокументов
ПО ВТ_Реализация.Ссылка = СвязьДокументов.ДокументОснование
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
УПОРЯДОЧИТЬ ПО
ДатаДокумента, НомерДокумента
Текст запроса формируется по правилам 1С. Назначения блоков:
- «ИЗ» - таблица, из которой выбираются данные
- «ВЫБРАТЬ» - выбираемые поля
- «ГДЕ» - условие выбора
- «КАК» - присвоение логического имени для более простой адресации
- «УПОРЯДОЧИТЬ ПО» - правила сортировки
В приведенном примере в один комплект попадают 3 документа - Реализация товаров и услуг, Счет на оплату покупателю и Счет-фактура выданный.
Обращение к данным через функцию, описанную в обработке
<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
сбисВычислитьЦену— имя функции, она описана в модуле формы "РаботаСДокументами1С" внешней обработки.
Функции, вызываемые из файла настроек, всегда имеют один параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.
При необходимости можно переопределить данную функцию под клиента. Для этого создается внешняя обработка "ВнешниеФункции_Клиент.epf", в ней создается форма "РаботаСДокументами1С" и в модуле этой формы описывается указанная функция.
Обращение к данным через строковые константы
<Файл_Формат>'ЭДОНакл'</Файл_Формат>
Строковая константа заключается в одинарные кавычки
Атрибуты в файлах настроек
Атрибут "Имя" используется для именования множественных узлов. Например, <мСторона Имя="Грузоотправитель">.
Атрибут "Формат" используется для приведения значения параметра к определенному формату. Например, запись
<ТаблДок_Кол_во Формат="ЧЦ=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". Любые изменения производятся только в пользовательском файле, так как стандартные файлы настроек обновляются при обновлении обработки.
Если ошибок несколько, то начинаем исправлять их по-одной. Возможно, при исправлении значения одного параметра, другие ошибки пропадут сами, т.к. параметры связаны между собой. После исправления ошибки закрываем протокол проверки, нажимаем кнопку "Проверить настройки" в обработке и смотрим, остались ли еще ошибки. И так далее, пока не будут исправлены все ошибки.
В конфигурации реквизит назван по-другому
Диагностика
В протоколе проверки выдается ошибка:
- Не найден реквизит "Договор".
- Значение параметра: [Документ].Договор
- Полный путь параметра: Документ.РеализацияТоваровУслуг.Договор
- Таблица доступных реквизитов: РеализацияТоваровУслуг
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг нет реквизита Договор.
Решение
В протоколе проверки ищем таблицу РеализацияТоваровУслуг (в тексте ошибки указано название таблицы доступных реквизитов). В таблице ищем реквизит по смыслу похожий на "Договор".
Видим, что есть реквизит "ДоговорКонтрагента". В пользовательском файле настроек вместо параметра [Документ].Договор пишем [Документ].ДоговорКонтрагента.
При наличии доступа в конфигуратор названия реквизитов можно посмотреть там, вместо того, чтобы искать нужную таблицу в протоколе проверки.
В конфигурации реквизит хранится в другом месте
Диагностика
В протоколе проверки выдается ошибка:
- Не найден реквизит "НомерГТД".
- Значение параметра: [ТаблДок].НомерГТД
- Полный путь параметра: Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.НомерГТД
- Таблица доступных реквизитов: Товары
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг в табличной части Товары нет реквизита НомерГТД.
Решение
В протоколе проверки ищем таблицу Товары. В таблице ищем реквизит по смыслу похожий на "НомерГТД" - ничего похожего на НомерГТД не видим. Получается, что либо номера ГТД не ведутся вообще, либо хранятся в каком-то другом месте. Логичнее всего, что если его нет в табличной части документа, возможно он есть в карточке номенклатуры. Такую же логику можно применить к единицам измерения: в некоторых конфигурациях они указываются в табличной части документа, а в некоторых - только в карточке номенклатуры.
В протоколе проверки находим таблицу доступных реквизитов номенклатуры (в таблице Товары есть ее название - обычно это "Номенклатура"). Видим, что в номенклатуре есть реквизит НомерГТД, а значит в пользовательском файле настроек мы заменяем значение параметра [ТаблДок].НомерГТД на [Номенклатура].НомерГТД (параметр [Номенклатура] у нас уже определен в стандартном файле настроек)
Аналогичные поиски реквизитов можно выполнять и в конфигураторе (при наличии доступа в него). В открывшемся окне в табличной части Товары документа РеализацияТоваровУслуг ничего похожего на НомерГТД не видим
Спрашиваем у клиента, где они заполняют номера ГТД. В нашем примере номер ГТД хранился не в документе реализации, а в справочнике Номенклатуры.
Более сложный, но самый правильный вариант узнать, где хранится нужный реквизит - это посмотреть модуль печатной формы документа в 1С, чтобы понять, откуда данные выводятся на печать.
Документы хранятся в нестандартном реестре
Диагностика
В протоколе проверки выдается ошибка:
- "Неправильный текст запроса.
- ({(14, 2)}: Таблица не найдена ""Документ.КорректировкаРеализации""
- <<?>>Документ.КорректировкаРеализации КАК КорректировкаРеализации)"
Т.о., мы понимаем, что в БД нет документа КорректировкаРеализации.
Решение
Самый простой вариант, если в данной конфигурации вообще не ведутся документы такого типа. В этом случае просто удаляем и стандартный и пользовательский файлы настроек.
Второй вариант - документы данного типа ведутся, но называются по-другому, например "КорректировкаРеализацииТоваров". В этом случае создаем новый пользовательский файл настроек по имени документа и полностью заполняем его. За основу можно взять стандартный файл корректировки реализации и внести в него необходимые изменения.
Настройка
Бывают случаи, когда ошибок в файлах настроек нет, но клиент хочет чтобы при выгрузке или при загрузке документов определенные реквизиты рассчитывались нестандартным способом.
Изменение выгрузки документа
Изменение выгрузки существующего реквизита
Например, мы хотим, чтобы при выгрузке накладной сумма НДС бралась не из реквизита СуммаНДС табличной части Товары документа Реализация товаров и услуг, а рассчитывалась с помощью функции.
Для этого создаем пользовательский файл настроек. В пользовательском файле не должно быть лишних параметров - только тот, который мы хотим изменить, но должна соблюдаться структура вложенности узлов xml. То есть в нашем случае пользовательский файл будет выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="ЭДОНакл">
<мТаблДок Имя="Товары">
<СуммаНДС>{сбисВычислитьСуммуНДС()}</СуммаНДС>
</мТаблДок>
</мФайл>
</ини>
где сбисВычислитьСуммуНДС() - функция, которую мы должны определить в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf"
Добавление параметра в выгружаемый файл
При необходимости выгрузить какую-то дополнительную информацию по документу, мы добавляем в пользовательский файл настроек параметры. Например, хотим добавить информацию о производителе товара. Информация о нем хранится в номенклатуре. Соответственно параметры добавляем в табличную часть. Пользовательский файл настроек будет выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="ЭДОНакл">
<мТаблДок Имя="Товары">
<Производитель>[Номенклатура].Производитель</Производитель>
<мПараметр Имя="НаимПроизв">
<Параметр_Имя>'НаимПроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].Наименование</Параметр_Значение>
</мПараметр>
<мПараметр Имя="ИННПроизв">
<Параметр_Имя>'ИННПроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].ИНН</Параметр_Значение>
</мПараметр>
<мПараметр Имя="КПППроизв">
<Параметр_Имя>'КПППроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].КПП</Параметр_Значение>
</мПараметр>
</мТаблДок>
</мФайл>
</ини>
В данном случае мы добавили три параметра в табличную часть документа НаимПроизв, ИННПроиз, КПППроизв - наименовании, ИНН, КПП производителя. Данная информация будет присутствовать в выгружаемом файле. При необходимости ее можно вывести в печатную форму документа.
Аналогичным способом можно добавить параметры и в шапку документа.
Изменение загрузки документа
Чаще всего при загрузке документов возникает необходимость дозаполнить какие-то реквизиты документа, которые при загрузке остались пустыми, т.к. в электронном документе присутствуют далеко не все данные, которые есть в документе 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 и переименовать ее(по шаблону, описанному выше). Теперь при открытии фильтра из соответствующего реестра обработки будет открываться именно эта форма, а не стандартная.
Далее на форму добавляем реквизит, в нашем случае "ФильтрДоговор" с типом "СправочникСсылка.ДоговорыКонтрагентов" и соответствующее поле в интерфейсе формы:
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра:
&НаКлиенте
Функция сбисСписокДопПараметровФильтра() Экспорт
СписокДопЭлементов = Новый СписокЗначений;
СписокДопЭлементов.Добавить("ФильтрДоговор");
Возврат СписокДопЭлементов
КонецФункции
В процедуре "ПриОткрытии" добавляем чтение дополнительных параметров фильтра из объекта Кэш.ПараметрыФильтра (Кэш - общая переменная формы "ФормаГлавноеОкно" обработки):
Для Каждого Элемент Из ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра Цикл
ЭтаФорма[Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
В процедуре "Отобрать" добавляем запись дополнительных параметров фильтра в Кэш.ПараметрыФильтра. В нашем случае:
ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра.Вставить("ФильтрДоговор",ФильтрДоговор);
И при необходимости в процедуре "ФильтрОчистить" добавляем очистку дополнительных параметров фильтра.
Обычные формы
Создаем во ВнешниеФункции_Клиент.epf форму, называем ее по шаблону, описанному выше.
В основной обработке открываем форму "ФормаГлавноеОкно", копируем из нее "ПанельУстановкиФильтра":
Вставляем скопированную панель в пользовательскую форму. Немного растягиваем панель вниз и на свободное место добавляем поле "ФильтрДоговор" и надпись к нему:
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра, включая надписи:
Функция сбисСписокДопПараметровФильтра() Экспорт
СписокДопЭлементов = Новый СписокЗначений;
СписокДопЭлементов.Добавить("ФильтрДоговор");
СписокДопЭлементов.Добавить("НадписьДоговор");
Возврат СписокДопЭлементов
КонецФункции
В отличие от управляемых форм, при запуске обработки все поля из данного списка будут скопированы в панель установки фильтра на главном окне, а сама пользовательская форма при работе открываться не будет.
Добавление условия в запрос
Чтобы пользовательский фильтр участвовал в отборе документов, необходимо добавить условие с новым параметром в запрос списка документов. Имя параметра соответствует имени поля, которое мы добавили в пользовательскую форму фильтра. В нашем случае - это "ФильтрДоговор".
Как обычно все изменения делаются в пользовательском файле настроек. Выносим в него параметр "ЗапросСпискаДокументов" с текстом запроса из основного файла настроек. В условия отбора добавляем договор:
...
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
(РеализацияТоваровУслуг.ДоговорКонтрагента = &ФильтрДоговор или &ФильтрДоговор=Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))
И ((РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон) ИЛИ (НЕ &ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата > &ДатаНач))
И ((РеализацияТоваровУслуг.Контрагент = &Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&Контрагент)) ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено))
И ((РеализацияТоваровУслуг.Организация = &ТекущаяОрганизация) ИЛИ (НЕ &ЗначениеТекущаяОрганизацияЗаполнено))
И ((РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент) ИЛИ (НЕ &ЗначениеТекущийДокументЗаполнено))
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
...