|
Вид сравнения в запросе | ☑ | ||
---|---|---|---|---|
0
ХочуСпец
06.06.12
✎
11:08
|
Подключаюсь к другой базе через ОЛЕ. Необходимо вытащить из нее данные (н-р, номенклатуру)
Так же как в отборе динамического списка на форме разместил поля: ОбъектИспользование (Булево) ОбъектВидСравнения (Тип: вид сравнения) ОбъектЗначение (Тип: Справочники.Объект) Пытаюсь сделать что то типа: ПЗ=глСоединение.NewObject("ПостроительЗапроса"); ПЗ.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | Номенклатура.Объект КАК Объект |ИЗ | Справочник.Номенклатура”; ОтборПЗ = ПЗ.Отбор; ОтборПЗ.Добавить("Объект "); ОтборПЗ["Объект "].Использование = ОбъектИспользование; ОтборПЗ["Объект "].Значение = ОбъектЗначение; ОтборПЗ["Объект "].ВидСравнения = ОбъектВидСравнения; ПЗ.Выполнить(); Результат = ПЗ.Результат; Вопросы: 1. вообще правильная ли идея? 2. При ОтборПЗ.Добавить("Объект ") возникает исключительная ситуация. |
|||
1
DrShad
06.06.12
✎
11:10
|
Демонический список юзает СКД и отборы в СКД и Построителях разные
|
|||
2
Defender aka LINN
06.06.12
✎
11:15
|
(1) Иди выспись.
(0) Все правильно. У тебя доступных полей ровно 0,000. |
|||
3
ХочуСпец
06.06.12
✎
11:17
|
(2) как добавить в доступные поля?
|
|||
4
Defender aka LINN
06.06.12
✎
11:17
|
(3) {}
|
|||
5
ale-sarin
06.06.12
✎
11:18
|
(0) На всякий случай в "ОтборПЗ.Добавить("Объект ")" пробел не мешает?
|
|||
6
ХочуСпец
06.06.12
✎
11:18
|
(5) огпечатка суть от этого не меняется
|
|||
7
ХочуСпец
06.06.12
✎
11:24
|
(4)
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | Номенклатура.Объект КАК Объект | {Выбрать Номенклатура.Объект КАК Объект} |ИЗ | Справочник.Номенклатура”; ошибка та же ( |
|||
8
ZanderZ
06.06.12
✎
11:26
|
(7) кто мешает сделать в конструкторе потом поправить для ОЛЕ ?
|
|||
9
ХочуСпец
06.06.12
✎
11:26
|
+
при ОтборПЗ.Добавить("Объект"); выдает: Произошла исключительная ситуация: Недопустимое значение параметра |
|||
10
ХочуСпец
06.06.12
✎
11:27
|
(8) не понял чесно говоря
|
|||
11
ХочуСпец
06.06.12
✎
11:44
|
актуально
|
|||
12
Buster007
06.06.12
✎
11:52
|
(7) ээээ... разве не
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | Номенклатура.Объект КАК Объект | |ИЗ | Справочник.Номенклатура |{ГДЕ Объект.* как Объект}”; ? |
|||
13
ХочуСпец
06.06.12
✎
11:59
|
(12)
да точно! но теперь при ОтборПЗ["Объект"].Значение = ОбъектЗначение; выдается ошибка неверный тип значения |
|||
14
Buster007
06.06.12
✎
12:02
|
а что у тебя в ОбъектЗначение? СОМ объект?
|
|||
15
hhhh
06.06.12
✎
12:10
|
(13) да, видимо у тебя в переменных ОбъектЗначение и в ОбъектВидСравнения какая-то фигня хранится, отсюда все беды.
|
|||
16
ХочуСпец
06.06.12
✎
12:59
|
(14), (13)
все правильно ОбъектЗначение = глСоединение.Справочники.Объект.НайтиПоНаименованию(Объект.Наименование) но вот что прописать в ОбъектВидСравнения?? |
|||
17
Buster007
06.06.12
✎
13:02
|
ОбъектВидСравнения = глСоединение.ВидСравнения.Равно ?
|
|||
18
ХочуСпец
06.06.12
✎
13:04
|
ОбъектВидСравнения может принимать Равно, ВСписке и прочее прочее
|
|||
19
ХочуСпец
06.06.12
✎
13:07
|
Если ОбъектВидСравнения = ВидСравнения.Равно тогда
ОбъектВидСравнения = глСоединение.ВидСравнения.Равно Иначе... не красиво |
|||
20
Buster007
06.06.12
✎
13:12
|
СоответствиеСравнений = Новый Соответсвие();
СоответствиеСравнений.Вставить(ВидСравнения.Равно, глСоединение.ВидСравнения.Равно); ... ОтборПЗ["Объект "].ВидСравнения = СоответствиеСравнений.Получить(ОбъектВидСравнения); вроде красиво, не? |
|||
21
ХочуСпец
06.06.12
✎
13:41
|
(20) отлично. спс
еще один момент в отборе динамического списка если критерий отбора например справочникссылка, то виды сравнения свои если документ - то свои тоже самое с датой, со строкой. как бы это сделать без чрезмерного геморроя? |
|||
22
Buster007
06.06.12
✎
13:55
|
(21) а тут как ни крути всё равно придется описывать виды сравнения под каждый тип. А если мы это все уже опишем, то вид хранения этих видов сравнений особо то уж и не важен будет.
А я бы вообще не хранил их. написать функцию внутри с Если Справочник иначеЕсли Документ и т.д. и возвращал массив видов сравнений |
|||
23
ХочуСпец
06.06.12
✎
15:36
|
Если ВидСравненияОбъект = ВидСравнения.ВСписке ИЛИ
ВидСравненияОбъект = ВидСравнения.НеВСписке ИЛИ ВидСравненияОбъект = ВидСравнения.ВСпискеПоИерархии ИЛИ ВидСравненияОбъект = ВидСравнения.НеВСпискеПоИерархии тогда //сравнение в списке СЗОбъекты = глСоединение.NewObject("СписокЗначений"); Для каждого стр Из СЗОбъекты Цикл СЗОбъекты.Добавить(глСоединение.Справочники.Объект.НайтиПоНаименованию(стр.Значение.Наименование)); КонецЦикла; ОтборПЗ["Объект"].Значение = СЗОбъекты; КонецЕсли; Выдает ошибку при присваении значения: ОтборПЗ["Объект"].Значение = СЗОбъекты; что не так? |
|||
24
ХочуСпец
06.06.12
✎
15:49
|
(23) ошибся
Для каждого стр Из ОбъектыЗначения Цикл ... где ОбъектыЗначения - поле с составным типом (СписокЗначений, СправочникСсылка.Объект) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |