В процессе поддержки нетиповых или сильно доработанных конфигураций «1С:Предприятие» программисты часто сталкиваются с ситуацией, когда необходимо перенести изменения только конкретных объектов из нового релиза поставщика. Особенно остро эта проблема встает при обновлении регламентированной отчетности (например, декларации по НДС для УПП 1.3 или КА 1.1), когда из-за пропущенных модулей отчетность отказывается заполняться или выдает критические ошибки в коде. В этой статье мы подробно разберем, как правильно и безопасно обновить отдельные общие модули, как обойти защиту конфигурации на поддержке («замок») и почему стандартное сравнение иногда ошибочно показывает отсутствие различий.
Довольно часто разработчик сталкивается с парадоксом: в коде общего модуля отсутствует важный фрагмент (например, вызов заполнения новой формы отчета), номер релиза конфигурации соответствует самому последнему, а стандартное сравнение с конфигурацией поставщика сообщает, что различий не обнаружено. Проанализируем, почему так происходит:
Для того чтобы точно определить расхождения, нам понадобится сравнить нашу рабочую конфигурацию напрямую с чистым файлом поставки .cf нужного релиза.
Если объекты конфигурации находятся на полной поддержке поставщика, они защищены от редактирования (возле них отображается пиктограмма желтого замочка). Объединить их напрямую с файлом .cf не удастся — сначала необходимо разрешить их изменение. Разберем по шагам, как это сделать:
Общие — Общие модули (например, ЗаполнениеРегламентированнойОтчетностиСервер и УчетНДСФормированиеОтчетности).Важное примечание: мы можем открыть для изменения как отдельные модули, так и всю конфигурацию целиком (выбрав корневой элемент). Однако в целях безопасности и сохранения возможности дальнейших автоматических обновлений рекомендуется открывать доступ только к тем объектам, которые вы действительно планируете редактировать.
После того как защита с объектов снята, мы можем точечно перенести недостающий код из дистрибутива обновления. Выполним следующие действия:
.cf нужного нам релиза поставщика.Общие — Общие модули.ЗаполнениеРегламентированнойОтчетностиСервер) и установим напротив них флажки.ЗаполнениеРегламентированнойОтчетностиСервер в процедуре ЗаполнитьРегламентированныйОтчет должен присутствовать следующий блок:
ИначеЕсли ПараметрыОтчета.ВидОтчета = "РегламентированныйОтчетНДСФормаОтчета2019Кв1" Тогда
УчетНДСФормированиеОтчетности.ЗаполнитьОтчетНДСФормаОтчета2019Кв1(ПараметрыОтчета);
Рассмотрим подробнее риски, связанные с частичным переносом кода. Программисты на форумах не зря предупреждают о возможности получить «груду ошибок». Дело в том, что в современной архитектуре 1С общие модули тесно связаны между собой перекрестными ссылками и вызовами процедур.
Проанализируем простую ситуацию. Если мы перенесем только код модуля ЗаполнениеРегламентированнойОтчетностиСервер, содержащий вызов:
УчетНДСФормированиеОтчетности.ЗаполнитьОтчетНДСФормаОтчета2019Кв1(ПараметрыОтчета);
но при этом забудем обновить сам общий модуль УчетНДСФормированиеОтчетности, в котором объявляется процедура ЗаполнитьОтчетНДСФормаОтчета2019Кв1, система выдаст критическую ошибку на этапе выполнения (Runtime error): «Метод объекта не обнаружен». Пользователь просто не сможет сформировать отчет.
Более того, если в самой конфигурации (в ветке метаданных Отчеты) отсутствует форма регламентированного отчета РегламентированныйОтчетНДС с внутренним именем ФормаОтчета2019Кв1, то даже при идеально обновленном коде общих модулей декларация не откроется. Выборочное обновление требует от разработчика досконального понимания всей цепочки зависимостей.
Если ваша конфигурация «1С:Управление производственным предприятием 1.3» или «1С:Комплексная автоматизация 1.1» сильно переписана, а сдавать отчетность по НДС нужно срочно, лучшим решением будет использование официальных внешних отчетов. Фирма «1С» регулярно выпускает такие обновления в виде файлов с расширением .erf. Это позволяет избежать прямого вмешательства в программный код конфигурации.
Разберем по шагам, как подключить внешнюю форму декларации по НДС:
.erf) с официального портала поддержки пользователей «1С» из раздела дополнений к вашему релизу.РегламентированныйОтчетНДС) и откройте ее карточку кнопкой «Изменить» (или клавишей F2)..erf на вашем компьютере или сервере.После выполнения этих действий при нажатии кнопки «Заполнить» в регламентированном отчете система будет использовать новые алгоритмы напрямую из внешнего файла .erf, полностью игнорируя устаревшие или поврежденные процедуры в общих модулях вашей конфигурации. Это наиболее безопасный способ сдачи отчетности без риска повредить работающую базу данных.