1C из браузера — различия между версиями
(→Описание структуры инишки синхронизации) |
|||
(не показаны 63 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | = | + | =Разработка файлов настроек= |
+ | Посмотреть список настроек для конфигураций можно на сервисе интеграции в разделе | ||
+ | [https://online.sbis.ru/integration_config/?service=extExch&Page=8 "Внешние системы"-"Стандартные настройки"] на вкладке "Стандартные". Для получения прав напишите поручение на имя руководителя группы [https://online.sbis.ru/department/88a0ea03-1b26-4182-bbe0-d08c5754a72e/ "API и вспомогательные подсистемы интеграции"] | ||
+ | |||
+ | Скачать актуальные версии настроек на ПК можно с [https://git.sbis.ru/integration/config/-/tree/development git.sbis.ru] | ||
+ | Для 1С fresh [https://git.sbis.ru/integration/config/-/tree/development/Integration/ini/WEB отсюда] | ||
+ | |||
+ | Для загрузки файлов настроек переходим на сервис интеграции в раздел [https://online.sbis.ru/integration_config/?service=extExch&Page=7 "Внешние системы"-"Подключения"]. Находим нужное подключение (в фильтре по названию или по номеру аккаунта в строке поиска), открываем карточку подключения, переходим на вкладку "Настройки", кнопка "Загрузить ини". | ||
+ | После исправления и загрузки настроек на сервис, необходимо перезапустить СБИС3 Плагин, т.к. в процессе работы инишки кешируются. | ||
+ | |||
+ | =Особенности файлов настроек= | ||
+ | ==Порядок узлов== | ||
+ | Для разработки и загрузки пользовательских инишек, можно не выделять изменения в отдельную инишку. Можно вносить изменения в типовую и при загрузке на сервис будет произведена "расклейка" вашей инишки и типовой. Разница и будет записана в пользовательские настройки подключения. При получении инишки с сервиса будет произведена обратная операций - "склейка". Значения, которые есть в типовой инишке, будут заменяться пользовательскими, новые добавляются в конец узла. | ||
+ | |||
+ | Необходимо обратить особое внимание на то что, '''важен порядок следования узлов'''. Например, значение использующееся при расчете формулы не может быть определено позже. | ||
+ | |||
+ | Пример: в типовой инишке узел: | ||
+ | <source lang="xml"> | ||
+ | <мОснование Имя="Договор"> | ||
+ | <Основание>[Документ].ДоговорКонтрагента</Основание> | ||
+ | <Основание_Номер>[Основание].Номер</Основание_Номер> | ||
+ | <Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy" >[Основание].Дата</Основание_Дата> | ||
+ | <Основание_Название>^+('Договор',' №',Основание_Номер,' от ',Основание_Дата)</Основание_Название> | ||
+ | </мОснование> | ||
+ | </source> | ||
+ | в пользовательской: | ||
+ | <source lang="xml"> | ||
+ | <мОснование Имя="Договор"> | ||
+ | <Основание_НомерДоговора>[Основание].НомерДоговора</Основание_НомерДоговора> | ||
+ | <Основание_Название>^+('Договор №',Основание_НомерДоговора)</Основание_Название> | ||
+ | </мОснование> | ||
+ | </source> | ||
+ | |||
+ | В результате получим склейку: | ||
+ | <source lang="xml"> | ||
+ | <мОснование Имя="Договор"> | ||
+ | <Основание>[Документ].ДоговорКонтрагента</Основание> | ||
+ | <Основание_Номер>[Основание].Номер</Основание_Номер> | ||
+ | <Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy" >[Основание].Дата</Основание_Дата> | ||
+ | <Основание_Название>^+('Договор №',Основание_НомерДоговора)</Основание_Название> | ||
+ | <Основание_НомерДоговора>[Основание].НомерДоговора</Основание_НомерДоговора> | ||
+ | </мОснование> | ||
+ | </source> | ||
+ | и при расчете такой инишки получим ошибку, т.к. значение Основание_НомерДоговора используется до его определения. | ||
+ | |||
+ | Правильная пользовательская инишка должна выглядеть так: | ||
+ | <source lang="xml"> | ||
+ | <мОснование Имя="Договор"> | ||
+ | <Основание_Номер>[Основание].НомерДоговора</Основание_Номер> | ||
+ | <Основание_Название>^+('Договор №',Основание_Номер)</Основание_Название> | ||
+ | </мОснование> | ||
+ | </source> | ||
+ | ==Представление объектов, типы значений== | ||
+ | Одно из требований при расчете инишки плагином - это конкретизация типа значения, которое должно быть в обсчитанной инишке. Если вы хотите получить в значении наименование объекта, то правильно инишка будет выглядеть так: | ||
+ | <source> | ||
+ | <Номенклатура>[ТаблДок].Номенклатура</Номенклатура> | ||
+ | <Название>[Номенклатура].Наименование</Название> | ||
+ | </source> | ||
+ | Если же необходимо получить представление документа, то такой способ не подойдет, т.к. у документа нет свойства "Наименование". В таком случае нужно указать тип к которому необходимо привести значение: | ||
+ | <source> | ||
+ | <ТаблДок_Название Тип="Строка">[ТаблДок].Документ</ТаблДок_Название> | ||
+ | </source> | ||
+ | ==Использование запросов== | ||
+ | Для подключений использующих ComConnector или Application запросы работают так же, как и для ВО. | ||
+ | |||
+ | При интеграции с 1C fresh через плагин использовать запросы нет возможности. Поэтому в инишке для получения списка документов вместо "ЗапросСпискаДокументов" используется узел "СписокДокументов". | ||
+ | Тип документа берем из поля "Реестр1С_Тип". Делаем вызов списка документов с фильтром: период, организация, контрагент. Полученный массив перебираем и обсчитываем каждый документ по узлу "СписокДокументов". Полученную структуру добавляем в результирующий RecordSet. Для включения в пакет дополнительных вложений добавляем в "СписокДокументов" узел "Вложения", где указываем список типов подчиненных документов. | ||
+ | <source lang="xml"> | ||
+ | <Вложения> | ||
+ | <Подчиненные> | ||
+ | <СчетНаОплатуПокупателю>'СчетНаОплатуПокупателю'</СчетНаОплатуПокупателю> | ||
+ | <СчетФактураВыданный>'СчетФактураВыданный'</СчетФактураВыданный> | ||
+ | </Подчиненные> | ||
+ | </Вложения> | ||
+ | </source> | ||
+ | |||
+ | Для получения значений из каких либо табличных частей, регистров сведений и пр. в 1С fresh используем "Отбор". | ||
+ | |||
+ | ==Добавление нового реестра== | ||
+ | Чтобы выбор нового реестра появился в меню кнопки загрузить, необходимо в новой инишке добавить поле "РеестрСБИС_ИдМеню" с значением кнопки того реестра в котором находится кнопка и поле "Реестр1С_Название" с заголовком данного реестра. Подробней описание в разделе "Описание доп. полей". | ||
+ | |||
+ | ==Описание доп. полей== | ||
'''РеестрСБИС_ИдМеню''' – содержит имена кнопок загрузки, разделенных запятой. В инишках для загрузки в СБИС | '''РеестрСБИС_ИдМеню''' – содержит имена кнопок загрузки, разделенных запятой. В инишках для загрузки в СБИС | ||
находится в корне. В инишка для выгрузки в ИС в узле «мДокумент», по которому должен обсчитываться документ. | находится в корне. В инишка для выгрузки в ИС в узле «мДокумент», по которому должен обсчитываться документ. | ||
+ | |||
В реестрах документов Исходящие, Входящие имена кнопок формируются по маске: | В реестрах документов Исходящие, Входящие имена кнопок формируются по маске: | ||
[Направление документа][Действие с ИС][Имя реестра] | [Направление документа][Действие с ИС][Имя реестра] | ||
+ | |||
Направление документа – принимает значение: OutBox – Исходящие документы, в том числе все документы, | Направление документа – принимает значение: OutBox – Исходящие документы, в том числе все документы, | ||
созданные в системе вручную. Например, созданный документ «Поступление», тоже будем иметь направление | созданные в системе вручную. Например, созданный документ «Поступление», тоже будем иметь направление | ||
OutBox. InBox – Входящие документы. | OutBox. InBox – Входящие документы. | ||
+ | |||
Действие с ИС – принимает значения: Read – чтение данных из 1С, соответственно кнопка «Загрузить», Write – запись | Действие с ИС – принимает значения: Read – чтение данных из 1С, соответственно кнопка «Загрузить», Write – запись | ||
данных в ИС, соответственно кнопка «Выгрузить». | данных в ИС, соответственно кнопка «Выгрузить». | ||
+ | |||
Имя реестра – задается разработчиками реестров. | Имя реестра – задается разработчиками реестров. | ||
+ | |||
Пример: | Пример: | ||
− | Кнопка «Загрузить» | + | |
+ | ''Кнопка «Загрузить»'' | ||
+ | |||
OutBoxReadИсходящие – Документы - Исходящие | OutBoxReadИсходящие – Документы - Исходящие | ||
+ | |||
OutBoxReadКоррИсх – Документы – Исходящие - Исходящие письма | OutBoxReadКоррИсх – Документы – Исходящие - Исходящие письма | ||
+ | |||
OutBoxReadАктСверкиДок - Документы – Исходящие – Акты сверок | OutBoxReadАктСверкиДок - Документы – Исходящие – Акты сверок | ||
+ | |||
InBoxReadВходящие – Документы – Входящие | InBoxReadВходящие – Документы – Входящие | ||
+ | |||
InBoxReadКоррВх – Документы – Входящие – Входящие письма | InBoxReadКоррВх – Документы – Входящие – Входящие письма | ||
+ | |||
По аналогии были названы кнопки и для справочников: | По аналогии были названы кнопки и для справочников: | ||
+ | |||
OutBoxReadСотрудники – Сотрудники | OutBoxReadСотрудники – Сотрудники | ||
+ | |||
OutBoxReadНоменклатура – Бизнес – Каталог и цены | OutBoxReadНоменклатура – Бизнес – Каталог и цены | ||
− | Кнопка «Выгрузить» | + | |
+ | ''Кнопка «Выгрузить»'' | ||
+ | |||
OutBoxWriteИсходящие – Документы - Исходящие | OutBoxWriteИсходящие – Документы - Исходящие | ||
+ | |||
OutBoxWriteКоррИсх – Документы – Исходящие - Исходящие письма | OutBoxWriteКоррИсх – Документы – Исходящие - Исходящие письма | ||
+ | |||
InBoxWriteКоррВх – Документы – Входящие – Входящие письма | InBoxWriteКоррВх – Документы – Входящие – Входящие письма | ||
+ | |||
InBoxWriteВходящие – Документы – Входящие | InBoxWriteВходящие – Документы – Входящие | ||
+ | |||
+ | OutBoxDocWriteРеалИсх - Документы - Исходящие - Карточка документа | ||
+ | |||
+ | OutBoxDocWriteРеалВх - Документы - Входящие- Карточка документа | ||
+ | |||
+ | |||
Для кнопок в карточках документов в маску имени кнопки добавляется суффикс «Doc». Пример: | Для кнопок в карточках документов в маску имени кнопки добавляется суффикс «Doc». Пример: | ||
− | + | «InBox'''Doc'''WriteАктСверкиДок». | |
− | + | Имя кнопки в карточке документа может отличаться от имени в реестре. Так для карточки реализации из раздела "Исходящие" значение будет = "OutBoxDocWriteРеалИсх", а для карточки поступления из раздела "Входящие" = "OutBoxDocWriteРеалВх". | |
− | + | ||
− | создании первого подключения в кабинете. | + | '''Реестр1С_Название''' - название реестра, как он отображается в меню кнопок загрузить, выгрузить. |
+ | |||
+ | '''ДокументПоУмолчанию''' - признак инишки «по умолчанию». Находится в корне и нужен для открытия реестра при | ||
+ | создании первого подключения в кабинете. | ||
+ | |||
=Алгоритм выгрузки документов из СБИС в 1С= | =Алгоритм выгрузки документов из СБИС в 1С= | ||
1. Включен учет или нет, мы не проверяем. Во входящем пакете смотрим наличие узла «ВложениеУчета», если | 1. Включен учет или нет, мы не проверяем. Во входящем пакете смотрим наличие узла «ВложениеУчета», если | ||
он отсутствует, то берем «Вложение». | он отсутствует, то берем «Вложение». | ||
+ | |||
2. Перебираем вложения и подбираем инишку для каждого по алгоритму: | 2. Перебираем вложения и подбираем инишку для каждого по алгоритму: | ||
− | + | ||
+ | *Имя инишки формируется по маске [Направление]_[Вложение.Тип]_[Вложение.ВерсияФормата]. Например, | ||
Загрузка_ЭДОНакл_3_01 или ЗагрузкаИсходящих_ЭДОНакл_3_01. Если такой инишки для данного | Загрузка_ЭДОНакл_3_01 или ЗагрузкаИсходящих_ЭДОНакл_3_01. Если такой инишки для данного | ||
подключения нет, то значит выгрузка вложения не поддерживается. Направление указывается владельцем | подключения нет, то значит выгрузка вложения не поддерживается. Направление указывается владельцем | ||
кнопки «Выгрузить»: OutBox - исходящие, InBox – входящие. | кнопки «Выгрузить»: OutBox - исходящие, InBox – входящие. | ||
− | + | * Проверяется, если в инишке есть поле '''СБИСИдМеню''', то что в нем присутствует имя кнопки, указанное на | |
реестре. Например, "InBoxWriteВходящие". | реестре. Например, "InBoxWriteВходящие". | ||
− | + | * Перебираем узлы '''мДокумент''': | |
− | + | ** Проверяется, если в инишке есть поле '''СБИСИдМеню''', то что в нем присутствует имя кнопки, указанное на реестре. Например, "InBoxWriteВходящие". | |
− | + | ** Проверяем, если в инишке есть поле '''РеестрСБИС_ИдМенюФильтр''', то что оно равно переданному с клиента фильтру. В интерфейсе - это выглядит, как подменю при выборе подключения для выгрузки. Пока это используется только для некоторых конфигураций для Веб подключений. | |
− | + | ** Проверяется, если в инишке есть поле '''РеестрСБИС_Операция''', то что его значение равно названию регламента на пакете. Например, для ПКО: «Оплата от покупателя». | |
− | + | ||
− | на реестре. Например, "InBoxWriteВходящие". | + | Если по указанным условиям ни один '''мДокумент''' не подошел, то берется тот на котором есть признак '''ДокументПоУмолчанию''' = 1, иначе выгрузка данного вложения не поддерживается. |
− | + | ||
− | клиента фильтру. В интерфейсе - это выглядит, как подменю при выборе подключения для выгрузки. | + | |
− | Пока это используется только для некоторых | + | Порядок расчета вложений определяется полем '''Вес''' в подобранном '''мДокумент''', чтобы накладные всегда |
− | |||
− | |||
− | регламента на пакете. Например, для ПКО: «Оплата от покупателя». | ||
− | Если по указанным условиям ни один | ||
− | |||
− | Порядок расчета вложений определяется полем | ||
загружались в 1С раньше счетов-фактур. Поэтому в инишке накладной вес не указан, для счет-фактуры = 50, для | загружались в 1С раньше счетов-фактур. Поэтому в инишке накладной вес не указан, для счет-фактуры = 50, для | ||
счетов = 100. | счетов = 100. | ||
+ | |||
3. Поиск документов происходит так же, как в ВО - ищем документ по идентификатору пакета и вложения в | 3. Поиск документов происходит так же, как в ВО - ищем документ по идентификатору пакета и вложения в | ||
регистрах сведений (их мы записываем так же, как ВО при выгрузке документов в 1С), если не нашли, то | регистрах сведений (их мы записываем так же, как ВО при выгрузке документов в 1С), если не нашли, то | ||
− | ищем по типу, дате и номеру документа. Тип берем из поля подобранной инишки " | + | ищем по типу, дате и номеру документа. Тип берем из поля подобранной инишки '''Документ'''. |
− | + | ||
− | + | ==Получение номенклатуры== | |
− | всех. | + | 1. Обходим массив строк ["КодПоставщика" / "КодПокупателя" (если направление пакета входящий), "КодПоставщика", "Код", "ИД"]. По имени ищем значение в строке табличной части, в параметрах строки табличной части. |
+ | Ищем в "Справочники.Номенклатура" номенклатуру по коду, значения для поиска берем из параметров строки или из самой строки. | ||
+ | Если длина поля "Код" в метаданных 1С больше длины значения для поиска, то ищем по коду, если меньше, то по регистру сведений: "ДополнительныеСведения" или "ЗначенияСвойствОбъектов". | ||
+ | |||
+ | 2. Если номенклатуру не нашли ранее и в инишке "Конфигурация" указан параметр "ФормаРаботыСНоменклатуройПоставщика" и = "СопоставлениеНоменклатуры_Справочники" или = "СопоставлениеНоменклатуры_Регистры", а Тип = "Запрос", формируем запрос с отбором по указанным в элементе параметрам. | ||
+ | |||
+ | 3. Если номенклатуру не нашли ранее, то ищем по наименованию, значение для поиска берем из поля строки табличной части "Название". | ||
+ | |||
+ | 4. Если номенклатуру не нашли ранее, проверяем создавать или не создавать номенклатуру. Это определяется наличием в инишке признаком | ||
+ | '''СоздаватьНоменклатуру''' = "Истина". Для большинства конфигураций этот флаг включен. Возможно уже для | ||
+ | всех. | ||
+ | =Описание структуры инишки синхронизации= | ||
+ | <source lang="xml"> | ||
+ | <ини> | ||
+ | <ТипИни>'СинхВыгрузка'</ТипИни>- Тип инишки. Необходим для загрузочного скрипта. Если не указано явно, будет определяться из имени файла | ||
+ | <ТипИС>'Справочники'</ТипИС>- Тип объекта ИС. | ||
+ | <ИмяИС>'ФизическиеЛица'</ИмяИС>- Имя объекта ИС. | ||
+ | <ТипСБИС>'Справочники'</ТипСБИС>- Тип объекта СБИС | ||
+ | <ИмяСБИС>'ЧастноеЛицо'</ИмяСБИС>- Имя объекта СБИС | ||
+ | <КрасивоеНазвание>'Частное лицо'</КрасивоеНазвание>- Представление объекта для пользователя (на клиенте) | ||
+ | <ПорядокРасчета>'4'</ПорядокРасчета>- Приоритет порядка выбора обьъектов для загрузки. | ||
+ | <СБИС_МетодСпискаЗаписей>'getListItems'</СБИС_МетодСпискаЗаписей>- Название метода модуля ИС СБИС Плагина для получения списка записей. | ||
+ | <ЗапросСпискаЭлементов>- SQL-запрос списка объектов ИС | ||
+ | |||
+ | <Ключи Имя="Измерения">- Узел описывает ключи, которые будут рассчитываться и записываться в таблицу ExtSuncObj. Принцип расчета такой же, как для узла мФайла | ||
+ | <_ЗаписьРегистра>ВходящийПараметр</_ЗаписьРегистра> | ||
+ | <_Объект>[_ЗаписьРегистра].Объект</_Объект> | ||
+ | <_Свойство>[_ЗаписьРегистра].Свойство</_Свойство> | ||
+ | <Свойство Тип="ПланВидовХарактеристик.СвойстваОбъектов">[_Свойство].УникальныйИдентификатор</Свойство> | ||
+ | <Объект Тип="Справочник.Подразделения">[_Объект].УникальныйИдентификатор</Объект> | ||
+ | </Ключи> | ||
+ | |||
+ | <мФайл Имя="ФизическиеЛица">- при загрузке объектов ИС в СБИС берется узел мФайл по имени = ИмяИС | ||
+ | <_ФизическиеЛица>ВходящийПараметр</_ФизическиеЛица>- Значение "ВходящийПараметр" ключевое. Это рассчитываемый объект. | ||
+ | Названия начинающие с подчеркивания не попадут в результат расчета инишки | ||
+ | <ИдИС>[_ФизическиеЛица].УникальныйИдентификатор</ИдИС>- "УникальныйИдентификатор" - ключевое слово, по которому получаем уникальный идентификатор объекта. | ||
+ | <_ФИОФизЛиц Отбор_ФизЛицо="_ФизическиеЛица">РегистрыСведений.ФИОФизЛиц</_ФИОФизЛиц>- Атрибуты начинающиеся на "Отбор_" группируются вместе. Это ключи, по ним происходит поиск записи. | ||
+ | </мФайл> | ||
+ | </ини> | ||
+ | </source> | ||
+ | |||
=Анахронизмы= | =Анахронизмы= | ||
− | Поля, которые уже не используются и которые можно смело удалять: | + | Поля, которые уже не используются и которые можно смело удалять: '''Реестр1С_ВидимыеСтолбцы''', |
− | + | '''СбисФорматСпискаДокументов''', '''Реестр1С_Имя'''. |
Текущая версия на 12:33, 7 января 2023
Содержание
Разработка файлов настроек
Посмотреть список настроек для конфигураций можно на сервисе интеграции в разделе "Внешние системы"-"Стандартные настройки" на вкладке "Стандартные". Для получения прав напишите поручение на имя руководителя группы "API и вспомогательные подсистемы интеграции"
Скачать актуальные версии настроек на ПК можно с git.sbis.ru Для 1С fresh отсюда
Для загрузки файлов настроек переходим на сервис интеграции в раздел "Внешние системы"-"Подключения". Находим нужное подключение (в фильтре по названию или по номеру аккаунта в строке поиска), открываем карточку подключения, переходим на вкладку "Настройки", кнопка "Загрузить ини". После исправления и загрузки настроек на сервис, необходимо перезапустить СБИС3 Плагин, т.к. в процессе работы инишки кешируются.
Особенности файлов настроек
Порядок узлов
Для разработки и загрузки пользовательских инишек, можно не выделять изменения в отдельную инишку. Можно вносить изменения в типовую и при загрузке на сервис будет произведена "расклейка" вашей инишки и типовой. Разница и будет записана в пользовательские настройки подключения. При получении инишки с сервиса будет произведена обратная операций - "склейка". Значения, которые есть в типовой инишке, будут заменяться пользовательскими, новые добавляются в конец узла.
Необходимо обратить особое внимание на то что, важен порядок следования узлов. Например, значение использующееся при расчете формулы не может быть определено позже.
Пример: в типовой инишке узел:
<мОснование Имя="Договор">
<Основание>[Документ].ДоговорКонтрагента</Основание>
<Основание_Номер>[Основание].Номер</Основание_Номер>
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy" >[Основание].Дата</Основание_Дата>
<Основание_Название>^+('Договор',' №',Основание_Номер,' от ',Основание_Дата)</Основание_Название>
</мОснование>
в пользовательской:
<мОснование Имя="Договор">
<Основание_НомерДоговора>[Основание].НомерДоговора</Основание_НомерДоговора>
<Основание_Название>^+('Договор №',Основание_НомерДоговора)</Основание_Название>
</мОснование>
В результате получим склейку:
<мОснование Имя="Договор">
<Основание>[Документ].ДоговорКонтрагента</Основание>
<Основание_Номер>[Основание].Номер</Основание_Номер>
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy" >[Основание].Дата</Основание_Дата>
<Основание_Название>^+('Договор №',Основание_НомерДоговора)</Основание_Название>
<Основание_НомерДоговора>[Основание].НомерДоговора</Основание_НомерДоговора>
</мОснование>
и при расчете такой инишки получим ошибку, т.к. значение Основание_НомерДоговора используется до его определения.
Правильная пользовательская инишка должна выглядеть так:
<мОснование Имя="Договор">
<Основание_Номер>[Основание].НомерДоговора</Основание_Номер>
<Основание_Название>^+('Договор №',Основание_Номер)</Основание_Название>
</мОснование>
Представление объектов, типы значений
Одно из требований при расчете инишки плагином - это конкретизация типа значения, которое должно быть в обсчитанной инишке. Если вы хотите получить в значении наименование объекта, то правильно инишка будет выглядеть так:
<Номенклатура>[ТаблДок].Номенклатура</Номенклатура>
<Название>[Номенклатура].Наименование</Название>
Если же необходимо получить представление документа, то такой способ не подойдет, т.к. у документа нет свойства "Наименование". В таком случае нужно указать тип к которому необходимо привести значение:
<ТаблДок_Название Тип="Строка">[ТаблДок].Документ</ТаблДок_Название>
Использование запросов
Для подключений использующих ComConnector или Application запросы работают так же, как и для ВО.
При интеграции с 1C fresh через плагин использовать запросы нет возможности. Поэтому в инишке для получения списка документов вместо "ЗапросСпискаДокументов" используется узел "СписокДокументов". Тип документа берем из поля "Реестр1С_Тип". Делаем вызов списка документов с фильтром: период, организация, контрагент. Полученный массив перебираем и обсчитываем каждый документ по узлу "СписокДокументов". Полученную структуру добавляем в результирующий RecordSet. Для включения в пакет дополнительных вложений добавляем в "СписокДокументов" узел "Вложения", где указываем список типов подчиненных документов.
<Вложения>
<Подчиненные>
<СчетНаОплатуПокупателю>'СчетНаОплатуПокупателю'</СчетНаОплатуПокупателю>
<СчетФактураВыданный>'СчетФактураВыданный'</СчетФактураВыданный>
</Подчиненные>
</Вложения>
Для получения значений из каких либо табличных частей, регистров сведений и пр. в 1С fresh используем "Отбор".
Добавление нового реестра
Чтобы выбор нового реестра появился в меню кнопки загрузить, необходимо в новой инишке добавить поле "РеестрСБИС_ИдМеню" с значением кнопки того реестра в котором находится кнопка и поле "Реестр1С_Название" с заголовком данного реестра. Подробней описание в разделе "Описание доп. полей".
Описание доп. полей
РеестрСБИС_ИдМеню – содержит имена кнопок загрузки, разделенных запятой. В инишках для загрузки в СБИС находится в корне. В инишка для выгрузки в ИС в узле «мДокумент», по которому должен обсчитываться документ.
В реестрах документов Исходящие, Входящие имена кнопок формируются по маске: [Направление документа][Действие с ИС][Имя реестра]
Направление документа – принимает значение: OutBox – Исходящие документы, в том числе все документы, созданные в системе вручную. Например, созданный документ «Поступление», тоже будем иметь направление OutBox. InBox – Входящие документы.
Действие с ИС – принимает значения: Read – чтение данных из 1С, соответственно кнопка «Загрузить», Write – запись данных в ИС, соответственно кнопка «Выгрузить».
Имя реестра – задается разработчиками реестров.
Пример:
Кнопка «Загрузить»
OutBoxReadИсходящие – Документы - Исходящие
OutBoxReadКоррИсх – Документы – Исходящие - Исходящие письма
OutBoxReadАктСверкиДок - Документы – Исходящие – Акты сверок
InBoxReadВходящие – Документы – Входящие
InBoxReadКоррВх – Документы – Входящие – Входящие письма
По аналогии были названы кнопки и для справочников:
OutBoxReadСотрудники – Сотрудники
OutBoxReadНоменклатура – Бизнес – Каталог и цены
Кнопка «Выгрузить»
OutBoxWriteИсходящие – Документы - Исходящие
OutBoxWriteКоррИсх – Документы – Исходящие - Исходящие письма
InBoxWriteКоррВх – Документы – Входящие – Входящие письма
InBoxWriteВходящие – Документы – Входящие
OutBoxDocWriteРеалИсх - Документы - Исходящие - Карточка документа
OutBoxDocWriteРеалВх - Документы - Входящие- Карточка документа
Для кнопок в карточках документов в маску имени кнопки добавляется суффикс «Doc». Пример:
«InBoxDocWriteАктСверкиДок».
Имя кнопки в карточке документа может отличаться от имени в реестре. Так для карточки реализации из раздела "Исходящие" значение будет = "OutBoxDocWriteРеалИсх", а для карточки поступления из раздела "Входящие" = "OutBoxDocWriteРеалВх".
Реестр1С_Название - название реестра, как он отображается в меню кнопок загрузить, выгрузить.
ДокументПоУмолчанию - признак инишки «по умолчанию». Находится в корне и нужен для открытия реестра при создании первого подключения в кабинете.
Алгоритм выгрузки документов из СБИС в 1С
1. Включен учет или нет, мы не проверяем. Во входящем пакете смотрим наличие узла «ВложениеУчета», если он отсутствует, то берем «Вложение».
2. Перебираем вложения и подбираем инишку для каждого по алгоритму:
- Имя инишки формируется по маске [Направление]_[Вложение.Тип]_[Вложение.ВерсияФормата]. Например,
Загрузка_ЭДОНакл_3_01 или ЗагрузкаИсходящих_ЭДОНакл_3_01. Если такой инишки для данного подключения нет, то значит выгрузка вложения не поддерживается. Направление указывается владельцем кнопки «Выгрузить»: OutBox - исходящие, InBox – входящие.
- Проверяется, если в инишке есть поле СБИСИдМеню, то что в нем присутствует имя кнопки, указанное на
реестре. Например, "InBoxWriteВходящие".
- Перебираем узлы мДокумент:
- Проверяется, если в инишке есть поле СБИСИдМеню, то что в нем присутствует имя кнопки, указанное на реестре. Например, "InBoxWriteВходящие".
- Проверяем, если в инишке есть поле РеестрСБИС_ИдМенюФильтр, то что оно равно переданному с клиента фильтру. В интерфейсе - это выглядит, как подменю при выборе подключения для выгрузки. Пока это используется только для некоторых конфигураций для Веб подключений.
- Проверяется, если в инишке есть поле РеестрСБИС_Операция, то что его значение равно названию регламента на пакете. Например, для ПКО: «Оплата от покупателя».
Если по указанным условиям ни один мДокумент не подошел, то берется тот на котором есть признак ДокументПоУмолчанию = 1, иначе выгрузка данного вложения не поддерживается.
Порядок расчета вложений определяется полем Вес в подобранном мДокумент, чтобы накладные всегда
загружались в 1С раньше счетов-фактур. Поэтому в инишке накладной вес не указан, для счет-фактуры = 50, для
счетов = 100.
3. Поиск документов происходит так же, как в ВО - ищем документ по идентификатору пакета и вложения в регистрах сведений (их мы записываем так же, как ВО при выгрузке документов в 1С), если не нашли, то ищем по типу, дате и номеру документа. Тип берем из поля подобранной инишки Документ.
Получение номенклатуры
1. Обходим массив строк ["КодПоставщика" / "КодПокупателя" (если направление пакета входящий), "КодПоставщика", "Код", "ИД"]. По имени ищем значение в строке табличной части, в параметрах строки табличной части. Ищем в "Справочники.Номенклатура" номенклатуру по коду, значения для поиска берем из параметров строки или из самой строки. Если длина поля "Код" в метаданных 1С больше длины значения для поиска, то ищем по коду, если меньше, то по регистру сведений: "ДополнительныеСведения" или "ЗначенияСвойствОбъектов".
2. Если номенклатуру не нашли ранее и в инишке "Конфигурация" указан параметр "ФормаРаботыСНоменклатуройПоставщика" и = "СопоставлениеНоменклатуры_Справочники" или = "СопоставлениеНоменклатуры_Регистры", а Тип = "Запрос", формируем запрос с отбором по указанным в элементе параметрам.
3. Если номенклатуру не нашли ранее, то ищем по наименованию, значение для поиска берем из поля строки табличной части "Название".
4. Если номенклатуру не нашли ранее, проверяем создавать или не создавать номенклатуру. Это определяется наличием в инишке признаком СоздаватьНоменклатуру = "Истина". Для большинства конфигураций этот флаг включен. Возможно уже для всех.
Описание структуры инишки синхронизации
<ини>
<ТипИни>'СинхВыгрузка'</ТипИни>- Тип инишки. Необходим для загрузочного скрипта. Если не указано явно, будет определяться из имени файла
<ТипИС>'Справочники'</ТипИС>- Тип объекта ИС.
<ИмяИС>'ФизическиеЛица'</ИмяИС>- Имя объекта ИС.
<ТипСБИС>'Справочники'</ТипСБИС>- Тип объекта СБИС
<ИмяСБИС>'ЧастноеЛицо'</ИмяСБИС>- Имя объекта СБИС
<КрасивоеНазвание>'Частное лицо'</КрасивоеНазвание>- Представление объекта для пользователя (на клиенте)
<ПорядокРасчета>'4'</ПорядокРасчета>- Приоритет порядка выбора обьъектов для загрузки.
<СБИС_МетодСпискаЗаписей>'getListItems'</СБИС_МетодСпискаЗаписей>- Название метода модуля ИС СБИС Плагина для получения списка записей.
<ЗапросСпискаЭлементов>- SQL-запрос списка объектов ИС
<Ключи Имя="Измерения">- Узел описывает ключи, которые будут рассчитываться и записываться в таблицу ExtSuncObj. Принцип расчета такой же, как для узла мФайла
<_ЗаписьРегистра>ВходящийПараметр</_ЗаписьРегистра>
<_Объект>[_ЗаписьРегистра].Объект</_Объект>
<_Свойство>[_ЗаписьРегистра].Свойство</_Свойство>
<Свойство Тип="ПланВидовХарактеристик.СвойстваОбъектов">[_Свойство].УникальныйИдентификатор</Свойство>
<Объект Тип="Справочник.Подразделения">[_Объект].УникальныйИдентификатор</Объект>
</Ключи>
<мФайл Имя="ФизическиеЛица">- при загрузке объектов ИС в СБИС берется узел мФайл по имени = ИмяИС
<_ФизическиеЛица>ВходящийПараметр</_ФизическиеЛица>- Значение "ВходящийПараметр" ключевое. Это рассчитываемый объект.
Названия начинающие с подчеркивания не попадут в результат расчета инишки
<ИдИС>[_ФизическиеЛица].УникальныйИдентификатор</ИдИС>- "УникальныйИдентификатор" - ключевое слово, по которому получаем уникальный идентификатор объекта.
<_ФИОФизЛиц Отбор_ФизЛицо="_ФизическиеЛица">РегистрыСведений.ФИОФизЛиц</_ФИОФизЛиц>- Атрибуты начинающиеся на "Отбор_" группируются вместе. Это ключи, по ним происходит поиск записи.
</мФайл>
</ини>
Анахронизмы
Поля, которые уже не используются и которые можно смело удалять: Реестр1С_ВидимыеСтолбцы, СбисФорматСпискаДокументов, Реестр1С_Имя.