При сопровождении типовых конфигураций, таких как 1С:ERP Управление предприятием, разработчики часто сталкиваются с необходимостью адаптации системы под требования международного учета. Одной из таких задач является добавление новой ставки НДС (например, 19% для Германии), которой нет в стандартном российском перечислении СтавкиНДС. Ситуация осложняется, если конфигурация находится на поддержке, а режим совместимости установлен ниже версии 8.3.14. В этой статье мы подробно разберем, почему возникает ошибка при попытке добавить значение через расширение и какими способами можно решить эту задачу.
Разберем техническую сторону вопроса. Ошибка «Использование собственных значений для заимствованного перечисления в расширениях недопустимо в режиме совместимости 8.3.13 и ниже» является жестким ограничением платформы 1С:Предприятие. Возможность расширять состав перечислений своими значениями (собственные значения заимствованных объектов) появилась только в версии платформы 8.3.14.
Если в вашей 1С:ERP 2.4 установлен режим совместимости 8.3.12, платформа блокирует любые попытки модификации состава перечисления через механизм расширений. При этом важно понимать: режим совместимости расширения не может быть выше режима совместимости основной конфигурации. Попытка изменить его только в расширении приведет к ошибке при запуске информационной базы.
Это самый прямой и технологически верный путь, если требуется именно расширение перечисления. Рассмотрим по шагам, как это сделать и с какими рисками можно столкнуться:
РежимСовместимости в значение 8.3.14 или выше (в зависимости от используемой версии платформы).СтавкиНДС.Важно: Повышение режима совместимости — это ответственный шаг. Проанализируем риски: изменение этого параметра может повлиять на поведение запросов, работу клиентских форм и методов платформы. Перед внедрением на рабочую базу обязательно проведите полное регрессионное тестирование системы.
Если повышение режима совместимости категорически недопустимо, проанализируем ситуацию с имеющимися данными. В перечислении СтавкиНДС могут присутствовать значения, которые ваша организация гарантированно не использует (например, специфические ставки для Крыма или старые ставки 18%).
Мы можем использовать расширение для изменения синонима существующего значения. Однако просто поменять синоним недостаточно, так как логика расчетов в 1С:ERP часто опирается на имя значения (идентификатор). Рассмотрим пример программного перехвата логики через расширение:
&Вместо("ПолучитьСтавкуНДСДляРасчета")
Функция Мой_ПолучитьСтавкуНДСДляРасчета(ЗначениеПеречисления)
Если ЗначениеПеречисления = Перечисления.СтавкиНДС.НДС20 Тогда
// Если нам нужно подменить расчет для конкретного контекста
Возврат 19;
КонецЕсли;
Возврат ПродолжитьВызов(ЗначениеПеречисления);
КонецФункции
Этот метод является «костылем» и опасен тем, что значение НДС20 может использоваться в других частях системы, где подмена на 19% будет ошибочной. Используйте этот подход только в крайнем случае для узкоспециализированных документов.
Выясним, как реализовать задачу без изменения типовых объектов. Мы можем пойти по пути создания собственной инфраструктуры учета ставок НДС через расширение:
ДополнительныеСтавкиНДС.&Вместо или &После модифицируем процедуры расчета суммы НДС в общих модулях, таких как УчетНДС и НалоговыйУчетПереопределяемый.Посмотрим на пример того, как может выглядеть перехват расчета суммы налога в модуле менеджера или общем модуле:
&После("РассчитатьСуммуНДС")
Процедура Расш1_РассчитатьСуммуНДС(СтрокаДокумента)
// Проверяем, заполнена ли наша спец-ставка
Если ЗначениеЗаполнено(СтрокаДокумента.СпецСтавкаНДС) Тогда
СтавкаЧислом = СтрокаДокумента.СпецСтавкаНДС.Процент; // Допустим, там 19
СтрокаДокумента.СуммаНДС = СтрокаДокумента.Сумма * СтавкаЧислом / 100;
КонецЕсли;
КонецПроцедуры
Этот способ самый трудоемкий, так как механизмы НДС в 1С:ERP крайне разветвленные. Вам придется внести изменения в десятки мест: от форм документов до движений по регистрам и формирования печатных форм (счет-фактура, УПД).
Поскольку задача возникла в контексте организации из Германии, проанализируем возможности подсистемы Международный финансовый учет (МФУ) в 1С:ERP. В отличие от оперативного или регламентированного учета РФ, подсистема МФУ позволяет более гибко настраивать правила трансляции проводок и счета учета.
В МФУ можно настроить отображение налогов без жесткой привязки к российскому перечислению СтавкиНДС. Если цель — получение корректной отчетности по немецким стандартам, рассмотрите вариант настройки шаблонов проводок МФУ, где суммы налога будут выделяться по правилам, заданным для конкретных счетов или аналитик, минуя ограничения типового перечисления.
Добавление значения в перечисление через расширение в 1С:ERP 2.4 с режимом совместимости 8.3.12 невозможно без изменения настроек основной конфигурации. Мы рассмотрели несколько путей:
1С:ERP World Edition, где подобные механизмы изначально более гибкие.Выбор метода зависит от ваших ресурсов на тестирование и критичности сохранения "чистой" поддержки. В большинстве случаев повышение режима совместимости до 8.3.14 является наиболее оправданным решением для современных систем на платформе 8.3.