|
v7: Как через sqlite найти документ | ☑ | ||
---|---|---|---|---|
0
sysadminlk
24.11.20
✎
20:45
|
в форме элемента справочника пишу:
запрос.ВыполнитьЗапрос("create virtual table ДопДост using dbeng(Документ.ДоставкаДоп)"); запрос.Подставлять("ТекЭл", ТекущийЭлемент()); текст="SELECT * FROM ДопДост WHERE Основание = :ТекЭл;"; тз=запрос.ВыполнитьЗапрос(текст); При этом Основание это реквизит документа неопределенного типа в итоге получаю пустую тз (не находит короче) как его оптимизировать чтоб искала пока не пойму |
|||
1
sysadminlk
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 - не понятно и как его подставить в запрос тоже пока не понятно |
|||
2
sysadminlk
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
|
основание - ДОКУМЕНТ а подсовываешь туда ТекущийЭлемент()?
|
|||
6
sysadminlk
24.11.20
✎
22:07
|
(3) я из справочника хочу найти все документы где в шапке этого документа есть этот элемент справочника
там документ можно сделать на основании элемента справочника или она основании другого документа поэтому в документе поле основание это не определенный тип |
|||
7
sysadminlk
24.11.20
✎
22:17
|
я придумал как можно штатно это сделать
вот рабочий код: Док = СоздатьОбъект("Документ"); Если Док.ВыбратьПоЗначению(,,"ДопДостОснование",ТекущийЭлемент()) = 1 Тогда Пока Док.ПолучитьДокумент() = 1 Цикл Сообщить(Док.ТекущийДокумент()); КонецЦикла; КонецЕсли; Но интересно бы на sqlite это провернуть. |
|||
8
Злопчинский
24.11.20
✎
22:20
|
(6) "Основание это реквизит документа неопределенного типа"
ты уже бля определись. основание это у тебя реквизит "Документ" или "Неопределенный" |
|||
9
Злопчинский
24.11.20
✎
22:22
|
(7) ненавижу конструкцию тиакие - экономия миллисикгнуда, а чтение кода усложняет шо капец.
я тупо без если написал бы. |
|||
10
sysadminlk
24.11.20
✎
22:23
|
(8) Основание - Тип значения {Неопределенный}
|
|||
11
sysadminlk
24.11.20
✎
22:25
|
(9) я сначала тупанул и не подумал что штатно тоже можно сделать )
а теперь интересно стало |
|||
12
sysadminlk
24.11.20
✎
22:27
|
там просто в конфиге уже и так целая тонна отборов
|
|||
13
Ёпрст
25.11.20
✎
09:13
|
Ты ужо определись, че те там над, Основание или ДопДостОснование. Перввое, это реквизит с типом <Документ> неопределкнного вида, а второе, вероятно, твой реквизит с типом Справочник.Вася..
> |
|||
14
Mikeware
25.11.20
✎
09:31
|
(1) B1 и O1 - это типы объектов в строке(23)
[Type(2)][Kind(4)][ID(6)][Sign(3)] = 23 символов О1 - вроде документ, B1 - справочник... хотя могу ошибаться. |
|||
15
Sserj
25.11.20
✎
09:48
|
текстЗапроса = "select * from [Документ.ДоставкаДоп] as док where док.ДопДостОснование = :ТекЭл*";
запрос.Подставлять("ТекЭл", ТекущийЭлемент()); тз=запрос.ВыполнитьЗапрос(текст); |
|||
16
Mikeware
25.11.20
✎
09:49
|
(15) звездочка - не в строка(13) конвертит?
|
|||
17
Sserj
25.11.20
✎
09:51
|
(16) Древняя дока говорит:
:ВыбТовар - модификатор 0 :ВыбКлиент~ - модификатор 1 :ПозДок~~~ - модификатор 3 :Установить* - модификатор -1 Значение любого типа с модификатором -1 преобразуется в тип базы данных "Неопределенный", строка 23 символа. |
|||
18
sysadminlk
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 ничего не написали. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |