Иерархия субсчетов ФБП как в NC.



Posted by Evgen A. Palamarchuck on May 15, 2000 at 14:26:37:

In Reply to: О многоуpовневости, многомеpности. Поздpавления, пpизы. posted by Аpкадий Водяник on April 27, 2000 at 05:00:40:

Предпосылки :

Идея создания многоуровневой аналитики в ФБП уже стала притчей во языцех. Был сделан ряд реализаций, но, так или иначе, это – косвенные методы, скорее понятные знатокам ФБП, но никак не пользователям средней квалификации. Разумеется, что ФБП в силу своей внутренней организации позволяют решать неопределенно широкий класс задач, в то числе и совршенно н6 относящиеся к учетным. Например, сделать преобразовние Фурье или расчитать статистические характеристки. Опрос пяткурсников, изучавших ФБП на 3 курсе показывет, что технические характеристки в сравнении с пользовательскими забываются стремительно быстро. Студенты хорошо помнят динамичность инструмента, но отмечают его жесткость к ошибкам, помнят про дерево операций, но отмечают отсутствие типовых настроек. И конечно же, поминают отсутствие многоуровневой аналитки.

Толчок : - сделал своей недавней публикацией автор ФБП – Аркадий Грирьевич Водяник, пригласив реализовать многоуровневую аналитку пользовтелей ФБП.

Цель проекта - создать некие вмонтированные в сетевую систему ФБП механизмы, позволяющие легко оперировать с объектами многоуровневой аналитики, прилагая при этом минимальные усилия при ее адаптации под конкретные задачи.

Реализация :
1. Идея реализована на свойствах программы Клиент-2000 интерпретировать строки документов, заканчивающиеся директивой // (см. документацию).
2. Математически задача организации многоуровневой иерархии тривиальна. Например, об этом интересно рассказал А.Г. в своем проекте на ta-фактах. В нашем случае – есть отличие. Каждый объект кодируется байтами (символами). Отсюда – теоретическая максимальная вложенность уровней – 255.
3. В качестве хранилища ссылок выбран EXTR.DAT как относительно независимый от общего состояния ФБП объект. При этом каждый субсчет или каталог описывается двумя записями, идексируемых как [n1 *AC]+’SUCCESSOR’ (родословная объекта) и [n1 *AC]+’DIR’ – (признак каталога или субсчета).
4. В файл FIRST.RPT добавлена подпрограмма разлистывания каталогов, состоящая из 3-х секций. Первая – для вычисления пути погружения в каталоги (ее результаты работы появляются в рамке клиентского окна), вторая – для разлистывания подкаталогов текущего каталога и третья – для разлистывания субсчетов текущего каталога. Подрограмма относительно универсальна. Например, для того, чтобы сделать “листалку” 41 счета, надо создать файл 41.RPT, а нем написать всего две строки :

AC='41'
CALL SHOW_DIR

5. В служебный файл EDITCARD.RPT добавлено несколько библиотечных процедур, которые в паре с клиентской программой осуществляют все действия по созданию нового субсчета или каталога, навигации в каталоговой системе и перемещению субсчетов между каталогами.
6. В клиенсткой программе внесены небольшие изменения, приведшие к появлению в режиме разлистывания счетов еще двух горячих кнопок – F6 – создать каталог и F5 - переместить субсчет в другой каталог. Кроме того добавлена скрытая функция, автоматически вычисляющая следующий свободный номер создаваемого нового субсчета или каталога. Попробуйте его определить, находясь в любом каталоге и не видя всех объектов сразу !

Результаты :
Внешне работа со вложеной аналитикой уподобилась работе с файлами и каталогами в знаменитом Norton Commander :
- выбрать субсчет – Enter
- перейти на уровень выше или ниже – Enter
- создать новый субсчет - F7
- создать новый каталог - F6
- переместить субсчет в другой каталог F5…F5
Кроме того не следует забывать, что в этом режиме продолжает работать и кнопка F4, выводящая для просмотра и редактирования карточку с раширенными параметрами субсчета (Здесь уже об этом сообщалось. См. в примере карточки в субсчетам 62 счета).

Что не удалось :
- из-за серверных ограничений нельзя редактировать названия субсчетов и каталогов, а также их удалять. Частичной защитой от случайных ошибок здесь может служить необходимость нажатия комбинации CTRL_ENTER для завершения ввода новых субсчетов или каталогов. Другим “альпийским” решением может быть создание каталога с названием “Мусор”, куда в дальнейшем и перемещать “отходы производства”. В этом случае напрашивается подключить кнопку F8(del), чтобы все эти действия делала она сама.
- хотелось максимум решений упрятать в свойства клиенской программы, но это не удалось из-за свойств распределенных систем, к которым, в частности, относится сетевая ФБП.

Пожелания : - …

Где переписать ?
Архив с рабочей программой, примерами и инструкциями лежит здесь (http://www.pallar.com.ua/cl2000_r.htm). Можете использовать его в своих проектах. Enjoy!




Пpишедшие ответы: