Инструкция по созданию своего файла шаблонов
для программы AnyOrder
AnyOrder - создай в своей фирме систему заявок.
Файл шаблонов это отдельный файл, который можно загрузить в программу. Данный файл это база данных SQLite. Она имеет определенные таблицы и определенные правила в формирование данных, которые понимает программа AnnyOrder. Если данный файл не будет придерживаться этих данных, то программа при загрузке и далее при работе с этим файлом шаблонов может аварийно завершаться. Поэтому важно проверять на корректность создания своего файла шаблонов.
Ниже будет описаны эти правила, но лучше всего по созданию своего файла шаблонов обратиться к программисту с элементарными знаниями по работе с базами данными.
Так же Вы можете обратиться к разработчику программы (WhatsApp: +7 912 24-33-701, Сотовый: +7 912 679-10-10), который создаст для Вас необходимый файл шаблонов (стоимость будет зависеть от техзадания) или поможет с разобраться с действиями по созданию своего файла шаблонов, если ниже указанные инструкции не будут Вам понятны.
Лучше всего для создания своего файла шаблонов скачать существующий стандартный файл шаблонов программы и изучить его структуру, которая будет описана ниже. Что бы скачать существующий файл шаблонов, зайдите во вкладку Шаблоны, зайдите в нужный шаблон и выберите Скачать файл шаблонов. Сохраните файл шаблонов на диск и переименуйте расширение файла с «data» на «sqlite3». Теперь этот файл (база данных) можете открыть в любом редакторе базы данных поддерживающих работу с SQLite.
Таблицы базы данных SQLite
Таблица «info»
Таблица имеет только одну запись в которой содержится информация о файле шаблонов.
Таблица info содержит поля:
base - это метка, ключевое поле, уникальное название файла шаблонов, по которому программа будет привязывать создаваемые записи на основе этого файла шаблонов. Параметры поля: TEXT NOT NULL.
name - название файла шаблонов, это название будет показываться в выборе Шаблонов при создании новой Заявки. Параметры поля: TEXT NOT NULL.
info - информация о файле шаблонов. Параметры поля: TEXT NOT NULL.
date - инфоромация о версии файла шаблонов, по этому полю программа определяет поддерживает ли данный файл шаблонов предыдущий. Если будет загружаться в программу файл шаблонов, у которого от предыдущего ранее загруженного, будет поле date отличаться, то ранее созданные записи у списков будут доступны только для просмотра. Если в файл шаблона добавляются новые записи, которые ни как не влияют на старые или меняются старые не затрагивая их структуру, то данное поле лучше не менять, что бы можно было редактировать старые Заявки на основе этого файла шаблонов. Параметры поля: TEXT NOT NULL.
creator - информация о создателе файла шаблонов. Параметры поля: TEXT NOT NULL.
Таблица «list»
Таблица содержит информацию, на основе которой, в шаблоне могут создаваться выпадающие списки, которые могут применяться в тегах «ListName», «ListValue», «ListValueList». В name пишется ключевое слово выпадающего списка, а в value значение, которое будет отображаться в выпадающем списке, при этом значения будут отсортированы по sort. Несколько записей с одним и тем же ключевым словом будут формировать итоговый выпадающий список. Сначала список сортируется по sort в порядке возрастания, но если у нескольких записей поле sort имеет одинаковое значение, то они между собой сортируются в алфавитном порядке.
Таблица list содержит поля:
id - ключевое поле, база данных автоматически присваивает значение. Параметры поля: INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT.
name - ключевое слово для выпадающего списка. Параметры поля: TEXT NOT NULL.
value - текстовое значение применяется для отображения в выпадающем списке. Параметры поля: TEXT NOT NULL.
sort - цифровое значение, используется для сортировки значений в выпадающем списке. Параметры поля: INTEGER.
Таблица «pattern»
Таблица содержит информацию о возможных шаблонах в данном файле шаблонов.
Таблица pattern содержит поля:
id - ключевое поле, задается вручную. Параметры поля: INTEGER NOT NULL DEFAULT('') PRIMARY KEY.
name - название шаблона, которое будет показываться пользователю при создании новой записи в Заявке. Параметры поля: TEXT NOT NULL; UNIQUE(name).
pattern - основное поле, которое содержит структуру шаблона. Шаблон создается из элементов: постоянный текст, редактируемое текстовое или цифровое поле, выпадающие списки. поле с датой и временем. Поле pattern - это текстовое поле, которое представляет из себя xml данные описывающие из каких элементов будет состоять шаблон. Ниже будет описан формат этого поля и возможные xml элементы, группируя и повторяя которые можно формировать шаблон. Максимальное кол-во тегов при формировании шаблона может быть 20 (двадцать). Параметры поля: TEXT NOT NULL
num_focus - кол-во редактируемых текстовых и цифровых полей в шаблоне. При нажатии на клавиатуре клавиши Ввод, должен переходить клавиатурный фокус между этими полями, что позволит вводя данные с клавиатуры переключаться на другое редактируемое текстовое или цифровое поле. Параметры поля: INT NOT NULL.
info - информация о шаблоне, но пока данное поле используется только в фильтрации по словам используемых в этом поле. При добавлении новой записи, значение в строке поиска фильтрует список самих шаблонов используя это поле. Параметры поля: TEXT.
image - картинка к данному шаблону, отображается при нажатии на кнопку «i», при редактировании конкретной записи. Если у шаблона нет картинки, значение данного поля NULL, то кнопка не появляется. Параметры поля: BLOB.
Формат поля pattern таблицы pattern - это xml данные, формата:
<root>
<Label>Текст</Label>
<Number holder="holderText" label="labelText">Цифра</Number>
<List default="defaultText" label="labelText">
<enum>Текст 1</enum>
<enum>Текст 2</enum>
</List>
<ListName default="defaultText" label="labelText">Ключевое слово</ListName>
<ListValue default="defaultText" label="labelText">Цифра</ListValue>
<ListValueList default="defaultText" label="labelText">
<enum>Цифра 1</enum>
<enum>Цифра 2</enum>
</ListValueList>
<Text label="labelText">Цифра</Text>
<Date label="labelText"></Date>
<Time label="labelText"></Time>
</root>
Теги (поля):
"Label", "LabelFind", "LabelHide", "LabelFindHide" - показывается Текст указанный между тегами.
"Number", "NumberHide" - показывается поле для ввода только цифр.
holderText - будет отображаться в пустом поле, как подсказка.
labelText - будет показываться текстом перед данным полем.
Цифра - это порядок смены фокуса, т.е. если фокус для ввода данных с клавиатуры находился в поле с Цифрой равной 1, то при нажатии на Ввод (Enter) фокус перейдет к полю с Цифрой равной 2, когда поля с Цифрой закончатся, то фокус переходит к полю Кол-во, а потом заново к полю с Цифрой равной 1 (начинается от 1 и далее в других полях Number и Text увеличиваем следующей цифрой), так же при этом в таблице pattern поле num_focuc должно иметь значение кол-ва полей Number и Text в которых указано Цифра, если Цифра в поле не указана, то и фокус к этому полю при нажатии на Ввод (Enter) не переходит.
"List", "ListFind", "ListHide", "ListFindHide" - показывается выпадающий список (меню), названия элементов списка (Текст 1, Текст 2, …) берутся из подтегов "enum".
defaultText - текст который будет по умолчанию показываться в этом поле, он может не совпадать с перечнем (Текст 1, Текст 2, …).
labelText - будет показываться текстом перед данным полем.
"ListName", "ListNameFind", "ListNameHide", "ListNameFindHide" - показывает выпадающий список (меню), названия элементов списка берутся из поля value таблицы list, где поле name = Ключевое слово, которое указано между тегами, удобно применять данный тег если в разных шаблонах часто используется один и тот же выпадающий список.
defaultText - текст который будет по умолчанию показываться в этом поле, он может не совпадать с каким либо текстом сформированным в выпадающем списке.
labelText - будет показываться текстом перед данным полем.
"ListValue", "ListValueFind", "ListValueHide", "ListValueFindHide" - показывает выпадающий список (меню), названия элементов списка берутся из поля value таблицы list, где поле name = выбранному (написанному) значению элемента из тега порядковый номер которого указан (Цифра), (порядковый номер начинается с нуля), то есть можно формировать выпадающий список на основе данных до этого выбранных значений в других элементах шаблона.
"ListValueList", "ListValueListFind", "ListValueListHide", "ListValueListFindHide" - показывает выпадающий список (меню), названия элементов списка берутся из поля value таблицы list, где поле name = «ключевая фраза», которая будет формироваться из нескольких полей (тегов), порядковые номера которых указаны (Цифра1, Цифра2, …) разделенных между собой пробелом, это позволяет выбирать последнее название не выбирая например все выпадающие списки, а выбирая списки делать фильтрацию выпавдающего списка (уменьшать выпадающий список).
defaultText - текст который будет по умолчанию показываться в этом поле, он может не совпадать с перечнем сформированным в выпадающем списке.
labelText - будет показываться текстом перед данным полем.
"Text", "TextFind", "TextHide", "TextFindHide" - показывается поле для ввода любого текста.
labelText - будет показываться текстом перед данным полем.
Цифра - это порядок смены фокуса, т.е. если фокус для ввода данных с клавиатуры находился в поле с Цифрой равной 1, то при нажатии на Ввод (Enter) фокус перейдет к полю с Цифрой равной 2, когда поля с Цифрой закончатся, то фокус переходит к полю Кол-во, а потом заново к полю с Цифрой равной 1 (начинается от 1 и далее в других полях Number и Text увеличиваем следующей цифрой), так же при этом в таблице pattern поле num_focuc должно иметь значение кол-ва полей Number и Text в которых указано Цифра, если Цифра в поле не указана, то и фокус к этому полю при нажатии на Ввод (Enter) не переходит.
"Date", "DateHide" - показывается поле для ввода даты, по умолчанию выбирается текущая дата.
"Time", "TimeHide" - показывается поле для ввода времени, по умолчанию выбирается текущее время.
Приписка Find к тегам говорит о том, что в строке поиска наименования, данный тег будет использоваться для поиска.
Приписка Hide к тегам говорит о том, что в формировании названия данный тег не будет использоваться.
Для визуальной нумерации тегов рекомендуется использовать какой либо атрибут, например number, и в нем прописывать номер тега, начинается с нуля, это значение не как не будет использоваться, но будет более наглядно показывать порядковый номер тега, который будет использоваться в выпадающих списках или в хранимой процедуре.
Конечное название формируется за счет объединения значений всех полей (тегов) не имеющих приписки Hide.
Всего может быть только 20 полей, поэтому для формирования более сложных шаблонов, где может не хватить кол-ва полей, рекомендуется вместо тегов (полей) Label использовать атрибуты label, что будет приводить к одном у и тому же визуальному эффекту.
Таблица «solve»
Рабочая таблица, используется если мы хотим выводить информацию об ошибках при создании новой записи, например, если не все или конкретные поля не заполнены или не выбраны значения у выпадающих списков. Или для формирования расчетных полей, например, расчет площади вентизделия, формирования его цены. Для этого используются хранимые процедуры применяемые к этой таблице, это уже программирование на языке SQL. Но зато вся логика работы зашита в самом файле шаблонов, и если где-то допущена ошибка в формировании названия элемента списка на основе шаблона, достаточно поправить файл шаблона и отправить его пользователям, что бы они его к себе загрузили. Когда в программе пользователь заполняет строчку списка используя шаблон, то программа автоматически заполняет все вводимые данные строки в конкретную строчку таблицы solve, и если хранимая процедура меняет поля этой строчки, то они и меняются в самой программе.
Таблица solve содержит поля:
id - ключевое поле, задается вручную. Параметры поля: INTEGER NOT NULL PRIMARY KEY.
name - текстовое поле.
Если name равно пустому текстовому значению «», не NULL, то данное строка применяется для отображения ошибок и перезаписи различных значений value формируемого названия. Для этого создается хранимая процедура используя фильтрацию «WHEN new.pattern_name = 'название шаблона' AND new.name = ''». При этом в поле value необходимо записывать ошибку если она есть, или пустое текстовое значение если все нормально.
Если name не равно пустому текстовому значению «», то его значение будет именем расчетного поля, при этом хранимая процедура должна результат расчетного поля записать в поле value. Для этого создается хранимая процедура используя фильтрацию «WHEN new.pattern_name = 'название шаблона' AND new.name = 'Расчетное поле'».
Параметры поля: TEXT NOT NULL.
num - поле куда программа записывается значение кол-ва у строчки списка. Параметры поля: TEXT.
pattern_name - название шаблона. Параметры поля: TEXT NOT NULL.
value - поле используется для отображения ошибки, если name='' или для отображения значения расчетного поля, если name = 'Расчетное поле'. Параметры поля: TEXT NOT NULL.
measure - поле куда программа записывается значение единицы измерения у строчки списка. Параметры поля: TEXT DEFAULT('').
value0 - поле куда программа записывается первое значение элемента шаблона, которое используется для создания названия строки списка. Первый элемент шаблона это первый тег описываемый в структуре xml поля pattern таблицы pattern. Параметры поля: TEXT NOT NULL.
…
value19 - поле куда программа записывается последнее (двадцатое) значение элемента шаблона, которое используется для создания названия строки списка. Двадцатый элемент шаблона это двадцатый тег описываемый в структуре xml поля pattern таблицы pattern. Параметры поля: TEXT NOT NULL. Если такого тега нет, то программа записывает пустое значение в это поле.
Пример простой хранимой процедуры для простого шаблона с одним текстовым полем, проверяющей что поле не пустое:
Таблица pattern содержит строку: name='Напишу сам', pattern='<root><TextFind number="0" holder="Наименование">1</TextFind></root>'.
Таблица solve содержит строку: new.name = '', pattern_name = 'Напишу сам'.
Таблица solve содержит хранимую процедура
DROP TRIGGER solve_New_trigger;
CREATE TRIGGER solve_New_trigger AFTER UPDATE ON solve
WHEN new.pattern_name = 'Напишу сам' AND new.name = ''
BEGIN
UPDATE solve
SET
value = CASE
WHEN new.value0 = ''
THEN 'Напишите наименование, которое не нашли в шаблоне, соблюдая синтаксис шаблона'
ELSE ''
END
WHERE id = new.id;
END;
Остальные таблицы могут создаваться для дополнительного хранения какой-либо информации используемой в расчетах хранимых процедур.
Чтобы лучше понять как работает файл шаблона, скачайте и изучите стандартный файл шаблона.