Как обновить предопределенные данные в плане счетов и отобразить счет 68.16 в 1С:Бухгалтерия 3.0?

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

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

Механика работы предопределенных элементов в 1С:Предприятие 8.3

Для начала проанализируем, как вообще устроены предопределенные элементы в современных версиях платформы. В новых релизах платформы 1С:Предприятие 8.3 архитектура предопределенных данных была существенно переработана. Теперь они разделены на две независимые сущности:

  1. Описание в метаданных: Это то, что мы видим в дереве метаданных в Конфигураторе. По сути, это лишь "шаблон" или указание системе, что такой элемент должен существовать.
  2. Физические элементы базы данных: Это реальные записи в таблицах СУБД, с которыми работают пользователи в режиме Предприятия.

Связь между этими двумя сущностями больше не является жесткой (по внутреннему идентификатору). Платформа связывает их гибко через специальный системный реквизит ИмяПредопределенныхДанных. Если счет заведен в Конфигураторе, но мы не видим его в Предприятии, это означает, что физический элемент либо не был автоматически сгенерирован при реструктуризации базы (обновлении конфигурации), либо программная связь была каким-то образом разорвана (например, при неосторожном использовании универсальных обработок изменения реквизитов).

Почему скрыт конкретный счет 68.16 в 1С:Бухгалтерия 3.0?

Посмотрим на практический пример со счетом 68.16. В типовой конфигурации 1С:Бухгалтерия 3.0 данный счет имеет четкое назначение: он используется для учета расчетов по "Налогу на профессиональный доход" (НПД). Данный функционал тесно связан с учетом операций с самозанятыми гражданами и переходом на систему Единого налогового платежа (ЕНП).

Как справедливо заметили пользователи на профильном форуме, в подавляющем большинстве случаев счет скрыт не из-за программной ошибки, а из-за выключенной опции. Рассмотрим подробнее, как вернуть его стандартными средствами без программирования.

Решение 1: Включение через настройки функциональности (Пользовательский режим)

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

  1. Откроем раздел Главное и перейдем в Функциональность.
  2. Перейдем на вкладку, отвечающую за расчеты и учет налогов (в последних версиях это может быть раздел учета самозанятых).
  3. Убедимся, что включена полная функциональность программы или хотя бы активирован флаг, отвечающий за работу с самозанятыми плательщиками НПД.
  4. Затем зайдем в настройки Учетной политики и налогов организации и проверим применимость соответствующих опций.

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

Решение 2: Программное восстановление через обработку (Стандартный метод)

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

Напишем следующий код в процедуре выполнения нашей обработки:


&НаСервере
Процедура ОбновитьПредопределенныеСчетаНаСервере()
    
    // Принудительно вызываем обновление предопределенных данных для хозрасчетного плана счетов
    ПланыСчетов.Хозрасчетный.ОбновитьПредопределенныеДанные();
    
    Сообщить("Предопределенные данные плана счетов успешно обновлены!");
    
КонецПроцедуры

Этот простой вызов заставит ядро платформы сопоставить элементы Конфигуратора и базы данных, после чего недостающий счет будет создан.

Решение 3: Ручная привязка имени предопределенного элемента

Проанализируем еще одну возможную ситуацию. Пользователь, не найдя счет 68.16, мог создать его руками в режиме Предприятия. Внешне счет выглядит правильно, но для системы он является обычным пользовательским счетом (а не предопределенным), из-за чего типовые алгоритмы проведения документов могут с ним не работать. Для замены ссылок с ошибочно созданного счета на корректный предопределенный во всех проводках и документах базы подойдёт обработка для поиска и замены значений во всей информационной базе.

Чтобы превратить пользовательский счет в системный (предопределенный), нам необходимо явно заполнить свойство ИмяПредопределенныхДанных. Разберем по шагам, как это запрограммировать:

  1. Зайдем в Конфигуратор и найдем план счетов Хозрасчетный.
  2. Откроем предопределенные данные и скопируем точное имя счета (обычно это НалогНаПрофессиональныйДоход).
  3. Напишем код для связи пользовательского счета с метаданными.

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

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

Дополнительные факторы: РИБ и ключи запуска

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

Распределенная информационная база (РИБ): Если проблема наблюдается в периферийном (подчиненном) узле РИБ, вам не нужно писать код. Предопределенные элементы в подчиненных узлах больше не создаются автоматически ядром при обновлении конфигурации. Они мигрируют как обычные данные справочников. Следовательно, вам нужно дождаться пакета обмена из центральной базы, где этот счет уже появился.

Сбои настроек платформы: Иногда для конфигурации установлен нестандартный режим обновления предопределенных данных (значение отлично от "Авто"). Эту проблему можно решить системными утилитами. Запустим Конфигуратор из командной строки с ключом /SetPredefinedDataUpdate -Auto. Это вернет платформе право автоматически генерировать недостающие элементы при реструктуризации.

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

← На главную