что не так в присоединенной форме

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Potapenko_Al
Сообщения: 9
Зарегистрирован: 23 окт 2006, 11:09
Откуда: Беларусь, г. Борисов

что не так в присоединенной форме

Сообщение Potapenko_Al »

Добавил дополнительные поля в присоединенную форму, все компилируется, но выдает ошибку при выполнении отчета в Галактики
"нет индекса для OBOROT.DAT
Фильтры
1.chozoper, 79, =, +
Индекс не задан в таблице OBOROT"
Вот форма

Код: Выделить всё

.LinkForm 'OSVED_07' Prototype is 'osopis'
.Group 'Ведомости наличия ОС'
.NameInList 'Карточка расчета амортизационных отчислений от стоимости ОС'
.p 50
.DEFO LANDSCAPE
.Create view ob1 as select oborot.dbscheto, oborot.subossch, oborot.krschetk, oborot.subschk, oborot.datob, oborot.nodok
where ((ТХО_nRec==hozoper.nrec and hozoper.nrec==oborot.chozoper));
.[H
                                                              Лист @np@
.]H
.{table 'ob1'
.}
.fields
  Наименование
  ИнвНомер
  DateToStr(Cur_Date,'YYYY')
  if (longint(Дата)<>0,DateToStr(Дата, 'DD/MM/YYYY'),'')
  ТХО
  Trim(DoubleToStr(Стоимость-Износ_весь, ФорматСум))
  Срок_использования
  Алгоритм
  Поправочный_коеффициент
  Коэф_индексации_амор_отчислений
  Норма
  Trim(DoubleToStr(Износ_мес, ФорматСум))
  Trim(DoubleToStr(Износ_мес*12, ФорматСум))
  Trim(DoubleToStr(Износ_весь+Износ_мес, ФорматСум))
  Trim(DoubleToStr(oborot.dbscheto, ФорматСум))
  oborot.subossch
  oborot.krschetk
  oborot.subschk
  oborot.datob
  oborot.nodok
.endfields
.{CheckEnter FILTEROS1
.}
.{
.{CheckEnter GRUPPAOS1
.}
.{CheckEnter NAMEOS1
 "Шапка с выводом полей"
.}
.{CheckEnter ITOGOS1
.}
.}
.endform 
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

where ((ТХО_nRec==hozoper.nrec and hozoper.nrec==oborot.chozoper))
описана индексная подцепка, а у оборотов нет ни одного индекса, где бы первым сегментом было поле chozoper - вот и все ...
Вы лучше скажите, какую задачу реализуете ?

Trim(DoubleToStr(oborot.dbscheto, ФорматСум)) - это вообще что хотели сделать ?
Дело в том, что данная форма некорректна логически, даже если вы укажете неиндексную подцепку - то у Вас получится по каждой ОС дополнительный список ВСЕХ проводок по данной ТХО
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Potapenko_Al
Сообщения: 9
Зарегистрирован: 23 окт 2006, 11:09
Откуда: Беларусь, г. Борисов

Сообщение Potapenko_Al »

Хочу чтобы недостающие поля (которых нет в протатипе) выводились по каждому ОС. Смысл в следующем: я попытался через view вывести в отчет счет-субсчет кредита и дебета, используемого при расчете амортизации ОС,
.Create view ob1 as select oborot.dbscheto, oborot.subossch, oborot.krschetk, oborot.subschk, oborot.datob, oborot.nodok
where ((ТХО_nRec==hozoper.nrec and hozoper.nrec==oborot.chozoper));
Поле hozoper.nrec есть в протатипе и оно на мой взгляд оказалось наиболее приемлемым для использования в связке с таблицей, содержащей недостающие данные, но проблема в том, что при таком описании ob1 создается какойто пустой, не учетывается поле ТХО_nRec, и по нему для каждой карточки я не могу организовать цикл(для вывода счетов этих карточек)
Trim(DoubleToStr(oborot.dbscheto, ФорматСум)) -это так, глупая проверка своих догадок по поводу содержания инфы в поле.
:???: [/code]
leon_id
Сообщения: 6
Зарегистрирован: 20 окт 2006, 05:59

Сообщение leon_id »

1. Цикл для вывода делается с помощью .{Table ...
2. Goblin абсолютно прав, обычно одна ТХО используется для нескольких ОС, поэтому твоя выборка из обротов вернет данные по ВСЕМ ОС с данной ТХО, за весь период начисления амортизации. Наверное тебе не это хотелось получить.
3. Более простой и не очень правильный вариант будет использовать подцепку ((ТХО_nRec == hozobor.cHozobor)) и для счет/субсчета брать поля Hozobor.DbSchetO, Hozobor.KrSchetK и т.п. Но, возможно, он тебя устроит.
4. Для случая, когда надо получить фактический счет/субсчет в проводке, более правильно будет завязываться на обороты по периоду на поле Oborot.DatOb и по, например, инв. номеру ОСа (который можно засунуть ТХОшкой куда-нить в Oborot.SodPr). Ну и на Oborot.tidk для порядка. В этом случае придется забыть про индексы.
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

А еще лучше вести аналитикой ОСы на 01 и 02 счетах, тогда выбирать еще проще :-)
Что мы и делаем :cool:
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Potapenko_Al
Сообщения: 9
Зарегистрирован: 23 окт 2006, 11:09
Откуда: Беларусь, г. Борисов

Сообщение Potapenko_Al »

Народ, объясните мне "темному" что за
описана индексная подцепка, а у оборотов нет ни одного индекса, где бы первым сегментом было поле chozoper - вот и все
В чем суть таких "подцепок" и где их применяют
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

У вас минимальные знания в обалсти баз данных есть? Что такое индексы вы знаете?

подцепки - это то, как одни таблицы по каким то ключевым полям подвязываются к другим. Вернее скажем так: к значению одной таблицы подбираются значения из других таблиц по условиям, которые вы указываете.
leon_id
Сообщения: 6
Зарегистрирован: 20 окт 2006, 05:59

Сообщение leon_id »

hozoper.nrec==oborot.chozoper - это индексная подцепка, для того чтобы работала требуется соответствующий индекс.
hozoper.nrec==oborot.chozoper (noindex) - это не индексная подцепка, для нее ничего не требуется, но работает гораааздо медленнее.
индексы описаны в словаре, можно посмотреть Саппортом, например.
Ответить