Имя: Пароль:
1C
1C 7.7
v7: Поиск документа по реквизиту 1с 7.7, запросом
0 Adecvator
 
13.03.17
10:23
|НомерДоговора    = Документ.Договор.НомерДоговора;
|ТекущийДокумент= Документ.Договор.ТекущийДокумент;
|Группировка ТекущийДокумент;
|Условие(СокрЛП(НомерДоговора) = _НомерДоговора);

Пока Запрос.Группировка(1) = 1 Цикл
   Возврат Запрос.ЗначениеУпорядочивания(1);
КонецЦикла;

_НомерДоговора = "1.4", договор с таким номером есть, но не находит (
1 Adecvator
 
13.03.17
10:24
передаю _НомерДоговора = "1.4"
2 Волшебник
 
модератор
13.03.17
10:24
У вас цикл не крутится
3 Adecvator
 
13.03.17
10:27
(2) а зачем крутить мне по первому въождению
4 Chameleon1980
 
13.03.17
10:38
может дело в длине номера не?
5 Adecvator
 
13.03.17
10:41
(4) ну я типа обрезаю СокрЛП(). Запрос по справочнику:
"//{{ЗАПРОС(ПоискКонтрагентаПоИНН)
|ТекущийЭлемент = Справочник.Контрагенты.ТекущийЭлемент;
|ИНН = Справочник.Контрагенты.ИНН;
|Группировка ТекущийЭлемент;
|Условие(СокрЛП(ИНН) = _ИНН);

Пока Запрос.Группировка(1) = 1 Цикл
    Возврат Запрос.ЗначениеУпорядочивания(1);
КонецЦикла

Отрабатывает на ура, а вот по документу не пойму.....
6 Волшебник
 
модератор
13.03.17
10:41
(3) Если крутить не надо, то зачем цикл?
7 Adecvator
 
13.03.17
10:45
(6) Да не знаю как по другому )
8 Chameleon1980
 
13.03.17
10:46
если Запрос.Группировка(1) = 1 тогда
9 Масянька
 
13.03.17
10:48
(5) Контрагенты - самостоятельный справочник. А Договоры/Договора - подчинен Контрагентам.
10 Chameleon1980
 
13.03.17
10:50
(9) а тут пофиг на это похоже
11 Chameleon1980
 
13.03.17
10:51
вот бы на полный текст запроса посмотреть, а то я смотрю текдокумент это реквизит договора еще какого-то документа, оказывается.
12 Ёпрст
 
13.03.17
10:53
(0), (5). Запрос.Выполнить() то хоть есть в коде ?
13 Adecvator
 
13.03.17
10:54
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ПоискДоговорПоНомеру)
|НомерДоговора    = Документ.Договор.НомерДоговора;
|ТекущийДокумент= Документ.Договор.ТекущийДокумент;
|Группировка ТекущийДокумент;
|Условие(СокрЛП(НомерДоговора) в _НомерДоговора);
|"//}}ЗАПРОС
;                                              

// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат "";
КонецЕсли;
        
Пока Запрос.Группировка(1) = 1 Цикл
    Возврат Запрос.ЗначениеУпорядочивания(1);
КонецЦикла;
14 Zmich
 
13.03.17
10:56
(13). Документ Договор проводится? Если нет, в тексте запроса должна быть строчка |ОбрабатыватьДокументы Все;
15 Adecvator
 
13.03.17
11:00
//{{ЗАПРОС(ПоискДоговорПоНомеру)
|НомерДоговора    = Документ.Договор.НомерДоговора;
|ТекущийДокумент= Документ.Договор.ТекущийДокумент;
|Группировка ТекущийДокумент;
|Условие(СокрЛП(НомерДоговора) в _НомерДоговора);
|ОбрабатыватьДокументы Все;

не помогут, документ проводится.
16 Ёпрст
 
13.03.17
11:01
(13) зачем "в"  в условии ?
Зачем ЗначениеУпорядочивания ?

Возврат Запрос.ТекущийДокумент хотя бы
17 Ёпрст
 
13.03.17
11:02
и это, без твоего условия хоть что-то возвращает ?
18 Adecvator
 
13.03.17
11:13
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ПоискДоговорПоНомеру)
|НомерДоговора    = Документ.Договор.НомерДоговора;
|ТекущийДокумент= Документ.Договор.ТекущийДокумент;
|Группировка ТекущийДокумент;
|Условие(СокрЛП(НомерДоговора) = _НомерДоговора);
|ОбрабатыватьДокументы Все;
|"//}}ЗАПРОС
;                                              

// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат "";
КонецЕсли;
        
Если Запрос.Группировка(1) = 1 Тогда
    Возврат Запрос.ЗначениеУпорядочивания(1);
КонецЦикла;
19 Adecvator
 
13.03.17
11:14
результат тот же (
20 welwel
 
13.03.17
11:22
как вариант: условие из запроса перенести из запроса внутрь цикла "Пока Запрос.Группировка(1) = ..."
и там уже посмотреть значения отладчиком
21 azernot
 
13.03.17
11:22
_НомерДоговора - это случайно не реквизит формы?

Проверь, что у тебя там

Сообщить("'"+_НомерДоговора+"'");
22 Chameleon1980
 
13.03.17
11:29
(21) думается, запрос бы и не начал работать.
23 Adecvator
 
13.03.17
11:29
(20) Спасибо, это конечно не правильно, но выход )
24 Chameleon1980
 
13.03.17
11:29
вопрос в том - заполнено ли в реквизите значение
правильно предлагают - в цикле посмотреть что там возращается
25 Chameleon1980
 
13.03.17
11:30
(23) посмотреть, хотя-бы
26 welwel
 
13.03.17
11:32
либо еще так проверить:
_НомерДоговора_ = СокрЛП(_НомерДоговора);
...
|Условие(СокрЛП(НомерДоговора) = _НомерДоговора_);
27 azernot
 
13.03.17
11:32
(22) Почему?

Если _НомерДоговора  - это реквизит формы типа Строка 10,

То конструкция языка

_НомерДоговора = "1.4";

приведёт к тому, что в реквизите
_НомерДоговора будет значение "1.4       ", что не соответствует условиям
28 Chameleon1980
 
13.03.17
11:45
(27) я  про то, что из запроса то не обратишься к реквизиту формы.

и да, из (0)

_НомерДоговора = "1.4", договор с таким номером есть, но не находит (

проще все-же посмотреть ТСу результат перебора и озвучить причину
29 Chameleon1980
 
13.03.17
11:46
автор, что там дают переменные запроса в цикле?
30 Ёпрст
 
13.03.17
11:49
(27) так и есть
31 Adecvator
 
13.03.17
12:06
(29) сам запрос глючит, не выводит не фига
32 Builder
 
13.03.17
12:13
(31) Попробуй период в запросе задать что ли....
33 Ёпрст
 
13.03.17
12:24
(31) без условия запрос что-то возвращает ?
34 Adecvator
 
13.03.17
12:26
(33) нет (
35 1dvd
 
13.03.17
12:31
(34) ещё раз спрашиваем. Документы проведены?
36 Ёпрст
 
13.03.17
12:34
(34) Круто, че.
Добавь тогда хотя бы период в текст запроса, для начала. И выкини Запрос.ЗначениеУпорядочивания(1) из кода.
37 Ёпрст
 
13.03.17
12:34
Ну и, запрос, по-умолчанию, только проведенные документы выгребает.
38 Масянька
 
13.03.17
12:38
Извините, что я вмешиваюсь в беседу профессионалов, но - зачем огород?
39 1dvd
 
13.03.17
12:38
(38) ы?
40 Ёпрст
 
13.03.17
12:41
(38) картошка, помидорки, огурчики, укропчик...
41 Масянька
 
13.03.17
12:42
(40) Солить или есть?
42 Ёпрст
 
13.03.17
12:43
(41) Ты спрашиваешь, или интересуешься ?
43 Масянька
 
13.03.17
12:44
(42) Интересуюсь... Может рецепты (проверенные) нужны?
44 azernot
 
13.03.17
12:50
Мы можем ещё неделю переписываться в таком же стиле.


Автор, выполни код написанный ниже, и выложи результат исполнения из окна сообщений.


Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ПоискДоговорПоНомеру)
|Период с '01.01.1980' по '13.03.2017';
|Обрабатывать НеПомеченныеНаУдаление;
|НомерДоговора    = Документ.Договор.НомерДоговора;
|ТекущийДокумент= Документ.Договор.ТекущийДокумент;
|Группировка ТекущийДокумент;
|"//}}ЗАПРОС

;                                              

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат "";
КонецЕсли;

Сообщить("_НомерДоговора = '"+_НомерДоговора+"'");
        
Пока Запрос.Группировка() = 1 Цикл

    Сообщить("Номер договора в документе "+Запрос.ТекущийДокумент +" = '"+Запрос.НомерДоговора+"'");
КонецЦикла;
45 Adecvator
 
13.03.17
12:51
с периодом собака работает )
46 Adecvator
 
13.03.17
12:56
Блин, все из-за периода......
47 Builder
 
13.03.17
13:11
(46) Ну а как он тебе документы отберет без периода?
48 Ёпрст
 
13.03.17
13:21
(47)если документ был бы не проводным, то выбирались бы все документы без периода, а так, только на ТА/рабочую дату
49 trad
 
13.03.17
13:31
(48) беспроводной документ - надо запомнить
50 Builder
 
13.03.17
13:35
(48) Эт понятно, у ТС проведенные же.
51 Волшебник
 
модератор
13.03.17
13:39
(0) Семёрка ещё сыровата...
52 Злопчинский
 
13.03.17
15:43
(51) вы просто не умеете ее готовить - это ж экологически чистый продукт! привыкли какие-то полуфабрикаты жарить из восьмерки...
;-)
53 Adecvator
 
13.03.17
16:07
Забыл, СПАСИБО )