Имя: Пароль:
1C
1C 7.7
v7: Оле условие в запросе по регистру
0 Маркусс
 
12.09.14
15:30
Добрый день
Запрос выплёвывает ошибку в |Условие....
Неужели нужно выгребать коды складов и по ним искать?
Или я в другом ошибаюсь?

    СпрOLE_СписокСкладов = ТиС.CreateObject("СписокЗначений");
    

    СпрOLE_Склады.НайтиПоКоду("00001",0);//главный
    СпрOLE_СписокСкладов.ДобавитьЗначение(СпрOLE_Склады.ТекущийЭлемент());
    СпрOLE_Склады.НайтиПоКоду("22231",0);//рка
    СпрOLE_СписокСкладов.ДобавитьЗначение(СпрOLE_Склады.ТекущийЭлемент());
    
    Запрос = ТиС.CreateObject("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(КомРегОстатки)
    |Период с '"+НачДатаЗагрДоки+"' по '"+КонДатаЗагрДоки+"';
    |ТекущийДокумент = Регистр.ОстаткиТМЦ.ТекущийДокумент;
    |НомерСтроки = Регистр.ОстаткиТМЦ.НомерСтроки;
    |Фирма = Регистр.ОстаткиТМЦ.Фирма;
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    |Функция КоличествоКонОст = КонОст(Количество);
    |Функция КоличествоРасход = Расход(Количество);
    |Функция КоличествоПриход = Приход(Количество);
    |Группировка ТекущийДокумент;
    |Группировка Номенклатура Без групп;
    |Условие(Склад в СпрOLE_СписокСкладов);
    |"//}}ЗАПРОС
    ;
1 Маркусс
 
12.09.14
15:30
В текущей базе запрос отрабатывает нормально
2 ДенисЧ
 
12.09.14
15:34
в переменную-массив на той стороне складывай свои склады и её ставь в запрос
3 Chameleon1980
 
12.09.14
15:40
массив 77?
4 Маркусс
 
12.09.14
15:43
Обе базы 7.7
СписокЗначений делаю на той стороне. и Склады тоже в той базе.
5 lavalit
 
12.09.14
15:56
Первое, что в глаза бросилось- период.... "Оля" такой период не поймет он локальный судя по всему.. дату надо передать так, что бы Оля понимала то есть в строке '01.01.2014' например
6 Chameleon1980
 
12.09.14
15:59
(5) +1 - не заметил
7 lavalit
 
12.09.14
16:06
Хотя так оно текст запроса должно тоже верно создать... а вот условия .. там да надо список делать у ОЛИ и по коду... Агрегат оно не потянет. Уж такая ОЛЯ блин
8 lavalit
 
12.09.14
16:07
Эт я про Даты.... погорячился сори психанул и т.д.))))))
9 lavalit
 
12.09.14
16:09
вот толковая статья .. сам по ней когда то рисовал свякие штуки для ОЛИ http://www.mista.ru/articles1c/ole.htm
10 lavalit
 
12.09.14
16:10
ТАм в конце про запросы все есть))) Удачи
11 Маркусс
 
12.09.14
16:12
(10) вкурил. спасибо)
12 Маркусс
 
12.09.14
16:12
(12) период кстате норм как раз
13 lavalit
 
12.09.14
16:14
(12) да точно... уж забывать стал))))) давненько олькины фокусы не пользовал)))
14 Маркусс
 
22.09.14
09:34
Что-то ничего понять не могу.
Ищу ЗаявкуПокупателя по внешнему номеру.
Или не ищет совсем или ошибку выплёвывает в условии

ЗаказНомерДок - строка
Заказ.ВнешнийНомер - тоже строка

Функция ДокВ_ОЛЕ_БазеЕсть(ЗаказНомерДок)
    ЗаказНомерДок = СокрЛП(ЗаказНомерДок);
    Запрос = ТиС.CreateObject("Запрос");
    
    НачДатаЗагрЦен = ТекущаяДата()-52;
    КонДатаЗагрЦен = ТекущаяДата()-30;
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с '"+НачДатаЗагрЦен+"' по '"+КонДатаЗагрЦен+"';
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент;
    |ВнешнийНомер = Документ.ЗаявкаПокупателя.ВнешнийНомер;
    |Группировка ЗаявкаПокупателя;
    |Условие(ЗаявкаПокупателя.Автор.Наименование= ""Автообмен"");
//    |Условие(Найти(ВнешнийНомер, '"+ЗаказНомерДок +"') >0);//*/условие не работает
    |Условие(Найти(ВнешнийНомер,ЗаказНомерДок)>0);///выдаёт ошибку
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
//        Возврат;
    КонецЕсли;
        
    Пока Запрос.Группировка(1)= 1 Цикл
            Возврат 1;        
    КонецЦикла;
    
    Возврат 0;
    
КонецФункции
15 Ёпрст
 
22.09.14
10:05
|Условие(Найти(ВнешнийНомер,ЗаказНомерДок)>0);///выдаёт ошибку //какую ошибку выдает ?
16 Маркусс
 
22.09.14
10:08
(15)

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Z:\КОМПЕРЕНОСЗАКАЗОВРТУ.ERT(321)}: 1С:Предприятие: Условие(Найти(ВнешнийНомер,ЗаказНомерДок <<?>> )>0);
Запрос[9] : Ошибка в выражении 'ЗаказНомерДок'
17 Ёпрст
 
22.09.14
10:11
|Условие(Найти(ВнешнийНомер, "+ЗаказНомерДок +") >0);
18 Маркусс
 
22.09.14
10:33
(17) Я так тоже пробовал. тоже ошибка
Сработало так:
    |Условие(Найти(ВнешнийНомер,Строка("+Прав(ЗаказНомерДок,8) +"))>0);//Отсёк префикс
19 Маркусс
 
22.09.14
10:33
Буквы почему-то отказывается понимать
20 Ёпрст
 
22.09.14
10:34
(19) экранируй ковычками
21 Ёпрст
 
22.09.14
10:34
двойными, чтоб явно строка была
22 Ёпрст
 
22.09.14
10:35
|Условие(Найти(ВнешнийНомер,Строка("""+Прав(ЗаказНомерДок,8) +"""))
23 Ёпрст
 
22.09.14
10:36
только функцию строка оттуда можно выкинуть
24 Маркусс
 
22.09.14
10:47
Без строки с двумя кавычками уже не хочет искать)
25 lavalit
 
22.09.14
14:29
А да, с кавычками тут засада ... всегда забываю сколько их должно быть... хорошо помогает отладчик там видно что подается в ОЛЕ... ОЛЕ четко понимает только строки...
26 МихаилМ
 
22.09.14
16:59
кодСклада  =  Регистр.ОстаткиТМЦ.Склад.Код;
Условие ((кодСклада = ""22231"") ИЛИ (кодСклада = ""22231""))

+ дополнить пробелами до полной длинны кода

в dbf sql дополнение может отличаться, гдето проделы - спереди , гдето - сзади