Почему в реализации услуг в 1С:Бухгалтерии 3.0 подставляются неверные счета учета и как это исправить?

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

При оформлении документа «Реализация (акт, накладная)» в программе «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с ситуацией, когда в табличную часть автоматически подставляются некорректные счета доходов и расходов (например, счета 90.01.4 и 90.02.4 вместо ожидаемых 90.01.5 и 90.02.5). Даже если бухгалтер заходит в карточку номенклатуры и явно настраивает счета учета, при выборе этой услуги в документе программа продолжает упорно подставлять старые значения.

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

Проанализируем ситуацию последовательно — от простых пользовательских настроек до глубокого анализа программного кода.

Шаг 1. Проверяем приоритеты в регистре сведений «Счета учета номенклатуры»

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

  1. Конкретная позиция номенклатуры + конкретная Организация + конкретный Склад.
  2. Конкретная позиция номенклатуры (без привязки к складу или организации).
  3. Группа номенклатуры (папка) + Организация + Склад.
  4. Группа номенклатуры (папка) без привязки к складу/организации.
  5. Вид номенклатуры + Организация + Склад.
  6. Вид номенклатуры.
  7. Пустая (дефолтная) запись, которая применяется для всех остальных случаев.

Частая ошибка: бухгалтер создает индивидуальную настройку для конкретной услуги (номенклатурной позиции), но оставляет поле «Организация» пустым. При этом в регистре существует общая запись для всей папки (или вида номенклатуры), в которой организация указана явно. Так как правило с заполненной организацией имеет более высокий приоритет в иерархии 1С, программа проигнорирует индивидуальную настройку номенклатуры без организации и применит групповую настройку с организацией.

Чтобы исключить эту проблему, выполним следующие действия:

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

Шаг 2. Анализируем влияние системы налогообложения и учетной политики

В «1С:Бухгалтерия предприятия 3.0» счета учета дохов и расходов (субсчета счета 90) тесно завязаны на применяемую систему налогообложения (СНО) и параметры договоров:

Если ваша организация совмещает УСН/ОСНО с патентной системой налогообложения, программа анализирует реквизиты документа реализации. Если в поле «Налог» выбран патент или у выбранного договора с контрагентом стоит признак патентной деятельности, система автоматически переопределит счета доходов на «патентные» субсчета прямо в момент проведения или заполнения документа, полностью проигнорировав ваши ручные настройки из регистра Счета учета номенклатуры.

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

Шаг 3. Учитываем отраслевую специфику и кастомные субсчета

Обратите внимание на сами субсчета, упомянутые в проблеме: 90.01.4, 90.01.5, 90.02.4, 90.02.5. В стандартном плане счетов типовой российской «1С:Бухгалтерии 8» этих субсчетов нет — по умолчанию там присутствуют только субсчета 90.01.1, 90.01.2, 90.02.1 и 90.02.2.

Появление таких счетов сигнализирует об одной из следующих ситуаций:

  1. Ручное расширение плана счетов: бухгалтер самостоятельно добавил данные субсчета для разделения выручки по ставкам НДС (например, 18% и 20%) или по различным видам услуг.
  2. Использование отраслевого решения: в специализированных конфигурациях (например, для общепита, сельского хозяйства или строительства) эти субсчета могут быть предопределенными для разделения выручки от разных видов деятельности (промышленное производство, услуги, розничная торговля).
  3. Локализация для других стран: например, в «1С:Бухгалтерии для Беларуси» субсчет 90.01.4 официально отвечает за выручку от реализации работ и услуг, а 90.01.5 — за выручку от прочей продукции.

Если субсчета были созданы пользователями вручную, то типовые механизмы автоподстановки 1С не умеют определять их автоматически. Программа будет использовать стандартный алгоритм, который вернет базовый счет, зафиксированный в коде конфигурации.

Шаг 4. Исключаем наследование данных при вводе на основании

Выясним, как именно создается документ реализации. Если бухгалтер вводит документ «Реализация (акт, накладная)» на основании документа «Счет на оплату» или «Заказ покупателя», программа наследует счета учета напрямую из документа-основания.

Если в «Счете на оплату» в момент его выписки стояли старые счета учета (или они заполнились по старым правилам), то при вводе реализации на его основании новые правила из регистра сведений применены не будут — программа просто скопирует данные из источника.

Чтобы обновить счета учета в таком документе, выполните перевыбор номенклатуры в строке табличной части или воспользуйтесь групповым изменением реквизитов.

Шаг 5. Включаем видимость счетов на форме документа

В современных версиях «1С:Бухгалтерия 3.0» счета учета в документах по умолчанию скрыты, чтобы разгрузить интерфейс. Программа рассчитывает их в фоновом режиме, из-за чего сложно оперативно заметить ошибку заполнения.

Чтобы сделать этот процесс прозрачным и сразу видеть, какие счета подставляются в строки, настроим их видимость:

  1. Перейдем в раздел Главное — Персональные настройки.
  2. Установим флаг в поле «Показывать счета учета в документах».
  3. Сохраним настройки.

После этого в табличной части документов реализации появятся колонки «Счет учета», «Счет доходов», «Счет расходов» и «Субконто», что позволит вам визуально контролировать автоподстановку еще до проведения документа.

Шаг 6. Ищем скрытую логику с помощью отладчика 1С

Если вы проверили все настройки регистра, убедились в правильности учетной политики, но счета все равно заполняются неверно, велика вероятность того, что в вашей базе присутствуют программные доработки (кастомный код). Это могут быть как измененные типовые модули, так и расширения конфигурации.

Чтобы локализовать проблему, программисту необходимо воспользоваться отладчиком в конфигураторе. Разберем этот процесс по шагам.

Основная логика заполнения счетов учета номенклатуры сосредоточена в общем модуле ЗаполнениеСчетовУчета (или аналогичных переопределяемых модулях). Установим точку останова в процедуре, отвечающей за заполнение счетов в документах реализации.

Пример кода, который может переопределять счета в общем модуле (именно такую скрытую доработку отловил автор темы на форуме):


Процедура ЗаполнитьСчетаУчетаВТабличнойЧасти(СтрокаТаблицы, ДокументОбъект) Экспорт
    
    // Проверяем ставку НДС в строке документа
    Если СтрокаТаблицы.СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС20") Тогда
        // Если ставка 20%, принудительно устанавливаем счета 90.01.5 и 90.02.5
        СтрокаТаблицы.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.5");
        СтрокаТаблицы.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.5");
    ИначеЕсли СтрокаТаблицы.СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС18") Тогда
        // Для ставки 18% устанавливаем счета 90.01.4 и 90.02.4
        СтрокаТаблицы.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.4");
        СтрокаТаблицы.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.4");
    КонецЕсли;
    
КонецПроцедуры

Для поиска подобных скрытых механизмов выполните следующие действия в конфигураторе:

  1. Откройте глобальный поиск по конфигурации (сочетание клавиш Ctrl + Shift + F).
  2. В строке поиска введите код интересующего вас счета (например, 90.01.4 или 90.02.4).
  3. Проверьте результаты поиска. Если код этих счетов жестко прописан в модулях (особенно в общих модулях с префиксом _Доработка, в расширениях или в модуле менеджера документа РеализацияТоваровУслуг), вы сразу увидите, какая именно процедура переопределяет стандартное поведение системы.
  4. Установите точку останова (клавиша F9) на найденной строке кода, запустите сеанс отладки и пройдите по шагам процесс выбора номенклатуры в документе, чтобы убедиться, как именно переменные счетов принимают свои значения.

Таким образом, сочетание системного анализа настроек регистра Счета учета номенклатуры, проверки параметров учетной политики и использования инструментов отладки позволяет быстро найти и устранить причину некорректного заполнения счетов учета в любых документах 1С.

← На главную