Настройка внешней обработки СБИС для 1С 8.х
Содержание
- 1 Общее описание
- 2 Почему возникает необходимость настройки?
- 3 Состав обработки
- 4 Основные принципы настройки
- 5 Первый запуск обработки
- 6 Структура файла настроек
- 6.1 Имя файла
- 6.2 Структура файла
- 6.3 Прямое обращение к данным из базы
- 6.4 Обращение к данным через ранее определенную переменную
- 6.5 Выбор документов (запрос к базе)
- 6.6 Обращение к данным через функцию, описанную в обработке
- 6.7 Обращение к данным через функцию, описанную в обработке ВнешниеФункции_Клиент.epf
- 6.8 Обращение к данным через строковые константы
- 7 Настройка
Общее описание
Внешняя обработка обмена электронными документами для 1С позволяет выгружать файлы документов реализации и актов сверки взаиморасчетов для последующей отправки их контрагентам, а также загружать файлы, присланные контрагентами.
Почему возникает необходимость настройки?
Конфигурации 1С зачастую изменяются пользователями, в результате таблицы, поля, предусмотренные в типовой конфигурации, могут называться по-другому, или вообще отсутствовать.
Состав обработки
- Обработка состоит из одного файла:
- для толстого клиента ....
- для управляемых форм ....
Каждый файл обработки содержит:
- ActiveX компонент - отвечает за взаимодействие с СБИС через https
- Конфигурационные XML файлы - описывают местоположение необходимых для работы обработки данных в конфигурации 1С.
Обработка может быть дополнена пользовательской обработкой внешней обработкой ВнешниеФункции_Клиент.epf содержащей пользовательскую логику формирования документов.
Основные принципы настройки
- Код самой обработки обмена электронными документами не изменяется
- Вся настройка производится в xml файлах, где перечислены используемые переменные и указаны ссылки на таблицы и поля базы данных либо функции, описанные в обработке.
- При необходимости переопределения каких-то переменных через новую функцию создается внешний обработчик "ВнешниеФункции_Клиент.epf" и в нем описываются пользовательские функции. Обработка создается в Конфигураторе меню Файл/Новый/Внешняя обработка.
Первый запуск обработки
- Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
- Запустить обработку.
- При запуске обработка сама попытается найти каталог с ini-файлами для данной конфигурации и заполнить поле «Каталог настроек». Если после открытия это поле осталось пустым, то необходимо вручную выбрать каталог с настройками, соответствующими конфигурации 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 файлы и стандартные Внешние функции)
Документы хранятся в нестандартном реестре
Диагностика
Может быть выдано сообщение «Запрос построен неверно» или даже без сообщений об ошибках в реестр обработки не будут попадать нужные документы.
Решение
Корректируем текст запроса к БД
В разделе «ИЗ» и других разделах указываем название нужного реестра документов, например, вместо типового реестра «РеализацияТоваровУслуг» указываем реестр «РеализацияТоваров» Название реестра берем из описания конфигурации, как открыть описание – см. предыдущий раздел.