При работе в розничной торговле на базе конфигурации «1С:Управление торговлей 10.3» (или аналогичных решениях на обычных формах, например, «1С:УПП 1.3») часто возникает классический конфликт интересов между методологией финансового учета и удобством работы линейного персонала в розничных точках. Типичный пример: оператор оформляет документ КорректировкаПоступления, в котором по умолчанию отражаются оптовые (закупочные) цены поставщика. Однако руководство или материально ответственные лица (продавцы на торговых точках) требуют, чтобы во всех внутренних документах и печатных формах (включая связанные счета-фактуры) фигурировали исключительно розничные цены, так как продавцы находятся на «подотчете по рознице» и оптовые цены их интересовать не должны.
Первое побуждение администратора или начинающего разработчика в такой ситуации — открыть конфигуратор и переписать логику заполнения табличной части документа или алгоритм формирования печатной формы счета-фактуры. В этой статье мы подробно разберем, почему прямое изменение цен в документе КорректировкаПоступления через конфигуратор является грубейшей методологической ошибкой, к каким критическим последствиям для базы данных это приведет, и рассмотрим безопасные альтернативные варианты решения этой задачи.
---
Давайте проанализируем ситуацию с точки зрения архитектуры регистров накопления программы 1С. Документ КорректировкаПоступления предназначен для отражения официальных изменений условий поставки со стороны контрагента (исправление ошибок ввода, предоставление скидок, изменение объема поставки по согласованию сторон). Этот документ напрямую влияет на финансовый контур компании.
Если мы попытаемся принудительно подставить розничные цены в этот документ, система совершит движения по следующим регистрам:
Рассмотрим простой пример. Вы оплатили поставщику 1000 рублей и получили 10 единиц товара по цене 100 рублей. Затем вы обнаружили недовоз 1 единицы товара и решили сделать корректировку на 9 единиц. Но при этом в корректировке указали розничную цену в 150 рублей. Программа посчитает, что стоимость полученного товара составляет 9 * 150 = 1350 рублей. В результате, вместо того чтобы поставщик остался должен вам 100 рублей за недополученный товар, программа покажет, что это вы должны поставщику еще 350 рублей! Бухгалтерский и управленческий баланс при таком подходе сойтись не могут.
---
Выясним, как устроен учет товаров в рознице. Если ваш магазин или торговая точка зарегистрированы в базе как розничный склад (Автоматизированная торговая точка — АТТ), то учет на таком складе ведется в розничных ценах. Но это не значит, что документ поступления должен заполняться розничными ценами! Цепочка документов в типовом решении выглядит следующим образом:
ПоступлениеТоваровУслуг по закупочной стоимости.УстановкаЦенНоменклатуры.ПереоценкаТоваровВРознице. Именно он делает движения по регистру ТоварыВРознице, начисляя торговую наценку и формируя розничную стоимость под отчет материально ответственным лицам (МОЛ).Если изменить цены в самом документе корректировки поступления, система не сможет корректно рассчитать и списать торговую наценку. При проведении документа программа выдаст ошибку: "Для товара не задана цена АТТ! Необходимо выполнить переоценку!", либо зафиксирует неверные остатки по розничным ценам в регистре ТоварыВРознице.
---
Если перед вами стоит задача «скрыть» от продавцов оптовые цены и выдать им печатную форму накладной исключительно в розничных ценах, но при этом сохранить правильный финансовый учет в базе данных, лучшим решением будет создание внешней печатной формы.
При этом подходе сам документ в информационной базе проводится по реальным закупочным ценам поставщика (что гарантирует корректность взаиморасчетов и партионного учета). Однако при нажатии кнопки «Печать» вызывается внешний алгоритм, который выполняет следующие действия:
ЦеныНоменклатуры на дату документа.Рассмотрим пример программного кода, который разработчик может использовать во внешней печатной форме для получения актуальных розничных цен номенклатуры:
// Функция получает розничные цены для списка товаров из документа
Функция ПолучитьРозничныеЦеныНоменклатуры(МассивТоваров, ДатаДокумента, ТипЦенРозничный) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозничная
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура В(&МассивТоваров)";
Запрос.УстановитьПараметр("Период", ДатаДокумента);
Запрос.УстановитьПараметр("ТипЦен", ТипЦенРозничный);
Запрос.УстановитьПараметр("МассивТоваров", МассивТоваров);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Этот способ полностью решает проблему: продавцы подписывают накладную, где фигурируют понятные им розничные цены, за которые они отвечают по договору о материальной ответственности, а бухгалтерия получает чистый баланс взаиморасчетов с поставщиком.
---
В исходном обсуждении автор упоминает: «Корректировку делаю по другим причинам. Например, иногда забивают не то количество, не тот товар. Ранее редактировали прямо в поступлении, но иногда путаница получается. Теперь хочу через корректировку попробовать... Я не возвращаю поставщику ничего, меняю у себя, для себя».
Если корректировка проводится исключительно для исправления внутренних ошибок оператора (пересортица, неверный ввод количества), и вы при этом не отправляете официальные претензии поставщику и не меняете сумму фактической оплаты, то использовать документ КорректировкаПоступления методически неверно.
Для исправления внутренних ошибок в 1С:УТ 10.3 предназначены специализированные складские документы. Посмотрим, как правильно оформить такие операции:
Используйте документ СписаниеТоваров. При списании с розничного склада программа автоматически спишет товар по розничной стоимости и скорректирует учет у материально ответственного лица.
Оформите документ ОприходованиеТоваров. На розничном складе этот документ потребует указания розничной цены, по которой товар встанет на учет. При этом на складе сформируются корректные остатки и начислится необходимая торговая наценка.
Пример схемы исправления внутренней ошибки оператора без использования корректировок поступления приведен ниже:
Шаг 1. Выявление расхождения. По накладной поставщика должно быть 10 штук товара "А" по закупке 100 руб. Оператор ошибочно ввел 12 штук. Фактически на склад пришло 10 штук. Розничная цена товара — 150 руб.
Шаг 2. Оформление списания излишков. Создаем документ СписаниеТоваров на 2 штуки. Указываем розничный склад. Документ спишет товар по розничной цене 150 руб. с подотчета розничной точки, а по регистру партий спишется себестоимость 100 руб. Учет выровнен.
---
Если оператор перепутал одну номенклатурную позицию с другой (например, вместо сока яблочного внес в базу сок апельсиновый одинаковой стоимости), то лучшим решением будет отражение пересортицы:
СписаниеТоваров для ошибочно введенной номенклатуры (происходит списание остатка по розничной цене).ОприходованиеТоваров для фактически находящегося на складе товара (оприходование происходит по актуальной розничной цене, зафиксированной в магазине).Эти документы легко распечатать в розничных ценах прямо из типового функционала конфигурации. Продавцы увидят знакомые им печатные формы актов списания и оприходования (ТОРГ-16 и другие) с розничными ценами и без проблем подпишут документы расхождений.
---
Подведем итоги нашего анализа. Попытка изменить закупочные цены на розничные непосредственно в документах поступления или корректировки поступления через конфигуратор — это путь к разрушению партионного учета, искажению себестоимости и неверному расчету взаиморасчетов с контрагентами.
Запомните три золотых правила учета в 1С:УТ 10.3:
Используя эти методические подходы, вы сохраните базу данных в порядке, обеспечите бухгалтерам легкую сверку с контрагентами, а розничным точкам предоставите удобный инструмент контроля материальной ответственности в розничных ценах.