FAQ.md


  • У меня есть база, как я могу настроить на ней DCL?

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

Для серверной версии скрипт находится в папке BecomeDCL\SQL.

Что бы ещё ускорить процесс разработки, воспользуйтесь шаблонами приложений, находящимися в каталоге TemplatesDCL, они дадут базовый функционал приложения.

  • Как подключиться к базе с уже созданным приложением DCL?

Для подключения к базе с конфигурацией DCL, Вам надо выбрать подходящий для Вашего случая механизм подключения к СУБД, взять соответствующий исполняемый модуль DCLRun, настроить для Вашего случая файл DCL.ini. Параметры в файле DCL.ini описаны в Руководстве по языку.

  • Как создать простое меню в DCL?

Для построения меню используются записи в таблице DCL_SCRIPS, добавляя запись с заголовком меню в поле DCL_NAME и номером в поле IDENT от 1 до 19000. Создать второй уровень меню можно, так же создавая записи в таблице скриптов, только номера в поле IDENT должны иметь номер родительского элемента из поля IDENT в поле PARENT. Так можно сделать пятиуровневое меню.

DCL_NAME IDENT PARENT
Первый элемент 1
Второй элемент 2
Последний элемент 3
Подменю 1.1 1001 1
Подменю 3.1 10001 1001
Подменю 4.1 16001 10001
Подменю 1.2 1002 1
Подменю 2.1 1003 2
  • Меню создано, как назначить на него действия?

Действия на элементы меню задаются посредством указания команд или имён скриптов в поле COMMAND таблицы DCL_SCRIPTS.

DCL_NAME IDENT PARENT COMMAND
Первый элемент 1    
Второй элемент 2    
Последний элемент 3   Exit;
Подменю 1.1 1001 1 MenuItem11
Подменю 1.2 1002 1 MenuItem12
Подменю 2.1 1003 2 MenuItem2
  • Как указать желаемые заголовки полей?

Заголовки полей указываются в секции [Fields] и должны содержать следующий формат.

Caption=Моя первая форма DCL;
Query=select * from TABLE1;
Style=2;
[Fields]
3
№
NUMBER
ФИО
NAME
Возраст
AGE

Сначала идёт указание количества полей, затем поочерёдно перечисляются поля в следующем формате: сначала идёт заголовок, затем имя поля и так для всех полей.

  • Как сделать более сложные элементы управления в полях?

DCL позволяет создавать и более сложные элементы управления, это могут быть элементы выбора даты или элементы выбора из списка. Так можно создать форму, содержащую элемент выбора даты и выбора из списка.

Caption=Выбор даты;
Query=select * from TABLE1;
Style=0;
[Fields]
4
№
NUMBER
ФИО
NAME
Дата рождения\DateBox=
BDATE
Пол\DropListBox=,Жен,Муж;
SEX
  • Как в DCL организовать просмотр таблиц в виде Главный=>Подчинённый?

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

Caption=Сотрудники;
Query=select * from EMPL;
TablePart=SQL=select * from AWARDS where EMPL_ID=:NUMBER order by AWDATE;Title=Награды;Columns=AWDATE/Дата,AWNAME/Описание;NavigatorButtons=First,Last;ReadOnly=1;DependField=EMPLID;MasterDataField=NUMBER;
Style=2;
[Fields]
2
№
NUMBER
ФИО
NAME

Разберёмся по порядку. Предложение TablePart=, говорит что надо создать закладку с табличной частью, параметр SQL описывает создаваемый набор данных. Title= указывает, какой заголовок должна иметь создаваемая табличная часть. Директива Columns= описывает выводимые колонки в формате ИмяПоля[=ШИРИНА]/Заголовок. NavigatorButtons= - это включение нужных кнопок навигатора ТЧ. DependField= и MasterDataField=, очень важные директивы для работы табличной части. Первая указывает поле которое содержит значение ключа в подчинённой таблице, второе указывает на поле в главной таблице. Табличных частей может быть не одна.

  • Как создать кнопки и назначить на них команды?

Кнопки на форме в DCL создаются с помощью предложения CommandButton=.

CommandButton=Label=Удалить;CommandName=Clients_Del_Client;

В результате создаться кнопка, при нажатии которой будет запускаться скрипт Clients_Del_Client. Для табличных частей кнопки создаются с помощью предложения TablePartToolButton=, предложение должно быть объявлено после объявления табличной части. Принадлежность к конкретной ТЧ определяется порядком следования объявления после объявления ТЧ.

TablePartToolButton=Label=Добавить тел;CommandName=Clients_Add_PhoneScr;FontStyle=,Italic;Hint=Добавить телефон клиента;
  • Как передавать значения между формами и скриптами?

Для передачи и сохранения на время исполнения скрипта, различных значений, можно использовать переменные. Прежде чем использовать переменную, её нужно объявить. Объявление переменных осуществляется через директиву Declare.

Declare=CliName, ServiceNumber=1, ServName=Перевозка грузов;

Можно объявлять сразу переменные со значением, для этого после имени переменной ставиться знак равно и пишется значение, запятые служат разделителями значений. Таким образом в приведённом примере объявятся три переменные с именами CliName, ServiceNumber и ServName. Не использующиеся более, переменные, следует удалять, для этого служит директива Dispose=, в которой перечисляются через запятую имена переменных для удаления.

Использовать переменную можно в любом месте где поддерживается использование переменных, для этого нужно указать имя, предварительно объявленной переменной со знаком & перед ней, без пробела. При использовании переменных, будьте внимательны, они являются бестиповыми.

  • Как получить текущие данные из основного запроса?

Для этого используются параметры, это имена полей основного запроса со знаком «:» перед ними. Вместо этого значения подставиться текущее значение поля основного запроса. При использовании параметров, будьте внимательны, они являются бестиповыми.

  • Как подставить значения в запрос?

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

  • Как показать стандартное окно сообщения?

Для этого в DCL существует предложение Message.

Message=Hellow word!

Покажет стандартное окно сообщения, вместо фиксированного текста можно вписать переменную или параметр.

Declare=Hellow=Hellow word!
Message=&Hellow;
  • Как показать стандартное окно ввода?

Для этого в DCL существует предложение Message, с флагом Input.

Message=Введите число.;Flags=Input;DefaultValue=0;VariableName=ItemsCount;
  • Как показать стандартное окно ДА/НЕТ?

Для этого в DCL существует предложение Message, с флагом YesNo.

Message=Вы хотите удалить?;Flags=YesNo;DefaultValue=0;VariableName=Question;
  • Как мне сделать что-то, при возникновении какого либо события?

Для этого в DCL существуют события, события можно назначить не на все действия, а только на предопределённые. События указываются в предложении Events= и PartEvents=, где на желаемые события назначаются определённые скрипты. Подробнее о событиях читайте в Руководстве разработчика.

Ссылка на вики репозиторий
Ссылка на вики репозиторий