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