Вывод атрибутов из полей датасетов

Поля с атрибутами идут после поля «Attrs» (атрибуты) или «AttrsEx» (доп. атрибуты) - см картинку (на примере атрибутов и доп. атрибутов заголовка накладной, датасет Hdr). Для атрибутов с типом «Перечисление» предусмотрено 2 поля. Например, для атрибута «Тип документа 1С»: Hdr_F6\DocType1C - id типа документа, Hdr_F6\DocType1C_itext_ - название типа документа.

Вывод данных с помощью процедур сервера r_k SH Pro

Если в датасетах нет или не хватает информации по каким-то атрибутам/свойствам или другим данным, тогда они выводятся с помощью обращения к процедурам сервера r_k SH Pro. Процедуры могут возвращать весь список данных, а могут данные по ID.

Список имеющихся процедур, номера датасетов и полей, а также идентификаторы атрибутов смотрите в приложении Sdbman.exe

Возвращение всего списка данныхLink to Возвращение всего списка данных

Пример 1 — надо вывести название и ОКПО юр. лица, а в датасете есть только id подразделения.

Для этого обращаемся к процедурам сервера Departs и LEntities, которые возвращают полные списки подразделений и юр. лиц соответственно - так как их не много (списки небольшие). В полученных списках ищем нужную строку и записываем данные в переменные, которые потом выводим в макете.
Пример 2 — надо вывести код по ОКЕИ единицы измерения товара. Для этого мы создаем и единоразово выгружаем список всех ед. изм. (OnStartReport), затем для каждой строки товара выбираем код по ОКЕИ (MasterData1OnBeforePrint), в конце закрываем процедуру (OnStopReport).

Возвращение данных по IDLink to Возвращение данных по ID

Пример 1 — надо вывести название и ОКПО корреспондента, а в датасете есть только id корреспондента. Список корреспондентов может быть очень большим, выгружать его весь не есть хорошо. Поэтому мы обращаемся к процедуре сервера Corr, которая возвращает информацию только по конкретному корреспонденту по его ID. Это ускоряет процесс получения данных. Далее записываем данные в переменные, которые потом выводим в макете.
Пример 2 — надо вывести КПП и лицензию, а в датасете есть только id КПП. Обращаемся к процедуре CntrSpec, в которой имеется 2 датасета (114 и 115). См ниже.

Пример 3. Вывод цены продажи из карточки товара.

Требуется вывести цену продажи из карточки товара (Доп. параметры - Продажа - Цена б/н или Цена в/н) - см картинку ниже. Пример вывода этих данных можно посмотреть в макетах «Марочный отчет с плановой ценой (б/н)» и «Марочный отчет с плановой ценой (в/н)» отчета «Акт реализации».
В данном случае может быть 2 варианта: с учетом или без учета исключений по предприятиям (смотря что нужно вывести).
Если нужно учитывать исключения (притом, что у одних товаров могут быть заданы исключения, а у других нет), то сначала надо определить предприятие, а потом уже по этому предприятию выбирать цену товара. Также надо выбрать цену продажи без исключений. И для каждого товара уже выводить либо одну цену, либо другую (если у товара есть цена из исключений, то выводить ее, если нет - просто цену продажи).
Способ нахождения предприятия зависит от того, в макете какого отчета/накладных/... мы это делаем. Возможен вариант, когда id предприятия просто есть в поле датасета, тогда все довольно легко (его надо просто подставить в соответствующую процедуру). В предложенном же примере рассматривается наиболее сложный вариант: с учетом исключений по предприятиям - в зависимости от того, какие фильтры выбрал пользователь (указал конкретные подразделения/юр. лица/предприятия) и/или какие группировки выбрал по ним.

Примечание

В коде предложенных макетов везде есть комментарии — рекомендуем внимательно их читать