Страница 1 из 1
Вызов интерфейса
Добавлено: 13 окт 2009, 14:42
niteo
Возник вопрос, можно ли из диалога вызвать интерфейс? Если да, подскажите как... И не подскажите, где достать доку по маркерам?
Добавлено: 13 окт 2009, 15:15
m0p3e
Из диалога нельзя.
Но сделать в интерфейсе окно с признаком dialog:
Window WinBoss 'Выбор руководителя', Cyan, DoAccept, Dialog;
Добавлено: 13 окт 2009, 15:24
Den
...ну или просто в screen описать что требуется, то бишь вызов интер-са
Добавлено: 13 окт 2009, 15:42
niteo
Спасибо. В общем так и думал

Добавлено: 13 окт 2009, 16:00
niteo
Еще вопрос.
при вызове интерфейса из поля с атрибутом pickButton, как я понял код должен выглядеть так:
Код: Выделить всё
var
cpodr: comp;
fields
catalogs.name: [35], PickButton;
end;
...
handleevent
cmPick:
{
if (CurField = #name)
RunInterface('PickCatalog2', -11, cpodr, 100);
}
end;
Или в начале перед описанием fields необходимо сделать
SELECT
Добавлено: 13 окт 2009, 16:09
Den
В ЛОТ интер-са обычно для Вашего случая описывают правильно вычисляемое поле, которое будет отображатся в поле выбора интер-са после возврата значения (выбрано ведь может быть не одно значение...). Если одно, то проще конечно
Добавлено: 13 окт 2009, 16:23
niteo
Простите, я немного не догоняю.
В ЛОТ интер-са обычно для Вашего случая описывают правильно вычисляемое поле
Я только начал разбираться с интерфейсами. Как я понял при описании поля мне необходимо передать поле, из таблички используемой в интерфейсе.... я выбрал
catalogs.name???. Далее идет длинна поля
[35] и дальше, опция, которая грит что необходимо для поля сделать кнопочку.
Я думаю, что при выборе подразделения, данные запишутся в маркер, и их я выберу в своем отчете. Я прав в своих рассуждениях?
Добавлено: 13 окт 2009, 16:55
Den
а если Вы в инте-се выбора пометили несколько значений, то что хотите отображать ?
Конечно, может не так Вас понял. Если Вы просто хотите в каком то поле вызывать некий инт-с и использовать выбранные значение для своих каких то дальнейших алгоритмов - то можно и так оставить
Добавлено: 13 окт 2009, 17:08
niteo
Ок, спасибо всем
Добавлено: 11 ноя 2009, 15:02
niteo
Решил продолжить тему.
Подскажите где я ошибаюсь...?
Вызываю интерфейс из ard отчета, в нем вызываю другой интерфейс, вот код:
Код: Выделить всё
interface dialogtest 'dialogtest'; //
create view;
var
cpodr: comp;
mes: integer;
god: integer;
DepartmentMarker: longint;
DepartmentFilterStr: string;
screen scrtest;
fields
mes;
god;
DepartmentFilterStr ('Фильтр по филиалу'): protect, pickbutton;
buttons
cmOk, default;
cmCancel;
<<'Выберите критерии отчета'
`Месяц` .@@@ `Год` .@@@@@
`Фильтровать:`
`по подразделениям` .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. OK .> <. Cancel .>
>>
end;
//------------------------------------------------
HANDLEEVENT
cmPick:
case CurField of
#DepartmentFilterStr :
{
cpodr := 0;
RunInterface('Z_STAFFCAT::PickCatalog2', Integer(-11), cpodr, Comp(100));
}
end;
end;
end.
Окно онтерфейса появляется, жму на кнопку [...] после чего появляется интерфейс PickCatalog2. В нем уже выбрано подразделение, пытаюсь снять выделение (жму insert) выскакивает сообщение с ошибкой:
Запись не найдена. таблица CATALOGS 
Добавлено: 11 ноя 2009, 15:26
KATZ
DSK почистить пробовали?
Добавлено: 11 ноя 2009, 15:49
niteo
KATZ писал(а):DSK почистить пробовали?
Я так понимаю, что мне необходимо удалить ранее созданный маркер? Если да то есть процедура DeleteMarker, но она принимает первым параметром уникальный идентификатор маркера. а его у меня нету

Добавлено: 11 ноя 2009, 15:56
KATZ
Для начала без всякого программирования попробуйте удалить DSK-файл, в нем лежит этот маркер, а в маркере, возможно, - какой-то мусор от прежних вызовов.
Добавлено: 11 ноя 2009, 16:23
niteo
Да, скорее всего вы оказались правы. Запустил в другом клиенте, все получилось. Хотя я удалял свой DSK но это не помогло, думаю надо было еще удалить tmp, но в данный момент этот клиент использовали другие пользователи.... Спасибо вам.
