Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 05:24

Выбрать нужные данные из запроса

Автор Sasha1C, 28 июн 2023, 21:03

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Уважаемые программисты, необходимо реализовать функцию, которая позволит списать часть товара в документе "СдачаКниг" зарезервированного по документу "ВыдачаКниг". У меня возникли сложности при выполнении данной задачи. Но у меня работает так, зарезервировано 5 - выдано 2, а в итоге должно остаться 3, но у меня все списываются полностью,     

Измерения в регистре: Книга, Основание, Читатель и КнижныйМагазин.
НаборЗаписейРезерва = РегистрыНакопления.ЗадолженностьПоКнигам.СоздатьНаборЗаписей();
НаборЗаписейРезерва.Отбор.Регистратор.Установить(Основание);


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

Запрос.УстановитьПараметр("Основание", Основание);



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

Запрос.УстановитьПараметр("МоментДокумента", ДокументСсылка.МоментВремени());
Запрос.УстановитьПараметр("Основание", Основание);

\\
......Здесь я обработал результаты запросов
\\

НаборЗаписейРезерва.Записать(Истина);    

LexaK

Sasha1C, главная ошибка, в получении правильных остаткв, в этой команде
Основание = &Основание
попробуйте ее убрать!
(да и вообще, очень большие сомнения что ваш код рабочий! по крайней мере то что выложили  :(  )

если помогло нажмите: Спасибо!

Sasha1C

LexaK, Я понял, что  вы имели ввиду, но подскажите пожалуйста как тогда еще можно выбрать данные из регистра накопления с отбором по документу основанию?( Что бы понять логически, приходный документ резервирует, и мы можем несколькими расходными документами списать остатки по этому расходному документу). Я пока что представляю это только через документ основание.

Теги: запросы 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск