Страница 1 из 1

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

Добавлено: 24 окт 2006, 16:34
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 

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

Trim(DoubleToStr(oborot.dbscheto, ФорматСум)) - это вообще что хотели сделать ?
Дело в том, что данная форма некорректна логически, даже если вы укажете неиндексную подцепку - то у Вас получится по каждой ОС дополнительный список ВСЕХ проводок по данной ТХО

Добавлено: 24 окт 2006, 19:22
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]

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

Добавлено: 25 окт 2006, 08:14
Goblin
А еще лучше вести аналитикой ОСы на 01 и 02 счетах, тогда выбирать еще проще :-)
Что мы и делаем :cool:

Добавлено: 25 окт 2006, 11:16
Potapenko_Al
Народ, объясните мне "темному" что за
описана индексная подцепка, а у оборотов нет ни одного индекса, где бы первым сегментом было поле chozoper - вот и все
В чем суть таких "подцепок" и где их применяют

Добавлено: 25 окт 2006, 11:30
Алексей
У вас минимальные знания в обалсти баз данных есть? Что такое индексы вы знаете?

подцепки - это то, как одни таблицы по каким то ключевым полям подвязываются к другим. Вернее скажем так: к значению одной таблицы подбираются значения из других таблиц по условиям, которые вы указываете.

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