Страница 2 из 3
Добавлено: 23 сен 2009, 16:50
Иван
да честно скажу, что не умею и нет достаточной документации и примеров. Вот полный текст этой формы:
Код: Выделить всё
.linkform "ReestrDovShort1" prototype is DOVERREESTR
.nameinlist ’Реестр доверенностей (rtf) 3’
.group ’Реестр доверенностей’
.var
X:string
.endvar
.create view dov
as select dover.status,dover.nrec,attrval.vstring
from dover(readonly),attrval(readonly)
where
comp(attrval.crec) = comp(dover.nrec) and attrval.wtable = 1138 and comp(attrval.cattrnam) = comp(0138000000002306h)
;
.fields
номер_доверености
дата_выдачи
срок_действия
фамилия_дов_лица
должность
наименование_поставщика
номер_счета
дата_счета
номер_накладной
дата_накладной
X
.endfields
Форма М-3
Утверждена
постановлением Госкомстата СССР
28.12.1989 № 241
__________________________
(предприятие, организация)
Код по ОКУД
ЖУРНАЛ УЧЕТА ВЫДАННЫХ ДОВЕРЕННОСТЕЙ ЗА 20__ Г.
Номер доверенности Дата выдачи Срок действия доверенно-сти Должность и фамилия лица, которому выдана доверенность Поставщик Номер и дата наряда (заменяющего наряд документа или извещения)
Расписка лица, получившего доверенность Номер, дата документа, подтверждающего выполнение поручения
1 2 3 4 5 6 7 8
.{
!.{?internal;
.begin
if ( (dov.getfirst where dov.nrec=нрек_доверености) = tsok )
X:=dov.vstring;
end.
^ ^ ^ ^, ^ ^ ^ ^ ^ ^ ^
.}
.endform
Если условие
добавить в create view то отчет зависнет просто. Уже добавил период формирования явно зауженным - ничего не помогает. Думаю, в принципе тут только можно присоединить нужную таблицу не в присоединенной форме, а в самой форме только как это сделать

Добавлено: 23 сен 2009, 20:18
Алексей
логическая таблица составлена в корне неверно. если добавить ещё ту строчку как указали вы - совсем повиснет.
попробуйте так:
Код: Выделить всё
.create view dov
as select dover.status,dover.nrec,attrval.vstring
from dover(readonly),attrval(readonly)
where
((
нрек_доверености == dover.nrec
and 1138 == attrval.wtable
and dover.nrec == attrval.crec
and 0138000000002306h == attrval.cattrnam
));
Добавлено: 23 сен 2009, 20:18
Алексей
и... читайте доки, про логические таблицы. смотрите примеры, их на форуме много. успехов
Добавлено: 24 сен 2009, 11:50
Иван
Алексей, на ваш запрос компилятор ругается:
Код: Выделить всё
DOVER\REESTRDOVSHORT4_DOVERREESTR.RTF(7)
Ошибка: Ожидалось : "From","Where","Order","Bounds","Condition","FilterFields","To","Var","," или ";" (стр.7, поз.65 в DOVER\REESTRDOVSHORT4_DOVERREESTR.RTF)
.create view dov select dover.status,dover.nrec,attrval.vstring dover(readonly),attrval(readook.
Может какая-то версия другая?
Кстати, многие примеры тут на форуме, которые полностью выложены тупо не компилируются из-за синтаксических ошибок, версия атлантиса у нас 5.4.14, Галактика 8.10
Добавлено: 25 сен 2009, 05:36
Алексей
а если так
Код: Выделить всё
.create view dov
from dover,attrval
where
((
comp(нрек_доверености) == dover.nrec
and 1138 == attrval.wtable
and dover.nrec == attrval.crec
and 0138000000002306h == attrval.cattrnam
));
Добавлено: 25 сен 2009, 09:47
edward_K
"select" -> "as select"
Добавлено: 25 сен 2009, 12:32
Иван
в любом месте, если заменить знак "=" на "==" компилятор выдает ошибку
Добавлено: 25 сен 2009, 12:58
KATZ
Иван
Алексей ведь правильно все написал, оба примера должны работать. А тот код, на который компилятор ругается, вы уже сами испортили. Где "as", где "from"?
И почитайте наконец документацию. Двойные круглые скобки и двойной знак равенства - это не одинарные скобки и одинарный знак. Документация, может, и похуже, чем от Кернигана и Ричи, но другой нет, все по этой учились. Разберите пару готовых примеров, с "Галактикой" идут исходники FRM-ов, там море отчетов с логическими таблицами.
Добавлено: 25 сен 2009, 13:03
LaaLaa
А еще надо менять скобочки на две скобочки.
Конечно печально, что язык VIP и FCOM такие непонятные на первый взгляд. Самостоятельно их изучить действительно большая проблема.
Скачайте от сюда
http://code.google.com/p/laalaa/downloads/list редактор VIPER.
В архиве есть книга RPP_0408.chm по основам программирования.
обратие внимание на раздел "Архитектура Атлантис-приложения - Работа с базой данных"
Может быть вам это поможет.
Добавлено: 25 сен 2009, 13:08
LaaLaa
Добавлено: 05 окт 2009, 15:26
Иван
закончились мои мучения

вот всего-то что надо было
Код: Выделить всё
.linkform "ReestrDovShort1" prototype is DOVERREESTR
.nameinlist ’Реестр доверенностей (внеш. атр.)’
.group ’Реестр доверенностей’
.var
X:string
.endvar
.create view dov
as select
attrval.vstring
from
attrval(readonly)
where
((
нрек_доверености == attrval.crec (noIndex)
And
root == attrval.cattrnam
And
(attrval.cattrnam = 013800000000230Bh
And
attrval.wtable = 1138)
));
.fields
номер_доверености
дата_выдачи
срок_действия
фамилия_дов_лица
должность
наименование_поставщика
номер_счета
дата_счета
номер_накладной
дата_накладной
X
.endfields
Форма М-3
Утверждена
постановлением Госкомстата СССР
28.12.1989 № 241
__________________________
(предприятие, организация)
Код по ОКУД
ЖУРНАЛ УЧЕТА ВЫДАННЫХ ДОВЕРЕННОСТЕЙ ЗА 20__ Г.
Номер доверенности Дата выдачи Срок действия доверенно-сти Должность и фамилия лица, которому выдана доверенность Поставщик Номер и дата наряда (заменяющего наряд документа или извещения)
Расписка лица, получившего доверенность Номер, дата документа, подтверждающего выполнение поручения
1 2 3 4 5 6 7 8
.{
!.{?internal;
.begin
if ( (dov.getfirst ) = tsok )
X:=dov.vstring;
end.
^ ^ ^ ^, ^ ^ ^ ^ ^ ^ ^
.}
.endform

Добавлено: 05 окт 2009, 15:47
m0p3e
С атрибутами уже давно работать можно проще. См. ExtAttr.vih
Код: Выделить всё
.var
ExAttr : iExtAttr;
.endvar
............
.fields
ExAttr.sGetAttr(1138,нрек_доверенности,<наименование атрибута>)
.endfields
............
Добавлено: 05 окт 2009, 15:56
Иван
да действительно так намного проще
просто я в догонку к этому отчету приделал чтобы в поле выводили номера ордеров накладных, которые привязаны к доверенностями
Добавлено: 05 окт 2009, 16:32
KATZ
Иван писал(а):Код: Выделить всё
where
((
нрек_доверености == attrval.crec (noIndex)
And
root == attrval.cattrnam
And
(attrval.cattrnam = 013800000000230Bh
And
attrval.wtable = 1138)
));
Возможно, этот код и дает нужные вам результаты, но в нем для
каждой доверенности будет выполняться обход
всех записей таблицы ATTRVAL. Пока в этой таблице несколько сотен или тысяч записей, замедления можете не почувствовать, а если счет пойдет на сотни тысяч или миллионы?
Призываю вас все-таки разобраться, как пишутся внутренности двойных круглых скобок. Вариант с VIH-ом в данном случае сработает, но далеко не всегда найдется подходящий VIH, избавляющий от построения своего view.
Добавлено: 05 окт 2009, 16:59
m0p3e
А
KATZ ой как прав... Запросик конечно тот еще...
Для начала необходимо проанализировать индексы таблицы AttrVal и выбрать наиболее подходящий. В данном случае это AttrVal3. Модифицируем вьюшку:
Код: Выделить всё
Where (( 1138 == attrval.wTable
and нрек_доверенности == attrval.cRec
and 013800000000230Bh == attrval.cattrnam
))
Работать будет максимально быстро в данном случае.