PDA

Просмотр полной версии : 1С Управление Торговлей 10.3 Ошибка в запросе, помогите разобраться



bigrunner
08.08.2014, 09:37
Используется Упр. Торговлей 10.3 без изменений в конфе. Редактируется документ РеализацияТоваровУслуг. Необходимо получить предыдущую цену продажи по данному Контрагенту, Дате и номенклатуре.
В первом запросе все получилось и предыдущая дата(с таким контрагентом) определяется верно, но второй запрос с выводом предыдущей цены не дает никакого результата. Данные в дальнейшем планируется вывести в поле ввода в табличной части документа.(Поле не является реквизитом табличной части).
Помогите кто может,подскажите где ошибся. Вся загвоздка в том что поле Цена это поле табличной части формы документа,как и номенклатура. А дата и контрагент поля формы документа. Спасибо.
Код:Строка=ЭлементыФормы.Т� �вары.ТекущиеДанные;
Номенклатура=Строка.Номенк латура;
Сообщить(""+Контрагент+" от "+Дата+" По "+Номенклатура);
Запрос1=Новый Запрос;
Запрос1.Текст="ВЫБРАТЬ
| МАКСИМУМ(РеализацияТоваро� �Услуг.Дата) КАК ПредыдущаяДата,
| РеализацияТоваровУслуг.Ко� �трагент
|ИЗ
| Документ.РеализацияТоваро� �Услуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Да� �а < &Дата
| И РеализацияТоваровУслуг.Ко� �трагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Ко� �трагент";
Запрос1.УстановитьПараметр ("Контрагент", Контрагент);
Запрос1.УстановитьПараметр ("Дата", Дата);
РезультатЗапроса1 = Запрос1.Выполнить();

Выборка1 = РезультатЗапроса1.Выбрать() ;

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


Запрос.УстановитьПараметр("Дата", ПредыдущаяДата);
Результат=Запрос.Выполнить ().Выбрать();
Пока Результат.Следующий() Цикл
ПрЦена=Результат.Цена;
КонецЦикла;
Сообщить("Предыдущая цена на товар равна "+ПрЦена);

infoengineer
19.08.2014, 19:07
Может это поможет...

Запрос = Новый Запрос("ВЫБРАТЬ
| МАКСИМУМ(РеализацияТоваро� �УслугТовары.Ссылка.Дата) КАК Дата
|ПОМЕСТИТЬ ВТ_КрайняяДатаДокумента
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслугТов ары
|ГДЕ
| РеализацияТоваровУслугТов ары.Ссылка.Контрагент = &Контрагент
| И РеализацияТоваровУслугТов ары.Номенклатура = &Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслугТов ары.Цена КАК ПредыдущаяЦена
|ИЗ
| Документ.РеализацияТоваро� �Услуг.Товары КАК РеализацияТоваровУслугТов ары
|ГДЕ
| РеализацияТоваровУслугТов ары.Ссылка.Контрагент = &Контрагент
| И РеализацияТоваровУслугТов ары.Номенклатура = &Номенклатура
| И НЕ РеализацияТоваровУслугТов ары.Ссылка.Дата В
| (ВЫБРАТЬ
| ВТ_КрайняяДатаДокумента.Да та
| ИЗ
| ВТ_КрайняяДатаДокумента КАК ВТ_КрайняяДатаДокумента)
|
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслугТов ары.Ссылка.Дата УБЫВ");
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
ТаблицаПредыдущаяЦена = Запрос.Выполнить().Выгрузит ь();
ПредыдущаяЦена = ?(ТаблицаПредыдущаяЦена.Ко� �ичество() > 0, ТаблицаПредыдущаяЦена[0].ПредыдущаяЦена, 0);

Ilgiz1986
27.11.2015, 12:46
Посмотрите здесь мне помогло http://www.1c-biz.ru

jeyrico
12.11.2016, 00:02
Посмотрите здесь мне помогло http://www.1c-biz.ru

Хоть и спам, но полезный и во-время :)