Консультация № 53546
28.08.2006, 17:28
0.00 руб.
0 2 2
Как правильно собрать остатки по товарам на складе при выполнении процедуры ОбработкаУдаленияПроведения() документа Поступление товаров? Пыталась осуществить это С помощью запроса к бухгалтерским итогам, но данные неверные.

Приложение:
Сч41_1=СчетПоКоду("41.1"); БухитУ=СоздатьОбъект("БухгалтерскиеИтоги"); БухитУ.ВключатьСубсчета(1); БухитУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Сптов, 2); БухитУ.ИспользоватьСубконто(ВидыСубконто.МестаХранения); БухитУ.ИспользоватьСубконто(ВидыСубконто.Партия); БухитУ.ВыполнитьЗапрос(,КонМесяца(ДатаДок), "41"); // БухитУ.ВыбратьСчета(); Если БухитУ.ПолучитьСчет(, Сч41_1) = 1 Тогда БухитУ.ВыбратьСубконто(1);Если БухитУ.ПолучитьСубконто(ВидыСубконто.Номенклатура,,Товар) = 1 Тогда БухитУ.ВыбратьСубконто(2); Если БухитУ.ПолучитьСубконто(ВидыСубконто.МестаХранения,, МестоХранения) = 1 Тогда БухитУ.ВыбратьСубконто(3); Пока (БухитУ.ПолучитьСубконто(3) = 1) Цикл КоличествоВПартии= БухитУ.СКД("К"); СуммаВПартии=Макс(БухитУ.СКД("С")); КонецЦикла; КонецЕсли; КонецЕсли; Конецесли;

Обсуждение

Неизвестный
28.08.2006, 21:57
общий
это ответ
Здравствуйте, Оксана/kasy!

1. Ваш запрос, в том виде в котором Вы его прислали, можно сократить и ускорить.
2. Остатки на какой момент времени Вас интересуют?
В моем Приложении два примера:
а) Пример 1 -- остатки вычисляются на конец месяца (как и было у Вас изначально)
б) Пример 2 -- остатки вычисляются на момент до документа (т.е. движения документа, если таковые имеются, не влияют на результат запроса)
Выберите более подходящий для Вас вариант и пользуйтесь на здоровье :)

Приложение:
// Пример 1БухитУ=СоздатьОбъект("БухгалтерскиеИтоги");БухитУ.ИспользоватьСубконто(ВидыСубконто.Партия,,1);БухитУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);БухитУ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,МестоХранения,2); БухитУ.ВыполнитьЗапрос(,КонМесяца(ДатаДок), "41.1");БухитУ.ВыбратьСубконто();Пока БухитУ.ПолучитьСубконто() = 1 Цикл КоличествоВПартии= БухитУ.СКД("К"); СуммаВПартии=БухитУ.СКД("С");КонецЦикла;// Пример 2БухитУ=СоздатьОбъект("БухгалтерскиеИтоги");БухитУ.ИспользоватьСубконто(ВидыСубконто.Партия,,1);БухитУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2);БухитУ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,МестоХранения,2); БухитУ.ВыполнитьЗапрос(ТекущийДокумент(),, "41.1");БухитУ.ВыбратьСубконто();Пока БухитУ.ПолучитьСубконто() = 1 Цикл КоличествоВПартии= БухитУ.СНД("К"); СуммаВПартии=БухитУ.СНД("С");КонецЦикла;
Неизвестный
29.08.2006, 11:11
общий
это ответ
Здравствуйте, Оксана/kasy!
Вопрос: а зачем собирать остатки на складе? Нужно ли это? При отмене проведения документа все проводки и движения документа удалятся автоматически сами по себе и никаких действий выполнять не нужно. Если же Вы хотите узнать, а не был ли списан тот товар, которого был приход, то в качестве конечной даты используйте КонецРассчитанногоПериодаБИ()
Почему Вы не узнаете остатки именно партии прихода, а узнаете остатки первой попавшейся партии? Правильно ли организован механизм последовательностей? Если он правильно организован, и правильно организована обработка восстановления последовательности, то нет смысла отслеживать факт продажи товара при отмене прихода. Зачем ВключатьСубщета если можно БухитУ.ВыполнитьЗапрос(,КонМесяца(ДатаДок), СчетПоКоду("41.1")); ? Товар включен в Сптов? Зачем Макс(БухитУ.СКД("С")), ведь отрицательный остаток это тоже остаток? Счет активный? Если активно-пассивный то КоличествоВПартии= БухитУ.СКД("К")-БухитУ.СКК("К").

Ответьте сами себе на эти вопросы и может быть, Вы поймете ответ.
Форма ответа