Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Предусмотрена возможность одним элементом Form задавать значения нескольких параметров. В этом случае в колонке “Name” необходимо через “;” задать название требуемых параметров, в колонке “TypeValue” через “;” указать их тип, а в колонке “FieldValue” также через “;” указать имена полей подключенной формы из которых берутся значения для каждого параметра.
DropList

Данный визуальный элемент предназначен для выбора значения параметра из списка. Список представляет из себя набор данных, возвращаемых оператором SELECT, который должен быть задан в первом элементе MEMO “SQL запрос с …”. В колонке “FieldValue” необходимо указать имя поля набора данных, из которого берется значение для параметра. А в колонке “FieldValue” необходимо указать через “;” имена полей, значения из которых будут отображаться в элементе. Как и для элемента Form, здесь также предусмотрена возможность задавать значения нескольких параметров, которые должны описываться по тем же правилам.
Кроме того, для данного элемента в оператор SELECT списка для выбора можно вводить название других параметров операции, описанных ранее. Например, рассмотрим, как задан оператор SELECT списка для выбора параметра Transfer (элемент DropList) для операции 212:
select O. Inv_N as ObjID, O. Name as ObjName, A. ValObject as OtdelID
from Objects O
left outer join Objects_Attr as A on A. Inv_N=O. Inv_N and A. Attr='Отдел'
where O. ID_Type='91001' and A. ValObject in
(select O1.Inv_N from Objects O1
left outer join Objects_Attr as A1 on A1.Inv_N=O1.Inv_N and
A1.Attr='Сотрудник'where O1.ID_Type='90002' and A1.ValInt=:Usr)
order by ObjID
Здесь встречается параметр Usr, который описан в операции ранее. Смысл использования этого параметра заключается в том, чтобы в зависимости от кода пользователя, набирающего распоряжения, предоставить ему для выбора список только тех видов распоряжений, которые относятся к его отделу.
ComboBox
Очень похож на предыдущий элемент. Для него точно также необходимо задавать оператор SELECT списка для выбора, в котором можно тоже использовать другие параметры операции. В нем отсутствует возможность задавать значения сразу нескольких параметров. Если в колонке “DirectInput” стоит 1, то значения параметра можно задавать, как с клавиатуры, так и выбирая из списка, если – 0, то только из списка.
DateEdit

Предназначен для ввода значений параметров типа date. Если в колонке “DirectInput” стоит 1, то значения параметра можно задавать, как с клавиатуры, так и выбирая из календарика, вызываемого по кнопке, если – 0, то только из календарика.
MoneyEdit

Предназначен для ввода значений параметров типа money.
Edit.

Предназначен для ввода значений параметров любых типов.
FileEdit.
Предназначен для работы с файлами. По кнопке в правой части элемента открывается стандартное в ОС Windows окно для выбора файла. Для параметра этого типа в поле “SQL запрос с …” можно задать SQL-запрос, возвращающий текстовую строку с каталогом по умолчанию.
Memo.
![]() |
Предназначен для ввода длинных текстовых значений (более 255 символов). В SQL-скрипте отчета параметр может быть описан, как varchar(n), где n может быть более 255, или как long binary. Необходимо помнить, что в базе STOCK отсутствует непосредственная возможность хранения таких типов значений. Поэтому для их обработки и хранения вам необходимо самостоятельно разработать sql-скрипты. Например, длинный текст можно разбить на соответствующее количество строк и хранить их, как несколько одноименных строковых атрибутов объекта. В базе имеется хранимая процедура getAttrAsLongTxt(in ObjID char(20),in AttrName char(30)), которая делает обратное действие: из всех одноименных строковых атрибутов объекта составляет длинную строку и возвращает ее, как varchar(32000). Процедуру можно использовать для инициализации параметра MEMO начальным значением.
Остановимся еще на инициализации параметра начальным значением. Инициализация предназначена для удобства работы пользователя, сокращая там, где это возможно, время ввода параметров операции или отчета. Как было отмечено выше, она может быть двух видов.
1. В колонке “TypeIni” стоит 1. В этом случае в соответствующем элементе MEMO должно быть указано явное значение параметра. Например, если тип параметра string, то в MEMO может стоять “ля-ля-ля”(без кавычек), если тип параметра integer, то в MEMO может стоять 999 и т. п. Или в MEMO можно указать одну из зарезервированных инициализирующих функций:
- IniFile. Возвращает из файла stock. ini значение требуемого параметра из заданной секции. Пример вызова - IniFile( NameSection, NameParameter). Таким образом вы можете расширять стандартный ini-файл своими секциями и параметрами.
- CurrateUser. Возвращает код пользователя, работающего в настоящий момент с программой
- CurrateRecord. Если операция или отчет вызываются из пользовательской формы, возвращает значение из заданного поля текущей записи. Пример вызова - CurrateRecord(NameField)
- CurrateParam. Если операция или отчет вызываются из пользовательской формы и форма имеет закладки, возвращает значение заданного параметра формы соответствующее выбранной закладке. Пример вызова - CurrateParam( NameParameter )
2. В колонке “TypeIni” стоит 2. В этом случае в соответствующем элементе MEMO должен стоять оператор SELECT или SQL-скрипт, возвращающий набор данных, из которого для инициализации параметра берется первая колонка первой записи. В SELECT-операторе и SQL-скрипте могут использоваться другие параметры операции, описанные ранее. За примером можете обратиться снова к операции 212 (параметр Osnov).
При написании скриптов (или хранимых процедур) операций и отчетов вы можете использовать некоторые полезные функции и процедуры, имеющиеся в базе STOCK.
GetAttrPredVal. Если для атрибута заданы предопределенные значения, то функция возвращает набор записей из этих значений. Наибольшую пользу от ее применения можно получить при задании списков для выбора элементов DropList и ComboBox. Например, вместо оператора SELECT можно задать следующий вызов:
call GetAttrPredVal ( ‘Какой-то атрибут’).
s_GetObligatoryAttr. Процедура возвращает обязательные атрибуты для определенного типа объекта. Пример вызова:
call s_GetObligatoryAttr( TObj ) , где TObj является типом запрашиваемого объекта.
s_IsDescendantType. Функция определяет, является ли определенный тип объекта, порожеденным от другого. Если да, то возвращает целое число, показывающее на каком уровне определен родительский тип. Если – нет, возвращает –1. Пример вызова:
s_IsDescendantType( Ancestor, Descendant), где Ancestor - родительский тип, Descendant – производный тип.
s_IsPossibleAttr. Функция для заданного типа обекта и заданного атрибута возвращает родительский тип объекта, на уровне которого этот атрибут определен. Если атрибут для данного объекта не определен ни на одном уровне, возвращает null. Пример вызова:
call s_IsPossibleAttr(TObj, Attribute), где TObj является типом запрашиваемого объекта, Attribute - названием атрибута.
В формах для разработки операций и отчетов в нижней части имеется панель с кнопками. Остановлюсь только на некоторых из них.
Предназначена для вставки копии с текущей записи, облегчая тем самым процесс разработки новых операций и отчетов.
Предназначена для выгрузки разработанных операций и отчетов в файлы в директорию Unload рабочего каталога. Затем они могут быть загружены пользователем в конфигурацию, которая находится на удаленном рабочем месте.
Кнопки “show”, “save”, “загрузить” предназначены для загрузки в текущую конфигурацию отчетов в формате QuickReport. На технологии разработки отчетов в формате QuickReport в данном руководстве я останаввливаться не буду, т. к. это не самый лучший вариант, а остался он только для совместимости со старыми версиями STOCK.
Рассмотрим теперь оставшиеся функции по разработке отчетов. В этой форме присутствуют две дополнительные закладки.
Открыв закладку “Подчиненные DataSet” можно ввести дополнительные наборы данных, возвращаемых при запуске отчета. Такая необходимость возникает, когда отчет невозможно представить в виде одного набора данных. В элементе MEMO для каждого набора необходимо задать SELECT-оператор (SQL-скрипт здесь не допускается), в котором можно использовать параметры. Значение в параметры подставляются по следующему правилу. Если в главном скрипте отчета (на первой закладке) имеется параметр с таким же названием, то его значение подставляется в параметр подчиненного набора. Если не найден, то значения будут браться из полей с таким же наименованием набора, для которого текущий является подчиненным. Если такой параметр не найден ни там, ни там, параметр остается пустым, тогда присвоить ему значение можно из VBScript/Jscript скрипта операции(последняя закладка) или из скрипта действия, в котором отчет создан.
В колонке “N” указывается – порядковый номер набора, начиная с 1. В колонке “Parent”, если необходимо, задается номер набора, для которого текущий набор является подчиненным. Если указать 0, то данный набор будет подчинен главному набору (первая закладка). Колонка “Открывать” может принимать только два значения: 1 – данный набор будет открыт автоматически после открытия главного, 1 - данный набор не будет открыт автоматически, для его открытия придется вызывать соответствующий метод из VBScript/Jscript скрипта отчета.
Колонка “Alias_Name” содержит название БД, из которой будет осуществляться выборка данных. Если значение не указано, данные будут извлекаться из “родной” базы.
И, наконец, последняя закладка. Если формат отчета выбран в виде VBScript или Jscript, то здесь пишется на соответствующем языке скрипт для вывода возвращаемых наборов данных на экран или принтер в желаемом виде. Из скрипта можно обращаться к внутренним объектам программы, которыми можно управлять через их свойства и методы. Например, для того, чтобы осуществить доступ из скрипта к наборам данных отчета, необходимо обратиться к объекту Report (тип StockReport), который является ссылкой на текущий запущенный отчет. У объекта Report есть свойство MainDataSet (тип StockDataSet), которое возвращает главный набор данных отчета, и ChildDataSet (тип StockDataSet), которое возвращает заданный подчиненный набор. Кроме объекта Report в VBScript/Jscript-скрипт отчета передаются следующие объекты: StockLib с типом StockLib и Firm с типом Firm(этот объект является устаревшим и оставлен только для совместимости со старыми версиями). Все их свойства и методы, а также примеры использования будут рассмотрены в главе IV.
Разработка скриптов.
В “STOCK” скрипт – это небольшая программа, составленная на VBScript или Jscript и предназначенная для совершения определенных действий не связанных напрямую с изменением базы данных. Это может быть копирование файлов, вызов других операций и отчетов или еще что-то. Настройка скриптов осуществляется в системной форме, вызываемой в пункте меню “Настройка” – “Скрипты”. Ее вид представлен на рисунке.

На первой закладке отображаются в виде записей все скрипты, на второй можно просмотреть их содержимое. Текст из колонки “Краткое наименование” используется для выбора при составлении действий, соответствующих данному скрипту (пункт меню “Настройка” – “Действия”). По кнопке “+ со стрелкой” в таблицу можно добавить новый скрипт взяв за основу нужную запись. Выбранные скрипты можно выгрузить в файлы в рабочий каталог настройки каталог \UNLOAD\EVENTS\ по кнопке “Выгрузить”.
В файле stock. ini через “;” можно указать в параметрах EventsOnAppStart и EventsOnAppExit секции System действия, которые будут выполняться при старте текущей конфигурации и выходе из нее.
Из скрипта действия можно обратиться к следующим внутренним объектам “STOCK”: StockLib с типом IStockLib и, если действие вызвано из пользовательской формы, StockForm с типом IstockLib.
Разработка схемы действий.
В “STOCK” при выборе пункта меню или кнопки на пользовательской форме совершается так называемое “действие”, которое выполняет, поставленный ему в соответствие скрипт, отчет, операцию или открывает пользовательскую форму. Настройка “действий” производится в специальной системной форме “Схема действий” (пункт меню “Настройка” – “Действия”).

Схема строится в виде древовидной структуры, в результате чего действия можно разделять на группы и подгруппы по каким-то функциональным назначениям. Вставка новой группы или действия, их редактирование и удаление осуществляется кнопками, расположенными на верхней панели формы. При добавлении появляется специальная форма, поля которой необходимо заполнить. Код должен быть уникальным набором символов. Тип выбирается из списка и может быть новым узлом, формой, операцией отчетом, скриптом. Если тип не является узлом, то в поле ссылка необходимо выбрать конкретные форму, операцию отчет, скрипт, который будут запускаться при выборе данного действия из меню или пользовательской формы. В поле название прописывается название действия, этот текст вставляется в название кнопки, соответствующей данному действию, на пользовательской форме. Поле подсказка используется для отображения подсказки для этой кнопки. В поле горячие клавиши можно указать комбинацию клавиш, нажатием которых данное действие будет вызвано(например Alt+S, Enter и т. д.). В поле изображение можно выбрать из файла картинку в формате ICO или BMP, которая будет отображаться на кнопке соответствующей данному действию, на пользовательской форме. Узлы схемы можно перемещать мышкой, удерживая левую кнопку
Разработанную вами схему действий можно выгрузить в файл actions. map в рабочий каталог настройки \UNLOAD\ для последующей загрузки через пункт меню “Загрузка версии” в другие настройки (кнопка “Выгрузить”).
Разработка меню пользователя.
![]() |
Данное меню предназначено для более удобной работы пользователя в текущей конфигурацией. После разработки и перезагрузки программы оно появится перед пунктом меню “Настройка”. Разработка осуществляется в системной форме, вызываемой в пункте меню “Настройка” – “Меню пользователя ”. Ее вид представлен на рисунке.
Кнопками в левой части панели вы можете добавлять, удалять, редактировать пункты и подпункты меню, присваивая им определенные действия, которые будут запускаться при их выборе. Пункты можно перемещать мышкой с места на место, удерживая левую кнопку. После того, как меню создано, необходимо нажать кнопку “тест”. Меню появится в этой форме. Еще раз просмотрев его и, убедившись, что получили то, чего хотели, необходимо нажать кнопку “сохранить”. При этом в рабочем каталоге будет создан файл stock. mnu, из которого при следующем запуске программы будет загружено меню пользователя.
В принципе вы можете, если возникнет такая необходимость, для одной конфигурации создавать несколько файлов меню. И подключать их в зависимости от функциональных обязанностей пользователя, как было описано в разделе “Инсталляция”.
Настройка пользователей.
STOCK дает возможность ограничить права доступа пользователя к текущей конфигурации и ее функциям через идентификацию по его коду. Настройка пользователей осуществляется в системной форме, вызываемой в пункте меню “Настройка” – “Пользователи”.

Первоначально в любой конфигурации будет присутствовать один пользователь “Администратор” с кодом 1 и паролем “admin”. Рекомендую при разработке новых конфигураций этого пользователя не удалять, а оставить для целей по администрированию программы. При создании нового пользователя ему присваивается уникальный код и должен быть назначен его личный пароль, которые запрашиваются при запуске конфигурации. При нажатии кнопки “Права доступа” появится схема действий, в которой необходимо отметить к каким группам действий пользователь может иметь доступ. Обязательно сохраните отмеченные действия, нажав кнопку “Сохранить”. Права доступа можно не проставлять вручную, а скопировать их от другого пользователя, нажав клавишу “копировать права”.

Надо отметить, что при добавлении новых пользователей в форме происходит также создание их на системном уровне в БД. В STOCK. DB в группу Avtom включается созданный пользователь..
Установка обновлений.
Пункт меню Настройка-Обновление. Используется для загрузки новых версий программы. При получении нового обновления (файл с расширением *.stc) необходимо выполнить этот пункт меню, далее выбрать полученный файл и подтвердить кнопкой Ок. Все этапы обновления пройдут в автоматическом режиме. По окончанию на экран будет выведен протокол, с которым следует внимательно ознакомиться и проверить на наличие ошибок. После закрытия протокола, если в обновлении присутствует файл readme, то он будет выведен на экран.
Файл-обновление представляет собой обычный zip-архив с определенной структурой каталогов. Для его распаковки используется архиватор 7z. exe, который должен находиться в одном каталоге с Stock. exe.
Информация о конфигурации.
В пункте меню “О программе” – “Configuration” можно вызвать специальное окно с информацией о текущей конфигурации. Эта информация берется из таблицы Current_Config, которую вы можете заполнить своими данными. За исключением того, что колонку “DBVersion” ни в коем случае нельзя редактировать!
IV. Описание объектов “STOCK”.
Скриптовые языки VBScript или JScript, которые используются в отчетах и действиях, поддерживают так называемую COM-технологию. Это означает, что из программ, написанных на этих языках, можно обратиться к любому приложению, в котором задействованы COM-объекты, и управлять им. Почти все крупные программы фирмы Microsoft (Excel, Word b и др.) являются COM-ориентированными. STOCK также использует COM-технологию, передавая в скрипты свои внутренние COM-объекты, которыми вы можете управлять через их свойства и методы. Вы можете также в скриптах создавать объекты STOCK (отчеты, операции и др.).
В этой главе будут рассмотрены все COM-объекты STOCK, их методы и свойства, а также приведены примеры их использования на VBScript.
1. Объект StockLib
Этот объект доступен из скриптов отчетов и действий по умолчанию. Его не надо явно объявлять для создания, подразумевается, что этот объект уже создан. В любом месте скрипта вы можете обратиться к его свойству или методу. Например, получить имя текущего пользователя:
Str = StockLib. UsrName
или, т. к. данный объект является глобальным, можно опустить префикс с его именем
Str = UsrName
Метод GetOrCreateObj(NameSrv)
Предназначен для загрузки COM-сервера (COM-ориентированной программы) и получения на него ссылки. Параметр NameSrv должен содержать зарегистрированное в операционной системе имя сервера. Если сервер был запущен раньше, метод возвращает на него ссылку. Например, загрузить Excel и создать в нем новую книгу:
Dim Exl, WB
set Exl=StockLib. GetOrCreateObj("Excel. Application")
set WB=Exl. WorkBooks. Add()
Или другой пример. Если на компьютере установлена программа Microsoft Agent, вы можете включить в свою конфигурацию элементы анимации с разговорной речь. Например, написав соответствующее действие и настроив stock. ini так, чтобы оно запускалось при старте. Пример:
Public Req, Agent, Character
set Agent=CreateObject("Agent. Control.2")
Agent. Connected=True
set Req=Agent. Characters. Load( "Genie", "C:\Windows\MSAgent\Chars\Genie. acs")
set Character=Agent. Characters. Character("Genie")
Character. MoveTo 330,205
Agent. Characters("Genie").Show(False)
Character. Play "Greet"
Character. Speak("Добро пожаловать в программу!")
set Req=Character. Hide(False)
При этом на экране вы увидите изображение, представленное на рисунке.
![]() |
Метод CreateForm(FrmID: Integer; Modal: Boolean; OpenDS: Boolean)
Предназначен для создания и вывода на экран пользовательской формы (внутренний COM-объект STOCK) с кодом, указанным в параметре FrmID. В параметре Modal указывается в каком режиме открывается форма: False – форма создается в обычном режиме, True – форма создается, но не показывается. Для того чтобы показать форму с таким режимом, затем необходимо вызвать ее метод ModalResult. В параметре OpenDS указывается открывать ли набор данных элемента формы Grid (True) или не открывать (False). Во втором случае открыть набор данных можно, после того как вы проделали какие-то манипуляции, вызвав соответствующий метод объекта StockDataSet. Метод возвращает ссылку на созданный объект – форму (тип StockForm). Пример:
Dim Frm
set Frm = StockLib. CreateForm(100, False, False)
Frm. GridParam("Otdel_ID") = 1
Frm. GridParam("User") = 1
Frm. GridDataSet. Open
Метод FindForm (FormID: Integer) : StockForm
Предназначен для поиска открытой пользовательской формы (исключая подчиненные) с заданным кодом. В случае успеха возвращает ссылку на эту форму, а саму форму со всеми подчиненными переводит на передний план или разворачивает ее, если она бала свернута. Метод может быть полезен в случае, если пользовательская форма создается из скрипта и вы хотите, чтобы она существовала в одном экземпляре.
Пример:
Option Explicit
Dim Frm
set Frm = StockLib. FindForm(10)
If TypeName(Frm) = "Nothing" Then
set Frm = CreateForm(10, False, False)
Frm. GridParam("D1")= D1
Frm. GridParam("D2")= D2
Frm. Caption=Frm. Caption & " " & D1 & "-" & D2
Frm. GridDataSet. Open
End If
Метод CreateReport(RptID: Integer)
Предназначен для запуска отчета (внутренний COM-объект STOCK) из скрипта действия с кодом, указанным в параметре RptID. Метод возвращает ссылку на созданный объект – отчет (тип StockReport). Пример:
Dim Rpt
set Rpt= StockLib. CreateReport(900)
*****n
Метод CreateOper(OprID: Integer)
Предназначен для запуска операции (внутренний COM-объект STOCK) из скрипта действия с кодом, указанным в параметре OprID. Метод возвращает ссылку на созданный объект – операцию (тип StockReport). Пример:
Dim Opr
If ObrabotkaID=1 Then
set Opr= StockLib. CreateOper(210)
Else
set Opr= StockLib. CreateOper(211)
End If
*****n
set Opr=Nothing
Свойство FormProgress
Возвращает ссылку из скрипта действия или отчета на внутренний COM-объект STOCK индикатор процесса типа frmProgress. После обращения к этому свойству на экране появляется специальное окно с индикаторами, которыми можно управлять через методы frmProgress. Пример:
set frmPr=StockLib. FormProgress
frmPr. LabelText(1)="Формирование распоряжения"
Свойство GetAttrIDVal (Obj: String; AttrID: String)
Возвращает значение атрибута (в параметр AttrID указывается его код) заданного в параметре Obj кода объекта. Пример:
Attr_Value = StockLib. GetAttrIDVal("Organization","09.003")
Свойство ProgramPath
Возвращает строку, содержащую рабочий каталог текущей конфигурации.
Функция MoneyToWords(Value: Double; TCurrency: Integer)
Конвертирует денежное выражение (параметр Value) соответствующее определенному коду валюты (параметр TCurrency) в текстовую строку. Пример:
Str = StockLib. MoneyToWords(445, 906)
После выполнения данного оператора переменная Str будет содержать текст “Четыреста сорок пять белорусских рублей”.
Функции StrWinToDOS(StrWin: String)
StrDOSToWin(StrDOS: String)
Первая конвертируют строку из Windows кодировки в DOS кодировку, вторая - наоборот из DOS кодировки в Windows кодировку. Предназначены для обмена ланными между STOCK и DOS-программами.
Метод FormRefresh(FormID: Integer)
Обновляет набор данных элемента Grid формы с кодом, заданным в параметре FormID, а также во всех подчиненных формах. Если FormID=-1, то обновляются наборы данных во всех открытых формах.
Свойства UsrID, UsrName, UsrRank.
Возвращают для текущего пользователя его код, имя и должность соответственно.
2. Объект StockReport
Этот объект присутствует в скрипте отчета в неявном виде и является ссылкой на текущий запущенный отчет. К его свойствам и методам можно обратится через имя объекта Report. Например, получить название отчета:
NameReport = Report. LongName
Также объект данного типа может быть создан в скрипте действия функцией StockLib. CreateReport. Тогда предыдущий пример будет выглядеть в следующем виде:
Set Rpt = StockLib. CreateReport(1)
NameReport = Rp. LongName
Свойство ShortName
Возвращает строку, содержащую краткое наименование отчета, которое вы задали ему при разработке.
Свойство LongName
Возвращает строку, содержащую полное наименование отчета, которое вы задали ему при разработке.
Свойство IDRpt
Возвращает число, содержащее код отчета, который вы задали ему при разработке.
Свойства UserName, UserRank
Возвращают имя и должность текущего пользователя.
Свойство PathShablon
Возвращает строку, содержащую рабочий каталог текущей конфигурации + подкаталог Shablons. Например:
Str = Report. PathShablon
После выполнения данного оператора переменная Str будет содержать текст “C:\Program Files\Stock\OrderBuh\Shablons\”.
Свойство ParamByName(ParamName: String)
Предназначено для чтения и записи значения параметров отчета по их имени (ParamName). Например:
Dim Rpt, N
set Rpt = CreateReport(1)
N = Rpt. ParamByName("N_Document")
N = N + 1
Rpt. ParamByName("N_Document") = N
*****n
Метод Run
Запускает созданный в скрипте действия отчет на выполнение. Смотрите предыдущий пример. Если отчет имеет форму для заполнения входных параметров, то она появляется на экране. Данный метод не доступен у объекта Report в скрипте отчета, т. к. отчет уже запущен.
Свойство MainDataSet
Возвращает ссылку на главный набор данных отчета. К свойству можно обращаться после того, когда отчет уже запущен. Пример:
Dim Rpt, DS
set Rpt = CreateReport(1)
*****n
set DS = Rpt. MainDataSet
Свойство ChildDataSet(NumDataSet:integer)
Возвращает ссылку на подчиненные наборы данных отчета по их номеру (параметр NumDataSet). К свойству можно обращаться после того, когда отчет уже запущен. Пример:
Dim Rpt, DS1, DS2
set Rpt = CreateReport(1)
*****n
set DS1 = Rpt. MainDataSet
set DS2 = Rpt. ChildDataSet(1)
3. Объект StockOper
Объект данного типа может быть создан в скрипте действия функцией StockLib. CreateReport, которая возвращает ссылку на операцию, ранее разработанную в STOCK.
Свойство ShortName
Возвращает строку, содержащую краткое наименование операции, которое вы задали ей при разработке.
Свойство LongName
Возвращает строку, содержащую полное наименование операции, которое вы задали ей при разработке.
Свойство IDOpr
Возвращает число, содержащее код операции, который вы задали ей при разработке.
Свойство ParamByName(ParamName: String)
Предназначено для чтения и записи значения параметров операции по их имени (ParamName). Например:
Dim Opr, N
set Opr = CreateOper(1)
N = Opr. ParamByName("N_Document")
N = N + 1
Opr. ParamByName("N_Document") = N
*****n
Метод Run
Запускает созданную в скрипте действия операцию на выполнение. Смотрите предыдущий пример. Если операция имеет форму для заполнения входных параметров, то она предварительно появится на экране. При успешном выполнении возвращает True, в противном случае – False. При ошибке метод не возбуждает исключения.
Свойство EnableParam (ParamName: String) : boolean
Предназначено для разрешения (true) или запрета (false) изменения значения параметра операции. Если свойство параметра установить в false, параметр присутствует в форме операции, но его значение нельзя изменить. Часто бывает полезно для повышения наглядности совершаемой операции.
4. Объект StockDataSet
Представляет собой набор данных, состоящий из записей и колонок. У некоторых объектов (StockReport, StockForm) имеются свойства, возвращающие ссылку на объект данного типа.
Методы Open и Close
Открывает или закрывает для доступа набор данных.
Методы First и Last
Делает первую/последнюю запись в наборе текущей или, говоря научным языком, устанавливает курсор на первую/последнюю запись.
Методы Next и Prior
Позиционирует курсор на следующую/предыдущую запись набора относительно текущей.
Свойства Eof и Bof
Возвращает 1, если текущая запись является первой/последней. В противном случае – 0.
Свойство Empty
Возвращает 1, если набор данных является пустым (не имеет записей). В противном случае – 0.
Свойство FieldByName( FieldName: String )
Возвращает для текущей записи набора значение из поля, указанного в параметре FieldName.
Метод LocateRec( KeyFields: String; KeyValues: Variant; Option: Integer )
Ищет в наборе запись по заданным условиям. Если запись найдена, возвращает True и курсор устанавливается на нее, если нет - возвращает False и позиция курсора не изменяется. KeyFields – содержит строку с названиями полей через “;”, по которым осуществляется поиск. KeyValues – содержит значения полей, по которым осуществляется поиск. Если поиск ведется по нескольким полям этот параметр должен представлять собой массив значений для каждого поля. Option – содержит условия поиска и может принимать следующие значения: 1 – поиск ведется без учета высоты букв, 2 – запись считается удовлетворяющей условию поиска, если она содержит часть поискового контекста; например, удовлетворяющими контексту “Ма” будут признаны записи содержащие в искомом поле “Машин”, “Макаров”. Кроме того, значение параметра может быть 3 (суммой 1 и 2, т. е поиск ведется с учетом первого и второго условий) или 0 (поиск ведется без учета первого и второго условий).
Общий пример для всех методов и свойств объекта.
Dim BM, Opr, OldStr, NewStr, Res
BM=StockForm. GridDataSet. FieldByName("ObjID")
set Opr = StockLib. CreateOper(13)
If *****n Then
OldStr = Opr. ParamByName("OldStr")
NewStr = Opr. ParamByName("NewStr")
set Opr = Nothing
StockForm. GridDataSet. First
set Opr = StockLib. CreateOper(12)
While StockForm. GridDataSet. Eof=0
Opr. ParamByName("ObjID") = StockForm. GridDataSet. FieldByName("ObjID")
Opr. ParamByName("OldStr")= OldStr
Opr. ParamByName("NewStr")= NewStr
*****n
StockForm. GridDataSet. Next
Wend
Res = StockForm. GridDataSet. LocateRec("ObjID", BM,0)
End If
set Opr = Nothing
Свойство RecordCount
Возвращает количество записей набора после его открытия.
5. Объект StockForm
Этот объект присутствует в скрипте действия в неявном виде, если действие было запущено из пользовательской формы, и является ссылкой на нее. К его свойствам и методам можно обратится через имя объекта StockForm. Также объект данного типа может быть создан в скрипте действия функцией StockLib. CreateForm.
Свойство Caption
Предназначено как для чтения, так и для записи текста в заголовке окна пользовательской формы.
Свойство GridDataSet
Возвращает ссылку на набор данных элемента Grid пользовательской формы и имеет тип StockDataSet. Пример:
set Frm = CreateForm(11, False, False)
NameOtdel = Frm. GridDataSet. FieldByName("OtdName")
Метод Close
Закрывает пользовательскую форму.
Метод ModalResult
Показывает форму, созданную в модальном режиме, с кнопками “выбор” и “отмена” и возвращает, в зависимости от выполненного с ней действия: 1, если была нажата кнопка “Выбор” (соответствует константе vbOK в VBScript) и 2, если была нажата кнопка “Отмена” или форма была закрыта (соответствует константе vbCancel в VBScript).
Свойство CountTabs : Integer
Возвращает количество закладок в табличной форме. Для древовидной -1.
Метод SelectTab(Idx: Integer)
Если в форме имеются закладки, метод выбирает ту, номер которой задан в параметре Idx. Первая закладка имеет номер 0, вторая – 1 и т. д..
If Not(StockForm. GridParam("Pr_Y_N")=0) Then
StockForm. SelectTab(0)
Err. Raise vbObjectError+1050, "Ошибка!", "Перейдите к сформированным
распоряжениям!"
End If
Свойство GridParam( ParamName: String)
Если оператор SELECT элемента Grid пользовательской формы имеет параметры, то через это свойство можно обращаться к ним по имени (ParamName) для записи и чтения. Следующий пример взят из действия 1 и показывает, как предоставить текущему пользователю информацию только по тем распоряжениям, которые относятся к его отделу.
Dim Frm, Rpt, OtdID, OtdName, Usr
Usr=StockLib. UsrID
set Rpt=CreateReport(900)
*****n
If Rpt. MainDataSet. Empty = 1 Then
set Rpt= Nothing
Err. Raise vbObjectError+1050, "Ошибка!", _
"Исполнитель " & UsrID & " не найден ни в одном отделе!"
End If
OtdID=Rpt. MainDataSet. FieldByName("OtdID")
OtdName=Rpt. MainDataSet. FieldByName("OtdName")
set Rpt = Nothing
set Frm = CreateForm(11, False, False)
Frm. GridParam("OtdelID")=OtdID
Frm. Caption=Frm. Caption & "-" & OtdName
Frm. GridDataSet. Open
Свойство ParentForm
Возвращает ссылку на родительскую форму, если она имеется. В противном случае – nil. Пример:
set ParentFrm = ChildFrm. ParentForm
If TypeName(ParentFrm) <> "Nothing" Then _
NameOtdel = ParentFrm. GridDataSet. FieldByName("OtdName")
Метод getChildForm ( FormID:int default 0 )
Возвращает ссылку на подчиненную форму с кодом FormID. Если код не указан (по умолчанию 0) возвращает ссылку на первую найденную подчиненную форму. Если форма не найдена возвращает пустую ссылку. Пример:
set Form = StockForm. getChildForm()
If TypeName(Form) <> "Nothing" Then _
NameOtdel = Form. GridDataSet. FieldByName("OtdName")
6. Объект frmProgress
К этому объекту можно обратиться из скрипта действия или отчета через свойство FormProgress объекта StockLib. Он предназначен для отражения хода выполнения длительных процессов таких, как формирование больших отчетов, копирование большого количества файлов и т. п. Использование этого элемента часто оказывает успокаивающий эффект на пользователя, который, видя на экране что-то движущееся и меняющееся, перестает нервничать и бессмысленно давить клавиши на клавиатуре. Объект представляет собой форму с двумя парами индикаторов и текстовых строк, обратиться к которым можно по их номеру. Первая пара (индикатор и текстовая строка) находятся вверху, вторая пара – ниже.
Свойство LabelText( NumLabel: Integer)
Предназначено для вывода какого-либо сообщения в первую текстовую строку или вторую в зависимости от параметра NumLabel (1-первая, 2 - вторая).
Свойство ProgressMax( numProgress: Integer)
Устанавливает максимальное количество градаций в шкале индикатора. numProgress задает номер индикатора первый или второй.
Свойство ProgressPos( numProgress: Integer)
Считывает или устанавливает текущую позицию индикатора в шкале. numProgress задает номер индикатора первый или второй.
Метод ProgressStepIt( numProgress: Integer)
Увеличивает положение индикатора в шкале на одну градацию. numProgress задает номер индикатора первый или второй.
Свойство ProgressStep( numProgress: Integer)
Увеличивает положение индикатора в шкале на заданное количество градаций. numProgress задает номер индикатора первый или второй.
Общий пример для всех методов и свойств объекта.
set frmPr = StockLib. FormProgress
frmPr. LabelText(1) = "Загрузка Excel"
…
frmPr. LabelText(1) = "Формирование шапки отчета"
…
frmPr. LabelText(1) = "Выборка по счетам организаций"
frmPr. ProgressMax(2) = DS. RecordCount
frmPr. ProgressStep(2) = 1
While DS. Eof = 0
frmPr. LabelText(2) = DS. FieldByName("AccRestOut")
DS. Next
frmPr. ProgressStepIt(2)
Wend
V. Stock-Agent
1. Способ запуска.
Программу можно запускать в режиме “Stock-Agent”. Назначение данного режима - запускать с заданной периодичностью или в определенные моменты времени скрипты из текущей настройки. В этом режиме программа запускается в виде одной формы, а при свертывании помещается в область System TrayIcon и остается постоянно подключенной к базе.
![]() |
Для запуска STOCK в этом режиме необходимо в командной строке во втором параметре задать ключевое слово “StockAgent” (первый параметр указывает на рабочий каталог настройки), например:
"C:\Program Files\Stock\STOCK. EXE" "C:\Program Files\Stock\OrderBuh\" StockAgent
При первом запуске в рабочем каталоге создается файл stockagt. ini. В нем задаются настройки, с которыми запускается программа и выполняются скрипты. В списке отображаются скрипты для автоматического запуска, заданные в stockagt. ini. Напротив каждого скрипта слева имеется флажок. Если с него снять отметку, то скрипт запускаться не будет. В колонке “Старт” показывается время следующего запуска. В колонке “Протокол” показывается ведется ли протокол при выполнении скрипта или нет.
2. Настройка.
В файле stockagt. ini в секции [Main] в параметрах “User” и “Password” можно указать код пользователя и его пароль, под которым будет установлено соединение с базой. Если эти параметры не установлены, то при запуске будет появляться стандартное окно для ввода пароля. В параметре “FileProtocol” можно указать нужный каталог и имя файла протокола, в который записываются результаты выполнения скриптов. Например: FileProtocol=C:\Temp\my_protocol. log. Если параметр не установлен, то протокол пишется в файл Stockagt. log в рабочем каталоге.
Остальная настройка осуществляется из программы. Добавление нового скрипта в список осуществляется нажатием кнопки “Добавить” и заполнением всех параметров в открывшейся форме. Вы можете выбрать любой из скриптов, которые присутствуют в вашей конфигурации. Но существует одно важное ограничение! В скрипте не должны создаваться никакие модальные формы, при открытии которых выполнение скрипта приостанавливается, пока форма не будет закрыта. Такие формы создаются, например, функцией MsgBox или при создании отчетов и операций с параметрами.
В параметрах минуты, часы, дни, месяцы, дни недели задается периодичность запуска скрипта. По умолчанию для них всех стоит “*”, что означает запуск каждую минуту, день, месяц и т. д, т. е. интервал равен 1 . Но для любого из этих параметров можно задать и другой интервал, правила составления которого соответствуют формату CRON-строки. Примеры:
1) Запускать скрипт каждые 10 минут. Параметр минуты можно задать в след. виде:
- “10, 20, 30, 40, 50” (в строго определенные моменты времени)
- или “+10” (через каждые 10 минут после старта программы)
2) Запускать скрипт каждые 2 часа с 6:00 до 17:00 в 30 минут.
Параметр минуты:
- “30”
Параметр часы:
- “6,8,10,12,14,16” (в строго определенные моменты времени)
- или “6-16+2” (с 6:00 до 17:00 с интервалом 2 часа)
Верхняя граница в интервалах включается в обработку. Т. е. последнее время запуска скрипта в 16:30.
3) Запускать скрипт 1 числа каждого месяца в 6:00 и 17:00.
Параметр минуты:
- “0”
Параметр часы:
- “6,17”
Параметр дни:
- “1”
4) Запускать скрипт каждый понедельник в 9:00.
Параметр минуты:
- “0”
Параметр часы:
- “9”
Параметр дни недели:
- “2”
Счет дней недели начинается с воскресенья. Т. е. воскресение – это 1, понедельник – это 2 и т. д.
В неиспользуемых параметрах должен стоять знак *.
В параметре протокол указывается, вести протокол выполнения скрипта или нет. В него записывается время старта скрипта и время окончания с результатом выполнения –Ок, если скрипт выполнен успешно или текст ошибки в противном случае.
3. Другие возможности.
Кнопка “Изменить” предназначена для изменения периодичности запуска скрипта. Кнопка Удалить предназначена для удаления скрипта из списка автоматически запускаемых. Кнопка “Запуск” предназначена для внепланового запуска скрипта. Кнопка “Протокол” предназначена для просмотра протокола. Кнопка “Выход” завершает программу.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |






