Создание нового типа документов

Скачать: 

 

Для создания нового типа документов нам нужно выполнить действия, подобные тем, которые мы выполняли в статье «Создание нового типа справочника аналитики». Структура и названия файлов практически не отличаются, за исключением некоторых деталей, о которых поговорим позже. Не будем подробно останавливаться на описании файлов. Их коды можно найти в архиве. Просто в некоторых моментах опишем "Почему так?", "А почему такая разница?" и т.д.
 

Для начала немного общих понятий. Папки документов сохраняются в папке Scripts / Docs. Все типы папок документов находятся в отдельных папках (именно одну из них вы найдете в архиве source.zip.
 

Для создания нового типа документов вам нужно:
1. В Scripts / Docs создать папку с названием, которое соответствует названию самого документа.
2. Создать в ней необходимые файлы.
3. Создать нужные таблицы в базе данных.
 

Теперь о каждом пункт подробнее.
1. Имя папки будет соответствовать названию типа документа. В системе "Дебет Плюс" папки документов принято называть двумя буквами (например, "NN"). Мы будем создавать документ "CU (Универсальный кассовый ордер. Поэтому создадим соответствующую папку Scripts / Docs. После этого мы скопируем файлы из архива в эту папку и пересмотрим их.
2. Легко видеть, что изменения между тем, что мы создавали в предыдущей статье незначительны. Но давайте по порядку рассмотрим коже из файлов.
Описание типа справочника (class.xml). Напоминаем, что в классе мы описываем переменные справочника. Имена этим переменным мы будем давать такие, как и имена полей, заменяя первую букву F на H.
По сравнению с файлом класса, изменения практически отсутствуют, за исключением того, что тег <DpCl> изменился тэгом <DpDoc>, в котором указан тип документа (название созданной папки), название и подсистема, в которой этот документ будет создаваться. Обратите внимание на название подсистемы. Позднее (в следующих статьях) нам это понадобится.
Связь переменных с полями таблицы (dpmapping.xml). Изменений нет, за исключением того, что указано только одну таблицу для хедера (заголовке).
Файл list.xml. Без изменений. Сначала указано имя таблицы, а затем перечень полей. Не пугайтесь, что перечень отображаемых полей сложный. Вы можете упростить его, удалив теги <page> и тогда все станет на свои места.
Файл e-cu.js и form.xml. Здесь файл e-cu.js является файлом, где описываются события на форме. Описание формы вы уже умеете делать. А вот в e-cu.js есть некоторые изменения. Сейчас мы их и рассмотрим.
Во первых, файлы подключаемых описывают классы объектов, используемых для описания типа документов, включая и сам DpDoc.js.
Во-вторых, обратите внимание на описание грида. Сначала мы в функции load () описываем функции на сменные работы с грид, а затем описываем и сами функции.
Давайте их рассмотрим:

    initgrid () - инициализируется грид.

    ListMenuInit () и onSelectRowMenu () - Описывают контекстное меню.

    SaveRows () - сохранение строк документов.

Если первые три функции являются функциями класса и вызываются при загрузке грида, то последняя (SaveRows ()) вызывается в функции сохранения документов onSave ().

Думаю с другими функциями проблем не должно быть. Не сложно разобраться что и к чему. Если возникают вопросы или замечания то пишите на форум - поможем.

    Описания грида, который находится на форме находится в файле rowlist.xml.

    Что касается описания строк документа, то там никаких изменений нет. Под словами "изменений нет" у меня ввиду, что прочитав предыдущую статью по аналогии можно разобраться и настоящей статье.

   3. Теперь главное не забыть создать таблицы в базе данных :))). В файле STRU_CU.xml есть описание структуры таблиц. Хотим только подчеркнуть, что в системе "ДебетПлюс" принято правило, имена таблиц даются по таким формулам:

    для шапки документов H + <Тип документа>

    для строк документов R + <Тип документа>

    Вот и все. Осталось перезапустить систему, найти созданный тип документа, добавить папку и проверить все ли работает так как нужно.

    Помните, что папка userStru должна находиться в папке userData.