База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как реализовать учет товара на складах в abm.retail с помощью регистра остатков?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 часов, 43 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
13 июня 2026 в 14:30 #37841
Регистр накопления товары на складах в конфигурации abm.retail
-
13 июня 2026 в 14:30 #37842
В конфигурации abm.retail регистр накопления «Товары на складах» используется для учета остатков товаров по складам и номенклатуре. Он имеет измерения: Склад, Номенклатура, а ресурс — Количество. Работа с этим регистром строится по стандартным принципам 1С: накопление остатков происходит через движения регистра, которые формируются при проведении документов, изменяющих складские остатки (приход, расход, перемещение).
Основные моменты работы с регистром «Товары на складах» в abm.retail:
1. **Изменение остатков через документы**
Все изменения остатков фиксируются через документы (например, Приход, Расход, Перемещение товара). В модуле документа в процедуреОбработкаПроведенияформируются движения регистра накопления «Товары на складах». Для перемещения между складами создается движение с двумя записями: списание с одного склада (расход) и приход на другой (приход).2. **Контроль остатков**
Перед проведением документа перемещения необходимо проверить, что на складе-отправителе достаточно товара. Для этого в обработке проведения с помощью конструктора запросов формируется запрос к регистру накопления, который суммирует остатки по складу и номенклатуре. Если остаток меньше требуемого количества, то проведение отменяется с сообщением об ошибке.3. **Пример запроса для контроля остатков** (в процедуре
ОбработкаПроведениядокумента «Перемещение товара»):1С (Код)1234567891011121314151617181920212223242526Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ТоварыНаСкладах.Номенклатура КАК Номенклатура,| СУММА(ТоварыНаСкладах.Количество) КАК Остаток|ИЗ| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах|ГДЕ| ТоварыНаСкладах.Склад = &СкладОтправитель| И ТоварыНаСкладах.Номенклатура В(&Номенклатура)|СГРУППИРОВАТЬ ПО| ТоварыНаСкладах.Номенклатура";Запрос.УстановитьПараметр("СкладОтправитель", СкладОтправитель);Запрос.УстановитьПараметр("Номенклатура", СписокНоменклатурыИзТабличнойЧасти);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклКоличествоВДокументе = ПолучитьКоличествоПоНоменклатуре(Выборка.Номенклатура);Если Выборка.Остаток < КоличествоВДокументе ТогдаСообщить("Недостаточно товара на складе " + СкладОтправитель + " по номенклатуре " + Выборка.Номенклатура);Возврат;КонецЕсли;КонецЦикла;4. **Формирование движений регистра**
После успешной проверки остатков формируются движения регистра накопления:1С (Код)123456789101112131415161718192021Движения.ТоварыНаСкладах.Очистить();Для Каждого Строка Из ТабличнаяЧасть Цикл// Списание с склада отправителяДвижение = Движения.ТоварыНаСкладах.Добавить();Движение.ВидДвижения = ВидДвиженияНакопления.Расход;Движение.Период = ДатаДокумента;Движение.Склад = СкладОтправитель;Движение.Номенклатура = Строка.Номенклатура;Движение.Количество = -Строка.Количество;// Приход на склад получателяДвижение = Движения.ТоварыНаСкладах.Добавить();Движение.ВидДвижения = ВидДвиженияНакопления.Приход;Движение.Период = ДатаДокумента;Движение.Склад = СкладПолучатель;Движение.Номенклатура = Строка.Номенклатура;Движение.Количество = Строка.Количество;КонецЦикла;Движения.ТоварыНаСкладах.Записывать = Истина;5. **Использование конструктора запросов**
В конфигураторе в модуле документа можно использовать конструктор запросов для создания запроса контроля остатков. В запросе выбираются остатки по складу отправителя и номенклатуре, группируются по номенклатуре, затем результат проверяется в коде.6. **Обработка ошибок**
Если остатка недостаточно, в процедуреОбработкаПроведенияустанавливается флагОтказ = Истинаи выводится сообщение пользователю.---
Таким образом, в abm.retail работа с регистром накопления «Товары на складах» строится на стандартных механизмах 1С: накопление остатков через движения регистра, контроль остатков через запросы к регистру и формирование движений в процедуре проведения документа.
Рекомендую посмотреть пример реализации на https://helpf.pro/faq/view/1891.html — там подробно описан механизм перемещения товаров между складами с контролем остатков и формированием движений регистра накопления.
Если нужна конкретика по коду — могу помочь с примером процедуры
ОбработкаПроведениядля документа «Перемещение товара» с использованием конструктора запросов.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.