1С:Предприятие
:: 1С:Предприятие 7.7 и ранее
|
|
| ||
sysadminlk 24.11.20 - 20:45 | в форме элемента справочника пишу:
запрос.ВыполнитьЗапрос("create virtual table ДопДост using dbeng(Документ.ДоставкаДоп)"); запрос.Подставлять("ТекЭл", ТекущийЭлемент()); текст="SELECT * FROM ДопДост WHERE Основание = :ТекЭл;"; тз=запрос.ВыполнитьЗапрос(текст); При этом Основание это реквизит документа неопределенного типа в итоге получаю пустую тз (не находит короче) как его оптимизировать чтоб искала пока не пойму | ||
sysadminlk 1 - 24.11.20 - 21:51 | запрос.Подставлять("ТекЭл", ТекущийЭлемент()); текст="SELECT * FROM ДопДост WHERE Основание = :ТекЭл~;"; аа = запрос.ОбработатьТекстЗапроса(текст); Сообщить(аа); результат: //SELECT * FROM ДопДост WHERE Основание = ' 5Y4 2Q '; но если сделать WHERE 1 то видно что в Основаниезначения в другом формате типа: O1 1V2 0 B1 5Y4 2Q не понятно что такое B1 и О1 потому что дальше понятно 5Y4 это вид мое справочника
2Q мой конкретный элемент этого справочника
а что такое B1 - не понятно и как его подставить в запрос тоже пока не понятно | ||
sysadminlk 2 - 24.11.20 - 22:02 | замутил костыль
запрос.Подставлять("ТекЭл", ТекущийЭлемент());
текст="SELECT * FROM ДопДост WHERE Основание = 'B1'||:ТекЭл~;";
что такое B1 пока загадка
Есть идеи? | ||
Злопчинский 3 - 24.11.20 - 22:02 | я бы как незнающий сделал так ДокНеопределенныйТип = СоздатьОбъект("Документ"); ДокНеопределенныйТип.НайтиДокумент(ЧтоТо);//здесь в выборке всех документов позиционируемся на нужном НайденныйЭлемент = ДокНеопределенныйТип.ТекущийЭлемент(); запрос.Подставлять("ТекЭл", НайденныйЭлемент);//подсовываем ссылку неопределенного типа документов и вообще у тебя ТекущийЭлемент() - ЭТО К ДОКУМЕНТУ ССЫЛКА ОТНОСИТСЯ?! | ||
Злопчинский 4 - 24.11.20 - 22:03 | тьфу, в коде вышеНайденныйЭлемент = ДокНеопределенныйТип.ТекущийДокумент(); - ТАК Д.Б. | ||
Злопчинский 5 - 24.11.20 - 22:04 | основание - ДОКУМЕНТ а подсовываешь туда ТекущийЭлемент()? | ||
sysadminlk 6 - 24.11.20 - 22:07 | (3) я из справочника хочу найти все документы где в шапке этого документа есть этот элемент справочника
там документ можно сделать на основании элемента справочника или она основании другого документа поэтому в документе поле основание это не определенный тип | ||
sysadminlk 7 - 24.11.20 - 22:17 | я придумал как можно штатно это сделатьвот рабочий код: Док = СоздатьОбъект("Документ"); Если Док.ВыбратьПоЗначению(,,"ДопДостОснование",ТекущийЭлемент()) = 1 Тогда Пока Док.ПолучитьДокумент() = 1 Цикл Сообщить(Док.ТекущийДокумент()); КонецЦикла; КонецЕсли; Но интересно бы на sqlite это провернуть. | ||
Злопчинский 8 - 24.11.20 - 22:20 | (6) "Основание это реквизит документа неопределенного типа" ты уже бля определись. основание это у тебя реквизит "Документ" или "Неопределенный" | ||
Злопчинский 9 - 24.11.20 - 22:22 | (7) ненавижу конструкцию тиакие - экономия миллисикгнуда, а чтение кода усложняет шо капец.
я тупо без если написал бы. | ||
sysadminlk 10 - 24.11.20 - 22:23 | (8) Основание - Тип значения {Неопределенный} | ||
sysadminlk 11 - 24.11.20 - 22:25 | |||
sysadminlk 12 - 24.11.20 - 22:27 | там просто в конфиге уже и так целая тонна отборов | ||
Ёпрст 13 - 25.11.20 - 09:13 | Ты ужо определись, че те там над, Основание или ДопДостОснование. Перввое, это реквизит с типом <Документ> неопределкнного вида, а второе, вероятно, твой реквизит с типом Справочник.Вася..
> | ||
Mikeware 14 - 25.11.20 - 09:31 | |||
Sserj 15 - 25.11.20 - 09:48 | текстЗапроса = "select * from [Документ.ДоставкаДоп] as док where док.ДопДостОснование = :ТекЭл*"; запрос.Подставлять("ТекЭл", ТекущийЭлемент()); тз=запрос.ВыполнитьЗапрос(текст); | ||
Mikeware 16 - 25.11.20 - 09:49 | |||
Sserj 17 - 25.11.20 - 09:51 | (16) Древняя дока говорит:
:ВыбТовар - модификатор 0 :ВыбКлиент~ - модификатор 1 :ПозДок~~~ - модификатор 3 :Установить* - модификатор -1Значение любого типа с модификатором -1 преобразуется в тип базы данных "Неопределенный", строка 23 символа. | ||
sysadminlk 18 - 04.12.20 - 13:50 | Разобрался.
запрос.ВыполнитьЗапрос("create virtual table Шапка using dbeng(Документ.Расходная)"); запрос.Подставлять("Основание", Вар.ТекущийДокумент());SELECT * FROM Шапка WHERE 1 видно что в колонке записано O1 1E0 2P8R далее через Сообщить(запрос.ОбработатьТекстЗапроса(текст)); смотрю что для меня подходит SELECT * FROM Шапка WHERE Основание = :Основание SELECT * FROM Шапка WHERE Основание = ' 2P8R ' SELECT * FROM Шапка WHERE Основание = :Основание~ SELECT * FROM Шапка WHERE Основание = ' 1E0 2P8R ' SELECT * FROM Шапка WHERE Основание = :Основание~~ SELECT * FROM Шапка WHERE Основание = ' 1E0' SELECT * FROM Шапка WHERE Основание = :Основание~~~ SELECT * FROM Шапка WHERE Основание = '202012048XVD28 2P8R 'SELECT * FROM Шапка WHERE Основание = :Основание* SELECT * FROM Шапка WHERE Основание = 'O1 1E0 2P8R ' ООО вот мой вариант! Получается мне подходит :Основание* В манах про это инфы почему-то нетСимвол '*' обозначает модификатор '-1', количество же символов '~' следующих за именем параметра задает его номер. Значение типа Документ 0: Строка длинной 9 - внутренний идентификатор значения 1: Строка длинной 13 - внутренний идентификатор значения с видом значения 2: Строка длинной 4 - внутренний идентификатор вида значения 3: Строка длинной 23 - позиция документа в формате date_time_iddoc 4: Строка длинной 24 - позиция документа в формате date_time_iddoc + 'Я'А про -1 ничего не написали. |
|
Список тем форума |