Имя: Пароль:
1C
1C 7.7
v7: Выбор конкретного документа запросом
,
0 Mad88
 
27.04.17
11:05
В общем написал такую штуку
НомерНаСайте = "12148857";
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Заказ)
    |Период с (НачГода(ТекущаяДата())) по (КонГода(ТекущаяДата()));
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ТекущийДокумент = Документ.ЗаказПокупателя.ТекущийДокумент;
    |Условие(НомерНаСайте = НомерНаСайте);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    ТТ = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТТ,0,0);
    ТТ.ВыбратьСтроки();
    Пока ТТ.ПолучитьСтроку()=1 Цикл
    //НомерВТоп=0;
        Сообщить("Ну типо что-то есть!!!");
    КонецЦикла;

В цикл хочу увидеть документ который был найден. Делаю вычислить выражение, пихаю туда таблицу ТТ, но там кроме номерстроки больше ничего нет, подскажите что и как.
1 Смотрящий
 
27.04.17
11:14
Функцию счетчика добавь в запрос
2 Mad88
 
27.04.17
11:16
(1) чиво?)
3 Ёпрст
 
27.04.17
11:16
(0)
вот это бредовое условие, ибо переменная НомерНаСайте не определена в тексте запроса


|Условие(НомерНаСайте = НомерНаСайте);

(1) лишнее в данном случае
4 YFedor
 
27.04.17
11:17
(2) Это не восьмерка, в 7.7 запросы без функций не всегда работают
5 linoblack
 
27.04.17
11:17
группировку добавь в запрос
6 Ёпрст
 
27.04.17
11:18
+ не хватает группировки в запросе.
7 1dvd
 
27.04.17
11:18
(4) запрос к регистру требует функцию. Уж сколько лет к семерке не касался, но помню
8 Mad88
 
27.04.17
11:18
(3) Ничо не понял, как мне тогда искать докумнт по НомеруНаСайте?
9 Ёпрст
 
27.04.17
11:20
(8) описать переменную и группировку

|ПеременнаяТекстаЗапросаНомерНасайте = Документ.Вася.РеквизитВКоторомТвойНомерНАСайте;
|Условие (ПеременнаяТекстаЗапросаНомерНасайте = НомерНАСайте);
|Группировка Документ;
10 1dvd
 
27.04.17
11:20
(8)

   ТекстЗапроса =
    "//{{ЗАПРОС(Заказ)

    |Период с (НачГода(ТекущаяДата())) по (КонГода(ТекущаяДата()));
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ТекущийДокумент = Документ.ЗаказПокупателя.ТекущийДокумент;
    |зНомерНаСайте = Документ.ЗаказПокупателя.НомерНаСайте;
    |Условие(зНомерНаСайте = НомерНаСайте);
    |Группировка Документ;
    |"//}}ЗАПРОС
11 linoblack
 
27.04.17
11:21
искать по условию(как и сделано) - но нужно добавить в запрос группировку по документу.
12 Рэйв
 
27.04.17
11:21
(8)Да сделай .НайтиПоРеквизиту()  Или .НайтиПоНомеру()
Судя по всему ,запросы - это не твое:-)
13 Mad88
 
27.04.17
11:23
(12) НайтиПоРеквизиту тоже сложно)
Я бы на восьмерочке лучше все это сделал, но заставляют на 7.7
14 1dvd
 
27.04.17
11:24
>>НайтиПоРеквизиту тоже сложно)

ну, ты это... не перетруждайся там, поешь, поспи, отдохни, потом продолжишь
15 Mad88
 
27.04.17
11:25
(14) Солнце еще высоко, отдыхать нельзя
16 Prog111
 
27.04.17
11:28
В семерке запросы работают совсем по-другому, нежели в восьмерке. Так что лучше делай поиск старыми дедовскими способами, без запроса.
17 Mad88
 
27.04.17
11:31
(10) Этот запрос ничего не находит)
18 Ёпрст
 
27.04.17
11:33
(17)
ну так тогда поправь:

|Условие(СокрЛП(зНомерНаСайте) = СокрЛП(НомерНаСайте));
19 Масянька
 
27.04.17
11:38
мДок = СоздатьОбъект("Документ.ЗаявкаПокупателя");
    мДок.ВыбратьДокументы(НачГода(ТекущаяДата()),КонГода(ТекущаяДата()));
    Пока мДок.ПолучитьДокумент() = 1 Цикл
        мНомер = мДок.НомерНаСайте;
        Если (мНомер = СокрЛП(НомерНаСайте)) Тогда
            Сообщить("есть");
        КонецЕсли;
    КонецЦикла;
20 Mad88
 
27.04.17
11:42
(19) Таки ты предлагаешь мне перебирать все документы за год? Запрос то побыстрее отработает не?
21 Mad88
 
27.04.17
11:42
Кароч заработало, всем спасибо
22 Ёпрст
 
27.04.17
11:46
(20) нет. Запрос аналогично переберёт тебе все документы за год.
23 Ёпрст
 
27.04.17
11:47
И смотря какая конфа, скуль и дбф результаты будут разными по скорости.

А код в (0), если штатно делать, то надо \воткнуть сортировку по реквизиту и искать потом по НайтиПоРеквизиту .
Это ускорит в разы.

А так, прямой запрос, один хрен - быстрее всего будет
24 Mad88
 
27.04.17
11:51
(23) База файловая, альфа-авто, кароче сделал запрос и фиг с ним, хай так будет, не знаю я семерку совсем.
25 Масянька
 
27.04.17
11:52
(20) А запросом ты чего делаешь?
И эти люди учат меня не ковыряться в носу (С)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший