Задача следующая - собрать данные по количеству и сумме проданной номенклатуры за период. Накидал самый банальный запрос, но есть проблема: обозначив период в РН, я все равно получаю записи которые лежат вне периода (касается это документов корректировки).
Запрос:
ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода - не нашел ничего лучше - поскольку в движениях есть корректировки с датой лежащей в периоде движения - а вот сам документ нет.
Насколько такой запрос уместен для решения задачи?
Запрос:
ВЫБРАТЬ
ПродажиОбороты.Регистратор,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот,
ПродажиОбороты.СтоимостьБезСкидокОборот,
ПродажиОбороты.НДСОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК ПродажиОбороты
ГДЕ
(ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
ИЛИ ПродажиОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации)
УПОРЯДОЧИТЬ ПО
ПродажиОбороты.Регистратор
АВТОУПОРЯДОЧИВАНИЕ
ПоказатьДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода - не нашел ничего лучше - поскольку в движениях есть корректировки с датой лежащей в периоде движения - а вот сам документ нет.
Насколько такой запрос уместен для решения задачи?
По теме из базы знаний
- Регистры сведений 1С. Как это устроено.
- Ведомость по взаиморасчетам с контрагентами (регламентированный учет) по данным регистров накопления для КА 1.1, УПП 1.3
- Регистры сведений. За кулисами
- Регистры бухгалтерии. Настройки, субконто и движения с субконто
- Регистры бухгалтерии. Еще одна таблица оборотов ДТ / КТ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)вы в запросе используете Регистратор, вот по нему или нужный тип документа отберите или ненужный отборосьте
примерно так
Где
ПродажиОбороты.Регистратор Ссылка Документ.РТУ //подставьте правильное имя типа документа
или
Где
Не ПродажиОбороты.Регистратор Ссылка Документ.Корректировка //подставьте правильное имя типа документа
примерно так
Где
ПродажиОбороты.Регистратор Ссылка Документ.РТУ //подставьте правильное имя типа документа
или
Где
Не ПродажиОбороты.Регистратор Ссылка Документ.Корректировка //подставьте правильное имя типа документа
(3) Нужно чтобы в отбор попадали и продажи и корректировки за период. (например сентябрь) документы продаж также должны быть за сентябрь.
Но вот если убрать: ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода
То в выборку попадают движения корректировок которые были в сентябре, но по документам которые были раньше сентября
Но вот если убрать: ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода
То в выборку попадают движения корректировок которые были в сентябре, но по документам которые были раньше сентября
(1) Период регистра и Дата документа это совсем разные вещи. Соответственно первых 2 параметра виртуально таблицы Обороты это отбор по Периоду регистра. Так что, если из этого отбора нужно исключить документы, которые созданы с датой не в этом периоде, то вполне корректно.
(17)
Считается правильным, что запись периода соответствует дате регистратора. Но разработчик в обработке проведения может выставить добавляемым записям период какой вздумается.
(17)
И не должно. Меня смутило ваше заявление, уже упомянутое мной выше
А это неверно, т.к. записи соответствуют заданному вами периоду, а документы, на которые есть ссылки в этих записях, вполне могут не соответствовать.
Период, что задается в скобках отсеивает
отсеивает записи несоответствующего периода, а не регистраторы.
Считается правильным, что запись периода соответствует дате регистратора. Но разработчик в обработке проведения может выставить добавляемым записям период какой вздумается.
(17)
Но никак не влияет на дату документа продажи.
И не должно. Меня смутило ваше заявление, уже упомянутое мной выше
все равно получаю записи которые лежат вне периода
А это неверно, т.к. записи соответствуют заданному вами периоду, а документы, на которые есть ссылки в этих записях, вполне могут не соответствовать.
(21) Из РН мы получаем все записи, дата регистратора которого укладывается в период , обозначенный в параметрах.
Ну по крайней мере мне не встречалось такого в классических конфигурациях, тут обычно период равен дате регистратора.
Но разработчик в обработке проведения может выставить добавляемым записям период какой вздумается.
Ну по крайней мере мне не встречалось такого в классических конфигурациях, тут обычно период равен дате регистратора.
(23) То что вам не встречалось, не означает, что такого не может быть. Примером может служить документ "Корректировка" ("Корректировка документов", "Корректировка записей регистров" - название зависит от конфигурации), который напрямую позволяет добавлять записи регистров с любыми значениями их ограниченными типом и доп.проверками заданными разработчиком.
Бывают еще документы с дополнительной датой (реквизитом), например как дата оплаты или дата отгрузки, которая влияет на дату(период) записей по отдельным регистрам, управленческого характера. Т.е. по одним регистрам даты будут совпадать, а по другим могут различаться.
Бывают еще документы с дополнительной датой (реквизитом), например как дата оплаты или дата отгрузки, которая влияет на дату(период) записей по отдельным регистрам, управленческого характера. Т.е. по одним регистрам даты будут совпадать, а по другим могут различаться.
Виноват, не дочитал.
Но что-то я сомневаюсь в этом утверждении:
Если, конечно, запрос на тот момент был составлен так, как сейчас, пусть и без условие на документ продажи.
Хотелось бы увидеть результат, подтверждающий такое поведение.
Но что-то я сомневаюсь в этом утверждении:
все равно получаю записи которые лежат вне периода
Если, конечно, запрос на тот момент был составлен так, как сейчас, пусть и без условие на документ продажи.
Хотелось бы увидеть результат, подтверждающий такое поведение.
(12) Период, что задается в скобках отсеивает регистраторы по периоду. Но никак не влияет на дату документа продажи. Поэтому в условие и добавлен отсев тех регистраторов, у которых документ продажи не в периоде отбора, по факту это касается только корректировок, т.к. регистратором документа реализации выступает сам документ реализации - поэтому тут отсев не требуется
(12) Да, я уже понял это. Так как собственно первый запрос который я писал - отсеивал именно по дате документа продажи, и вот щас чет думаю а нужны ли в скобках
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК ПродажиОбороты
Т.к. по идее условием вроде итак покрываем нужный нам период
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК ПродажиОбороты
Т.к. по идее условием вроде итак покрываем нужный нам период
(20) Это зависит от реализации и на клиент-серверном способе нужно смотреть профайлер SQL, т.е. и зависит от SQL сервера.
Но, думаю, в любом случае эти параметры не помешают и хуже не сделают.
Собственно, в 1С есть свой замер производительности, и ничто не мешает это проверить самостоятельно. Есть даже обработки консоли запросов с таким замером выполнения.
Но, думаю, в любом случае эти параметры не помешают и хуже не сделают.
Собственно, в 1С есть свой замер производительности, и ничто не мешает это проверить самостоятельно. Есть даже обработки консоли запросов с таким замером выполнения.
Попробуйте так
ВЫБРАТЬ
ПродажиОбороты.Регистратор,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот,
ПродажиОбороты.СтоимостьБезСкидокОборот,
ПродажиОбороты.НДСОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ДокументПродажи.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК ПродажиОбороты
ГДЕ
(ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
ИЛИ ПродажиОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации)
И ПродажиОбороты.Регистратор.Дата МЕЖДУ &Дата1 И &Дата2
УПОРЯДОЧИТЬ ПО
ПродажиОбороты.Регистратор
АВТОУПОРЯДОЧИВАНИЕ
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот