Как обновить только общие модули в 1С и решить проблему с заполнением декларации по НДС

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

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

Выясняем причину: почему сравнение показывает «нет различий», хотя кода не хватает

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

  1. Сравнение не с тем источником. Очень распространенная ошибка — путать сравнение основной конфигурации с конфигурацией поставщика и сравнение с конфигурацией базы данных. Если вы уже применили обновление (нажали F7), то сравнение основной конфигурации с конфигурацией БД закономерно покажет отсутствие изменений.
  2. Сбитый механизм поддержки из-за некорректных обновлений в прошлом. Если предыдущие специалисты обновляли систему не через штатный механизм поддержки (Конфигурация — Поддержка — Обновить конфигурацию), а простым накатыванием через Сравнить, объединить с конфигурацией из файла..., то внутренняя конфигурация поставщика осталась старой (например, релиза 119). При этом в свойствах основной конфигурации номер версии сменился на «120». Система при сравнении берет старую конфигурацию поставщика из базы данных, сравнивает ее со старым кодом вашей основной конфигурации и сообщает, что они идентичны, хотя фактически код устарел.
  3. Игнорирование правил объединения при обновлении. Если модуль находился в режиме «Редактируется с сохранением поддержки», для него могло быть по ошибке установлено правило «Сохранять объекты пользователя». В результате при автоматическом обновлении новый код от 1С обновился только в скрытой конфигурации поставщика, а ваша рабочая конфигурация осталась со старым кодом.

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

Шаг 1. Как снять общие модули с «замка» (разрешить изменения)

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

  1. Откроем конфигуратор вашей базы данных.
  2. Перейдем в главное меню: Конфигурация — Поддержка — Настройка поддержки.
  3. В открывшемся окне найдем нужный нам объект. В нашем примере это общие модули в ветке Общие — Общие модули (например, ЗаполнениеРегламентированнойОтчетностиСервер и УчетНДСФормированиеОтчетности).
  4. Дважды кликнем по необходимому модулю. В появившемся окне изменения правил поддержки выберем вариант «Редактируется с сохранением поддержки».
  5. Нажмем кнопку «ОК» и закроем окно настройки поддержки. Обратите внимание, что замочек возле выбранных модулей изменится на пиктограмму карандаша.

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

Шаг 2. Выборочное сравнение и объединение общих модулей из файла .cf

После того как защита с объектов снята, мы можем точечно перенести недостающий код из дистрибутива обновления. Выполним следующие действия:

  1. Перейдем в меню Конфигурация — Сравнить, объединить с конфигурацией из файла... и укажем путь к файлу .cf нужного нам релиза поставщика.
  2. После завершения анализа конфигураций перед нами откроется дерево сравнения. Критически важно: сразу после открытия снимите общую галочку на самом верхнем уровне дерева (на корне конфигурации), чтобы случайно не затереть всю вашу базу типовыми объектами.
  3. Раскроем ветку Общие — Общие модули.
  4. Найдем требуемые нам модули (например, ЗаполнениеРегламентированнойОтчетностиСервер) и установим напротив них флажки.
  5. Для детального анализа изменений мы можем кликнуть правой кнопкой мыши по модулю и выбрать пункт «Показать различия в текстовых файлах». Здесь мы сможем увидеть, какого именно куска кода не хватает. Например, для корректного формирования декларации по НДС в модуле ЗаполнениеРегламентированнойОтчетностиСервер в процедуре ЗаполнитьРегламентированныйОтчет должен присутствовать следующий блок:

ИначеЕсли ПараметрыОтчета.ВидОтчета = "РегламентированныйОтчетНДСФормаОтчета2019Кв1" Тогда
    УчетНДСФормированиеОтчетности.ЗаполнитьОтчетНДСФормаОтчета2019Кв1(ПараметрыОтчета);
  1. Убедившись, что правила объединения настроены верно (для типовых модулей без ваших доработок можно смело ставить режим «Взять из конфигурации источника»), нажимаем кнопку «Выполнить».
  2. Для сохранения изменений в базе данных обязательно нажимаем клавишу F7 (или переходим в меню Конфигурация — Обновить конфигурацию базы данных).

Опасности и риски выборочного обновления модулей

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

Проанализируем простую ситуацию. Если мы перенесем только код модуля ЗаполнениеРегламентированнойОтчетностиСервер, содержащий вызов:

УчетНДСФормированиеОтчетности.ЗаполнитьОтчетНДСФормаОтчета2019Кв1(ПараметрыОтчета);

но при этом забудем обновить сам общий модуль УчетНДСФормированиеОтчетности, в котором объявляется процедура ЗаполнитьОтчетНДСФормаОтчета2019Кв1, система выдаст критическую ошибку на этапе выполнения (Runtime error): «Метод объекта не обнаружен». Пользователь просто не сможет сформировать отчет.

Более того, если в самой конфигурации (в ветке метаданных Отчеты) отсутствует форма регламентированного отчета РегламентированныйОтчетНДС с внутренним именем ФормаОтчета2019Кв1, то даже при идеально обновленном коде общих модулей декларация не откроется. Выборочное обновление требует от разработчика досконального понимания всей цепочки зависимостей.

Безопасная альтернатива: использование внешних регламентированных отчетов (.erf)

Если ваша конфигурация «1С:Управление производственным предприятием 1.3» или «1С:Комплексная автоматизация 1.1» сильно переписана, а сдавать отчетность по НДС нужно срочно, лучшим решением будет использование официальных внешних отчетов. Фирма «1С» регулярно выпускает такие обновления в виде файлов с расширением .erf. Это позволяет избежать прямого вмешательства в программный код конфигурации.

Разберем по шагам, как подключить внешнюю форму декларации по НДС:

  1. Скачайте файл внешнего отчета (например, для декларации по НДС это будет файл формата .erf) с официального портала поддержки пользователей «1С» из раздела дополнений к вашему релизу.
  2. Запустите программу в режиме «1С:Предприятие» от имени пользователя с правами администратора или бухгалтера.
  3. Откройте справочник «Регламентированные отчеты» (его можно найти через меню Операции — Справочники или через специализированный интерфейс «1С-Отчетность»).
  4. В списке отчетов найдите строку с нужной декларацией (в нашем примере это «Декларация по НДС» или объект РегламентированныйОтчетНДС) и откройте ее карточку кнопкой «Изменить» (или клавишей F2).
  5. В карточке настройки отчета найдите переключатель «Использовать» и переведите его из положения «Встроенный отчет» в положение «Файл».
  6. В появившемся поле выбора укажите путь к скачанному ранее внешнему файлу .erf на вашем компьютере или сервере.
  7. Нажмите кнопку «ОК» для сохранения настроек.

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

← На главную