Страница 1 из 2
Можно VIP'ом делать измен-ия в станд. интерфейсах Галактики?
Добавлено: 05 окт 2005, 18:08
Rishat
собсно говоря интересует такой вопрос. можно в каком либо стандартном интерфейсе Галактики VIP'ом сделатьчто-то наподобие кнопки,нажатием на которую будет запускаться внешнее приложение, или открываться какой либо файл.
Добавлено: 06 окт 2005, 01:03
Diman
А что ты подразумеваешь под внешним приложением, или открытием кокого-либо файла? Конкретно что за приложение, что за файл и для чего нужно открыть (запустить), короче разясни свою ситуацию.
Добавлено: 06 окт 2005, 10:58
Goblin
В 3-ем Атлантисе (до ГАЛАКТИКИ 7.12) - никак, только полной перекомпиляцией интерфейса .
В 5-ом(Галактика 8.хх ) - вроде обещано, но ...
Добавлено: 06 окт 2005, 15:53
ecasoft
Для вызова интерфейса написанного на ВИПЕ используют в версиях до 8 следующие возможности:
1. Через отчеты по Ctrl-P. Напишите маленькую присоединненную форму с одной строкой в программном блоке runinterface(...) и при выборе этого отчета будет запускать интерфейс, где можете делать что угодно. Если Вы не пользовались отчетами вообще в стандартном интерфейсе, то оставьте в окне выбора форм только эту форму - тогда по Ctrl_p вообще не будет предлагаться выбор отчетов, в сразу будет вызываться Ваш интерфейс. Можно вызвать интерфейс с меню сразу после запуска и там выбрать уже один из нескольких Ваших интерейсов.
2. Замена неиспользуемых функций. Если в интерфейсе Вы не используете какую-то функциональность, которая подключается через вызов интерфейса, то Вы можете заменить тот вызываемый интерфейс на свой (перекрыть), изменить наименование меню вызывающее этот интерфейс и у Вас будет вызов своего функционала. Недостатками этого метода является то, что Вам надо знать наименование и параметры штатного интерфейса, который Вы вызываете.
Добавлено: 06 окт 2005, 19:58
Rishat
можете объяснить каким образом происходит перекрытие вызова стандартных функций и как найти наименование и параметры нужной функции.
ps. предполагается открывать графические изображения .
Добавлено: 06 окт 2005, 21:29
ecasoft
Их надо знать. Так их не найдешь в системе. Если не знаете, то воспользуйтесь вариантом 1.
Добавлено: 07 окт 2005, 10:42
Rishat
хорошо тогда такой вопрос, как их узнать?
Добавлено: 07 окт 2005, 10:58
san
есть еще один вариант, рабочее меню пользователя, пишем свой интерфейс, добавляем его в меню, назначаем сочетание клавиш.
теперь находясь в любом стандартном интерфейсе можно нажать это сочетание этих клавиш и ... вот оно... счастье близко, но, иногда возникает желание узнать а где это сейчас находится пользователь в стандартном интерфейсе, номер или ссылку на документ который он сейчас редактирует, и тут на помощь приходит...приходит...мысль о том что вариант через печать лучше, и там уже есть ссылка на редактируемый документ или нет.
Добавлено: 07 окт 2005, 11:02
Rishat
мдя. многозначительные уморассуждения. каким же образом "умные" люди подумав "о чем-то" все-таки узнают эти неиспользуемые функции, каким именно образом?
Добавлено: 07 окт 2005, 11:09
san
Rishat писал(а):мдя. многозначительные уморассуждения. каким же образом "умные" люди подумав "о чем-то" все-таки узнают эти неиспользуемые функции, каким именно образом?
Да нету возможности, нету , есть только различные обходные способы, которые зависят от уровня знаний.
Добавлено: 07 окт 2005, 14:29
Rishat
ну вы можете указать хотя бы один обходной путь, в качестве примера. а то такое чувство, что вы просто сидите и набиваете себе цену.
Добавлено: 07 окт 2005, 15:21
Vitaliy
Rishat
В некоторых фейсах как уже было сказано (ecasoft
) выше добавляешь отчет вызываемый по Ctrl+P. В некоторых обычно можно изменить справку по документу, обычно она одна , т.е. отчет один и вызывается он по Alt+P, в нем вывод данных убираешь и ставишь RunInterface(....) - вызов своего интерфейса.
На счет замены неиспользуемых функций - они могут быть как часть самого фейса (Window), так и внешний интерфейс (Interface). Первый случай клинический и ничего с ним не поделаешь. Во втором случае когда откроется вызываемый интерфейс встаем на любое го поле, нажимаем Ctrl+F4, в поле "выражение" набираем: Geticcurrentfieldname, нажимаем Enter, читаем первую часть (с права на лево до первой точки) полученого выражения в поле "результат". Прочитанное - есть название вызываемого интерфейса.
На счет определения параметров этого вызываемого фейса - не все так просто. Один из вариантов: открываем суппорт или вип, в модуле "компилятор интерфейсов" выбираем запуск -> окна модально, открывается окно выбора ресурсов, находим тот интерфейс, параметры которого нас интересуют, кликаем Enter, открывается следующее окно, в котором будут выведены поля для ввода параметров. Смотрим какой тип запрашвается и сколько их. Т.е. так иы определили сколько параметров и какого типа они, дальше уже кто как и для каждого случая отдельно. Можно методом научного тыка и перебора вычислять что в них передается.
Как вариант: пишем интерфейс с таким же наименование и таким же кол-вом параметров и такими же типами параметров и в нем вставляем только вывод значения параметров. Компилим его, подцепляем к гал-ке, запускаем, смотрим что он вывел и пытаемся понять с чем это все едят, естественно не забываем для чего был нужен стандартный замененный фейс и что он должен был делать, т.е. на основании всего этого в принципе можно попробовать точно догататься что за параметры.
Добавлено: 07 окт 2005, 15:22
Vitaliy
Rishat
А еще лучше, если ты объяснишь цель, так сказать расскажешь что же ты хочешь сделать. Только более конкретно.
Добавлено: 07 окт 2005, 17:09
Rishat
Суть вопроса я описывал уже другой теме по поводу importa изображений в Галактику, в каталог МЦ. порядка 19 000 изображений.
так вот что мы имеем. изображения лежат в папке pics каталога Галактики. При просмотре каталога МЦ, по каждой МЦ требуется возможность просмотра ее изображения. все картинки обозвали также как и номенклатурные номера самих МЦ. в принципе способ через Ctrl-P нормальный. но можно также подцепить функцию ExecProgram.. правда это тока предположение..в общем надо думать.. может что то еще дельное подскажете.
Добавлено: 08 окт 2005, 09:37
Vitaliy
Rishat
Только еще вопрос, в каком интерфейсе каталога МЦ? В Interface KatMC - который вызывается при выборе пункта меню -каталог МЦ, или в
Ну и зачем тогда цеплять внешнюю прикладуху?
Можно написать опять же на випе фейс, который естественно проще будет прикрутить к Ctrl+P (если не ошибаюсь есть еще Alt-N - печать текущей МЦ).
В фейсе цепляешь табличку AllMemo к примеру, можно и свою для хранения мемо-полей создать. задаешь значение WTABLE, в cRec - пишешь katmc.nrec, в memo - импортируешь саму картинку (bmp) и отобращаешь ее в фейсе.
Как сделать:
в отчете убираешь все шаблоны вывода полей и поля, но оставляешь структуру отчета, в цикле по МЦ записываешь в табличку Pick в cRec - KatMC.nrec - из формы, в wList - уникальное значение, не используемое другими фейсам. В конце цикла ставишь вызов своего интерфейса через RunInterface.
В своем интерфейсе пишешь запрос, где корневая таблица - Pick, по cRec связываешь ее с KatMC.nrec и с allMemo.cRec. В запросе же ограничиваешь Pick по wList и allMemo по wList. В самом фейсе рисуешь к примеру browse для отображения МЦ и мемо для вывода изображений. В cmInit интерфейса в цикле проходишься по всем МЦ, ограниченным Pick-ом и получая из KatMC номенклатурные номера находишь файлы и импортируешь в allMemo. Т.е. в цикле что-то типа:
Код: Выделить всё
...
strTmp := путь на папку+katMC.barcod+'.bmp';
If FileExist(strTmp)
{
Setmemoprefix(#AllMemo,'BMP');
if (insert in allMemo set cRec:=katMC.nrec, wList:=..., name:=katMC.name <> tsOk message('Ошибка создания записи в allMemo!',error);
If Importfiletomemo (allMemo.mem, strTmp, false)=False Message('Ошибка импорта!',Error);
if (modifier Update Current allMemo <> tsOk) message('Ошибка обновления данных в allMemo!',error);
}
...
Еще, перед заполением Pick в форме и allMemo в интерфейсе не забудь их очистить по wList, т.е. типа delete from pick where ((...==pick.wList));
В результате по Ctrl+P откроется фейс в котором будут выбранные в каталоге МЦ матценности и их фотографии.