Имя: Пароль:
1C
1С v8
Условие в запросе при com-соединении не работает
0 timgan
 
17.07.15
10:46
Запрос = База.NewObject("Запрос");  
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин КАК Склад,
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    |    ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
    |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК НачОстаток,
    |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КонОстаток,
    |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК Приход,
    |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК Расход
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Склад.Магазин.description ПОДОБНО ""%мой склад%"")  КАК ТоварыНаСкладахОстаткиИОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыНаСкладахОстаткиИОбороты.Период,
    |    ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин,
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура";
    
    
    Запрос.УстановитьПараметр("НачДата", НачДата);
    Запрос.УстановитьПараметр("КонДата", КонецДня(КонДата));

не работает условие: Склад.Магазин.description ПОДОБНО ""%мой склад%""
1 salvator
 
17.07.15
10:55
Что значит "не работает"? Ошибка при выполнении запроса или не фильтрует?
2 asady
 
17.07.15
10:57
Вот этот запрос запусти

Запрос = База.NewObject("Запрос");  
    Запрос.Текст = "
    |ВЫБРАТЬ Склады.Наименование
    |ИЗ
    |    Справочник.Склады КАК Склады ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Магазины КАК Магазины ПО Склады.Магазин = Магазины.Ссылка ГДЕ Магазины.description ПОДОБНО ""%мой склад%""";
    
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(" мой склад ="+Выборка.Наименование);
КонецЦикла;

что выводит?
3 timgan
 
17.07.15
13:04
(1) не фильтрует

(2)

1. в базе оле: мой склад = мой склад, т.е. запрос осуществляет выборку
2. при подключении (application) из другой базы: Запрос.Выполнить.Пустой() дает Истина
4 OnCheck
 
17.07.15
13:08
в самой база отрабатывает?
5 Cube
 
17.07.15
13:08
(0) В смысле? Наоборот, работает. Просто у тебя в выборке нет складов, у магазина которых поле "description" содержит "мой склад" и всё...
Сам себе злобный буратино.
6 timgan
 
17.07.15
13:15
(4) да
7 OnCheck
 
17.07.15
13:16
а как отрабатывает? пустой? не пустой?
8 timgan
 
17.07.15
13:23
(5) убираем условие (предложение с ключевым словом ГДЕ), выводится весь список складов, все нормально

Запрос = База.NewObject("Запрос");  
    Запрос.Текст = "
    |ВЫБРАТЬ Склады.Наименование
    |ИЗ
    |    Справочник.Склады КАК Склады ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Магазины КАК Магазины ПО Склады.Магазин = Магазины.Ссылка ";
    
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(" мой склад ="+Выборка.Наименование);
КонецЦикла;
9 timgan
 
17.07.15
13:26
(7) если подключаюсь через Оле, тогда в Результате записей нет
(т.е. выборка пустая)
10 Cube
 
17.07.15
13:26
(8) Перечитывай (5), пока не дойдёт...
11 OnCheck
 
17.07.15
13:29
а если не через оле тогда хочешь сказать не пусто?
12 timgan
 
17.07.15
14:11
(11) да
13 timgan
 
17.07.15
14:48
Ошибку нашел, тему закрываю.
Всем спасибо,  Cube тебе отдельное.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс