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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Новая страница: «==Общее описание== Внешняя обработка обмена электронными документами для 1С позволяет вы…»)
(нет различий)

Версия 08:49, 29 января 2015

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

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

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

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

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

1. Файл внешней обработки СБиС коннектор для 1С 8.2.epf или СБиС коннектор для 1С 8.1.epf 2. Каталоги с ini-файлами для различных конфигураций

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

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

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

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

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

  1. Настроить каталог обмена на ту же папку, что и СБиС Коннект.

Структура файла настроек

Имя файла

Название файла складывается из: • Префикс «СБиС_коннектор_» • Названия технологии работы с документами («Взаиморасчеты», «Реализация», «ОказаниеУслуг», «Поступление») • Суффикс, обозначающий особенности конкретного ini файла («Кор», «АктПроизУсл»). Суффикс не всегда присутствует в названии. • Постфикс – добавляется к имени файла, если типовой ini-файл изменяется под пользовательскую конфигурацию. Ini-файлов, относящихся к определенной технологии, может быть несколько, например: СБиС_коннектор_Реализация.ini, СБиС_коннектор_РеализацияАктПроизУсл.ini, СБиС_коннектор_РеализацияКор.ini. Таким образом, если, например, документы реализации клиента хранятся в нескольких реестрах, все они будут выведены на вкладку «Реализация».

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

Каждая строка ini-файла представляет собой следующую конструкцию: ИмяПеременной = ЗначениеПеременной // Комментарий Комментарий может быть пустым, но два слеша, отделяющих его, должны обязательно присутствовать. Переменные могут определяться следующими способами.

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

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

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

РеализацияКомментарий = [Реализация].Комментарий [Реализация] – использование ранее предопределенной переменной

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

Выбор документов из базы выполняется с помощью запроса. Текст запроса прописывается в переменную «ТекстЗапроса», например: ТекстЗапроса = " ВЫБРАТЬ Документ.РеализацияТоваровУслуг.Ссылка КАК Реализация, Документ.РеализацияТоваровУслуг.Дата, Документ.РеализацияТоваровУслуг.Номер, Документ.РеализацияТоваровУслуг.Контрагент КАК Контрагент, Документ.РеализацияТоваровУслуг.СуммаДокумента КАК Сумма, СвязьДокументов.Ссылка КАК СчетФактура ИЗ Документ.РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ Документ.СчетФактураВыданный.ДокументыОснования.Ссылка, Документ.СчетФактураВыданный.ДокументыОснования.ДокументОснование ИЗ Документ.СчетФактураВыданный.ДокументыОснования ГДЕ Документ.СчетФактураВыданный.ДокументыОснования.Ссылка.Проведен = ИСТИНА) КАК СвязьДокументов ПО Документ.РеализацияТоваровУслуг.Ссылка = СвязьДокументов.ДокументОснование ГДЕ (Документ.РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон) И (Документ.РеализацияТоваровУслуг.Проведен = ИСТИНА) И ( (Документ.РеализацияТоваровУслуг.Контрагент = &Контрагент) ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено)) УПОРЯДОЧИТЬ ПО СчетФактура, Документ.РеализацияТоваровУслуг.Дата" // Текст запроса для реализации Текст запроса формируется по правилам 1С. Назначения блоков: • «ИЗ» - таблица, из которой выбираются данные • «ВЫБРАТЬ» - выбираемые поля • «ГДЕ» - условие выбора • «КАК» - присвоение логического имени для более простой адресации • «УПОРЯДОЧИТЬ ПО» - правила сортировки Результатом запроса является таблица, поля который должны соответствовать таблице, получаемой запросом из типового ini-файла (например, Контрагента нельзя переименовывать в Клиента).

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

КонтрагентРасчСчет = {ВозвратБанковскихРеквизитов(Контрагент,'Контрагенты','НомерСчета')} Функция описана в модуле внешней обработки. ВозвратБанковскихРеквизитов — имя функции; Контрагент — ранее определенная переменная 'Контрагенты' — строковая константа НовыйАдресКонтрагента = {СоздатьАдрес(*)} Параметр * - говорит о том, что функция содержит стандартный набор параметров и их менять НЕЛЬЗЯ. Текст функций формируется по правилам 1С.

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

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

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

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

Настройка

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

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

Диагностика

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

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

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

Диагностика

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

В то же время в реквизитах табличной части Товары Номенклатура тоже присутствует.

Следовательно, изменяем ini-файл следующим образом: РеализацияТоварыНомерГТД1 = [РеализацияТоварыНоменклатура 1].НомерГТД // Номер ГТД товара


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

Диагностика

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

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

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

<РегСвед>

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

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

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

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

Решение

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

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

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

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

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

пишем

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

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

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

Диагностика

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

Решение

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

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