Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос на выборку договоров
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Loreny
Добрый день!
Столкнулся с такой проблемой:
пишу запрос на поиск договора контрагента, при ручном запуске все находит, при работе из обработки результатов нет.
Код запроса:

Запрос   = Новый Запрос();
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ДатаДог", ДатаДог);
Запрос.УстановитьПараметр("НомерДог", НомерДог);
Запрос.Текст =
"ВЫБРАТЬ
|    ДоговорыКонтрагентов.Ссылка,
|    ДоговорыКонтрагентов.Дата как Дата,
|    ДоговорыКонтрагентов.Номер как Номер
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
|    ДоговорыКонтрагентов.ПометкаУдаления = Ложь
//|   И ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
|   И ДоговорыКонтрагентов.Владелец = &Контрагент
|   И ДоговорыКонтрагентов.Организация = &Организация
|   И ДоговорыКонтрагентов.Дата = &ДатаДог
|   И ДоговорыКонтрагентов.Номер = &НомерДог";
Выборка = Запрос.Выполнить().Выбрать();

Сообщить(Число(Выборка.Количество()));

Если Число(Выборка.Количество())=1 Тогда
лСписокДоговоров=Запрос.Выполнить().Выгрузить();               
Возврат лСписокДоговоров[0].Ссылка;
КонецЕсли;


Число(Выборка.Количество())=0, хотя я на 100% уверен что такой договор который указан в параметрах есть в базе.
onsamuy
Чудес не бывает, значит какой то параметр неверно передается, если запускается из обработки. И код немного оптимизируйте:

Запрос   = Новый Запрос();
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ДатаДог", ДатаДог);
Запрос.УстановитьПараметр("НомерДог", НомерДог);
Запрос.Текст =
"ВЫБРАТЬ
|    ДоговорыКонтрагентов.Ссылка,
|    ДоговорыКонтрагентов.Дата как Дата,
|    ДоговорыКонтрагентов.Номер как Номер
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
|    ДоговорыКонтрагентов.ПометкаУдаления = Ложь
//|   И ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
|   И ДоговорыКонтрагентов.Владелец = &Контрагент
|   И ДоговорыКонтрагентов.Организация = &Организация
|   И ДоговорыКонтрагентов.Дата = &ДатаДог
|   И ДоговорыКонтрагентов.Номер = &НомерДог";
Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
   Возврат Выборка.Ссылка;
Иначе
   Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка()
КонецЕсли

//Сообщить(Число(Выборка.Количество()));
//
//Если Число(Выборка.Количество())=1 Тогда
//лСписокДоговоров=Запрос.Выполнить().Выгрузить();              
//Возврат лСписокДоговоров[0].Ссылка;
//КонецЕсли;
Loreny
Цитата(onsamuy @ 24.03.15, 13:20) необходимо зарегистрироваться для просмотра ссылки
Чудес не бывает, значит какой то параметр неверно передается, если запускается из обработки. И код немного оптимизируйте:


Пересмотрел еще раз все, в другом месте нашел ошибку, "ДатаДог" передавалось как обычное текстовое поле.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.