powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Проблема с запросом
17 сообщений из 17, страница 1 из 1
Проблема с запросом
    #37191712
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Имеется следующий запрос:

ЗапросВЫБРАТЬ ВыданныеКнигиОбороты.ИнвНомер,
ВыданныеКнигиОбороты.Читатель.Наименование КАК Читатель,
ВыданныеКнигиОбороты.Регистратор.Дата КАК ДатаВыдачи,
ВложенныйЗапрос.ДатаВозврата,
ВыданныеКнигиОбороты.ИнвНомер.Владелец.Наименование,
СУММА(ВыданныеКнигиОбороты.КоличествоПриход) КАК КоличествоПриход

ИЗ
РегистрНакопления.ВыданныеКниги.Обороты(&НачПериода, &КонПериода, Авто, ) КАК ВыданныеКнигиОбороты

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

ПО ВыданныеКнигиОбороты.ИнвНомер = ВложенныйЗапрос.ИнвНомер
И ВыданныеКнигиОбороты.Читатель = ВложенныйЗапрос.Читатель

ГДЕ
ВыданныеКнигиОбороты.Регистратор ССЫЛКА Документ.ВыдачаКниг

СГРУППИРОВАТЬ ПО
ВыданныеКнигиОбороты.ИнвНомер,
ВыданныеКнигиОбороты.Читатель.Наименование,
ВыданныеКнигиОбороты.Регистратор.Дата,
ВложенныйЗапрос.ДатаВозврата,
ВыданныеКнигиОбороты.ИнвНомер.Владелец.Наименование,
ВыданныеКнигиОбороты.КоличествоПриход

При выдаче книги в регистр накопления ВыданныеКниги добавляется движение приход с количеством 1, при возврате книги - движение расход с количеством 1.

Данным запросом получаем все записи из регистра ВыданныеКниги. Дату возврата получаем из вложенного запроса. Если книжку выдали и вернули, то отображается одна запись - с датой выдачи и датой возврата книги.

Проблема: если измерения у записи (инвентарный номер книги и читатель) совпадают, то дата возврата подставляется в каждую запись с такими измерениями.

Прикладываем 2 скриншота:

1.) Сформированный отчет. Красным обведена дата, которой быть не должно.

2.) Заполненный регистр накопления.
...
Рейтинг: 0 / 0
Проблема с запросом
    #37191739
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bakteria,

а условие в соединении не поможет?


ПО ВыданныеКнигиОбороты.ИнвНомер = ВложенныйЗапрос.ИнвНомер
И ВыданныеКнигиОбороты.Читатель = ВложенныйЗапрос.Читатель
И ВыданныеКнигиОбороты.Регистратор.Дата < ВложенныйЗапрос.ДатаВозврата,
...
Рейтинг: 0 / 0
Проблема с запросом
    #37191833
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pail,
Спасибо, дружище, то, что нужно!
...
Рейтинг: 0 / 0
Проблема с запросом
    #37191892
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавили еще одну выдачу и возврат книг, условие сработало трижды, т.е. 2 раза когда нужно, и появилась одна лишняя запись с датой выдачи в первый раз и датой возврата во второй раз
...
Рейтинг: 0 / 0
Проблема с запросом
    #37192632
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВЫБРАТЬ
ВыданныеКниги.ИнвНомер,
ВыданныеКниги.Читатель.Наименование КАК Читатель,
ВыданныеКниги.Период КАК ДатаВыдачи,
МИНИМУМ(ВозвратКниги.Период)
ИЗ
РегистрНакопления.ВыданныеКниги КАК ВыданныеКниги
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыданныеКниги КАК ВозвратКниги
ПО ВыданныеКниги.ИнвНомер=ВозвратКниги.ИнвНомер
И ВыданныеКниги.Читатель=ВозвратКниги.Читатель
И ВыданныеКниги.Период<=ВозвратКниги.Период
И ВозвратКниги.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
ГДЕ
ВыданныеКниги.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
СГРУППИРОВАТЬ ПО
ВыданныеКниги.ИнвНомер,
ВыданныеКниги.Читатель.Наименование,
ВыданныеКниги.Период
...
Рейтинг: 0 / 0
Проблема с запросом
    #37193084
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

Огромное спасибо!
...
Рейтинг: 0 / 0
Проблема с запросом
    #37193653
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но я бы сделал на регистре сведений
...
Рейтинг: 0 / 0
Проблема с запросом
    #37194041
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как бы ты через регистр сведений организовал?
При выдаче появляется новая запись, а при возврате в эту запись добавляется, к примеру, дата возврата?
...
Рейтинг: 0 / 0
Проблема с запросом
    #37194108
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BakteriaА как бы ты через регистр сведений организовал?
При выдаче появляется новая запись, а при возврате в эту запись добавляется, к примеру, дата возврата?
периодический регистр сведений
Измерение - Книга (ну или инвентарный номер)
Ресурс - Читатель
если ресурс пуст, то значит книга сдаётся
...
Рейтинг: 0 / 0
Проблема с запросом
    #37197346
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Add:
Следующим запросом мы получаем количество невозвращенных книг. Но запрос сам по себе не очень, т.к. мы получаем все записи, а затем в цикле с помощью различных условий отсекаем лишнее. В результате этого возникли проблемы с правильным подсчетом невозвращенных книг.

Каким запросом можно получить только невозвращенные книги?

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

СГРУППИРОВАТЬ ПО
ВыданныеКниги.ИнвНомер,
ВыданныеКниги.Читатель.Наименование,
ВложенныйЗапрос.ДатаВозврата,
ВыданныеКниги.ПериодСекунда
ИТОГИ
СУММА(КоличествоНеВозвращенных)
ПО
ОБЩИЕ
...
Рейтинг: 0 / 0
Проблема с запросом
    #37197725
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bakteria,

а что есть невозвращенные ?
я думал это остатки в вашем регистре, но судя по запросу не могу понять что же на самом деле
...
Рейтинг: 0 / 0
Проблема с запросом
    #37197967
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

Без комментариев.. вопрос исчерпан.
Спасибо!
...
Рейтинг: 0 / 0
Проблема с запросом
    #37198264
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поторопились чуток. Осознав свою ошибку, переделали запрос:

Запрос


Возникшие проблемы:
1.) Строки, отмеченные галками, должны отсутствовать.
2.) Строка под номером 1 - книжка была выдана, но уже возвращена
3.) Строка под номером 2 - запись в регистре, что книжка возвращена.

Спасибо за внимание.
...
Рейтинг: 0 / 0
Проблема с запросом
    #37198587
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выбрать
Остатки.ИнвНомер,
Остатки.Читатель,
Остатки.КоличествоОстаток,
МАКСИМУМ(Движения.Период) КАК ДатаВыдачи
ИЗ
РегистрНакопления.ВыданныеКниги.Остатки КАК Остатки
внутреннее соединение РегистрНакопления.ВыданныеКниги КАК Движения
ПО Остатки.ИнвНомер = Движения.ИнвНомер
И Остатки.Читатель = Движения.Читатель
И Движения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
сгруппировать по
Остатки.ИнвНомер,
Остатки.Читатель,
Остатки.КоличествоОстаток
...
Рейтинг: 0 / 0
Проблема с запросом
    #37198775
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,
Спасибо! ТЫ ЛУЧШИЙ!
...
Рейтинг: 0 / 0
Проблема с запросом
    #37199315
Bakteria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть подправили запрос:

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

СГРУППИРОВАТЬ ПО
ВыданныеКнигиОстаткиИОбороты.ИнвНомер,
ВыданныеКнигиОстаткиИОбороты.Читатель,
ВыданныеКнигиОстаткиИОбороты.КоличествоКонечныйОстаток

Адекватно?
...
Рейтинг: 0 / 0
Проблема с запросом
    #37199375
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BakteriaЧуть подправили запрос:
Адекватно?
у вас же остатки будут на все периоды движений
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Проблема с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]