Проанализируем ситуацию: вы работаете в 1С:Предприятие 8.3, конфигурация не обновляется (нет подписки/средств), а законодательство и практика учета требуют использовать новые ставки НДС (например, 5% и 22%) — для этого подойдёт автоматизация добавления ставок НДС 5%, 7% и 22%. Вы попробовали «самый очевидный» шаг — добавили значения в метаданные Перечисление.СтавкаНДС — но в режиме «1С:Предприятие» ставки не появились, и документы по-прежнему не дают выбрать нужные проценты.
Разберем по шагам, почему так происходит, что означает «желтый квадратик» в конфигураторе, где на самом деле хранятся ставки в типовых конфигурациях, и какие варианты решения реально работают без «волшебной кнопки» обновления. Для этой задачи есть обработка добавления ставок НДС в УТ 10.3.
Начнем с ключевого: перечисление — это объект метаданных, набор «констант», которые не создаются пользователем в процессе работы и не являются «записями справочника». Если конфигурация использует ставки НДС как элементы справочника Справочник.СтавкиНДС (а в большинстве прикладных решений это именно так), то добавление значения в Перечисление.СтавкаНДС:
Поэтому то, что «в конфигураторе ставка добавилась», еще не означает, что «в базе она появилась» и тем более что она будет участвовать в расчетах и регламентированных отчетах.
Теперь выясним причину визуального отличия. В конфигураторе «желтые метки» рядом с некоторыми элементами обычно связаны с тем, что элемент является поставляемым/предопределенным (в терминологии 1С — «предопределенные данные» или «объекты, поставляемые в составе конфигурации»). Такие элементы создаются разработчиком и на них часто опираются алгоритмы: код может обращаться к ним как к «известным» значениям.
Важно понять практический смысл:
ПредопределенноеЗначение() или через обращения вида Перечисления.СтавкаНДС.НДС20 (в зависимости от реализации).Вывод: визуальная метка лишь подсказывает, что часть значений была заложена разработчиком и может быть жестко привязана к алгоритмам. Ваши новые значения — «чужие» для типовой логики, пока мы ее не расширим.
Очень частая причина «в конфигураторе добавила, а в базе не появилось» — не доведено обновление до конца на уровне базы данных. Разберем подробнее, что нужно сделать всегда, даже если вы уверены, что «сохранили».
Перечисление.СтавкаНДС именно в «Конфигурации», а не только в «Конфигурации поставщика» (если база на поддержке).Проверка результата: если ваша конфигурация действительно использует перечисление в интерфейсе, то новые значения должны стать доступными. Но в большинстве бухгалтерских решений ставки выбираются не из перечисления, а из справочника (или из регистра сведений/настроек), поэтому даже после корректного обновления базы изменения могут быть «невидимыми» пользователю — и это нормально.
Чтобы не «дорабатывать вслепую», сначала выясним архитектуру вашей базы. В 1С ставки НДС встречаются в нескольких местах:
Справочник.СтавкиНДС (часто именно он используется в документах и номенклатуре).Перечисление.СтавкаНДС или похожее (используется как «код ставки»/вид ставки/тип ставки).Нам нужно не гадать, а быстро найти, что используется именно у вас. Для этого применим глобальный поиск по конфигурации.
Вы спрашивали: «Где именно запустить поиск, чтобы просмотреть информацию?». Разберем по шагам, как это делается правильно, чтобы увидеть реальный объем работ.
СтавкаНДССтавкиНДСПеречисления.СтавкаНДССправочники.СтавкиНДСНДС22, 5%, 22% (если где-то уже упоминали новые ставки)Дополнительно используем «поиск ссылок» (если он доступен для вашего действия): выделим объект метаданных (например, Перечисление.СтавкаНДС) и выполним поиск его использования в конфигурации. Тогда мы увидим, какие реквизиты и алгоритмы завязаны именно на перечисление.
Ожидаемый результат анализа: чаще всего вы обнаружите, что документы выбирают ставку не из перечисления напрямую, а через элемент справочника (или настройку), а перечисление используется как «вид» внутри элемента справочника. Это и объясняет, почему изменения «в перечислении» не дали эффекта «в документах».
Рассмотрим подробнее вариант, который часто срабатывает без программирования: если в вашей конфигурации есть справочник ставок НДС, попробуем действовать «по прикладному», а не «по метаданным».
Что делаем:
Перечисление.СтавкаНДС или отдельного перечисления «вид ставки»);Если ставка в справочнике создается и выбирается в документах, это уже половина успеха. Но не спешим радоваться: дальше нужно проверить, что сумма НДС считается корректно и что регистры НДС принимают движения без ошибок.
Проверка на практике:
Когда решение №1 не сработает: если справочник не дает добавить новые ставки (нет прав, есть запреты конфигурации) или если ставка добавляется, но документы все равно «не видят» ее из-за жестких проверок. Тогда переходим к следующему варианту.
Это тот вариант, о котором вам и написали на форуме: «поиск покажет, сколько работы предстоит». Разберем по шагам, что именно обычно приходится дописывать, чтобы ставка была не просто «в списке», а реально работала во всех местах учета.
Наша задача состоит из трех больших частей:
Дальше действуем методично.
С помощью глобального поиска (Ctrl+Shift+F) находим:
ПеречислениеСсылка.СтавкаНДС — документы используют перечисление напрямую;СправочникСсылка.СтавкиНДС — документы используют справочник;По итогам этого шага у нас появляется список мест, где новые ставки надо поддержать.
Если вы нашли в коде обращения к ставкам через ПредопределенноеЗначение() (или функции БСП для получения предопределенных элементов), это сигнал: конфигурация ожидает, что ставка будет существовать как «известный объект».
Тогда действуем так:
Перечисление.СтавкаНДС (вы это уже сделали), но дальше обновляем логику, чтобы новые значения учитывались в ветвлениях.Справочник.СтавкиНДС. В некоторых конфигурациях ставки поставляются как предопределенные элементы справочника — тогда просто «ручного» создания недостаточно, нужно обеспечить стабильный способ получения ссылки.В типовых подходах для надежного получения ссылок часто используют предопределенные данные и обращаются к ним через ПредопределенноеЗначение(). Если вы внедряете новые ставки сами, удобнее сделать так, чтобы они создавались автоматически при обновлении ИБ (тогда не придется «ловить» базы, где ставки забыли завести).
Посмотрим на пример, как это обычно делается. Идея: в обработчике обновления (в вашей конфигурации это может быть общий модуль обновления или процедура, которая вызывается при старте после изменения конфигурации) мы проверяем наличие элементов справочника ставок и создаем недостающие.
Ниже пример «скелета» кода. Его нужно адаптировать под реальные реквизиты вашего справочника ставок (названия полей в разных конфигурациях отличаются), но принцип останется одинаковым: найти — если нет, создать — заполнить — записать.
Процедура ОбеспечитьНаличиеСтавокНДС() Экспорт
// Пример для случая, когда ставки НДС хранятся в справочнике "СтавкиНДС".
// Реквизиты справочника в вашей конфигурации могут называться иначе — проверим в метаданных.
ДобавитьСтавкуЕслиНет("НДС 5%", 5);
ДобавитьСтавкуЕслиНет("НДС 22%", 22);
// Если конфигурации нужны расчетные ставки "в том числе":
// ДобавитьСтавкуЕслиНет("НДС 22/122", 22);
КонецПроцедуры
Процедура ДобавитьСтавкуЕслиНет(НаименованиеСтавки, Процент) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтавкиНДС.Ссылка КАК Ссылка
|ИЗ
| Справочник.СтавкиНДС КАК СтавкиНДС
|ГДЕ
| СтавкиНДС.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", НаименованиеСтавки);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Возврат;
КонецЕсли;
НовыйЭлемент = Справочники.СтавкиНДС.СоздатьЭлемент();
НовыйЭлемент.Наименование = НаименованиеСтавки;
// ВАЖНО: названия реквизитов могут отличаться:
// Например: "Ставка", "Процент", "Размер", "СтавкаНДСПроцент".
// Проверим в конфигураторе и подставим реальные.
Если НовыйЭлемент.Метаданные().Реквизиты.Найти("Процент") <> Неопределено Тогда
НовыйЭлемент.Процент = Процент;
КонецЕсли;
// Если используется перечисление вида ставки:
// НовыйЭлемент.ВидСтавкиНДС = Перечисления.СтавкаНДС.НДС5; // пример
// Подставим реальное имя значения перечисления.
НовыйЭлемент.Записать();
КонецПроцедуры
Что важно в этом подходе:
Дальше нужно решить, куда именно вставить вызов ОбеспечитьНаличиеСтавокНДС. В разных конфигурациях это реализуют по-разному, но общая логика такая: вызываем при обновлении ИБ или при первом запуске после обновления конфигурации.
Даже если ставка появилась в выборе, расчет может «упасть» или дать неверные суммы, если где-то есть жесткие условия вроде: «если ставка 10 или 20 — считаем так, иначе — исключение». Поэтому посмотрим, где чаще всего ломается логика, и что нужно проверить.
Типовые места риска:
Если ... ИначеЕсли ... с перечислением допустимых ставок.Что делаем вместе:
Если в конфигурации уже есть универсальные функции расчета (например, расчет через «Процент» ставки, а не через фиксированные коэффициенты), то работа упрощается: нам нужно лишь, чтобы ставка корректно попадала в этот универсальный механизм.
Теперь посмотрим глубже: НДС — это не только расчет суммы в строке документа, но и движение в регистрах учета НДС, книги покупок/продаж, счета-фактуры, авансы. Даже если вы «не сдаете декларацию из 1С», регистры все равно могут использоваться для формирования счетов-фактур, сверок и внутреннего контроля.
Поэтому обязательно проверяем:
Практический лайфхак: заведем отдельного контрагента «Тест НДС», сделаем 2–3 тестовых документа, и будем ими гонять проверки после каждой доработки. Так мы быстрее поймаем место, где ставка «не пролезает».
Рассмотрим альтернативу прямому редактированию конфигурации. Если ваша база типовая и находится на поддержке, прямые изменения в основной конфигурации делают дальнейшее обновление еще сложнее. Даже если вы сейчас не обновляетесь, лучше сохранить возможность «когда-нибудь» перейти на актуальный релиз с меньшими потерями.
В этом случае полезно рассмотреть расширение:
Плюсы подхода:
Минусы:
Теперь объясним, почему на форуме вам написали, что работы много. В типовой конфигурации НДС — это целый контур: документы, счета-фактуры, книги, раздельный учет, авансы, корректировки, проверки, печать, обмены. Ставка участвует в десятках мест, и если где-то осталось условие «разрешены только старые ставки», система начнет либо блокировать ввод, либо считать неправильно.
Поэтому правильная стратегия такая:
Так мы не будем «тыкаться» в случайные ошибки, а системно доведем поддержку ставок до рабочего состояния.
Соберем короткий, но практичный список причин и проверок. Пройдемся по нему вместе:
Если последовательно пройти этот чек-лист, обычно становится понятно, где именно «узкое место» в конкретной базе.
Выясним важный момент из обсуждения: вы сдаете отчетность через Контур, поэтому «декларация в 1С» вам не критична. Это действительно снижает требования к части регламентированных отчетов, но не отменяет потребность в корректном расчете в первичных документах.
Даже если декларация не формируется в 1С, вам обычно нужны:
Поэтому мы все равно ориентируемся на то, чтобы ставка работала полноценно в документах и расчетах.
Сведем все в понятный план действий, который можно выполнять по шагам, фиксируя результат после каждого шага.
Главный вывод: добавление ставок НДС «вручную через конфигуратор» — это не один объект и не одна галочка. Нам нужно совместить данные (где ставка хранится), алгоритмы (как она считается) и проверки (где она разрешена). Именно поэтому такая работа часто оценивается дорого: объем зависит от того, насколько глубоко конфигурация завязана на предопределенные ставки и типовые механизмы НДС.
Информация носит справочный характер.