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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Выбор документов (запрос к базе))
(Обращение к данным через функцию, описанную в обработке)
Строка 218: Строка 218:
 
===Обращение к данным через функцию, описанную в обработке===
 
===Обращение к данным через функцию, описанную в обработке===
  
КонтрагентРасчСчет = {ВозвратБанковскихРеквизитов(Контрагент,'Контрагенты','НомерСчета')}
+
<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
Функция описана в модуле внешней обработки.  
+
Функция описана в модуле формы РаботаСДокументами1С внешней обработки.
ВозвратБанковскихРеквизитов — имя функции;
+
сбисВычислитьЦену— имя функции;
Контрагент — ранее определенная переменная
+
Функции, вызываемые из файла настроек, всегда имеют один параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.
'Контрагенты' — строковая константа
 
НовыйАдресКонтрагента = {СоздатьАдрес(*)}
 
Параметр * - говорит о том, что функция содержит стандартный набор параметров и их менять НЕЛЬЗЯ.
 
Текст функций формируется по правилам 1С.
 
  
 
===Обращение к данным через функцию, описанную в обработке ВнешниеФункции_Клиент.epf===
 
===Обращение к данным через функцию, описанную в обработке ВнешниеФункции_Клиент.epf===

Версия 17:19, 27 февраля 2015

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
  2. Запустить обработку.
  3. При запуске обработка сама попытается найти каталог с ini-файлами для данной конфигурации и заполнить поле «Каталог настроек». Если после открытия это поле осталось пустым, то необходимо вручную выбрать каталог с настройками, соответствующими конфигурации 1С.

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

  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

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

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

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

Имя файла

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

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

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

Файлы настроек загрузки для каждого типа электронного документа

Имя файла

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

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

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

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

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

Документ.РеализацияТоваровУслуг – обращение к данным из базы

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

<Документ_Номер>[Документ].Номер</Документ_Номер>

[Документ] – использование ранее предопределенной переменной

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

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

ОБЪЕДИНИТЬ ВЫБРАТЬ ВТ_Реализация.Ссылка КАК Документ, ВТ_Реализация.Проведен КАК ДокументПроведен, ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления, ВТ_Реализация.Дата КАК ДатаДокумента, ВТ_Реализация.Номер КАК НомерДокумента, ВТ_Реализация.Контрагент КАК Контрагент, ВТ_Реализация.Организация КАК Организация, ВТ_Реализация.Комментарий КАК Комментарий, ВТ_Реализация.Склад КАК Склад, ВТ_Реализация.СуммаДокумента КАК СуммаДокумента, СвязьДокументов.Ссылка КАК Приложение, СвязьДокументов.Ссылка.СуммаДокумента КАК СуммаПриложения, СвязьДокументов.Ссылка.Дата КАК ДатаПриложения, СвязьДокументов.Ссылка.Номер КАК НомерПриложения, ЗначенияСвойствОбъектов.Значение КАК СтатусЭД ИЗ ВТ_Реализация ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СвязьДокументов ПО ВТ_Реализация.Ссылка = СвязьДокументов.ДокументОснование ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус" УПОРЯДОЧИТЬ ПО ДатаДокумента, НомерДокумента'</ЗапросСпискаДокументов>

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

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

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

Обращение к данным через функцию, описанную в обработке

<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена> Функция описана в модуле формы РаботаСДокументами1С внешней обработки. сбисВычислитьЦену— имя функции; Функции, вызываемые из файла настроек, всегда имеют один параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.

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

При необходимости переопределения каких-то переменных через новую функцию создается внешний обработчик "ВнешниеФункции_Клиент.epf" и в нем описываются пользовательские функции. При этом в ini-файле перед именем функции мы пишем «ВО.» КонтрагентТелефоны = {ВО.сбисПолучитьТелефон(Контрагент,'Контрагента')} // Файл "ВнешниеФункции_Клиент.epf" должен находиться в каталоге настроек, указанном на вкладке «Настройка». Обращение к данным через формулу РеализацияСуммаВключаетНДС = ^Истина Истина — логическое выражение. *Выражение может быть логическим и математическим. Число является частным случаем формулы

Обращение к данным через строковые константы

НашаОрганизацияПодписант = 'Петров Сергей Сергеевич' * пустая строка вида говорит, что эти данные не ведутся. Особые переменные, участвующие в условиях: Переменные: КонтрагентЮрФизЛицо, ГрузополучательЮрФизЛицо, ГрузоотправительЮрФизЛицо, НашаОрганизацияЮрФизЛицо — участвуют в условиях, описанных в обработчике при записи в файл реквизитов участников обмена, и должны иметь вид «Физ. лицо» или «Юр. лицо». Если представление в конфигурации не соответствует этому виду, то переменные необходимо переопределить через внешнюю функцию.

Настройка

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

В конфигурации поля названы по-другому

Диагностика

При этом в ini файле указана строка: Реализация = Документ.АктОбОказанииПроизводственныхУслуг // Документ реализация товаров и услуг РеализацияСуммаДокумента = [Реализация].Сумма Т.о., мы понимаем, что в БД у документа АктОбОказанииПроизводственныхУслуг нет поля Сумма

Решение

Открываем конфигурации в конфигураторе 1С (Конфигуратор/Верхнее меню/Конфигурация/Открыть конфигурацию)

В открывшемся окне на Документе/АктОбОказанииПроизводственныхУслуг/Реквизиты видим, что поле называется «СуммаДокумента»

Config vo2 001.png

Изменяем пользовательский файл настроек ... имя файла

РеализацияСуммаДокумента = [Реализация].СуммаДокумента

В конфигурации поля хранятся по-другому

Диагностика

При этом в ini файле указано: Реализация = Документ.РеализацияТоваровУслуг // Документ реализация товаров и услуг РеализацияТовары1 = [Реализация].ТабличныеЧасти.Товары // Табличная часть РеализацияТоварыНомерГТД1 = [РеализацияТовары1].НомерГТД // Номер ГТД товара Т.о. мы понимаем, что в БД у документа реализации в табличной части Товары либо нет поля НомерГТД, либо его тип не соответствует типу в стандартной конфигурации.

Решение

Открываем конфигурацию

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

Config vo2 002.png

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

Config vo2 003.png

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

РеализацияТоварыНомерГТД1 = [РеализацияТоварыНоменклатура 1].НомерГТД // Номер ГТД товара

В конфигурации другие значения перечислений

Диагностика

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

Как уже говорилось в разделе «Структура ini файла» существуют особые переменные (КонтрагентЮрФизЛицо, ГрузополучательЮрФизЛицо, ГрузоотправительЮрФизЛицо, НашаОрганизацияЮрФизЛицо), от которых зависит формирование в выгружаемом файле сведений об участниках обмена, то есть сформируются сведения о юридическом лице, либо о физическом.

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

<РегСвед>

	<СведФЛ  ИННФЛ="4908962257">

<ФИО Фамилия="ООО" Фамилия="Солнышко"> При этом в ini файле указана строка:

НашаОрганизацияЮрФизЛицо = [НашаОрганизация].ЮрФизЛицо

Т.о. мы понимаем, что в БД в справочнике Организации реквизит ЮрФизЛицо не принимает значение «Юр. лицо»

Решение

  • Открываем описание конфигурации в конфигураторе (Конфигуратор/Верхнее меню/Конфигурация/Открыть конфигурацию)
  • В открывшемся окне находим реквизит Справочники/Организации/Реквизиты/ЮрФизЛицо, двойным щелчком открываем его свойства и видим, что оно ссылается на перечисления:

Config vo2 004.png

  • В окне конфигурации переходим в Перечисления, находим там ЮрФизЛицо и смотрим, какие значения может принимать этот реквизит. Например, значения следующие: Организация и ФизЛицо
  • Нам необходимо переопределить переменную в ini-файле через функцию.

В файле ВнешниеФункции_Клиент.epf описываем функцию:

Функция ТипЛица(Организация) Экспорт Если Организация.ЮрФизЛицо = Перечисления.ЮрФизЛицо.Организация Тогда возврат "Юр. лицо" иначе возврат "Физ. лицо" конецЕсли КонецФункции

И соответственно в ini-файле вместо

НашаОрганизацияЮрФизЛицо = [НашаОрганизация].ЮрФизЛицо

пишем

НашаОрганизацияЮрФизЛицо = {ВО.ТипЛица(НашаОрганизация)}

Файл ВнешниеФункции_Клиент.epf необходимо положить в каталог конфигурации (где лежат стандартные ini файлы и стандартные Внешние функции)

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

Диагностика

Может быть выдано сообщение «Запрос построен неверно» или даже без сообщений об ошибках в реестр обработки не будут попадать нужные документы.

Решение

Корректируем текст запроса к БД

В разделе «ИЗ» и других разделах указываем название нужного реестра документов, например, вместо типового реестра «РеализацияТоваровУслуг» указываем реестр «РеализацияТоваров» Название реестра берем из описания конфигурации, как открыть описание – см. предыдущий раздел.