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

Помогите. Ошибка в запросе при работе с РегистромБухгалтерии по остаткам

Автор Килограмм, 24 авг 2010, 18:26

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

Килограмм

Всем привет. Помогите, пожалуйста, с простым вроде как запросом. Это мой первый запрос, до этого я только по книжкам пробовал.

ЦЕЛЬ СОЗДАНИЯ ЗАПРОСА

Необходимо в 1С Бухгалтерия 8.1 создать отчёт, который выводил бы количественное движение номенклатуры и отображал бы соответствующие документы. В отчете должны отображаться сами документы и номенклатура, а так же начальный и конечный остатоки плюс обороты (приход, расход)

ЗАТРУДНЕНИЯ

Остатки не выводятся верно, почему-то не правильно считаются остатки по номенклатуре, хотя по документам идут верно. Так же, если для списка документов первый из начальных остатков НЕ нулевой, то он всегда неправильный.


ПРИМЕР

Пример добавил во вложения


ЗАПРОС

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

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстаткиИОбороты.Субконто1,
   ХозрасчетныйОстаткиИОбороты.Регистратор

УПОРЯДОЧИТЬ ПО
   Номенклатура

mohock

Цитата: Килограмм от 24 авг 2010, 18:26

Остатки не выводятся верно, почему-то не правильно считаются остатки по номенклатуре, хотя по документам идут верно. Так же, если для списка документов первый из начальных остатков НЕ нулевой, то он всегда неправильный.


Я немного изменил твой запрос:

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

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстаткиИОбороты.Субконто1,
   ХозрасчетныйОстаткиИОбороты.Регистратор,
   ХозрасчетныйОстаткиИОбороты.Счет,
   ХозрасчетныйОстаткиИОбороты.Субконто3

УПОРЯДОЧИТЬ ПО
   Номенклатура

Вероятно проблемы у тебя две:
1. Отсутствует отбор по балансовому счету номенклатуры. Т.к. номенклатура по балансу может гулять в первом субконто по многим счетам, то и остатки с оборотами могут быть неправильны.
2. Т.к. ты используешь представление, то для того, чтобы увидеть регистратор надо чтобы он был в остатке на начало, приходе, расходе и остатке на конец. Таких регистраторов в одном лице не бывает. Поэтому твоя колонка документ пустая. Исходя из этого в качестве колонки Документ следует использовать субконто партии (у меня оно №3)

Да, и заметь - период отчета это главное  :D
Можешь изменить мой запрос, убрать лишние колонки и получишь то, что тебе надо.

Килограмм

Блин, спасибо за ответ. ах, а я думал, что никто тут не овтетить мне и даже не смотрел, хотя ты уже вот как два дня назад мне ответил. У меня тоже вышло сформировать правильный ответ, но очень коряво по сравнению с твоим. У меня вышло так:

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

СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОстаткиНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , Счет В ИЕРАРХИИ (&Счёт), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ПО (ХозрасчетныйОстаткиИОбороты.Субконто1 = ОстаткиНоменклатура.Номенклатура)
ГДЕ
(ОстаткиНоменклатура.Номенклатура В ИЕРАРХИИ (&Номенклатура)
ИЛИ ХозрасчетныйОстаткиИОбороты.Субконто1 В ИЕРАРХИИ (&Номенклатура))
И (ОстаткиНоменклатура.НачальныйОстаток = ОстаткиНоменклатура.КонечныйОстаток
ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор.Представление ЕСТЬ НЕ NULL )

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

УПОРЯДОЧИТЬ ПО
Документ

Как видишь, я делал расчитывал остатки отдельно по номенклатуре и отдельно по документам.  И то этот запрос не решил задачи, пришлось в "Ресурсы" для поля Конечный остаток ставить выражение: НачОстатокНомен+Сумма(Приход)-Сумма(Расход)
В параметре счёт у меня счета 10, 41, 43.

Отчет, конечно ещё тот у меня вышел, никакой красоты и грамотности. Ну, это мой первый опыт работы с СКД :)

mohock


Теги:

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

Рейтинг@Mail.ru

Поиск