- Журнал изменений в версиях системы Papyrus
- PAPYRUS (Демо)
- Papyrus: development
- Papyrus: возможности системы
- Papyrus: руководство пользователя
- Введение
- Печать информации
- Бизнес-показатели
- Бухгалтерские справочники
- Установка
- Запуск и завершение работы
- Операционные справочники
- Отчетность по расчетам с дебиторами и кредиторами
- Интерфейс пользователя
- Текущие параметры системы
- Товарная отчетность
- Документы
- Статистика продаж и прогнозирование спроса
- Бухгалтерские документы
- Интерфейс с сервисом IP-телефонии
- Универсальные концепции
- Географические объекты
- Импорт и экспорт данных
- Товарные документы
- Настройка и администрирование системы
- Персоналии
- Товары
- Язык описания формул
- Язык описания данных DL600
- Глоссарий
- Книги продаж и покупок
- Основные средства
- Рента
- Инвентаризация
- Производство
- Персональные карты
- Персональные операции
- Кадры
- Расчет заработной платы
- Управление проектами и задачами
- Отчетность
- Бухгалтерская отчетность
- Язык описания данных DL200
- Розничные продажи и торговое оборудование
- Управление мобильной торговлей
- Разделенные базы данных
- Интеграция со сторонними системами и сервисами
- Специальный процессинг данных
- Job-Server
- Защита и восстановление данных
- COM-интерфейсы
- Приложения
- Библиотека
- Все об обязательной маркировке 2021
- Все об онлайн-кассах
- Презентации
- Руководства
- Свидетельство о регистрации системы Papyrus
- Технологии и функции
Концепции
Замечания по типам данных
В представлении интерфейсов повсеместно применяются VARIANT-совместимые типы данных. Учитывая, что большая часть разработчиков, для которых предназначены эти интерфейсы, пользуются языком Visual Basic, при разработке интерфейсов приняты меры для того, чтобы они корректно работали с этим языком. Из-за того, что в Visual Basic нет беззнакового целого числа, в интерфейсах такие типы не применяются.Далее мы перечислим типы, используемые в описании структур и интерфейсов.
#1
#2. [C++] #3.#4
int
Int
int
4-x байтовое знаковое целое
long
Long
long
4-x байтовое знаковое целое
string
String
BSTR
Указатель на UNICODE-строку. За разрушение указателя отвечает клиент (в случае VisualBasic - система исполнения этого языка)
date
Date
DATE
Число с плавающей точкой двойной точности. Формат представления в нем даты и времени описан в MSDN. Нулевое значение интерпретируется как неопределенное.
time
Date
DATE
То же, что и date
datetime
Date
DATE
То же, что и date
Спецификации
Структура { #1
}
. #3
Интерфейс { #1
}{ Метод
#1
#2
. #3 }
SDateRange
Представление периода между двумя датами. Все функции, использующие структуру периода, считают, что нижняя и верхняя границы включены в период. Если нижняя граница не определена (Low = 0), то, как правило, рассматриваются данные с начала ведения учета в базе данных. Если верхняя граница не определена (Upp = 0), как правило, рассматриваются данные до самой последней записи (в хронологическом порядке), введенной в базу данных. Оговоренное правило - наиболее общее. В зависимости от контекста, оно может изменяться. В некоторых случаях указанный извне период может быть наложен на период, определенный правами доступа.
Low
date
Нижняя граница периода
Upp
date
Верхняя граница периода
SIterCounter
Счетчик итераций. Используется в объектах КАД для подсчета итераций с целью информирования пользователя о прогрессе хода процесса перечисления.
Count
long
Текущая (завершенная) итерация
Total
long
Общее количество итераций
STaggedString
Структура используемая для организации списков строковых ассоциаций. Нулевым элементом STaggedString считается такой, у которого: Id = 0, ParentId = 0, Text = "".
Id
long
Идентификатор элемента
ParentId
long
Идентификатор родительского элемента. Если 0, то верхний уровень
Text
string
Текст
SPpyDatabaseInfo
Представление информации об одной базе данных системы
ID
long
Ид базы данных. Этот идентификатор является неявным и нефиксированным. Физически, он представляет номер позиции точки входа в базу данных, описанной в файле pp.ini
Flags
long
Зарезервировано (0)
Type
long
Зарезервировано (0)
Symb
string
Символ базы данных
Name
string
Дружественное пользователю наименование базы данных
Path
string
Путь к каталогу базы данных
SysPath
string
Путь к каталого словаря данных
SPpySessionInfo
Представление информации о текущем состоянии класса, реализующего интерфейс IPapyrusSession.
SessID
long
Ид сессии
Flags
long
MainOrgID
long
Ид главной организации
DbDivID
long
Ид раздела базы данных
UserID
long
Ид пользователя
DbName
string
Наименование базы данных
DbSymb
string
Символ базы данных
SysPath
string
Путь к словарю данных
DbPath
string
Путь к базе данных
StrAssoc
Интерфейс обеспечивающий управление списком строк, ассоциированных с целочисленными идентификаторами. attention: В текущих версиях поле STaggedString::ParentId не поддерживается //
Методы
long
GetCount()
Descr: Возвращает количество элементов в списке.
int
Get(long pos, out STaggedString * pItem)
Descr: Возвращает элемент по индексу pos. Если pos < GetCount(), то pItem обнуляется (Id = 0, ParentId = 0, Text = "").
pos IN
@#{0..GetCount()-1
позиция в списке, по которой следует вернуть элемент. }pItem OUT
@#{vptr0
Указатель на структуру STaggedString, по которому присваивается найденный элемент. Если pItem == 0, то функция просто ничего не присваивает, но возвращает значение то же, как будто pItem != 0. }
>0 - элемент успешно извлечен из списка и присвоен по адресу pItem
0 - индекс pos выходит за диапазон [0..GetCount()-1]. По адресу pItem присвоен нулевой элемент.
int
SearchById(long id, out STaggedString * pItem)
Descr: Ищет в списке элемент с идентификатором STaggedString::Id == id. Поиск осуществляется в линейном порядке (не взирая на сортировку, если она есть). По этому, если в списке присутствует более одного элемента с таким идентификатором, то функция обнаружит и вернет тот, у которого меньшее значение индекса позиции.
id IN
Идентификатор элемента, который должен быть найден.
pItem OUT
@#{vptr0
Указатель на структуру STaggedString, по которому присваивается найденный элемент. Если pItem == 0, то функция просто ничего не присваивает, но возвращает значение то же, как будто pItem != 0. }
>0 - элемент со значением STaggedString::Id == id найден и присвоен по адресу pItem.
0 - элемент со значением STaggedString::Id == id не найден. По адресу pItem присвоен нулевой элемент.
int
SearchByText(string text, out STaggedString * pItem)
Descr: Ищет в списке элемент со строкой, равной text. Равенство строк определяется по последовательному соответствию всех символов с точностью до регистра букв. Поиск осуществляется в линейном порядке (не взирая на сортировку, если она есть). По этому, если в списке присутствует более одного элемента с похжодящим полем Text, то функция обнаружит и вернет тот, у которого меньшее значение индекса позиции.
text IN
Строка, соответствующая полю STaggedString::Text элемента, который должен быть найден.
pItem OUT
@#{vptr0
Указатель на структуру STaggedString, по которому присваивается // найденный элемент. Если pItem == 0, то функция просто ничего не присваивает, но возвращает значение то же, как будто pItem != 0. }
>0 - элемент со значением STaggedString::Id == id найден и присвоен по адресу pItem.
0 - элемент со значением STaggedString::Id == id не найден. По адресу pItem присвоен нулевой элемент.
string
GetTextById(long id)
Descr: Ищет в списке элемент с идентификатором STaggedString::Id == id и, в случае успеха, возвращает строку, соответствующую этому элементу. Поиск осуществляется в линейном порядке (не взирая на сортировку, если она есть). По этому, если в списке присутствует более одного элемента с таким идентификатором, то функция обнаружит и вернет тот, у которого меньшее значение индекса позиции.
id IN
Идентификатор элемента, который должен быть найден.
Поле STaggedString::Text найденного элемента. Если элемент с заданным идентификатором не найден, то возвращается пустая строка.
void
InitIteration()
Descr: Инициализирует внутренний счетчик для последующих вызовов функци NextIteration.
int
NextIteration(out STaggedString * pItem)
Descr: Возвращает элемент, соответствующий внутреннему счетчику объекта и увеличивает на единицу значение этого счетчика. Если внутренний счетчик выход за пределы [0..GetCount()-1], то возвращает 0.
pItem OUT
@#{vptr0
Указатель на структуру STaggedString, по которому присваивается // очередной элемент. Если pItem == 0, то функция просто ничего не присваивает, но возвращает значение то же, как будто pItem != 0. }
>0 - очередной элемент получен и присвоен по укзателю pItem. Внутренний счетчик увеличен на единицу.
0 - больше нет ни одного элемента для перечисления // По адресу pItem присвоен нулевой элемент.
void
Clear()
Descr: Удаляет все элементы из списка. Единственный гарантированный результат этой функции состоит в том, что количество доступных элементов в списке станет равным нулю. Предположений об очистке внутренней памяти делать не следует.
void
Add(long itemId, long parentId, string text)
Добавляет в список новый элемент с полями: STaggedString::Id = itemId, STaggedString::ParentId = parentId, STaggedString::Text = text; Если в списке уже присутсвует элемент с идентификатором itemId, то новый не добавляется, но у существующего заменяются атрибуты ParentId и Text на те, что указаны в аргументах. Не следет делать предположения относительно индекса позиции, в которую был добавлен новый элемент.
void
Sort(int byText)
Descr: Сортирует элементы списка.
byText IN
Если этот параметр равен 1, то сортировка осуществляется по полю STaggedString::Text, в противном случае - по полю STaggedString::Id.
void
Clone(out IStrAssocList ** ppClone)
Создает экземпляр списка, содержащего такие же элементы, что в оригинальном экземпляре. Элементы в копии находятся в той же последовательности, что и в оригинале.
int
CloneByParent(long parentId, out IStrAssocList ** ppClone)
Создает экземпляр списка, содержащий выборку элементов из оригинального списка, у которых поле STaggedString::ParentId = parentId.
>0 - создана копия, содержащая по крайней мере один элемент
<0 - создана копия, не содержащая ни одного элемента из оригинального списка. Это означает, что в оригинальном списке нет ни одного элемента с STaggedString::ParentId = parentId
0 - ошибка
IPapyrusSession
Обеспечивает интерфейс рабочей сессии в базе данных. Предоставляет сервисы для авторизации в базе данных, доступа к объектам данных, контроллерам анализа данных (КАД) и др.
Методы
IStrAssocList * GetDatabaseList(int nameKind)
Возвращает список строк, идентифицирующий базы данных, доступные для авторизации. Для выполнения функции нет необходимости авторизоваться в какой-либо БД. После использования, возвращенный список должен быть разрушен обычным образом.
nameKind IN
Значение, определяющее, какую строку передавать в списке вместе с идентификатором. Возможные значения:
0 - символ базы данных
1 - дружественное наименование базы данных
2 - путь к каталогу базы данных
Любое другое значение интерпретируется как 0.
Указатель на интерфейс сформированного списка. В случае ошибки - 0.
int
GetDatabaseInfo(long id, SPpyDatabaseInfo * pInfo)
Возвращает начальную информацию о базе данных. Для выполнения функции нет необходимости авторизоваться в какой-либо БД.
id IN
@#[1..] Идентификатор базы данных. Этот идентификатор является неявным и нефиксированным. Физически, он представляет номер позиции точки входа в базу данных, описанной в файле pp.ini. Самым естественным способом получения этого идентификатора видится извлечение его из списка, полученного вызовом IPapyrusSession::GetDatabaseList().
pInfo OUT
@#{vptr0} Указатель на структуру SPpyDatabaseInfo, по которому будет записана информация о базе данных.
>0 - информация о базе данных успешно извлечена и присвоена по указателю pInfo
0 - ошибка
int
Login(string dbName, string userName, string password)
Descr: Реализует авторизацию в базе данных. Конфигурация и ограничения прав доступа для сеанса, авторизованного через этот метод, действуют так же, как и для интерактивного сеанса системы. После завершения работы с сеансом необходимо выполнить функцию Logout(). Несколько последовательных Login() без соответствующего вызова Logout() могут привести к тому, что следующее обращение к Login() завершится с ошибкой.
dbName IN
символ базы данных, в которой необходимо авторизоваться
userName IN
имя пользователя
password IN
пароль, соответствующий имени userName
>0 - авторизация успешно выполнена
0 - ошибка
int
Logout()
Descr: Завершает авторизованный сеанс работы в базе данных.
string
GetObjectTitle(PpyObjectIdent objType)
Descr: Возвращает наименование типа объекта данных objType. Например, вызов GetObjectTitle(ppoAccSheet) вернет строку "Таблица аналитического учета".
Наименование типа объекта данных. Если objType задан неверно, то вернет пустую строку.
IPapyrusObject * CreateObject(PpyObjectIdent objType)
Descr: Создает экземпляр объекта данных типа objType. После завершения работы с этим экземпляром объекта, он должен быть разрушен обычным образом.
Указатель на интерфейс созданного экземпляра объекта данных. В случае ошибки - 0.
IPapyrusView * CreateView(PpyViewIdent viewID)
Descr: Создает экземпляр контроллера анализа данных (КАД) типа viewID. После завершения работы с этим экземпляром КАД, он должен быть разрушен обычным образом.
Указатель на интерфейс созданного экземпляра КАД. В случае ошибки - 0.
int
GetStatusInfo(out SPpySessionInfo * pInfo)
Descr: Инициализирует структуру с информацией о текущем состоянии сеанса.
pInfo OUT
{vptr0
Указатель на структура SPpySessionInfo в которой содержатся поля информации о текущем состоянии сеанса. }
>0 - информация извлечена успешно и присвоена по указателю pInfo.
0 - ошибка
Перечисление PpyViewIdent Descr: Перечисление типов контроллеров анализа данных PPView.
= 1
= 2
Перечисление PpyObjectIdent Descr: Перечисление типов объектов PPObject. Каждый элемент перечисления должен иметь соответствие PPOBJ_XXX в файле ppdefs.h (значения идентификаторов ppoXXX и PPOBJ_XXX обязательно должны совпадать)
= 13
=PPOBJ_ACCSHEET Таблицы аналитического учета
= 17
=PPOBJ_CASHNODE Расчетные кассовые узлы
= 1006
=PPOBJ_ARTICLE Статьи аналитического учета
IPapyrusObject
Descr: Основной интерфейс доступа к функциям объектов данных. Экземпляры объектов данных должны создаваться методом IPapyrusSession::CreateObject()
Методыint
Search(long id, out PPYOBJREC rec)
Descr: Ищет запись объекта по идентификатору id. Поиск осуществляется непосредственно в базе данных (механизм кэширования Papyrus не используется).
id IN
Идентификатор записи объекта, которую необходимо найти.
rec OUT
@#{vptr0
Указатель на буфер, по которому будет записано содержание записи в случае, если она будет найдена. Структура буфера определяется конкретным типом объекта. В этом файле намиенования таких структур начинаются с префикса "SPpyO_" и продолжаются наименованием типа объекта данных. Например: SPpyO_Article - структура записи статьи аналитического учета. Не следует делать предположений о формате хранения записи объекта данных, непосредственно в базе данных, на основании структуры, используемой в методах IPapyrusObject. }
>0 - запись по идентификатору id найдена и присвоена по указателю rec
<0 - запись по идентификатору id не найдена. Содержимое по указателю rec не изменилось.
0 - ошибка. Не следует далеть предположений о содержимом указателя rec
int
SearchByName(string text, int kind, long extraParam, out PPYOBJREC rec)
Descr: Ищет запись объекта по наименованию. При этом, смысл наименования трактуется в зависимости от параметра kind.
text IN
Строка, по которой ищется запись.
kind IN
Вид поиска.
0 - собственно, по наименованию
1 - по коду (каждым типом объекта трактуется особо)
extraParam IN
Дополнительный параметр, необходимый для правильной интерпретации кода некоторыми типами объектов.
rec OUT
Указатель, по которому будет присвоена запись объекта в случае успешного поиска.
>0 - объект найден
<0 - объект не найден
0 - ошибка
string
GetName(long id)
Descr: Возвращает наименование объекта с идентификатором id. Если такой объект не найден, то возвращает строку вида "ID=xxx", где xxx - значение id. Реализация интерфейса в праве использовать внутреннее кэширование для поиска требуемого наименования. Как следствие, вызов этого метода может быть значительно быстрее, чем использование метода Search, но актуальность результата гарантирована быть не может (однако, вероятность ошибки ничтожна).
Если запись по идентификатору id найдена, то возвращает строку, содержащую наименование объекта. В противном случае, либо в случае ошибки, возвращает пустую строку.
IStrAssocList * GetSelector(long extraParam)
Descr: Возвращает список строк, ассоциированных с идентификаторами и соответствующих наименованиям выбоки записей объекта данных, полученных на основе ограниченной фильтрации по аргументу extraParam. Каждый тип объектов данных имеет собственную спицифику использования extraParam для ограниченной фильтрации записей. Соответствующие пояснения приведены в описании этих объектов.
Указатель на интерфейс IStrAssocList списка наименований объекта данных. 0 - оишбка
int
Create(PPYOBJREC pRec, long flags, out long * pID)
Descr: Создает новую запись объекта в соответствии со структурой pRec. Особенности создания записей объектов конкретных типов описаны в комментариях к соответствующим компонентам.
pRec IN
Указатель на структуру записи объекта. Реализация функции проверяет корректность тега структуры pRec→ RecTag.
flags IN
Флаги создания записи. Сейчас используется только флаг 0x0001 означающий что функция НЕ ДОЛЖНА использовать внутреннюю транзакцию.
pID OUT
Указатель на идентификатор созданной записи. При неудачном завершении функции значение по этому указателю не определено.
>0 - объект успешно создан
0 - ошибка
int
Update(long id, long flags, in PPYOBJREC rec)
Descr: Изменяет запись объекта по идентификатору id в соответствии со структурой pRec. Особенности изменения записей объектов конкретных типов описаны в комментариях к соответствующим компонентам.
id IN
Идентификатор изменяемого объекта.
flags IN
Флаги создания записи. Сейчас используется только флаг 0x0001 означающий что функция НЕ ДОЛЖНА использовать внутреннюю транзакцию.
pRec IN
Указатель на структуру записи объекта. Реализация функции проверяет корректность тега структуры pRec→ RecTag.
>0 - объект успешно изменен 0 - ошибка
IPapyrusView
Descr: Основной интерфейс контроллера анализа данных (КАД). Реализация этого интерфейса обычно представлена следующими компонентами (в скобках указаны префиксы наименований соответствующих компонентов):
- структурой элемента выборки (SPpyVI_XXX)
- опциональной структурой итогов выборки (SPpyVT_XXX)
- интерфейсом фильтра (IPpyFilt_XXX)
- классом реализации интерфейса фильтра (PPFiltXXX)
- классом реализации собственно интерфейса IPapyrusView (PPViewXXX)
Экземпляры КАД должны создаваться вызовом метода IPapyrusSession::CreateView().
Методы
IUnknown * CreateFilt(long param)
Descr: создает экземпляр фильтра выборки и возвращает его интерфейс. В зависимости от особенностей класса, параметр param может определять предварительную инициализацию фильтра.
int
Init(IUnknown * pFilt)
Descr: инициализирует объект в соответствии со свойствами фильтра pFilt. После успешной инициализации объект готов к обработке других методов интерфейса. Действительный интерфейс фильтра должен быть создан функцией CreateFilt() того же класса, заполнен, и передан в функцию Init().
>0 - инициализация объекта в соответствии с фильтром pFilt прошла успешно
0 - ошибка
int
InitIteration(int order)
Descr: Инициализирует итератор объекта. После вызова этой функции, последовательными вызовами NextIteration можно перебрать все записи выборки, полученной в соответствии с фильтром, установленным функцией Init().
order IN
определяет порядок сортировки построенной выборки данных. Возможные значения этого аргумента зависят от конкретной реализации КАД. Значение 0 принимается всегда и не может быть отвергнуто как ошибочное.
>0 - итератор объекта инициализирован успешно
0 - ошибка
int
NextIteration(out PPYVIEWITEM item)
Descr: Извлекает следующую запись выборки, построенной на основе фильтра, заданного в функции Init() и инициализированной вызовом InitIteration().
item OUT
Указатель на структуру, в которую записывается запись выборки данных. Действительная структура записи определяется конкретным типом КАД.
>0 - очередная запись успешно извлечена и присвоена по указателю item.
<0 - больше нет записей для извлечения. Запись по указателю item не изменяется.
0 - ошибка. Не следует далеть предположений относительно содержимого по указателю item.
SIterCounter GetIterCounter()
Descr: Возвращает счетчик итераций, изменяемый вызовами NextIteration(). Возвращаемый счетчик несет чисто информационную (декоративную) нагрузку. Он никак не используется при фактической работе методов InitIteration() и NextIteration(), но лишь изменяется ими. Кроме того, не все (но все же, подавляющее большинство) КАД корректно реализуют этот метод.
int
GetTotal(out PPYVIEWTOTAL total)
Descr: Возвращает итоговые значения выборки, инициализированной методом Init().
total OUT
Указатель на структуру, в которую записываются занчения итоговых показателей выборки. Действительная структура total определяется конкретным типом КАД.
>0 - функция выполнена успешно - итоговые данные занесены по указателю total.
<0 - функция не поддерживается
0 - ошибка
_sggNone = 0
Без подстановки.
_sggGeneric
Обобщение. Если товар является членом обощения, то подставляется это обобщение. В противном
случае - остается тот же товар.
_sggGroup
Родительская группа (непосредственная родительская группа).
_sggManuf
Производитель.
_sggDimX
Размерность X классифицированного товара. Если товар не классифицирова, либо размерность X для него не определена, то остается тот же товар.
_sggDimY
Размерность Y классифицированного товара. Если товар не классифицирова, либо размерность Y для него не определена, то остается тот же товар.
_sggDimZ
Размерность Z классифицированного товара. Если товар не классифицирова, либо размерность Z для него не определена, то остается тот же товар.
_sggClsKind
Вид классифицированного товара. Если товар не классифицирова, либо вид для него не определен, то остается тот же товар.
_sggClsGrade
Сортность классифицированного товара. Если товар не классифицирова, либо сортность для него не определена, то остается тот же товар.
_sggClsAddObj
Дополнительный объект классифицированного товара. Если товар не классифицирова, либо дополнительный классификатор для него не определен, то остается тот же товар.
_sggClsKind_Grade
Вид, сортность классифицированного товара. Если товар не классифицирован, то остается тот же товар.
_sggSuppl
Поставщик. Такая подстановка возможна только в тех случаях, когда расчет ведется в контексте товарных операций (то есть, существует привязка операции к лоту, из которого и можно получить поставщика).
_sggBrand
Торговая марка.
_sggClsKind_Grade_AddObj
Вид, сортность, доп объект классифицированного товара. Если товар не классифицирован, то остается тот же товар.
_sggClsKind_AddObj_Grade
Вид, доп объект, сортность классифицированного товара. Если товар не классифицирован, то остается тот же товар.
_sggSupplAgent
Агент поставщика. Агент поставщика извлекается как агент по документу прихода, которым был сформирован лот. Такая подстановка возможна только в тех случаях, когда расчет ведется в контексте товарных операций (то есть, существует привязка операции к лоту, из которого и можно получить требуемую информацию).
_sggLocation
Склад по операции. Такая подстановка возможна только в тех случаях, когда расчет ведется в контексте товарных операций (при этом в качестве склада, берется тот, к которому привязана операция).
Класс StrAssocList
Реализует интерфейс IStrAssocList
Класс PPUtil
Реализует интерфейс IPapyrusUtil
Класс PPSession
Реализует интерфейс IPapyrusSession
Класс PPObjAccSheet
Реализует интерфейс IPapyrusObject
Комментарии по методам интерфейса IPapyrusObject Класс PPObjArticle
Реализует интерфейс IPapyrusObject
Комментарии по методам интерфейса IPapyrusObject
Класс PPObjCashNode
Реализует интерфейс IPapyrusObject
Комментарии по методам интерфейса IPapyrusObject Класс PPViewTrfrAnlz
Реализует интерфейс IPapyrusView
Интерфейс IPpyFilt_TrfrAnlz
Методы
void
SetPeriod(date low, date upp)
Descr: Устанавливает период документов, которые должны попасть в обработку.
void
SetLotsPeriod(date low, date upp)
Descr: Устанавливает период поступления лотов, по которым должен проводится анализ. Если устанавливается не пустой период, то в анализ попадут только те товарные операции, которые привязаны к лотам, дата которых попадает в указанный период. Обращаем внимание на то, что имеется в виду именно дата лота, а не дата оригинального лота.
Свойства out SDateRange Period Период обрабатываемых операций. Для установки - SetPeriod out SDateRange LotsPeriod Период поступления лотов, которыми ограничиваются обрабатываемые операции. Для установки - SetLotsPeriod long OpID Вид операции (возможно обобщенной) long LocID Склад long SupplID Поставщик long ArID Если !0, то перебираются только те документы, у которых ObjectID == ArID long DlvrAddrID Адрес доставки. Если ArID == 0, то не используется // long AgentID Если !0, то перебираются только те документы, в которых установлен этот агент. long PsnCatID Категория персоналии long CityID Город контрагентов, по которым перебираются операции long GoodsGrpID Товарная группа, по которой ведется перебор операций. Если GoodsID != 0, то этот параметр игнорируется (используется только как ограничение выбора товара в диалоге) long GoodsID Товар, по которому ведется перебор операций (может быть обобщенным) PpyVTrfrAnlzFlags Flags Флаги фильтрации. Возможные значения определены перечислением PpyVTrfrAnlzFlags: tavfLabelOnly = 0x0001 Только помеченные операции: отбираются только те операции, которые привязаны к документам, помеченным признаком WL. tavfGByDate = 0x0002 Группировка по дате (только если выбран товар - GoodsID). Если флаг установлен, то все операции по товару группируются по датам. При этом расходы и приходы учитываются раздельно. tavfGetRest = 0x0004 Рассчитывать товарные остатки. tavfSubstPersonRAddr = 0x0008 При подстановке персоналии использовать фактический адрес. Если этот флаг не установлен, то используется юридический адрес. tavfSubstDlvrAddr = 0x0010 При подстановке персоналии использовать адрес доставки. tavfDiffByDlvrAddr = 0x0020 При группировке по контрагенту заменять контрагента на конкатенацию (контрагент+адрес доставки). tavfDontInitSubstNames = 0x0040 Не инициализировать имена подставляемых объектов. Эта опция экономит время подготовки данных если нет необходимости сортировать записи или выводить отчет на экран. tavfInitLocCount = 0x0080 Рассчитывать количество адресов доставки для каждого элемента группировки. Внутренний флаг (инициализируется программно) tavfCalcRest = 0x0100 Для группировки gGoods, gGoodsBill, gGoodsDate рассчитывать остатки tavfShowAllArticles = 0x0200 Показывать отсутствующие позиции контрагентов tavfShowAllAgents = 0x0400 Показывать отсутствующие позиции агентов tavfShowAllGoods = 0x0800 Показывать отсутствующие позиции товаров int InitOrd Порядок сортировки сформированной выборки. Возможны следующие значения: 0 - по умолчанию (на усмотрение внутренней реализации) 1 - по дате 2 - по наименованию товара 3 - по наименованию контрагента При использовании подстановки элементы выборки сортируются по результирующему значению. long CtKind Вид кросстабулированного отчета. Возможны следующие значения: 0 - без кросстабуляции 1 - кросстабуляция по дате (с учетом подстановки, если таковая определена) long CtVal Показатель, вычисляемый в кросстабулированном-отчете. Этот параметр значим только в том случае, если CtKind не равен 0. Допустимы следующие значения: 1 - сумма в ценах поступления 2 - сумма в чистых ценах реализации (с учетом скидки) 3 - сумма доходности по операции (разница между суммой в чистых ценах реализации и суммой в ценах поступления) 4 - процентная доходность (отношение суммы в чистых ценах реализации к сумме в ценах поступления умноженное на 100) 5 - количество адресов доставки, по строке PpyVTrfrAnlzGrouping Grp Параметр группировки. Возможные значения определены перечислением PpyVTrfrAnlzGrouping: tavgNone = 0 Без группировки tavgGoods = 1 По товару tavgCntragent = 2 По контрагенту tavgCntragentDate = 3 По контрагенту, дате tavgGoodsCntragent = 4 По товару, контрагенту tavgGoodsCntragentDate = 5 По товару, контрагенту, дате tavgGoodsBill = 6 По товару, документу tavgDateCntragentAgentGoods = 7 По дате, контрагенту, агенту, товару tavgGoodsDate = 8 По товару, дате tavgBillCntragent = 9 По документу, контрагенту PpyVSubstGrpGoods Sgg Подстановка товара. Варианты значений определены в описании перечисления PpyVSubstGrpGoods. PpyVSubstGrpPerson Sgp Подстановка персоналии. Варианты значений определены в описании перечисления PpyVSubstGrpPerson. PpyVSubstGrpDate Sgd Подстановка даты. Варианты значений определены в описании перечисления PpyVSubstGrpDate. Класс PPFiltTrfrAnlz Реализует интерфейс IPpyFilt_TrfrAnlz. Создавать экземпляр этого класса следует только посредством метода PPViewCCheck::CreateFilt(). Класс PPViewCCheck Реализует интерфейс IpapyrusView. Создавать экземпляр этого класса следует только посредством вызова метода PPSession::CreateView(ppvCCheck). Интерфейс IPpyFilt_CCheck Методы
void
SetPeriod(date low, date upp);
Descr: Устанавливает период перебора чеков.
Свойства long CashNodeID → PPOBJ_CASHNODE ИД кассового узла long CashNumber Номер кассового аппарата (не путать с кассовым узлом) long GoodsGrpID → PPOBJ_GOODSGROUP ИД группы товаров (допустимы: обыкновенные группы, группы верхнего уровня, альтернативные группы). Если это значение не нулевое, то чеки перебираются по строкам. long GoodsID → PPOBJ_GOODS ИД товара. Если это значение не нулевое, то чеки перебираются по строкам. long SCardSerID → PPOBJ_SCARDSERIES ИД серии дисконтных карт. Если SCardID не нулевое, то этот критерий игнорируется. long SCardID → PPOBJ_SCARD ИД дисконтной карты. Если значение не нулевое, то перебираются только те чеки, которые привязаны к выбранной карте. long CashierID → PPOBJ_PERSON ИД кассира. long AgentID → PPOBJ_ARTICLE ИД агента (официанта) long TableCode Номер стола long MinCode Минимальный номер чека (0 - не определено) long MaxCode Максимальный номер чека (0 - не определено) double MinAmount Минимальная сумма чека (0 - не определено) double MaxAmount Максимальная сумма чека (0 - не определено) double MinQtty Минимальное количество товара по строке (0 - не определено) double MaxQtty Максимальное количество товара по строке (0 - не определено) double AmountQuant Квант суммы чека или количества по строке для группировке по соответствующему критерию. Используется только при группировке по критериям: ccgAmount, ccgQtty PpyVCCheckFlags Flags Флаги фильтрации. Возможные значения определены перечислением PpyVCCheckFlags: ccfZeroSess = 0x0001 Только чеки по неопределенным кассовым сессиям ccfActiveSess = 0x0002 Только чеки активной синхронной кассовой сессии ccfCheckLines = 0x0004 Просматривать строки чеков (для группировки по товарам) ccfImmOpenPanel = 0x0008 Не влияет на состав выборки ccfShowSuspended = 0x0010 Показывать отложенные ccfSuspendedOnly = 0x0020 Только отложенные ccfRetOnly = 0x0040 Показывать только возвраты ccfShowJunk = 0x0080 Отложенные чеки, которые были загружены в панель чеков. Если панель аварийно завершила работу, то этот чек зависнет. ccfFillCashNodeID = 0x0100 Заполнять поле CashNodeID ccfNotPrintedOnly = 0x0200 Показывать только ненапечатанные чеки ccfCashOnly = 0x0400 Только чеки, проведенные за наличные ccfBankingOnly = 0x0800 Только чека, проведенные по безналичной оплате PpyVCCheckGrouping Grp Варианты группировки. Возможные значения определены перечислением PpyVCCheckGrouping: ccgNone = 0 Не группировать ccgTime = 1 По времени чека ccgDate = 2 По дате чека ccgCash = 3 По номеру кассового аппарата ccgCard = 4 По дисконтным картам ccgAmount = 5 По сумме чека (градация определяется свойством фильтра AmountQuant) ccgQtty = 6 По количеству в строке чека (градация определяется свойством фильтра AmountQuant) ccgGoods = 7 По товарам ccgCashiers = 8 По кассирам out SDateRange Period Период, в который должны попадать чеки из выборки. Устанавливать это свойство следует вызовом метода SetPeriod(). Замечание: дата чека может не совпадать с датой кассовой сессии, к которой это чек относится. time MinTime Нижнее время отсечки выборки time MaxTime Верхнее время отсечки выборки long WeekDays Битовая маска дней недели, которым следует ограничить выборку. Если WeekDays = 0, то маска считается неопределенной (все дни недели). Бит 0 соответствует воскресенью, бит 1 - понедельнику, бит 2 - вторнику и т.д. long HourBeforeКласс PPFiltCCheck Реализует интерфейс IPpyFilt_Ccheck. Создавать экземпляр этого класса следует только посредством метода PPViewCCheck::CreateFilt().