|
УТ, ошибка sql "Не удалось привязать составной идентификатор" | ☑ | ||
---|---|---|---|---|
0
Bibr
06.03.25
✎
17:12
|
Почти типовая УТ, предположительно после обновления (через 3дня) начала ошибку выдавать:
"Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине: Ошибка СУБД: Microsoft OLE DB Driver for SQL Server: Не удалось привязать составной идентификатор "T3._Fld3555_TYPE". HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, SQLSrvr: SQLSTATE=42S22, state=1, Severity=10, native=4104, line=19 SQLSrvr: SQLSTATE=42S22, state=1, Severity=10, native=4104, line=19 SQLSrvr: SQLSTATE=42S22, state=1, Severity=10, native=4104, line=19" Ошибку выдаёт типовая обработка "ОбеспечениеПотребностей" в момент выполнения запроса. Запрос моделируется, после упрощения в консоли до минимального выдающего ошибку, превратился в: //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ null как поле ИЗ (ВЫБРАТЬ 0 КАК Поле1) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ДополнительныеРеквизиты КАК ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты ПО (ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Ссылка = ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ) И (ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Свойство = &П), (ВЫБРАТЬ 0 КАК Поле1) КАК ВложенныйЗапрос1 ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты ПО (ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ) И (ЗаказКлиентаДополнительныеРеквизиты.Свойство = &П) На копии моделируется, на копии же пробую как-либо чинить: - выгрузка-загрузка dt - ТИИ все пункты - переиндексация базы средствами sql Ничего не помогло. Гуглёж выдал пару ссылок на старые темы, с прямыми скулёвыми запросами. Платформа если что 8.3.24.1761, win server 2016, ms sql. Коллеги, куда копать? |
|||
1
Галахад
гуру
06.03.25
✎
20:27
|
Там правда есть соединение по составному реквизиту?
ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ |
|||
2
Bibr
06.03.25
✎
16:21
|
(1) Текст Запроса выгружен в отладчике непосредственно из объекта Запрос перед Запрос.Выполнить()
|
|||
3
Bibr
06.03.25
✎
17:12
|
(1) целиком если интересно выглядит так:
ПодробностиВЫБРАТЬ РАЗРЕШЕННЫЕ ТаблицаФорматы.Склад КАК Склад, ТаблицаФорматы.ФорматМагазина КАК ФорматМагазина ПОМЕСТИТЬ ВтФорматыСкладов ИЗ РегистрСведений.ИсторияИзмененияФорматовМагазинов.СрезПоследних(, ) КАК ТаблицаФорматы ГДЕ ТаблицаФорматы.ФорматМагазина <> ЗНАЧЕНИЕ(Справочник.ФорматыМагазинов.ПустаяСсылка) ИНДЕКСИРОВАТЬ ПО Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Таблица.Номенклатура КАК Номенклатура, Таблица.Характеристика КАК Характеристика, Таблица.Склад КАК Склад ПОМЕСТИТЬ ВтТоварыПоддерживаемогоЗапаса ИЗ РегистрСведений.ТоварныеОграничения КАК Таблица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварныеОграничения КАК НастройкаГруппировки ПО (Таблица.ГруппировкаТоварныхОграничений <> ЗНАЧЕНИЕ(Справочник.ГруппировкиТоварныхОграничений.ПустаяСсылка)) И (НастройкаГруппировки.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) И (НастройкаГруппировки.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) И (НастройкаГруппировки.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) И (НастройкаГруппировки.ГруппировкаТоварныхОграничений = Таблица.ГруппировкаТоварныхОграничений) И (НастройкаГруппировки.ЭтоДействующийПараметр) ГДЕ ЕСТЬNULL(НастройкаГруппировки.МетодОбеспеченияПотребностей, Таблица.МетодОбеспеченияПотребностей) <> ЗНАЧЕНИЕ(Перечисление.МетодыОбеспеченияПотребностей.ЗаказПодЗаказ) И Таблица.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И (Таблица.Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать) ИЛИ Таблица.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) И Таблица.ЭтоДействующийПараметр И Таблица.Склад = &П2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Таблица.Номенклатура, ТаблицаХарактеристик.Ссылка, Таблица.Склад ИЗ РегистрСведений.ТоварныеОграничения КАК Таблица ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаНоменклатуры ПО (ТаблицаНоменклатуры.Ссылка = Таблица.Номенклатура) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ТаблицаХарактеристик ПО (ТаблицаХарактеристик.Владелец = ВЫБОР КОГДА ТаблицаНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры) ТОГДА ТаблицаНоменклатуры.Ссылка КОГДА ТаблицаНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры) ТОГДА ТаблицаНоменклатуры.ВидНоменклатуры КОГДА ТаблицаНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры) ТОГДА ТаблицаНоменклатуры.ВладелецХарактеристик КОНЕЦ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварныеОграничения КАК НастройкаДетальная ПО (НастройкаДетальная.Номенклатура = Таблица.Номенклатура) И (НастройкаДетальная.Характеристика = ТаблицаХарактеристик.Ссылка) И (НастройкаДетальная.Склад = Таблица.Склад) И (НастройкаДетальная.ЭтоДействующийПараметр) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварныеОграничения КАК НастройкаГруппировки ПО (Таблица.ГруппировкаТоварныхОграничений <> ЗНАЧЕНИЕ(Справочник.ГруппировкиТоварныхОграничений.ПустаяСсылка)) И (НастройкаГруппировки.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) И (НастройкаГруппировки.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) И (НастройкаГруппировки.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) И (НастройкаГруппировки.ГруппировкаТоварныхОграничений = Таблица.ГруппировкаТоварныхОграничений) И (НастройкаГруппировки.ЭтоДействующийПараметр) ГДЕ ЕСТЬNULL(НастройкаГруппировки.МетодОбеспеченияПотребностей, Таблица.МетодОбеспеченияПотребностей) <> ЗНАЧЕНИЕ(Перечисление.МетодыОбеспеченияПотребностей.ЗаказПодЗаказ) И Таблица.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И Таблица.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) И Таблица.Номенклатура.ИспользованиеХарактеристик <> ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать) И Таблица.ЭтоДействующийПараметр И НастройкаДетальная.Склад ЕСТЬ NULL И НЕ ТаблицаХарактеристик.Ссылка ЕСТЬ NULL И Таблица.Склад = &П2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Т.Номенклатура КАК Номенклатура, Т.Характеристика КАК Характеристика, Т.Склад КАК Склад, СпрСпособ.Ссылка КАК СпособОбеспечения ПОМЕСТИТЬ ВтТовары ИЗ ВтТоварыПоддерживаемогоЗапаса КАК Т ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияРаботами КАК ТаблицаВариантыОбеспеченияРаботами ПО (Т.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)) И (ТаблицаВариантыОбеспеченияРаботами.Номенклатура = Т.Номенклатура) И (ТаблицаВариантыОбеспеченияРаботами.Характеристика = Т.Характеристика) И (ТаблицаВариантыОбеспеченияРаботами.РеквизитДопУпорядочивания = 1) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК ТаблицаВариантыОбеспеченияТоварами ПО (Т.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Набор))) И (ТаблицаВариантыОбеспеченияТоварами.Номенклатура = Т.Номенклатура) И (ТаблицаВариантыОбеспеченияТоварами.Характеристика = Т.Характеристика) И (ТаблицаВариантыОбеспеченияТоварами.Склад = Т.Склад) И (ТаблицаВариантыОбеспеченияТоварами.РеквизитДопУпорядочивания = 1) ЛЕВОЕ СОЕДИНЕНИЕ ВтФорматыСкладов КАК ТаблицаФорматыСкладов ПО (ТаблицаФорматыСкладов.Склад = Т.Склад) И (ТаблицаВариантыОбеспеченияТоварами.Номенклатура ЕСТЬ NULL) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СхемыОбеспечения КАК ТаблицаСхемыОбеспеченияСкладов ПО (ТаблицаСхемыОбеспеченияСкладов.СхемаОбеспечения = Т.Номенклатура.СхемаОбеспечения) И (ТаблицаСхемыОбеспеченияСкладов.Склад = Т.Склад) И (ТаблицаВариантыОбеспеченияТоварами.Номенклатура ЕСТЬ NULL) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СхемыОбеспечения КАК ТаблицаСхемыОбеспеченияФорматов ПО (ТаблицаСхемыОбеспеченияФорматов.СхемаОбеспечения = Т.Номенклатура.СхемаОбеспечения) И (ТаблицаСхемыОбеспеченияФорматов.Склад = ТаблицаФорматыСкладов.ФорматМагазина) И (ТаблицаСхемыОбеспеченияСкладов.СхемаОбеспечения ЕСТЬ NULL) И (ТаблицаВариантыОбеспеченияТоварами.Номенклатура ЕСТЬ NULL) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпособыОбеспеченияПотребностей КАК СпрСпособ ПО (ВЫБОР КОГДА Т.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА ЕСТЬNULL(ТаблицаВариантыОбеспеченияРаботами.СпособОбеспеченияПотребностей, Т.Номенклатура.СпособОбеспеченияПотребностей) ИНАЧЕ ЕСТЬNULL(ТаблицаВариантыОбеспеченияТоварами.СпособОбеспеченияПотребностей, ЕСТЬNULL(ТаблицаСхемыОбеспеченияСкладов.СпособОбеспеченияПотребностей, ЕСТЬNULL(ТаблицаСхемыОбеспеченияФорматов.СпособОбеспеченияПотребностей, ЗНАЧЕНИЕ(Справочник.СпособыОбеспеченияПотребностей.ПустаяСсылка)))) КОНЕЦ = СпрСпособ.Ссылка), (ВЫБРАТЬ 0 КАК Поле1) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ДополнительныеРеквизиты КАК ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты ПО (ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Ссылка = ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ И ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Свойство = &П), (ВЫБРАТЬ 0 КАК Поле1) КАК ВложенныйЗапрос1 ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты ПО (ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &П) ГДЕ ЕСТЬNULL(СпрСпособ.ТипОбеспечения, ЗНАЧЕНИЕ(Перечисление.ТипыОбеспечения.Покупка)) = &П3 И ВЫБОР КОГДА ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента ТОГДА ВЫРАЗИТЬ(ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Значение КАК ДАТА) КОГДА ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ ССЫЛКА Документ.ЗаказКлиента ТОГДА ВЫРАЗИТЬ(ЗаказКлиентаДополнительныеРеквизиты.Значение КАК ДАТА) КОНЕЦ = &П4 ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад, СпособОбеспечения ; //////////////////////////////////////////////////////////////////////////////// УНИЧТОЖИТЬ ВтФорматыСкладов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 Т.Номенклатура КАК Номенклатура, Т.Характеристика КАК Характеристика, Т.Склад КАК Склад, Т.СпособОбеспечения КАК СпособОбеспечения, ПРЕДСТАВЛЕНИЕССЫЛКИ(Т.Номенклатура) КАК НоменклатураПредставление, ПРЕДСТАВЛЕНИЕССЫЛКИ(Т.Склад) КАК СкладПредставление, ПРЕДСТАВЛЕНИЕССЫЛКИ(Т.СпособОбеспечения) КАК СпособОбеспеченияПредставление, ПРЕДСТАВЛЕНИЕССЫЛКИ(Т.Характеристика) КАК ХарактеристикаПредставление ИЗ ВтТовары КАК Т |
|||
4
АНДР
06.03.25
✎
20:28
|
(0) Без этого не ругается!?
(ВЫБРАТЬ 0 КАК Поле1) КАК ВложенныйЗапрос |
|||
5
Bibr
06.03.25
✎
16:53
|
(4) без этого не ругается, да.
|
|||
6
Bibr
06.03.25
✎
17:12
|
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Ссылка как Ссылка1, ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Свойство как Свойство1, ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты.Значение как Значение1, ЗаказКлиентаДополнительныеРеквизиты.Ссылка как Ссылка2, ЗаказКлиентаДополнительныеРеквизиты.Свойство как Свойство2, ЗаказКлиентаДополнительныеРеквизиты.Значение как Значение2 ИЗ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ДополнительныеРеквизиты КАК ЗаявкаНаВозвратТоваровОтКлиентаДополнительныеРеквизиты, Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты в таком виде не ругается |
|||
7
АНДР
06.03.25
✎
17:20
|
(6) А если в Где добавить
(ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ВЫРАЗИТЬ(NULL КАК Справочник.Назначения).Заказ) |
|||
8
АНДР
06.03.25
✎
17:25
|
(7) И раздели уже таблицы Документ.ЗаявкаНаВозвратТоваровОтКлиента и
Документ.ЗаказКлиента |
|||
9
Ёпрст
06.03.25
✎
20:21
|
Ипать, еще и кросс джоин туда.
|
|||
10
Bibr
07.03.25
✎
10:26
|
(7-9)
что делать-то? интересует, как убрать ошибку. Желательно правкой данных/таблиц, а не кода |
|||
11
Bibr
07.03.25
✎
10:33
|
(7) та же ошибка
|
|||
12
Мультук
гуру
07.03.25
✎
10:37
|
(10)
Сарказм. 1) Это же очевидно -- прихлопнуть все "ДополнительныеРеквизиты" в "ЗаявкаНаВозвратТоваровОтКлиента" и "ЗаявкаНаВозвратТоваровОтКлиента" -- нет данных, нет выборки 2) Так-то запрос (6) прикольный, ага 3) Тут два варианта. Ждать патчей ИЛИ смотреть "а как раньше было". Либо раньше было также, но не было доп.реквизитов см пункт 1 |
|||
13
АНДР
07.03.25
✎
10:57
|
(11) Теперь ищи в какой таблице (8)
Потом по периодам ищи конкретную запись. |
|||
14
Мультук
гуру
07.03.25
✎
11:15
|
Риторический вопрос.
А какое отношение к типовая обработка "ОбеспечениеПотребностей" Имеет таблица "Документ.ЗаказКлиента.ДополнительныеРеквизиты" |
|||
15
Bibr
07.03.25
✎
12:55
|
(14)
юзеры в обработке ОбеспечениеПотребностей делают отбор по допреквизиту своему (своя дата доставки) и видимо автоматом идёт в скд. похоже что в этом и проблема |
|||
16
Bibr
07.03.25
✎
14:14
|
Проблема решена.
Причина - юзер добавил доп реквизит, который использовался в отборе обработки в ещё один тип документа. т.е. тот же доп реквизит расширил на новый тип. и после этого типовая обработка стала формировать такой запрос, который скуль отказывается переваривать. Т.е. отбор по доп реквизиту в этой обработке нормально работает пока доп реквизит только для одного типа объекта. Решение - удалить доп реквизит из нового типа дока и для нового создать отдельный. всем спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |