SAPPER SETTINGS - Настройки списков — различия между версиями
(→GET_CHILD_VBFA) |
|||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 14: | Строка 14: | ||
==Общие параметры для версий 700 и 740== | ==Общие параметры для версий 700 и 740== | ||
− | + | *ПолучениеДанных_Класс – класс получения данных для построения списка документов | |
− | + | *Реестр1С_Название, Реестр1С_Тип – классификаторы пакета документов | |
− | + | *РеестрСБИС_Тип – тип входящего реестра СБИС | |
− | + | *Регламент_Название – название регламета СБИС | |
− | + | *Реестр_СБИС – название входящего реестра СБИС | |
− | + | *НазваниеДокумента – отображаемое название документа | |
− | + | *ИсклСторноДатаСовпадает – исключение сторно документа из списка, если дата совпадает | |
− | + | *ИсклСторноДатаНеСовпадает – исключение сторно документа из списка, если дата не совпадает | |
− | + | *ИсклСторноМесяцСовпадает – исключение сторно документа из списка, если месяц совпадает | |
− | + | *ИсклСторноМесяцНеСовпадает – исключение сторно документа из списка, если месяц не совпадает | |
==Построение запроса получения списка документов== | ==Построение запроса получения списка документов== | ||
− | Список документов получается путем выполнения запроса к базе данных, для BASIS >= 7.40 это динамический SELECT текст которого указан в настройках, для более ранних версий код запроса вызывается непосредственно в модуле | + | Список документов получается путем выполнения запроса к базе данных, для BASIS >= 7.40 это динамический SELECT текст которого указан в настройках, для более ранних версий код запроса вызывается непосредственно в модуле и изменение запроса осуществляется наследованием класса и переопределением необходимых методов. |
В результате выполнения запросов получается таблица, содержащая список документов SAP необходимых для формирования пакета документов. | В результате выполнения запросов получается таблица, содержащая список документов SAP необходимых для формирования пакета документов. | ||
Строка 38: | Строка 38: | ||
* Идентификатор документа на данных которого будет формироваться электронный документ (может быть равен базовому) | * Идентификатор документа на данных которого будет формироваться электронный документ (может быть равен базовому) | ||
** XBLNR - номер документа, пока предполагается что BUKRS и GJAHR такой же как у базового документа. | ** XBLNR - номер документа, пока предполагается что BUKRS и GJAHR такой же как у базового документа. | ||
− | * Идентификатор настроек которые будут использоваться для формирования электронного документа (программа печати, параметры вызова, маппинг параметров программы печати) | + | * Идентификатор настроек, которые будут использоваться для формирования электронного документа (программа печати, параметры вызова, маппинг параметров программы печати) |
− | ** INI_NAME - | + | ** INI_NAME - имя настройки выгрузки документа DO_* указывается явно в запросе |
* Реквизиты документа для отображения в списке - параметры для формирования названия документа, по умолчанию шаблон формирования имени документа следующий: [значение параметра НазваниеДокумента] №[XBLNR] от [DATE] на сумму [SUM][WAERS] | * Реквизиты документа для отображения в списке - параметры для формирования названия документа, по умолчанию шаблон формирования имени документа следующий: [значение параметра НазваниеДокумента] №[XBLNR] от [DATE] на сумму [SUM][WAERS] | ||
** DATE | ** DATE | ||
Строка 58: | Строка 58: | ||
** STATUS_MSG_DETAIL | ** STATUS_MSG_DETAIL | ||
− | Запись таблицы содержит данные основного документа и таблицу вложений - идентификатор документа | + | Запись таблицы содержит данные основного документа и таблицу вложений - идентификатор документа и ключ таблицы настроек отвечающих за формирование XML файла. В общем виде одна запись таблицы содержит список программ печати необходимых для формирования пакета документов. |
− | Предположим у нас есть комплект документов реализации состоящий из двух документов, накладной № 0080000227 и счет-фактуры № 0090000244 которые необходимо отправить одним пакетом. Основным документом является документ от которого строится список и который есть всегда (иначе пакет не сформируется) | + | Предположим у нас есть комплект документов реализации состоящий из двух документов, накладной № 0080000227 и счет-фактуры № 0090000244 которые необходимо отправить одним пакетом. Основным документом является документ, от которого строится список и который есть всегда (иначе пакет не сформируется), в нашем случае это будет накладная. |
В результате выполнения запроса должен получиться список пакетов реализации. Часть результирующей таблицы содержащей наш комплект должна выглядеть следующим образом: | В результате выполнения запроса должен получиться список пакетов реализации. Часть результирующей таблицы содержащей наш комплект должна выглядеть следующим образом: | ||
{|{| class="wikitable" | {|{| class="wikitable" | ||
Строка 168: | Строка 168: | ||
***ЗапросСпискаДокументов_having_1 ... ЗапросСпискаДокументов_having_5 | ***ЗапросСпискаДокументов_having_1 ... ЗапросСпискаДокументов_having_5 | ||
***ЗапросСпискаДокументов_where_1 ... ЗапросСпискаДокументов_where_5 | ***ЗапросСпискаДокументов_where_1 ... ЗапросСпискаДокументов_where_5 | ||
− | *ЗапросСпискаСвязанныхДокументов – массив настроек отвечающий за добавление связанных документов. Для каждой записи будет выполнен поиск всех указанных документов. | + | *ЗапросСпискаСвязанныхДокументов – массив настроек отвечающий за добавление связанных документов. Для каждой записи будет выполнен поиск всех указанных документов. |
− | + | ||
− | ** | + | ===Запрос Списка Связанных Документов=== |
+ | ====GET_CHILD_VBFA==== | ||
+ | Метод GET_CHILD_VBFA позволяет взять связанный через VBFA документ. | ||
+ | |||
+ | Список настроек выглядит как динамический select c параметрами (тело запрос разбито на подстроки длиной 255 символов): | ||
+ | *ЗапросСпискаСвязанныхДокументов_select_1 ... ЗапросСпискаСвязанныхДокументов_select_5 | ||
+ | *ЗапросСпискаСвязанныхДокументов_from_1 ... ЗапросСпискаСвязанныхДокументов_from_5 | ||
+ | *ЗапросСпискаСвязанныхДокументов_where_1 ... ЗапросСпискаСвязанныхДокументов_where_5 | ||
+ | *ЗапросСпискаСвязанныхДокументовСторно_select_1 ... ЗапросСпискаСвязанныхДокументовСторно_select_5 | ||
+ | *ЗапросСпискаСвязанныхДокументовСторно_from_1 ... ЗапросСпискаСвязанныхДокументовСторно_from_5 | ||
+ | *ЗапросСпискаСвязанныхДокументовСторно_where_1 ... ЗапросСпискаСвязанныхДокументовСторно_where_5 | ||
<div style="border: 1px dashed;"> | <div style="border: 1px dashed;"> | ||
− | пример | + | пример запроса списка связанных документов для версии 740 через GET_CHILD_VBFA |
<div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
<br> | <br> | ||
<source lang=JSON> | <source lang=JSON> | ||
− | + | { | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
"Имя": "GET_CHILD_VBFA", //метод класса получения данных | "Имя": "GET_CHILD_VBFA", //метод класса получения данных | ||
"Значение": [ | "Значение": [ | ||
Строка 342: | Строка 264: | ||
] | ] | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
</div> | </div> | ||
</div> | </div> | ||
+ | |||
+ | ====GET_SELF==== | ||
+ | Метод GET_SELF позволяет взять тот же документ, но использовать другую программу печати. В этом случае параметры передаются в структуру S_LIST_DOC. | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | пример запроса списка связанных документов для версии 740 через GET_SELF | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | { | ||
+ | "Имя": "GET_SELF", | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "НазваниеДокумента", | ||
+ | "Значение": "Счет-фактура" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_ini_name", | ||
+ | "Значение": "DO_ON_SCHFDOPPR_1115125" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_bukrs", | ||
+ | "Значение": "bukrs" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_gjahr", | ||
+ | "Значение": "gjahr" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_belnr", | ||
+ | "Значение": "belnr" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_xblnr", | ||
+ | "Значение": "param1" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_date", | ||
+ | "Значение": "date" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_sum", | ||
+ | "Значение": "sum" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_waers", | ||
+ | "Значение": "waers" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_user_name", | ||
+ | "Значение": "user_name" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_partner_name", | ||
+ | "Значение": "partner_name" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "doc_org_name", | ||
+ | "Значение": "org_name" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
Текущая версия на 15:48, 16 марта 2018
Содержание
Настройка списков
Настройки списков отвечают за:
- формирование списка документов которые видит пользователь перейдя в соответствующий раздел, в т.ч. ограничения видимости и фильтры
- состав отправляемых пакетов документов (какие документы SAP должны использоваться для формирования пакета электронных документов)
Файл с настройками LO_* списка содержит информацию о классе получения списка документов, общих настройках для реестра в СБИС, такие как регламент, название реестра, указание на файл выгрузки самого документа DO_*, запрос списка связанных документов, исключения из выборки. В зависимости от версии BASIS системы различаются принципы построения списков – использование статических методов выборки или построение динамического select’a. За формирование списка документов отвечает метод GET_LIST_API2_PACKET класса указанного в параметре "ПолучениеДанных_Класс". Для разделов Продажа по умолчанию этим классом является /SBIS/CL_SAP_DATA_[700/740], он зависим от версии BASIS и поэтому поставляется в разных пакетах.
Структура настройки списков:
- [основные параметры, см. ниже]
- [ЗапросСпискаСвязанныхДокументов] (тип List) - массив параметров для получения списка связанных документов
- [Метод класса для построения списка связанных документов] - в качестве значения передается список параметров
Общие параметры для версий 700 и 740
- ПолучениеДанных_Класс – класс получения данных для построения списка документов
- Реестр1С_Название, Реестр1С_Тип – классификаторы пакета документов
- РеестрСБИС_Тип – тип входящего реестра СБИС
- Регламент_Название – название регламета СБИС
- Реестр_СБИС – название входящего реестра СБИС
- НазваниеДокумента – отображаемое название документа
- ИсклСторноДатаСовпадает – исключение сторно документа из списка, если дата совпадает
- ИсклСторноДатаНеСовпадает – исключение сторно документа из списка, если дата не совпадает
- ИсклСторноМесяцСовпадает – исключение сторно документа из списка, если месяц совпадает
- ИсклСторноМесяцНеСовпадает – исключение сторно документа из списка, если месяц не совпадает
Построение запроса получения списка документов
Список документов получается путем выполнения запроса к базе данных, для BASIS >= 7.40 это динамический SELECT текст которого указан в настройках, для более ранних версий код запроса вызывается непосредственно в модуле и изменение запроса осуществляется наследованием класса и переопределением необходимых методов.
В результате выполнения запросов получается таблица, содержащая список документов SAP необходимых для формирования пакета документов.
Строка таблицы соответствует структуре /SBIS/S_LIST_DOC и содержит:
- Идентификатор базового документа (нужен для группировки пакета)
- BUKRS
- GJAHR
- BELNR - номер документа
- Идентификатор документа на данных которого будет формироваться электронный документ (может быть равен базовому)
- XBLNR - номер документа, пока предполагается что BUKRS и GJAHR такой же как у базового документа.
- Идентификатор настроек, которые будут использоваться для формирования электронного документа (программа печати, параметры вызова, маппинг параметров программы печати)
- INI_NAME - имя настройки выгрузки документа DO_* указывается явно в запросе
- Реквизиты документа для отображения в списке - параметры для формирования названия документа, по умолчанию шаблон формирования имени документа следующий: [значение параметра НазваниеДокумента] №[XBLNR] от [DATE] на сумму [SUM][WAERS]
- DATE
- SUM
- WAERS
- PARTNER_NAME
- ORG_NAME
- USER_NAME
- Дополнительные реквизиты которые можно использовать в отборе при необходимости
- PARAM1
- PARAM2
- PARAM3
- Текущий статус документа - в select не заполняются, заполняются для каждой записи по данным таблицы /SBIS/STATUS_DOC, код реализован в том же классе
- STATUS_NAME
- STATUS_CODE
- STATUS_NOTE
- STATUS_MSG
- STATUS_MSG_DETAIL
Запись таблицы содержит данные основного документа и таблицу вложений - идентификатор документа и ключ таблицы настроек отвечающих за формирование XML файла. В общем виде одна запись таблицы содержит список программ печати необходимых для формирования пакета документов.
Предположим у нас есть комплект документов реализации состоящий из двух документов, накладной № 0080000227 и счет-фактуры № 0090000244 которые необходимо отправить одним пакетом. Основным документом является документ, от которого строится список и который есть всегда (иначе пакет не сформируется), в нашем случае это будет накладная. В результате выполнения запроса должен получиться список пакетов реализации. Часть результирующей таблицы содержащей наш комплект должна выглядеть следующим образом:
BELNR | XBELNR | INI_NAME |
---|---|---|
0080000227 | 0080000227 | 'DP_TOVTORGPR_1175010' |
0080000227 | 0090000244 | 'ON_SCHFDOPPR_1115125' |
Если предположим, в пакет нужно добавить ещё один документ, например из накладной необходимо сформировать и отправить в этом же пакете ТТН, то в результат необходимо добавить ещё одну строку содержащую соответствующий код настроек. В общем виде можно сказать, что количество строк для пакета равно количеству вызовов программ печати необходимых для формирования форм документов комплекта. Стоит заменить, что конечный состав пакета документов не всегда по количеству равен документам которые пользователь видит в списке, т.к. данным одного вызова программы печати может быть за раз сформировано несколько электронных документов, например по данным фактуры можно сформировать сразу весь комплект. Содержимое пакета документов, которое будет отправлено можно посмотреть в окне просмотра.
BASIS 7.00 (/SBIS/CL_SAP_DATA_700)
Для изменения выборки документов требуется наследовать стандартный класс получения данных и изменить метод GET_LIST_API2_PACKET.
- ПолучениеДанныхВложения – указание на документ выгрузки DO_*
- ЗапросСпискаСвязанныхДокументов – содержит ссылки на документы-вложения, в поле Имя указывается метод класса для получения связанных документов. Также указывается имя документа для отображения и связанный файл получения вложения DO_*.
Варианты параметра "ПолучениеДанных_Класс":
- /SBIS/CL_SAP_DATA_700_LIKP - возвращает накладные SD
- /SBIS/CL_SAP_DATA_700_VBRK - возвращает фактуры SD
- /SBIS/CL_SAP_DATA_700_VBRK_USL - возвращает фактуры SD на услуги - акты выполненных работ
- /SBIS/CL_SAP_DATA_700_LIKP_NF - возвращает неотфактурованные накладные SD (без фактур)
- /SBIS/CL_SAP_DATA_700_ERDK - возвращает документы печати из одноименной таблицы
Для списка связанных методов, можно использовать следующие методы классов:
- GET_CHILD_VBFA_SFAKT - получить связанные с основным документом через таблицу VBFA счет-фактуры SD
- GET_CHILD_VBFA_NAKL - получить связанные с основным документом через таблицу VBFA накладные SD
пример LO_РеализацияТоваров версии 700 с получением связанного документа счет-фактура
BASIS 7.40 (/SBIS/CL_SAP_DATA_740)
Списки документов строятся на основании динамического select’а. Текст запроса содержится в параметрах:
- ЗапросСпискаДокументов – содержит тип запроса: select, select_groupby, select_distinct.
- Тело запрос разбито на 5 подстрок длиной 255 символов, а именно:
- ЗапросСпискаДокументов_select_1 ... ЗапросСпискаДокументов_select_5
- ЗапросСпискаДокументов_from_1 ... ЗапросСпискаДокументов_from_5
- ЗапросСпискаДокументов_groupby_1 ... ЗапросСпискаДокументов_groupby_5
- ЗапросСпискаДокументов_having_1 ... ЗапросСпискаДокументов_having_5
- ЗапросСпискаДокументов_where_1 ... ЗапросСпискаДокументов_where_5
- Тело запрос разбито на 5 подстрок длиной 255 символов, а именно:
- ЗапросСпискаСвязанныхДокументов – массив настроек отвечающий за добавление связанных документов. Для каждой записи будет выполнен поиск всех указанных документов.
Запрос Списка Связанных Документов
GET_CHILD_VBFA
Метод GET_CHILD_VBFA позволяет взять связанный через VBFA документ.
Список настроек выглядит как динамический select c параметрами (тело запрос разбито на подстроки длиной 255 символов):
- ЗапросСпискаСвязанныхДокументов_select_1 ... ЗапросСпискаСвязанныхДокументов_select_5
- ЗапросСпискаСвязанныхДокументов_from_1 ... ЗапросСпискаСвязанныхДокументов_from_5
- ЗапросСпискаСвязанныхДокументов_where_1 ... ЗапросСпискаСвязанныхДокументов_where_5
- ЗапросСпискаСвязанныхДокументовСторно_select_1 ... ЗапросСпискаСвязанныхДокументовСторно_select_5
- ЗапросСпискаСвязанныхДокументовСторно_from_1 ... ЗапросСпискаСвязанныхДокументовСторно_from_5
- ЗапросСпискаСвязанныхДокументовСторно_where_1 ... ЗапросСпискаСвязанныхДокументовСторно_where_5
пример запроса списка связанных документов для версии 740 через GET_CHILD_VBFA
GET_SELF
Метод GET_SELF позволяет взять тот же документ, но использовать другую программу печати. В этом случае параметры передаются в структуру S_LIST_DOC.
пример запроса списка связанных документов для версии 740 через GET_SELF