Где в 1С:Бухгалтерия 3.0 хранится реквизит налогового учета (аванс в НУ) документа поступления

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

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

В этой статье мы подробно разберем, по какой логике устроено хранение этого реквизита в БП 3.0, выясним точное место в метаданных, рассмотрим условия его видимости на форме и приведем примеры программного изменения этих данных.

Архитектурные отличия БП 2.0 и БП 3.0

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

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

Где именно хранятся данные: метаданные конфигурации

Если мы проанализируем структуру документа Поступление на расчетный счет (а также аналогичных документов поступления), мы не найдем реквизита шапки с именем «Налоговый учет» или «Авансы НУ». На самом деле эти данные хранятся на уровне табличной части:

  1. Табличная часть: РасшифровкаПлатежа.
  2. Реквизит табличной части: ПорядокОтраженияАванса (в некоторых специализированных решениях или старых релизах может иметь имя ПорядокОтраженияАвансов).
  3. Тип данных: ПеречислениеСсылка.ПорядокОтраженияАвансов.

Использование перечисления вместо простого булева значения позволило программе поддерживать множество вариантов отражения операций. Проанализируем состав перечисления ПорядокОтраженияАвансов, доступный в конфигураторе:

Почему реквизит «Аванс в НУ» не виден на форме?

Часто бухгалтеры и системные администраторы задаются вопросом: «Почему в базе у одной организации эта колонка есть, а у другой — скрыта?». Видимость поля «Аванс в НУ» регулируется программно при создании формы на сервере. Программа анализирует настройки учетной политики организации и включенную функциональность системы:

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

Если эти условия не выполняются, платформа скрывает колонку ПорядокОтраженияАванса на форме, чтобы не перегружать интерфейс пользователя лишними элементами.

Как изменить порядок отражения программно: примеры кода

Рассмотрим практическую задачу. Допустим, нам необходимо массово изменить порядок отражения авансов в документах поступления на расчетный счет за определенный период (например, перенести доходы с ЕНВД на УСН или Патент). Для этого нам потребуется написать небольшую внешнюю обработку. Проанализируем пример кода для работы с объектом документа:


// Выбираем документы за нужный период
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
    |ГДЕ
    |	ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |	И ПоступлениеНаРасчетныйСчет.Проведен = ИСТИНА";

Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.ПериодРегистрации.ДатаНачала));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.ПериодРегистрации.ДатаОкончания));

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    
    // Получаем объект для редактирования
    ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    Модифицирован = Ложь;
    
    // Обходим строки расшифровки платежа
    Для Каждого СтрокаТЧ Из ДокументОбъект.РасшифровкаПлатежа Цикл
        
        // Проверяем текущее значение реквизита налогового учета
        Если СтрокаТЧ.ПорядокОтраженияАванса = Перечисления.ПорядокОтраженияАвансов.ДоходЕНВД Тогда
            
            // Корректируем значение на актуальное
            СтрокаТЧ.ПорядокОтраженияАванса = Перечисления.ПорядокОтраженияАвансов.ДоходУСН;
            Модифицирован = Истина;
            
        КонецЕсли;
        
    КонецЦикла;
    
    // Если данные были изменены, записываем и перепроводим документ
    Если Модифицирован Тогда
        Попытка
            ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
            Сообщить("Успешно изменен документ: " + Строка(ДокументОбъект));
        Исключение
            Сообщить("Не удалось провести документ " + Строка(ДокументОбъект) + ". Ошибка: " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
КонецЦикла;

Обратите внимание, что изменение значения реквизита в табличной части требует обязательного перепроведения документа. Только в этом случае измененные данные корректно запишутся в регистры накопления (такие как КнигаУчетаДоходовИРасходовРазделI или специализированные регистры по Патенту), на основании которых впоследствии сформируется налоговая отчетность.

Интеллектуальные алгоритмы автоподбора в новых релизах

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

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

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

← На главную