Как в документе «Отчет о розничных продажах» заменить проводку по счету 62.Р на 76.06.2

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Торговля и дистрибуция
← На главную

В типовой конфигурации «1С:Бухгалтерия предприятия 3.0» работа с розничными продажами жестко ориентирована на использование счета 62.Р («Расчеты с розничными покупателями»). Однако нередко возникают ситуации, когда методология учета конкретной организации, утвержденная главным бухгалтером, требует отражения задолженности на счете 76.06.2. Рассмотрим, почему стандартные настройки не позволяют этого сделать, и разберем программные способы решения этой задачи.

Почему не работает стандартная настройка счетов учета

Проанализируем архитектуру документа ОтчетОРозничныхПродажах. В отличие от оптовой реализации, где счета расчетов можно выбрать в форме документа или настроить через регистр сведений Счета учета расчетов с контрагентами, розничный отчет работает с «обезличенным» покупателем. Счет 62.Р является служебным: у него нет аналитики по контрагентам, а основным субконто выступают склады.

Поскольку документ не предполагает выбора конкретного контрагента в шапке (для розницы), программа игнорирует общие правила подбора счетов и «зашивает» 62.Р непосредственно в алгоритм проведения. Поэтому любая попытка изменить регистр счетов учета для контрагента «Розничный покупатель» не принесет результата. Чтобы внедрить счет 76.06.2, нам придется прибегнуть к программной корректировке движений.

Подход к решению: изменение движений регистра бухгалтерии

Существует несколько способов вмешаться в процесс формирования проводок. Наиболее корректными с точки зрения поддержки конфигурации являются использование подписки на события или создание расширения. Рассмотрим алгоритм действий при использовании подписки на событие ПередЗаписью набора записей регистра бухгалтерии.

Выясним причину, по которой обычная замена счета в коде часто приводит к пустым субконто. Если мы просто меняем СчетДт с 62.Р на 76.06.2, коллекция субконто остается старой (от счета 62.Р). У счета 76.06.2 три субконто: Контрагенты, Договоры, Документы расчетов. Программа «не понимает», куда именно записывать ссылку на контрагента, пока мы явно не укажем вид субконто.

Реализация через подписку на событие

Рассмотрим пример кода, который можно разместить в общем модуле. Подписка должна быть создана для объекта РегистрБухгалтерииНаборЗаписей.Хозрасчетный.


Процедура ПередЗаписьюДвиженийХозрасчетный(Источник, Отказ, Замещение) Экспорт
    
    // Проверяем, что документ-регистратор — это Отчет о розничных продажах
    Если ТипЗнч(Источник.Отбор.Регистратор.Значение) <> Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда
        Возврат;
    КонецЕсли;

    // Определяем нужного контрагента и договор (можно вынести в настройки)
    НужныйКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию("ФИРМА РОГА И КОПЫТА");
    НужныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор", Ложно, , НужныйКонтрагент);
    
    Счет76 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.06.2");
    Счет62Р = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.Р");

    Для Каждого Движение Из Источник Цикл
        
        Если Движение.СчетДт = Счет62Р Тогда
            
            // Заменяем счет
            Движение.СчетДт = Счет76;
            
            // Важный момент: инициализируем субконто по типам
            // Обычное присваивание СубконтоДт1 не сработает, если типы не совпадают
            Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = НужныйКонтрагент;
            Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = НужныйДоговор;
            
            // Если нужно перенести документ расчетов из исходных данных
            Если Движение.СубконтоДт.Количество() > 0 Тогда
                // Дополнительная логика заполнения третьего субконто
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры

Разбор критической ошибки заполнения субконто

Многие разработчики сталкиваются с тем, что СтрокаДвижения.СубконтоДт1 или КорСубконто1 (в зависимости от контекста) остается пустым после присвоения. Проанализируем ситуацию: в 1С при программной работе с проводками свойство СубконтоДт представляет собой не просто массив, а структуру (карту), где ключом является объект ПланыВидовХарактеристик.ВидыСубконто.

Правильный способ заполнения: всегда обращаться к субконто через квадратные скобки, указывая конкретный вид субконто из плана видов характеристик. Рассмотрим пример:

Движение.СубконтоДт.Вставить(ПланыВидовХарактеристик.ВидыСубконто.Контрагенты, фирма);

Или короче: Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = фирма;

Последствия для учета и возможные риски

Прежде чем внедрять данное решение, разберем по шагам, на что это повлияет в «1С:Бухгалтерии»:

  1. Налоговый учет (УСН): Программа жестко завязана на движения по счету 62.Р для формирования записей Книги учета доходов и расходов. Если цепочка «Продажа (62.Р) — Оплата (62.Р)» разорвана, автоматическое признание дохода может не сработать. Бухгалтеру придется вводить записи КУДиР вручную.
  2. Закрытие месяца: Регламентные операции могут выдавать ошибки или требовать перепроведения документов, так как ожидают стандартного поведения от розничных операций.
  3. Взаиморасчеты: Счет 76.06.2 требует детального ведения по договорам. Если в коде прописан один «Основной договор», а оплата придет на другой или без указания договора, возникнет разрыв сальдо, который не закроется автоматически.

Альтернативный вариант без программирования

Если бухгалтерии принципиально видеть 76-й счет только для безналичных оплат (эквайринг), посмотрим на настройки Видов оплаты. В справочнике «Виды оплаты» можно для каждого терминала указать свой счет расчетов. Если там вместо 57.03 указать 76.06.2, то документ при проведении безналичной части создаст проводку Дт 76.06.2 — Кт 62.Р.

В этом случае счет 62.Р все равно будет задействован как транзитный, но итоговая задолженность банка-эквайера «перекочует» на 76-й счет. Этот вариант является наиболее безопасным, так как не ломает типовые алгоритмы программы и не требует написания сложного кода в расширениях.

Подводя итог: если «бодаться» с главбухом нет возможности и нужно реализовать именно прямую замену 62.Р, используйте расширение с перехватом движений регистра бухгалтерии, уделяя особое внимание явной инициализации типов субконто через ПланыВидовХарактеристик.

← На главную