Скрипты

Материал из ADGroupWiki
Перейти к навигации Перейти к поиску

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

ccalc.exe -script:scriptfilename.txt -loginname:admin -loginpass:1

Полезный совет: в среде разработки скриптов в меню "утилиты", пункт "скрипты" в процессе редактирования скрипта если нажать комбинацию клавиш CTRL+SPACE, то среда покажет подсказку по возможным свойства и методам, которые можно задать в скрипте (данная функция хорошо работает если текущий скрипт компилируется без ошибок). Также в программе версии 9.64 и выше там же в редакторе скриптов появился пункт меню View / Library Browser который аналогично отображает список всех возможных свойств, методов, классов, констант...

Объекты, классы, переменные

GD:TGD - глобальные данные, здесь есть доступ практически к 90% информации программы.

GD.MatersDB:TMatersDB - таблица материалов в памяти (элемент таблицы класс TMatItem)

GD.ElemsDB:TElemsDB - таблица настроек элементов конструкций в памяти (элемент таблицы класс TKonElem)

GD.SeriesDB:TSeriesDB - таблица серий в памяти (элемент таблицы класс TSeriaItem)

GD.ColorsDB:TColorsDB - таблица цветов в памяти (элемент таблицы класс TColorItem)

GD.CursesDB:TCursesDB - таблица курсов валют в памяти (элемент таблицы класс TCursesItem)

GD.EdIzm:TEdIzmKeeper - таблица единиц измерения в памяти (элемент таблицы класс TEdIzm)

GD.Partia:TPartiaDB - таблица партий в памяти (элемент таблицы класс TPartiaItem)

GD.Zakazchik:TZakazchik - таблица заказчиков(дилеров) в памяти (элемент таблицы класс TZakazchikItem)

GD.Zakazes:TZakazes - таблица заказов в памяти (элемент таблицы класс TZakaz)

GD.Proizvods:TProizvods - таблица производителей в памяти (элемент таблицы класс TProizvodItem)

События

В архитектуре работы программы существует возможность автоматического выполнения скриптов по определенным событиям. События должны быть размещены в модуле с именем AppEvents и модуль должен быть сохранен в меню "справочники" пункт "скрипты". Перечень событий следующий:

  • OnAppStart - вызывается в момент старта программы
  • OnStanokExportBeforeCreateStructure - вызывается в момент формирования файла для выгрузки на оборудование после формирования внутренних данных
  • OnPrintOtchetBeforeBuild - вызывается перед процессом построения отчета для печати
  • OnPrintOtchetCyclePrepare - вызывается после подготовки цикла в печатной форме
  • OnPrintOtchetElemVisiblePrepare - вызывается после определения видимости элемента

Скрипты в печатных формах

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

Допустим, есть необходимость добавить в печатную форму "Заявки на москитные сетки" колонку с отображением даты монтажа. Так как эта печатная форма не может быть отредактирована, создадим на ее основе пользовательскую. В редакторе печатных форм добавим в нужную таблицу еще одну колонку. В поле "Колонка (переменная)" поместим скрипт, который будет извлекать необходимые данные из заказа - $(pu.DateToStr(TZakaz(PrintData.InfoItemCurRow.IdZakazPtr).SrokMontag))

Примеры

Ниже приведены примеры скриптов.

Пользовательские свойства створок

Скрипты в настройке операций для обрабатывающих центров

Существует два раздела, где настраиваются операции по обработке на обрабатывающем центре. Эти два раздела отличаются функционалом и соответсвенно способами настройки.

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

Используемые переменные:

mtpv - объект, содержащий информацию о профиле над котором выполняются действия

mtpv.ColorWithTag(tag:string):boolean - функция, которая возвращает true/false в зависимости от того соджержит ли цвет профиля указанную метку или нет

ImpostW - ширина примыкающего импоста в конкретной точке примыкания


Например:

А) Зависимость от цвета профиля.

Данный пример показывает как поставить на детали профиля операцию с кодом 201 при условии, что звет профиля будет содержать метку tag1

201$(begin if mtpv.ColorWithTag('tag1')then result:=0; end;)

Б) Зависимость от ширины примыкаемого импоста.

Данный пример показывает как поставить на детали профиля операцию с кодом 202 при условии, что примыкающий импсот будет иметь ширину 78 мм. Этот пример можно использовать только для настройки оперций "Импост, отверстие" или "Импост, насечка"

202$(begin if ImpostW=78 then result:=0; end;)

Можно комбинировать условия

202$(begin if (ImpostW=78)and(ImpostW=84)and(mtpv.ColorWithTag('tag1')) then result:=0; end;)

Операции сравнения:

= равно

>= больше или равно

<= меньше или равно

<> не равно

Логические опреации:

and и

or или

not отрицание

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

2. Меню "Настройка"/"Элементы конструкций"/ раздел "Фурнитура". Здесь настраиваются операции обработки, связанные с маркировкой ответных планок, операции по замкам, ручкам, петлям, шурупам для крепления фурнитуры (для автоматических фурнитурных станций). В данном разделе при настройке операций можно использоваться условия позволяющие задать зависимость кода обработки от ряда условий:

Используемые переменные:

Current_IzdObjItem или сокращенно ioi - текущий вычисляемый объект створки

ioi.ColorWithTag(tag:string):boolean - функция, которая возвращает true/false в зависимости от того соджержит ли цвет створки указанную метку или нет

FurnOptionsBO - для фурнитуры на створке включен блокировщик откидывания

FurnOptionsMP - для фурнитуры на створке включено микропроветривание

FurnOptionsBK - для фурнитуры на створке включен балконный комплект

FurnOptionsML - для фурнитуры на створке включен микролифт

FurnTyp - тип открывания фурнитуры

Dornmass - дорнмасс установленного замка (в мм - дробное число)

HandleIndoor - ручка устанавливается с нутри конструкции (имеет внутреннюю часть при двухсторонне ручке)

HandleOutdoor - ручка устанавливается с наружи конструкции (имеет наружную часть при двухсторонне ручке)

OpenType - направление открывания створки (otLeft, otRight, otUp ,otDown)


Обработки для цилиндров в зависимости от дорнмасса замка:

P,R,$(begin if Dornmass=35 then result:=-92; end;),101;

P,R,$(begin if Dornmass=35 then result:=-92; end;),100;

Обработки для цилиндров в зависимости от дорнмасса замка и направления открывания створки:

P,R,$(begin if (Dornmass=25)and(OpenType=otLeft) then result:=-92; end;),104;

P,R,$(begin if (Dornmass=25)and(OpenType=otLeft) then result:=-92; end;),105;

P,R,$(begin if (Dornmass=25)and(OpenType=otRight) then result:=-92; end;),106;

P,R,$(begin if (Dornmass=25)and(OpenType=otRight) then result:=-92; end;),107;


Пример настройки шурупов:

S1,$(begin if FurnOptionsMP then result:=200; end;),Instr1;

S2,$(begin if FurnOptionsBK then result:=150; end;),Instr1;

В этих примерах видно, что если условие не выполнится то переменная result останется без значения, в таком случае шуруп посчитан не будет.