#0
by Sk0rp
Задача: Получить товары из документа, который этим документом списались "под остаток". Вот такой получился текст: ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); {XXX.ERT}: State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 29: Incorrect syntax near '.'. Вот так запрос распарсился: FROM dt410 as Док INNER JOIN sc33 as СпрН ON СпрН.ID = Док.sp423 AND ( select rr99_vt.sp3603 as Фирма, rr99_vt.sp101 as Товар, rr99_vt.sp100 as Склад, from ( select rg99_vt.sp3603, rg99_vt.sp101, rg99_vt.sp100, rg99_vt.sp102 from rg99 as rg99_vt (nolock) INNER JOIN (SELECT DISTINCT Д1.sp423 as rg99_vt.sp101, FROM dt410 as Д1 WHERE Д1.IDDOC = ' 4TXV ') as Д ON rg99_vt.sp101 = Д.Товар (rg99_vt.sp101) select ra99_vt.sp3603, ra99_vt.sp101, ra99_vt.sp100, case ra99_vt.debkred when 0 then ra99_vt.sp102 else -ra99_vt.sp102 end from ra99 as ra99_vt (nolock) inner join _1sjourn as j99_vt (nolock) on j99_vt.iddoc = ra99_vt.iddoc INNER JOIN (SELECT DISTINCT Д1.sp423 as ra99_vt.sp101, FROM dt410 as Д1 WHERE Д1.IDDOC = ' 4TXV ') as Д ON ra99_vt.sp101 = Д.Товар (ra99_vt.sp101) where j99_vt.date_time_iddoc > '20100901' and j99_vt.date_time_iddoc < '2010091889B0N4 4TXV ' rr99_vt.sp3603, rr99_vt.sp101, rr99_vt.sp100 QA дает: Server: Msg 170, Level 15, State 1, Line 28 Line 28: Incorrect syntax near '.'. Server: Msg 170, Level 15, State 1, Line 43 Line 43: Incorrect syntax near '.'. 28-я строка это: Д1.sp423 as rg99_vt.sp101, 43-я: Д1.sp423 as ra99_vt.sp101, Не могу понять, что делаю не так и что надо исправлять.
#1
by МихаилМ
ну так вставте тескт запроса в квари аналайзер, ентерпрайз манагер, ссмс исполните. и они вам укажут на ошибку. форум Вам не отладчик.
#6
by Sk0rp
Согласен, лишняя, спасибо. Убирание на выполнение не повлияло. С запятой перед (Товар) вообще не компилируется: {ХХХ.ERT}: Meta name parser error: недопустимое значение параметра "$РегистрОстатки.ОстаткиТоваров"
#11
by Sk0rp
Да, точно, спасибо. Сам в это место смотрю. Получается: | $РегистрОстатки.ОстаткиТоваров(:ДатаРасчета~, | INNER JOIN К сожалению, ошибка в QA та же. В SQL запросе поменялось только место:
#17
by Sk0rp
Блин, как она там появилась? :) Не было же изначально, вот прямо сейчас зачем-то добавил. Спасибо. теперь новая ошибка компиляции: {XXX.ERT}: Meta name parser error: недопустимое значение параметра "$РегистрОстатки.ОстаткиТоваров"
#18
by Ёпрст
нам не видно кода отсюда.. да и..ОстаткиТоваров, что есть такой регистр с таким именем ?
#19
by Sk0rp
Заменил: (Количество) на (ОстатокТовара) - у меня так ресурс называется. Теперь все компилируется, но при исполнении ошибка та же: {XXX.ERT}: State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 25: Incorrect syntax near '.'. В QA это Server: Msg 170, Level 15, State 1, Line 24 Line 24: Incorrect syntax near '.'. Server: Msg 170, Level 15, State 1, Line 36 Line 36: Incorrect syntax near '.'. где по прежнему: 24-я строка это: Д1.sp423 as rg99_vt.sp101, 36-я: Д1.sp423 as ra99_vt.sp101,
#21
by Sk0rp
Вот текущее состояние 1C++ запроса: FROM $ДокументСтроки.РасходнаяНакладная as Док INNER JOIN $Справочник.Номенклатура as СпрН ON СпрН.ID = $Док.Товар AND $Д1.Товар as Товар FROM $ДокументСтроки.РасходнаяНакладная as Д1 WHERE Д1.IDDOC = :ВыбДок) as Д ON Товар = Д.Товар, ,(Товар), (ОстатокТовара)) as Рег ON
#22
by Sk0rp
Вот SQL: SELECT FROM dt410 as Док INNER JOIN sc33 as СпрН ON СпрН.ID = Док.sp423 AND ( select rr99_vt.sp101 as Товар, select rg99_vt.sp101, rg99_vt.sp102 from rg99 as rg99_vt (nolock) INNER JOIN (SELECT DISTINCT Д1.sp423 as rg99_vt.sp101 FROM dt410 as Д1 WHERE Д1.IDDOC = ' 4TXV ') as Д ON rg99_vt.sp101 = Д.Товар select ra99_vt.sp101, case ra99_vt.debkred when 0 then ra99_vt.sp102 else -ra99_vt.sp102 end from ra99 as ra99_vt (nolock) inner join _1sjourn as j99_vt (nolock) on j99_vt.iddoc = ra99_vt.iddoc INNER JOIN (SELECT DISTINCT Д1.sp423 as ra99_vt.sp101 FROM dt410 as Д1 WHERE Д1.IDDOC = ' 4TXV ') as Д ON ra99_vt.sp101 = Д.Товар where j99_vt.date_time_iddoc > '20100901' and j99_vt.date_time_iddoc < '2010091889B0N4 4TXV ' rr99_vt.sp101
#24
by Sk0rp
Регистр "Остатки товаров" предназначен для количественного учета остатков товаров на складах. Остатки товаров учитываются в базовых единицах измерения. В регистре ведется и управленческий, и финансовый учет остатков товаров. СТРУКТУРА РЕГИСТРА "ОСТАТКИ ТОВАРОВ" ИЗМЕРЕНИЯ Фирма При управленческом учете в это измерение записывается пустое значение (это является фактически признаком управленческого учета). При финансовом учете здесь проставляется значение фирмы проводимого документа. Для финансового учета значение данного измерения означает принадлежность данной партии товара конкретной фирме. Товар Здесь проставляется значение товара. Склад Здесь проставляется значение склада. РЕСУРС ОстатокТовара На этом ресурсе ведется учет остатка данного товара на складе в базовых единицах измерения. РЕКВИЗИТЫ ФлагУчета Данный реквизит фиксирует род движения товара: внутренний или внешний .
#26
by Sk0rp
А вот это не понял как использовать? Если в прямом запросе заменить на: Рег.ОстатокТовараОстаток, то ошибка сохраняется, но я не вижу, что бы такой алиас появлялся ранее. Это уже придумка транслятора в SQL вроде как.
#27
by Sk0rp
Везде в тексте прямого запроса? Это же название ресурса, я попробовал - не компилируется.
#28
by МихаилМ
еще не увязочка если тч будет 2(3...) одинаковых товара то сумма удвоится (утроится ..)
#34
by МихаилМ
я бы разделил этот запрос на 2 части и запрос по доку вынес вынес в временную таблицу, свернутую и поней делал отбор в подзапросе. иначе он путанный и плохочитаемый.
#35
by Sk0rp
Потеряет в скорости. Да и не особо он путанный: получить остатки по списку из документа и сравнить с количеством из документа - чего уж тут путанного?!ю
#36
by Sk0rp
Половину победил: Нельзя было второй раз алиас Товар использовать. вот так почти работает:
#37
by Sk0rp
Теперь новая ошибка: {ХХХ.ERT}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ОстатокТовара'. а в QA это: ... Server: Msg 207, Level 16, State 3, Line 1 Invalid column name 'ОстатокТовара'. Server: Msg 207, Level 16, State 1, Line 1 Invalid column name 'ОстатокТовара'.
#38
by МихаилМ
я знаю точно, что "MIN(Рег.ОстатокТовара) as КолОст" - это плохо соответственно свертку по товару вынести в подзапрос. ( select документ ) join остатки_до_проведения_по_товарам_в_доке where остатки <> (нужное подчеркнуть) колву в доке.
#39
by Sk0rp
Все, с помощью Ёпрст3 победил, вот так работает: Что из ОстатокТовара внутри парсера получается алиас ОстатокТовараОстаток - фиг где описано.
#44
by ДенисЧ
грязное чтение, то есть чтение данных незавершённых транзакций и заблокированных таблиц
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- как разорвать (disconnect) из VB com-соединения с 1с
- как убрать пароль на учетку в win 7
- Где в СКД можно использовать функции общих модулей?
- Поступление товара от учредителя
- Вывод картинки в Excel
- Взвести Модифицированность формы документа
- ЗУП 2.5.26.2
- 8.2 Таблица управляемой формы. Замучался с настройкой ширины колонок.
- Как вычислить выражение в запросе
- Ошибка СУБД: база данных не открыта
- Как правильней проверить в иерархии ли один элемент справочника другого элемента ?
- ЗУП. ЕНВД. Тариф страховых взносов не устанавливается.
- Возможны расхождения ИБ и ФР!
- Зашифровать базу 1С TrueCrypt кто нибудь пробовал?
- Восстановление периферийной ИБ из центральной
- Ошибка SDBL: Результат запроса имеет более чем один уровень вложенности таблиц
- Что делать если API 1C8 не совпадает с API обработки обслуживания?
- Как создать новый объект по GUID или заменить GUID
- Разложить из ms sql datetime на дату и время
- Отчет построеный на СКД. Как перед отчетом вывести текст.