Главная DISCLAIMER Ссылки Карта сайта Контакты
Главная arrow Вопросы разработки arrow Источники данных
Источники данных

Объектная модель Акцента содержит ряд свойств для связывания с селектором на форме или диалоге. Связанный элемент отслеживает изменение назначенного ему свойства, и наоборот, изменения в селекторе (ввод текста или нажатие кнопки) передаётся через это же свойство источнику данных для обработки и последующего отображения.
Среда разработки Акцент позволяет самостоятельно создавать на встроенном VBScript или применять написанные с использованием технологии COM источники данных для связывания с различными контролами.



Клас-парсер параметра проводки

В строке документа Акцента может быть показано произвольное количество данных. Решается легко добавлением параметров проводки.

Однако при решении учётных задач в форме первичного документа часто бывает необходимо показывать и сохранять редко используемые или вообще не востребованные в учёте данные, как то фамилии подписавших лиц, различные промежуточные и вспомогательные величины. При этом большое количество задействованных параметров сказывается на быстродействии формы и всей системы в целом. Примером может послужить Ведомость расчёта амортизации ОС, где из всех параметров значащим является только начисленная сумма износа, или вот подобный документ:

Форма

В предлагаемом решении все не особо важные данные собираются в один строковый параметр в формате "с разделителем". Использован класс - источник данных для редактора, поэтому проектирование формы происходит абсолютно прозрачно и ничуть не сложнее чем с использованием отдельного параметра для каждого числа.

 
Класс для селектора выбора рецептуры

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

 
Добавление функционала "Адрес доставки" в расходную накладную

По сути, в предложенном решении вопроса в форму расходной накладной или заявки добавляется третий корреспондент - подразделение покупателя, которому осуществляется доставка. При этом в селекторе ввода/выбора "Доставка:" отображается название этого подразделения и его адрес, который может быть задан или изменён оператором непосредственно из формы, без вызова каких-либо вспомогательных диалогов.

Адрес доставки хранится в строковом параметре op.String2 документа, т.е адрес индивидуален для каждого документа. Кроме того, в параметре op.Long2 документа сохраняется источник этого адреса - идентификатор подразделения покупателя, которому осуществляется доставка.
Адрес формируется из названия подразделения покупателя и параметра этого подразделения "Адрес доставки" - т.е изначально можно работать с незаполненным параметром. Когда адрес доставки вводится оператором в селектор вручную, он сохраняется в параметре подразделения для повторного использования при следующих отгрузках этому покупателю. По щелчку на селекторе, если у покупателя есть подразделения, предлагается выбор подразделения для доставки.

Вся логика работы заложена в классе, для реализации описанного функционала достаточно добавить текст класса в модуль формы расходной накладной, а на форме разместить селектор "Доставка:" с предопределённым именем sel_ps2.

 
Слово "послуга" в колонке "цена" налоговой накладной

ГНА Украины своим письмом от 02-12-2005 разъяснила, что при реализации услуг, измеряемых только в стоимостном выражении, в графе 4 "единица измерения" налоговой накладной следует указывать "грн.", а в графе 5 "Количество" - слово "послуга".
Технически в форме Акцента "Налоговая накладная" вопрос легко решается написанием источника данных для колонки "Кол-во" взамен штатного выражения Op.Trans(1, sgrdEnts.BindRow).Qty
В обычных условиях источник работает аналогично штатному, а при распознании ситуации выводит слово "послуга" вместо количества.

 
Обработка нажатия кнопки селектора в классе на VBScript

Объектная модель Акцента содержит ряд свойств для связывания с селектором на форме или диалоге. Связанный элемент отслеживает изменение назначенного ему свойства, и наоборот, изменения в селекторе (ввод текста или нажатие кнопки) передаётся через это же свойство источнику данных для обработки и последующего отображения.

При решении сложных задач автоматизации часто приходится самостоятельно писать источники данных для связывания с различными контролами. Однако, если требуется обработка нажатия кнопки селектора, при использовании такого источника приходится производить ряд не совсем логичных действий: нужно запретить контролу обрабатывать щелчёк кнопки методом DisableBindClick и поместить вызов метода Click своего класса в обработчик события OnClick контрола. Неудобно и то, что событие OnBound контрола в этом случае расположено в двух процедурах.
А почему бы сразу не обрабатывать событие нажатия кнопки в классе, написанном на VBScript?