"Подводные камни" при разработке проектов.


Как и любая компьютерная разработка Афина имеет свои особенности, которые необходимо учитывать, разрабатывая проекты.

 

1. Представьте себе, что в вашем проекте намечается создать справочник, который будет держать большое количество записей. Это может быть 10 000 или 1 000 000 записей или еще больше.
Если такое количество записей держать в одном справочнике, то при формировании таблицы справочника (для ее отображения) все запрашиваемые записи будут присланы сервером. И формирование таблицы на клиенте будет занимать ощутимое время: чем больше записей, тем больше времени понадобится для этого.

Рекомендуемые решения этой, строго говоря, проблемы:
- Разбивать записи на группы, создавая подсправочники. При формировании таблицы подсправочника, которому принадлежат только часть всех записей, сервер присылает записи только для этого одного подсправочника.
- При создании структуры обратите внимание на флаг "Показывать в режиме списка". Чем больше полей (колонок, связанных с полями) будут показываться в таблице справочника (а именно за это отвечает флаг), тем дольше будет формироваться таблица.
- Быстрее получится формирование таблицы справочника, если поля, которые должны отображаться "в режиме списка" будут простого типа, а не ссылками на записи другого справочника.

Только первую рекомендацию можно отнести к "обязательным", другие могут применяться или не применяться, а могут использоваться в сочетании.
 

2. В силу особенностей реализации транслятора и интерпретатора встроенного языка некоторые функции, в которые параметры надо передавать по ссылке не могут определить тип передаваемой в параметрах переменной. В таких переменных могут не вернуться значения.
Решение в том, что необходимо при объявлении этих переменных присваивать им значения, которые можно назвать инициализационными.
Объявляете переменную и здесь же инициализируете ее:
переменные
  число Ч1 := 0;
  строка С1 := "";

 

3. Если вы работаете со справочником Проводки и там большое количество записей (более 10 000) не пытайтесь открывать этот справочник напрямую. Это самый "увесистый" справочник и формирование его таблицы на клиенте занимает десятки минут.
Пользуйтесь просмотром проводок через операции (или справочники), которые создают проводки. Комбинация Ctrl+Enter на строке операции (справочника), которая создала проводки покажет только эти проводки. Повторное нажатие клавиш вернет обратно на строку операции.
 

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

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

6. При создании разделов проекта не применяйте одинаковые наименования. Могут быть проблемы. Это при создании справочников система проверяет есть ли в проекте справочник с таким же наименованием, который создается и предупреждает об этом. При создании разделов такой проверки нет.
 

7. Есть функция ВызватьФорму (иногда даже полезная, см. справочную систему), но вызов этой функции в библиотеке недопустим.
 

8. Строковые значения индексируются в базах Афины по первым 50-ти символам. Остальные символы строки (если они есть) хранятся в BLOB полях. Из-за этого функции, в которых возможна установка фильтров (НайтиЗначение, СписокЗначений, и т.п) не смогут правильно работать, если в параметрах-условиях этих функций передавать строки длиной более 50-ти символов.
 

9. Из-за некоторых особенностей управления СУБД при записи строк в базу может произойти ошибка ("XSQLDA out of range. Продолжить выполнение?"). Продолжать не надо, а надо избегать строк, где между двойными кавычками встречается символ двоеточия.
 

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

 

На главную