|  14.04.2006, 16:57 | #1 | 
| Участник | 
			
			Я создала Отчет. В нем в датасоурс 2 таблички: таблица проводок ОС и справочник ОС. Связь между табличками осуществляется по полю номер ОС и модель учета. Почему в коде выводится ошибка. Error Сообщение (16:44:47) Невозможно выбрать запись в 'Модель учета ОС' ('RAssetStandards') Инв. номер ОС: , . База данных SQL обнаружила ошибку........... Код: qbdsAT = qbds.addDataSource(tablenum(RAssetTrans)); qbdsAT.fetchMode(JoinMode::INNERJOIN); qbdsAT.relations(true); qbdsAT.addLink(Fieldnum(RAssetTrans, accountNum),fieldnum(RAssetStandards, assetId)); qbdsAT.addLink(Fieldnum(RAssetTrans, assetStandardId),fieldnum(RAssetStandards, assetStandardId)); | 
|  | 
|  14.04.2006, 18:37 | #2 | 
| Участник | 
			
			Безумный вариант: потому что вы не добавили в датасорс табличку RAssetStandards
		 | 
|  | 
|  14.04.2006, 18:48 | #3 | 
| Участник | Код: //ЗАПРОС ПО ТАБЛИЦЕ МОДЕЛЕЙ УЧЕТА qbds = this.query().dataSourceTable(tablenum(RAssetStandards)); qry = new Query(); qbds=qry.addDataSource(tablenum(RAssetStandards),'lbdt2'); //инв номер ОС qbr=qbds.addRange(fieldnum(RAssetStandards,AssetId)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetId)).value(); qbr.value(strRangeValue); //срок жизни qbrLife=qbds.addRange(fieldnum(RAssetStandards,Lifetime)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,Lifetime)).value(); qbrLife.value(strRangeValue); //профиль разноски qbrProfile=qbds.addRange(fieldnum(RAssetStandards,PostingProfile)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,PostingProfile)).value(); qbrProfile.value(strRangeValue); //группа амортизации qbrGroup=qbds.addRange(fieldnum(RAssetStandards,AssetGroup)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetGroup)).value(); qbrGroup.value(strRangeValue); //модель учета qbrStandard=qbds.addRange(fieldnum(RAssetStandards,assetStandardId)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,assetStandardId)).value(); qbrStandard.value(strRangeValue); excelDocument.InsertValue(ComExcelDocument_RU::numToNameCell(3,4), strRangeValue); //ЗАПРОС ПО ТАБЛИЦЕ ПРОВОДОК ОС qbdsAT = qbds.addDataSource(tablenum(RAssetTrans)); qbdsAT.fetchMode(JoinMode::INNERJOIN); qbdsAT.relations(true); qbdsAT.addLink(fieldnum(RAssetTrans, accountNum), fieldnum(RAssetStandards, assetId)); qbdsAT.addSortField(fieldnum(RAssetTrans, Voucher)); | 
|  | 
|  14.04.2006, 19:49 | #4 | 
| Участник | 
			
			Ой, боже! А этот запрос вы прямо руками кодируете? Почему бы вам не создать объект Query в AOT, а в коде написать простую строчку? <div class='XPPtop'>X++</div><div class='XPP'>myQueryInReport = [color=:blue]new[/color] Query([color=:blue]querystr[/color](mySuperQueryInAOT))</div> Я правильно понимаю, что основная задача вашего кода - создать запрос с теми условиями, которые ввел пользователь в отчете руками? Почему бы вам не сделать просто? myQuery = element.queryrun().query() | 
|  | 
|  20.04.2006, 15:33 | #5 | 
| Участник | 
			
			А мы легких путей не ищем. Спасибо за совет, продолжу самомучение.
		 | 
|  |