Помогите. Ошибка в запросе при работе с РегистромБухгалтерии по остаткам
25.08.2010
04:42
#1
Всем привет. Помогите, пожалуйста, с простым вроде как запросом. Это мой первый запрос, до этого я только по книжкам пробовал.
ЦЕЛЬ СОЗДАНИЯ ЗАПРОСА
Необходимо в 1С Бухгалтерия 8.1 создать отчёт, который выводил бы количественное движение номенклатуры и отображал бы соответствующие документы. В отчете должны отображаться сами документы и номенклатура, а так же начальный и конечный остатоки плюс обороты (приход, расход)
ЗАТРУДНЕНИЯ
Остатки не выводятся верно, почему-то не правильно считаются остатки по номенклатуре, хотя по документам идут верно. Так же, если для списка документов первый из начальных остатков НЕ нулевой, то он всегда неправильный.
ПРИМЕР
; ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток) КАК ОстатокНачальный,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК КоличествоПриход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК КоличествоРасход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор
УПОРЯДОЧИТЬ ПО
Номенклатура
ЦЕЛЬ СОЗДАНИЯ ЗАПРОСА
Необходимо в 1С Бухгалтерия 8.1 создать отчёт, который выводил бы количественное движение номенклатуры и отображал бы соответствующие документы. В отчете должны отображаться сами документы и номенклатура, а так же начальный и конечный остатоки плюс обороты (приход, расход)
ЗАТРУДНЕНИЯ
Остатки не выводятся верно, почему-то не правильно считаются остатки по номенклатуре, хотя по документам идут верно. Так же, если для списка документов первый из начальных остатков НЕ нулевой, то он всегда неправильный.
ПРИМЕР
; ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток) КАК ОстатокНачальный,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК КоличествоПриход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК КоличествоРасход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор
УПОРЯДОЧИТЬ ПО
Номенклатура
25.08.2010
08:02
#3
Делаю через СКД он вроде и так дату учитывает. Но даже когда я поставил дату явно, ничего не изменилось.
Запрос теперь выглядит так:
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК ОстатокНачальный,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
(НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток
УПОРЯДОЧИТЬ ПО
Номенклатура,
Документ
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК ОстатокНачальный,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
(НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток
УПОРЯДОЧИТЬ ПО
Номенклатура,
Документ
25.08.2010
09:58
#4
Проверила на своей базе, запрос работает, только не понимаю смысла условия:
ГДЕ (НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
Для регистра бухгалтерии регистратор все равно будет заполнен (условие я закоммент). Запустите запрос в обработке Консоль запросов, самый удобный способ для отладки запросов. Успехов!
ГДЕ (НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
Для регистра бухгалтерии регистратор все равно будет заполнен (условие я закоммент). Запустите запрос в обработке Консоль запросов, самый удобный способ для отладки запросов. Успехов!
25.08.2010
11:19
#5
Спасибо за совет. Попробовал я через консоль. Только через консоль не видать глюков, которые в иерархии происходят. Если ты попробуешь через СКД прогнать запрос и поставишь номенклатуру в Иерархия, то увидишь ошибки.
25.08.2010
15:46
#6
"Итак, текст самого запроса:
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК ОстатокНачальный,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
(НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
УПОРЯДОЧИТЬ ПО
Номенклатура,
Документ
Далее на вкладке Ресурсы необходимо обязательно указать КоличествоПриход, КоличествоРасход, ОстатокКонечный, ОстатокНачальный; во всех строчках в колонке "Рассчитать по" укажите Документ, Номенклатура.
Затем на вкладке настройки создаем таблицу, строки: номенклатура, документ; колонки (значение "поле" оставляем пустым). Выделяем колонку Детальные записи, в нижней части окна "Выбранные поля" указываем КоличествоПриход, КоличествоРасход, ОстатокКонечный, ОстатокНачальный. Все, отчет готов и формируется все верно. Смысл в том, что группировки в СКД не указываем и обязательно прописываем в разделе ресурсы все значения полей, по которым хотим получить итоги.
Отчет:
;"
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК ОстатокНачальный,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокКонечный
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
(НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = &ПустойДокумент)
УПОРЯДОЧИТЬ ПО
Номенклатура,
Документ
Далее на вкладке Ресурсы необходимо обязательно указать КоличествоПриход, КоличествоРасход, ОстатокКонечный, ОстатокНачальный; во всех строчках в колонке "Рассчитать по" укажите Документ, Номенклатура.
Затем на вкладке настройки создаем таблицу, строки: номенклатура, документ; колонки (значение "поле" оставляем пустым). Выделяем колонку Детальные записи, в нижней части окна "Выбранные поля" указываем КоличествоПриход, КоличествоРасход, ОстатокКонечный, ОстатокНачальный. Все, отчет готов и формируется все верно. Смысл в том, что группировки в СКД не указываем и обязательно прописываем в разделе ресурсы все значения полей, по которым хотим получить итоги.
Отчет:
;"
27.08.2010
12:02
#7
Маркиза, спасибо, я тронут. Был приятно удивлён, увидев, что ты сама создала ДЛЯ МЕНЯ отчет в СКД и даже залила этот отчет на рапиду. Я проверил, но вышло не совсем верно. Вот скрин твоего отчета не демке бухгалтерии
, по документам у конфет начальный остаток дожен быть начальный нулевым, а конечный - 320. Но в самой номенклатуре он в итоге НО - 320, а КО - 350. То есть это явная ошибка. Я, к счастью, уже решил эту задачю.
ВЫБРАТЬ
СУММА(ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Ссылка ЕСТЬ NULL
И ОстаткиНоменклатура.СуммаОборот <= 0
ТОГДА ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток / 2
ИНАЧЕ ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток
КОНЕЦ) КАК НачальныйОстаток,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК Приход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК Расход,
СУММА(ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Ссылка ЕСТЬ NULL
И ОстаткиНоменклатура.СуммаОборот <= 0
ТОГДА ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток / 2
ИНАЧЕ ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток
КОНЕЦ) КАК КонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ОстаткиНоменклатура.НачальныйОстаток КАК НачОстатокНомен,
ОстаткиНоменклатура.КонечныйОстаток КАК КонОстатокНомен,
ОстаткиНоменклатура.Номенклатура
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счёт), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстаткиНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , Счет В ИЕРАРХИИ (&Счёт), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ПО (ХозрасчетныйОстаткиИОбороты.Субконто1 = ОстаткиНоменклатура.Номенклатура)
ГДЕ
(ОстаткиНоменклатура.Номенклатура В ИЕРАРХИИ (&Номенклатура)
ИЛИ ХозрасчетныйОстаткиИОбороты.Субконто1 В ИЕРАРХИИ (&Номенклатура))
И (ОстаткиНоменклатура.НачальныйОстаток = ОстаткиНоменклатура.КонечныйОстаток
ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор.Представление ЕСТЬ НЕ NULL )
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Регистратор,
ОстаткиНоменклатура.Номенклатура,
ОстаткиНоменклатура.НачальныйОстаток,
ОстаткиНоменклатура.КонечныйОстаток
УПОРЯДОЧИТЬ ПО
Документ
Как видишь, я делал расчитывал остатки отдельно по номенклатуре и отдельно по документам. И то этот запрос не решил задачи, пришлос в "Ресурсы" для поля Конечный остаток ставить выражение: НачОстатокНомен+Сумма(Приход)-Сумма(Расход)
Теперь у меня всё работает, чему я очень рад.
Ещё раз спасибо тебе Маркиза за отзывчивость и желание помочь, я тронут и я восхищён тобой.
, по документам у конфет начальный остаток дожен быть начальный нулевым, а конечный - 320. Но в самой номенклатуре он в итоге НО - 320, а КО - 350. То есть это явная ошибка. Я, к счастью, уже решил эту задачю.
ВЫБРАТЬ
СУММА(ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Ссылка ЕСТЬ NULL
И ОстаткиНоменклатура.СуммаОборот <= 0
ТОГДА ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток / 2
ИНАЧЕ ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток
КОНЕЦ) КАК НачальныйОстаток,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК Приход,
СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК Расход,
СУММА(ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Ссылка ЕСТЬ NULL
И ОстаткиНоменклатура.СуммаОборот <= 0
ТОГДА ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток / 2
ИНАЧЕ ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток
КОНЕЦ) КАК КонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ,
ОстаткиНоменклатура.НачальныйОстаток КАК НачОстатокНомен,
ОстаткиНоменклатура.КонечныйОстаток КАК КонОстатокНомен,
ОстаткиНоменклатура.Номенклатура
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счёт), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстаткиНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , Счет В ИЕРАРХИИ (&Счёт), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ПО (ХозрасчетныйОстаткиИОбороты.Субконто1 = ОстаткиНоменклатура.Номенклатура)
ГДЕ
(ОстаткиНоменклатура.Номенклатура В ИЕРАРХИИ (&Номенклатура)
ИЛИ ХозрасчетныйОстаткиИОбороты.Субконто1 В ИЕРАРХИИ (&Номенклатура))
И (ОстаткиНоменклатура.НачальныйОстаток = ОстаткиНоменклатура.КонечныйОстаток
ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор.Представление ЕСТЬ НЕ NULL )
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Регистратор,
ОстаткиНоменклатура.Номенклатура,
ОстаткиНоменклатура.НачальныйОстаток,
ОстаткиНоменклатура.КонечныйОстаток
УПОРЯДОЧИТЬ ПО
Документ
Как видишь, я делал расчитывал остатки отдельно по номенклатуре и отдельно по документам. И то этот запрос не решил задачи, пришлос в "Ресурсы" для поля Конечный остаток ставить выражение: НачОстатокНомен+Сумма(Приход)-Сумма(Расход)
Теперь у меня всё работает, чему я очень рад.
Ещё раз спасибо тебе Маркиза за отзывчивость и желание помочь, я тронут и я восхищён тобой.
ЗиК 8.1 (1.0.14.3) Ошибка1С 7.7, Зарплата+Кадры.Редакция 2.3, Создание нового элемента справочника "Сотрудники".
Читают тему
(гостей: 1)