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