|
v7: Прямой запрос 1С++. Не удалось привязать составной идентификатор | ☑ | ||
---|---|---|---|---|
0
daviels
28.08.15
✎
15:41
|
Всем доброго дня.
помогите разобраться , пожалуйста.... вот такой код: обМетаданные = СоздатьОбъект("MetaDataWork"); идНачалоПериода = "SP" + обМетаданные.ИДРеквизитаШапки("ПланПоРаботеМенеджеров","ДатаНачПериода"); идКонецПериода = "SP" + обМетаданные.ИДРеквизитаШапки("ПланПоРаботеМенеджеров","ДатаКонПериода"); идПланМенеджер = "SP" + обМетаданные.ИДРеквизитаТабличнойЧасти("ПланПоРаботеМенеджеров","Менеджер"); идПланНоменклатура = "SP" + обМетаданные.ИДРеквизитаТабличнойЧасти("ПланПоРаботеМенеджеров","Номенклатура"); обЗапрос = СоздатьОбъект("ODBCRecordSet"); обЗапрос.УстановитьТекстовыйПараметр("ДатаНач", ДатаНач); обЗапрос.УстановитьТекстовыйПараметр("ДатаКон", ДатаКон); Документы = " |Select $ДокПланСтрока.Менеджер as [Менеджер $Справочник.Сотрудники], | $ДокПланСтрока.Номенклатура as [Товар $Справочник.Номенклатура], | sum($ДокПланСтрока.Количество) as КолПлан, | sum($ДокПланСтрока.КоличествоКонтрагентов) as КолКонтр |from |$ДокументСтроки.ПланПоРаботеМенеджеров as ДокПланСтрока |inner join |$Документ.ПланПоРаботеМенеджеров as ДокПлан ON (ДокПланСтрока.iddoc = ДокПлан.iddoc and |(ДокПлан." + идНачалоПериода + " >= :ДатаНач) and (ДокПлан." + идКонецПериода + " >= :ДатаКон)) |inner join |_1SJourn AS Журнал ON (Журнал.IDDoc = ДокПланСтрока.iddoc AND | Журнал.Closed & 1 = 1) |inner join (select $ДокФактСтрока.Товар, | $ДокФакт.Представитель, | sum($ДокФактСтрока.Нетто) as КолФакт, | $ДокФактСтрока.Цена as ЦенаЗаготовки |from |$ДокументСтроки.ПоступлениеТоваров as ДокФактСтрока |inner join |$Документ.ПоступлениеТоваров as ДокФакт ON (ДокФактСтрока.iddoc = ДокФакт.iddoc) |inner join |_1SJourn AS Журнал ON (Журнал.IDDoc = ДокФактСтрока.iddoc AND | Журнал.Closed & 1 = 1 and | Журнал.DATE_TIME_IDDOC BETWEEN :ДатаНач AND :ДатаКон~) |group by |$ДокФактСтрока.Товар, |$ДокФакт.Представитель, |$ДокФактСтрока.Цена) as ВыборкаФакт ON ($ДокФакт.Представитель = ДокПланСтрока." + идПланМенеджер + " and ДокФактСтрока.sp3093 = ДокПланСтрока." + идПланНоменклатура + ") |group by |$ДокПланСтрока.Менеджер, |$ДокПланСтрока.Номенклатура |order by |$ДокПланСтрока.Менеджер"; Результат = обЗапрос.Открыть(Документы); Если Результат = 0 Тогда Сообщить("Запрос не выполнен"); Сообщить(обЗапрос.ПолучитьОписаниеОшибки()); обЗапрос.Закрыть(); Возврат; КонецЕсли; обЗапрос.ПолучитьРезультатыВ_ТЗ(табл,1); обЗапрос.Закрыть(); выдает ошибку: Не удалось привязать составной идентификатор "ДокФакт.sp3081" .... как это победить?????? |
|||
1
daviels
28.08.15
✎
15:42
|
ДокФакт.sp3081 = $ДокФакт.Представитель, если что...
|
|||
2
dk
28.08.15
✎
15:52
|
покажи итоговый запрос - нефиг тут выдумывать с какими параметрами ты запускаешь
|
|||
3
dk
28.08.15
✎
15:54
|
что за бред с
Результат = обЗапрос.Открыть(Документы); ----- просто сразу Результат = обЗапрос.ВыполнитьИнструкцию(Документы); |
|||
4
daviels
28.08.15
✎
15:57
|
да нее ..это ж не параметр, это я просто указал что ругается на поле "представитель" документа ПоступлениеТоваров
по выполнению запроса ..это я согласен, исправлю, но это дела не меняет... |
|||
5
dk
28.08.15
✎
16:00
|
скорее всего поле неопределенного типа или вида?
|
|||
6
mehfk
28.08.15
✎
16:00
|
Вот я отформатировал твой запрос в удобочитаемый вид и сразу нашел ошибку
|Select | $ДокПланСтрока.Менеджер as [Менеджер $Справочник.Сотрудники], | $ДокПланСтрока.Номенклатура as [Товар $Справочник.Номенклатура], | sum($ДокПланСтрока.Количество) as КолПлан, | sum($ДокПланСтрока.КоличествоКонтрагентов) as КолКонтр |from | $ДокументСтроки.ПланПоРаботеМенеджеров as ДокПланСтрока |inner join | $Документ.ПланПоРаботеМенеджеров as ДокПлан |ON | ДокПланСтрока.iddoc = ДокПлан.iddoc |and | ДокПлан." + идНачалоПериода + " >= :ДатаНач |and | ДокПлан." + идКонецПериода + " >= :ДатаКон |inner join | _1SJourn AS Журнал |ON | (Журнал.IDDoc = ДокПланСтрока.iddoc |AND | Журнал.Closed & 1 = 1) |inner join | (select | $ДокФактСтрока.Товар, | $ДокФакт.Представитель, | sum($ДокФактСтрока.Нетто) as КолФакт, | $ДокФактСтрока.Цена as ЦенаЗаготовки | from | $ДокументСтроки.ПоступлениеТоваров as ДокФактСтрока | inner join | $Документ.ПоступлениеТоваров as ДокФакт | ON | (ДокФактСтрока.iddoc = ДокФакт.iddoc) | inner join | _1SJourn AS Журнал | ON | (Журнал.IDDoc = ДокФактСтрока.iddoc | AND | Журнал.Closed & 1 = 1 | and | Журнал.DATE_TIME_IDDOC BETWEEN :ДатаНач AND :ДатаКон~ | ) | group by | $ДокФактСтрока.Товар, | $ДокФакт.Представитель, | $ДокФактСтрока.Цена | ) as ВыборкаФакт |ON | $ВыборкаФакт.Представитель = ДокПланСтрока." + идПланМенеджер + " |and | ВыборкаФакт.sp3093 = ДокПланСтрока." + идПланНоменклатура + " |group by | $ДокПланСтрока.Менеджер, | $ДокПланСтрока.Номенклатура |order by | $ДокПланСтрока.Менеджер |
|||
7
daviels
28.08.15
✎
16:04
|
ЗаЛаботалоооооооооо урааааааа )))))))
Спасибо mehfk. Действительно надо было ВыборкаФакт использовать. Я ТУПЕНЬ!!!!!!!!! |
|||
8
daviels
28.08.15
✎
16:05
|
Тока $ВыборкаФакт.Представитель не работает, а работает
ВыборкаФакт.sp3081 |
|||
9
daviels
28.08.15
✎
16:06
|
dk
тебе тоже спасибо, что отозвался. |
|||
10
trad
28.08.15
✎
16:09
|
(8) просто надо в подзапросе назначить алиас полю
$ДокФакт.Представитель as Представитель, и снаружи использовать ВыборкаФакт.Представитель |
|||
11
daviels
28.08.15
✎
16:10
|
trad
Точно. Я так и сделал только что |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |