BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Получение данных после записи документа в Кадрах

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Получение данных после записи документа в Кадрах, Плавающие алиасы в Кадрах, возможно ли зафиксироваться?
 
Разработчики, консультанты и прочие добрые люди, помогите советом.
Возникла необходимость в обработки некоторых данных во время записи документа в Кадрах (Например приказ на прием/перемещение/увольнение).
Через отладчик видно много определенных алиасов с именами NALХХ_X, но они как-то меняются в зависимости от действий пользователя и среды, к одному имени могут цепляться разные базы в разный момент времени. В переменных такие деревья, что направо пойдешь - коня потеряешь ...
Есть какая-то возможность использовать текущие данные документа? Кто знает секрет статических переменных или алиасов, поделитесь пожалуйста.
И еще, для всезнающих, как определить максимальный ID в базе или аналог функции SQL MAX()?
 
Некоторый "бубен" конечно нужен :lol:
Но речь таки идет у же не о переменных а об объектах и их свойствах
Но примерно надо двигаться таким образом.
Находите в памяти переменную объекта.
У нее наверняка есть BO
В этом BO в OOBJ Вы в принципе видите таблицу, с которой работаем
Значит стало быть имя алиаса мы всегда сможем узнать как [имя_объекта]:BO:ALIAS()
Бывает что к нему есть привязанные другие BO и мы видим имя например BOREESTR
тогда [имя_объекта]:BOREESTR:ALIAS()
Так же обращаю Внимание что для работы с изменением данных в форме может быть открыт временный файл и его значения будут переписаны в таблицу только после нажатия <СОХРАНИТЬ>
И опять таки надо понимать: где правим, что правим, зачем правим....

Что касается кода и максимального значения.
Один из вариантов это установить индекс по этому коду.
Дальше встаем на последнюю запись. Не факт что это всегда будет корректно работать,
потому как второй вариант хранить след. код в другой таблице для этого предназначенной.
В каждом конкретном случае надо смотреть более предметно.
 
Спасибо, nordk, за наводку на объекты. Кстати, работа происходит в БЭСТ 5 3.4.
Действительно, при записи приказа на прием, есть объекты AA и ABIZNESOBJECTOBYFIND с свойствами на ID документа, алиас и имя файл, значения CWA: NAL4_X и MBO__TBNAME: kadry\ordmove.dbf, в котором другие данные (например, от предыдущего документа). Здесь одним бубном не отделаться, приходится барабанную установку доставать. Все равно, в дереве объектов, ничего подходящего нет. Может, кто из разработчиков знает?

Думал с максимальным значением ID, какие-то простые пути есть. А так делаю, как советуете: индексация плюс последняя запись.

Постараюсь объяснить постановку задачи, чтобы конкретика была.
Пользователь делает приказ в кадрах на прием/перевод/увольнение. При записи документа необходимо проверить какое-либо поле (например: условия труда) и при его изменении, записать данные в файл и уведомить пользователя.
 
Ну вы так жестко хотите изнасиловать разработчика :lol:
Вы пробовали писать графические формы в дельфи и потом пытаться ковырять в переменных памяти их объекты ?
Или просто заходили в графическую форму и там через инспектор все изменяли ?
И Вас совершенно не волновало где и как лежит в переменных памяти :)
Роетесь в памяти - рыться придется самостоятельно.

Чтобы ориентироваться где что и как для начала надо почитать в описании к БЭСТу объекта МетаВО, чтобы понимать его "несущие стены"

По Вашему конкретному Вопросу - я порылся в памяти.
заняло это примерно минут 40.
Но тем не менее.
1.Нашел интересующий меня алиас куда ложится записываемое значение.
Им оказался Nal_23
2.Начал его искать в переменных памяти основываясь на знании объекта.
И пришел вот сюда

ABIZNESOBJECTOBYFIND[1]:MDADASET:FORMA:CHILDS[1]:DSORDMOVE:OOBJ:DS:ALIAS

Возможно есть какой-то путь короче - я не нашел :)
 
Цитата
nordk пишет:
Ну вы так жестко хотите изнасиловать разработчика :lol:

Просто насиловал себе мозг и вдруг озарило: - "А может есть другие ..., может стоит создать кружок по интересам?"
Цитата
nordk пишет:
Вы пробовали писать графические формы в дельфи и потом пытаться ковырять в переменных памяти их объекты?
Или просто заходили в графическую форму и там через инспектор все изменяли ?
И Вас совершенно не волновало где и как лежит в переменных памяти :)
Роетесь в памяти - рыться придется самостоятельно.

Все приходилось делать, но есть одно но, кто пишет программу - тот знает где и что лежит. А чужой код, сами знаете как воспринимается. Вот и хочется "узрить истину".

Цитата
nordk пишет:
Чтобы ориентироваться где что и как для начала надо почитать в описании к БЭСТу объекта МетаВО, чтобы понимать его "несущие стены"

Уже читаю Ваши уроки, а в описании к БЭСТу следующее:
Цитата
MetaBO - это класс, в котором реализованы основные механизмы работы бизнес-объектов (удаление, добавление, редактирование, сохранение данных с учётом иерархии и проверок допустимости данной операции). Все бизнес-объекты наследуются от этого класса.

И далее перечислены свойства и методы. Информативно, не правда ли?

Цитата
nordk пишет:
По Вашему конкретному Вопросу - я порылся в памяти.
заняло это примерно минут 40.
Но тем не менее.

И это, с Вашими знаниями, что уж говорить, о нас, простых пользователях.

Спасибо, nordk, за наставление на путь истинный.
"Я знаю пароль, я вижу ориентир ..." и дальше по тексту " ... только БЭСТ спасет мир". :happiness:
 
Ну собственно у меня только одна мысль в этом направлении имеется.
Думаю выступить с предложением к разработчику, что в графических окнах при обращению к плагину по событию попросить создавать в области переменных массив с указателями на каждую графическую форму, которые открыты в данной точке запуска программы.
Имея указатель на форму, с которой идет работа Вам будет проще работать с ней.
На сегодня вот таким заковыристым путем вручную приходится искать где какая форма открыта внутри одного гигантского объекта.
Это все создается автоматически и поэтому разработчик формы сам Вам никогда не подскажет.
Скорее я Вам могу подсказать: какие есть названия BO и DATASET и какое нужное название DataSet надо искать.

А про документацию я имел ввиду вот что.
Все формы имеют обязательно объект BO а внутри него (необязательно) объект DATASET
И собственно значения полей надо искать в этих ветках в памяти.
Они называться могут по-разному когда их несколько, но суть одна и та же.

При редактировании данных может применяться создание временных таблиц, в которых эти данные лежат и поэтому просматривая список открытых таблиц следует обращать Внимание на открытые временные.
ВОт примерно ориентируясь на такие маячки.

А еще BO объекты могут выстраиваться в зависимость и соответственно образуются CHILD и PARENT. И в переменных памяти полезно и там порыться, чтобы найти нужное.
Вот как-то так я искал.

Вторым путем можно было мне открыть исх формы - найти название DS и связки и по ним пройти по веткам объекта. (Не пробовал так делать - предполагаю)
 
Цитата
nordk пишет:
Думаю выступить с предложением к разработчику, что в графических окнах при обращению к плагину по событию попросить создавать в области переменных массив с указателями на каждую графическую форму, которые открыты в данной точке запуска программы.

Отличная Идея. Хотя хватило бы малого, по аналогии текстовых форм, хотя бы ID. А так получается, есть методы и события, а исходные данные для анализа взять негде.
 
Все шло прекрасно, упорно смотрел память, записывая на листочек все зависимости и необходимые свойства для реализации задачи, а когда дошло до кода наткнулся на следующее:
Цитата
nordk пишет:
ABIZNESOBJECTOBYFIND[1]:MDADASET:FORMA:CHILDS[1]:DSORDMOVE:OOBJ:DS:ALIAS

Получить данные можно только в объекте верхнего уровня, а при обращении в MDataSet начинает ругаться:
Цитата
Error : Class: 'NIL' has no exported method Function : MDATASET (C:64)

А сундучок-то с секретом! :funny: И что теперь делать, подскажите?
 
Понял, выкрою время - посмотрю еще
 
Цитата
nordk пишет:
Ну собственно у меня только одна мысль в этом направлении имеется.
Думаю выступить с предложением к разработчику, что в графических окнах при обращению к плагину по событию попросить создавать в области переменных массив с указателями на каждую графическую форму, которые открыты в данной точке запуска программы.
Имея указатель на форму, с которой идет работа Вам будет проще работать с ней.


Есть такая переменная
public oFrmReeGrForPlugins
 
Сан Саныч это не то :)
Или подскажите мне где найти ссылку на форму по сабжу, чтобы увидеть введенные данные :)
 
Еще несколько вопросов возникло, надеюсь на помощь всезнающих. :funny:
Best IDE
1) Есть ли возможность в TBestDataset использовать несколько таблиц или связать несколько TBestDataset для использования в одном xbGrid? (например, данные с нескольких справочников, связанных по ID, выводить в одном окне)
2) Есть ли возможность использовать два xbGrid с параллельным отображением данных? (например, как в реестре приказов, вверху шапка, снизу данные о сотруднике)
 
Цитата
ОАО КРССУ пишет:
Есть ли возможность в TBestDataset использовать несколько таблиц или связать несколько TBestDataset для использования в одном xbGrid? (например, данные с нескольких справочников, связанных по ID, выводить в одном окне)

есть
Цитата
ОАО КРССУ пишет:
Есть ли возможность использовать два xbGrid с параллельным отображением данных? (например, как в реестре приказов, вверху шапка, снизу данные о сотруднике)

есть
 
Это как раз и позволяет класс MetaBo
 
Цитата
nordk пишет:
есть

А как?
Цитата
nordk пишет:
есть

А как? :smile:
Цитата
nordk пишет:
Это как раз и позволяет класс MetaBo

В шестом уроке одна таблица, а как с несколькими?
 
УРОК 7 как Вы просили...
 
Цитата
nordk пишет:
УРОК 7 как Вы просили...

Спасибо! :happiness:
 
Спасибо
Страницы: 1
Читают тему (гостей: 1)