При разработке подсистемы заказного производства в 1С 7.7 часто встает вопрос контроля движения материальных потоков: от заказа до списания в производство через промежуточные (цеховые) склады. Стандартная бухгалтерская модель учета на счетах не всегда позволяет эффективно отследить «тонкие» производственные остатки, что ведет к ошибкам и попыткам задвоения данных. Разберем, как правильно спроектировать эту архитектуру.
Первое и самое важное правило при проектировании оперативного учета в 7.7 — не пытаться решать задачи оперативного контроля с помощью одних лишь бухгалтерских счетов. Счета предназначены для суммового учета и долгосрочного накопления итогов, они не поддерживают полноценную работу с «минусовыми» остатками в разрезе специфических аналитик.
Рекомендуем перейти на использование регистров накопления. В 1С 7.7, где нет встроенного объекта «Регистр накопления», его можно реализовать через:
DBF, описывающих структуру движений (приход/расход).Регистры позволят хранить данные в разрезе: «Требуется по заказу», «Зарезервировано на складе» и «Фактически передано в производство». Это исключает риск проведения списания, если материал не был предварительно перемещен на нужный склад.
Для корректного отражения процесса перемещения материалов под конкретный заказ, рассмотрим использование промежуточного склада, который мы будем называть «Цеховая кладовая». Это позволяет разделить ответственность: материал сначала попадает в распоряжение цеха, а затем — в производство.
Разберем процесс поэтапно:
Основного склада на Цеховой склад. Важно, чтобы этот документ содержал ссылку на Заказ. Таким образом, материал «привязывается» к заказу уже на физическом уровне хранения.Цехового склада на себестоимость заказа.Если специфика учета требует оставаться в рамках бухгалтерских счетов, можно использовать схему с субсчетами забалансового счета ЗКЗ. Например:
ЗКЗ.0 — отражает общую потребность в материалах для старта производства.
ЗКЗ.1 — отражает фактическое поступление материалов на промежуточный склад под конкретный заказ.
При таком подходе в модуле проведения документа списания вы всегда сможете проанализировать состояние счета ЗКЗ.1:
// Пример проверки остатков перед списанием
Функция ПроверитьНаличиеНаСкладе(Заказ, Материал, Склад, Количество)
ТЗ = СоздатьОбъект("ТаблицаЗначений");
БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Заказ, Заказ);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склад, Склад);
БухИтоги.ВыполнитьЗапрос(, ТекущаяДата(), "ЗКЗ.1");
// Логика проверки остатка по счету
Если БухИтоги.СНД("К") < Количество Тогда
Возврат 0; // Недостаточно средств
КонецЕсли;
Возврат 1;
КонецФункции
Главная проблема, которую описывает автор — опасность списания материала, который не был оприходован на промежуточный склад, или повторное списание. Чтобы этого избежать, внедрите жесткий алгоритм проверки в процедуре ОбработкаПроведения:
Остаток по Регистру или Счету в разрезе Заказа и Склада.Остаток меньше необходимого количества, документ не должен проводиться (или выдавать предупреждение пользователю).Наряд-заказ как сквозной ключ, который связывает все три вышеописанных этапа движения материалов. Это позволит видеть «историю жизни» каждой номенклатурной позиции в рамках заказа.Помните, что контроль остатков — это не просто бухгалтерская процедура, а оперативная задача. Если вы реализуете проверку в ОбработкаПроведения, вы обеспечите целостность данных в любой конфигурации, вне зависимости от версии платформы 1С.