Автоматизированная проверка кода измененных конфигураций и расширений 1С на наличие ошибок

17.10.25

База данных - Обновление 1С

Представляю вашему вниманию конфигурацию "Проверка конфигураций", которая позволяет проверять любые конфигурации и расширения на наличие ошибок, связанных с вызовом экспортных функций и процедур общих модулей и модулей менеджеров объектов. Проверяются ошибки: 1) Метод объекта не обнаружен 2) Недостаточно фактических параметров. 3) Слишком много фактических параметров. Рекомендуется выполнять при подготовке обновлений.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Проверка конфигураций на ошибки
.7z 1,07Mb
3 4 550 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Доброго времени суток!

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

  1. Метод объекта не обнаружен.
  2. Недостаточно фактических параметров.
  3. Слишком много фактических параметров.
     

Назначение: проверка подготовленного обновления очередного релиза измененной конфигурации и расширений на наличие указанных ошибок.

Цель: исправить потенциальные ошибки при обновлении заранее, а не в срочном порядке динамически обновлять рабочую базу 1С (в том числе с выгоном всех пользователей).
 

Механизм был протестирован мной на всех основных конфигурациях:

ERP+КА, Бухгалтерия, УТ, ЗУП, УНФ+Розница, ДО.

Даже на стандартных конфигурациях 1С было выявлено около 45 различных ошибок – файл прикреплён к публикации.

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


Механизм реализован в небольшой самописной конфигурации "Проверка конфигураций", которая проверяет по определенной логике любые конфигурации 1С, и стандартные и самописные.
 

Далее описываю более подробно механизм проверки:

История и причины создания данной проверки:

После очередного обновления на новый релиз переписанной ERP у пользователей стали выходить ошибки:

 

Пришлось оперативно искать ошибку, исправлять и выполнять динамическое обновление.
Дело в том, что компания 1С в новом релизе перенесла часть процедур и функций для работы с XML в другой глобальный модуль, например функцию «ОбъектXDTOВСтруктуру» перенесли из общего модуля «ИнтеграцияИС» в общий модуль «РаботаСXMLИС». А в нашем дописанном расширении оставался вызов к «старому» глобальному модулю: ИнтеграцияИС.ОбъектXDTOВСтруктуру(...)

Данное перемещение практически невозможно проверить перед обновлением. Ошибки программиста в этом случае нет.

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

Помимо этого, 1С так же НЕ проверяет количество параметров вызываемых экспортных функций и процедур. Т.е. в объявлении функции или процедуры может быть указано 2 обязательных параметра, а в вызове быть 1 или 3 параметра, и эту ошибку 1С тоже НЕ подсвечивает в конфигураторе.

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

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

Для этой цели я сделал свою конфигурацию 1С: "Проверка конфигураций", проверил конфигурацию на обновление, ошибки перенесённой функции "ОбъектXDTOВСтруктуру" были успешно выявлены.

Внешний вид конфигурации "Проверка конфигураций":

 

 

Принцип работы и результаты механизма проверки:

  1. Файлы проверяемой основной конфигурации и всех расширений выгружаем в файлы на жесткий диск.

  2. Разворачиваем конфигурацию "Проверка конфигураций", указываем путь к папке выгруженных файлов.

  3. Запускаем обработку "Отобрать процедуры и функции", которая используя регулярные выражения (компонент VBScript.RegExp) отбирает все экспортные функции и процедуры общих модулей и модулей менеджеров объектов и их вызовы и записывает их 2 соответствующих регистра сведений.
    Вызовы отбираются, в том числе, вложенные друг в друга, например функция2(функция1()), в стандартных конфигурациях используется до четырех уровней вложенности.

На основании данных этих двух регистров формируются отчеты:

1) Отчет «Отсутствующие экспортные процедуры и функции» т.е. в программном модуле есть вызов, а в общем модуле / модуле менеджера нет такой процедуры или функции по разным причинам: перенесли в другой модуль, закомментировали, переименовали, убрали Экспорт, неудачно обновили (^_^) и т.п.
 

Отчет позволяет определять следующие ошибки:

"Метод объекта не обнаружен"

При вызове отсутствующей процедуры или функции 1С выдаст ошибку:



3 штуки отчета, которые сравнивают количество параметров:

2) Переданных параметров больше, чем всех вместе взятых

3) Переданных параметров меньше, чем обязательных

4) Различное количество параметров все обязательные

 – различается количество параметров в вызове и в объявлении функции и процедуры.

Отчеты позволяют определить 2 ошибки:


1) "Недостаточно фактических параметров":
Ошибка:


Вызов (с 1 параметром):

ИнтеграцияМОТПУНФ.ЗаполнитьШтрихкоды(ДанныеПоШтрихкодам);

Объявление (с 2-мя параметрами):

Процедура ЗаполнитьШтрихкоды(ДанныеПоШтрихкодам, ИмяКолонкиЗаполнения) Экспорт

 

2) "Слишком много фактических параметров":
Ошибка:

Вызов (с 1 параметром):

Запрос.УстановитьПараметр("ТребующиеДействия", Документы.ТТНВходящаяЕГАИС.ВсеТребующиеДействия(Истина));

Объявление (без параметров):

Функция ВсеТребующиеДействия() Экспорт

 

Пример одного из отчетов:

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

 

Результаты проверки 8-ми стандартных конфигураций 1С я поместил в состав публикации, файлы называется "Найденные ошибки стандартных конфигураций 1С", смотрите, там всё достаточно понятно и доступно. Выявлено 48 потенциальных ошибок. У меня не было цели проверить за 1С вызовы, я лишь демонстрирую то, что по определенному алгоритму эти вызовы не соответствуют объявлениям функций и процедур.

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


Хочу обратить внимание, что механизм проверки выводит ПОТЕНЦИАЛЬНЫЕ ошибки, и не факт, что они вообще будут вызваны в процессе работы.

Я встречал обработчики, у которых кнопка на форме имела видимость Ложь, т.е. не отображалась на форме.

Т.е. в обработчике есть ошибка, но он не вызывается.


Или, например, в коде стандартных релизов встречается следующее:

1) Проверка существование отчета перед вызовом:
Отчеты.РегламентированноеУведомлениеИсключениеПроверки.ПолучитьНазваниеОргана

	ИначеЕсли Объект.ВидУведомления = Перечисления.ВидыУведомленийОСпецрежимахНалогообложения.ЗаявлениеИсключенииПроверки
		И Метаданные.Отчеты.Найти("РегламентированноеУведомлениеИсключениеПроверки") <> Неопределено Тогда 
		
		ВидКонтролирующегоОргана	= Перечисления.ТипыКонтролирующихОрганов.ПустаяСсылка();
		КодКонтролирующегоОргана	= Отчеты.РегламентированноеУведомлениеИсключениеПроверки.ПолучитьНазваниеОргана(Объект);
		Если Не ЗначениеЗаполнено(КодКонтролирующегоОргана) Тогда 
			КодКонтролирующегоОргана = "-";
		КонецЕсли;

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

2) Вызов в безопасном режиме:
РегламентированнаяОтчетностьПереопределяемый.ИПИспользуетТрудНаемныхРаботников

Исключение
			ОбщегоНазначения.ВыполнитьВБезопасномРежиме("Параметры.ИПИспользуетТрудНаемныхРаботников = РегламентированнаяОтчетностьПереопределяемый.ИПИспользуетТрудНаемныхРаботников(Параметры.Организация)", ПараметрыБР); //BRO118
		КонецПопытки;

Т.е. вызывается несуществующая функция, но в безопасном режиме, поэтому ошибки не будет.



Механизм проверки позволяет выявить такие случаи как опечатки: в данном случае специалисты 1С забыли запятую при вызове:
БюджетнаяОтчетностьВыводСервер.Подключаемый_ПересчитатьПоКурсу


В том же модуле аналогичные вызовы, но уже С ЗАПЯТОЙ:




Также хочу привести пример, выявленной мной ошибки в релизе ERP 2.5.17 и исправленной в релизе 2.5.22 компанией 1С:
Общий модуль: ПроизводствоСерверПовтИсп
Функция: ПараметрыПроизводственногоПодразделения
Место вызова: Обработки\ПомощникИсправленияОстатковТоваровОрганизаций\Формы\ОсновнаяФорма
Текст вызова в 2.5.17: 

ПроизводствоСерверПовтИсп.ПараметрыПроизводственногоПодразделения()

Т.е. вызывается БЕЗ параметров.
А вот в объявлении функции есть 1 обязательный параметр – это Подразделение:

ПараметрыПроизводственногоПодразделения(Подразделение) Экспорт

А в релизе 2.5.22 они уже её исправили:

ПроизводствоСерверПовтИсп.ПараметрыПроизводственногоПодразделения(Подразделение)


Список конфигураций, на которых проверялся механизм:

  • ERP Управление предприятием 2 (2.5.22.106)
  • Комплексная автоматизация 2 (2.5.24.57)
  • Бухгалтерия предприятия, редакция 3.0 (3.0.184.16)
  • Управление торговлей, редакция 11 (11.5.22.109)
  • Управление нашей фирмой, редакция 3.0 (3.0.12.185)
  • Розница, редакция 3.0 (3.0.12.185)
  • Зарплата и управление персоналом, редакция 3.1 (3.1.35.48)
  • Документооборот КОРП, редакция 3.0 (3.0.18.19)


Механизм проверялся на технологической платформе 1С:
1С:Предприятие 8.3 (8.3.27.1719)

Операционная система:
Windows 10 Pro

Ограничения и необходимые системные требования :

  • Работает только на Windows, так как использует встроенную компоненту VBScript.RegExp
  • Скорость выгрузки файлов и обработки отбора процедур и функций зависит в том числе от конфигурации ПК, тестировалось на Ryzen 5 3600 + 16 GB + HDD, если у вас ПК слабее, скорее всего будет медленнее :) Сохранение основной конфигурации на HDD занимает от 5 до 30 минут, в зависимости от конфигурации.
  • Из проверки намеренно исключены стандартные методы и свойства объектов конфигурации, такие как "добавить", "вставить", "выгрузить", "количество" и так далее. Список исключений прописаны жестко в коде. Допускаю, что мог прописать не все исключения и в будущих релизах они могут встретиться.
  • Отбор процедур и функций занимает время. Развернутые (чистые) стандартные конфигурации, выгруженные конфигурации в файлы на жесткий диск и заполненные конфигурации "Проверка конфигураций" занимают место на жестком диске.
    • ERP = 120 минут / 16,5 Гб (чистая 4 Гб / файлы 8,5 Гб / заполненная 4 Гб)
    • КА = 115 минут / 14,9 Гб (чистая 3,9 Гб / файлы 7,1 Гб / заполненная 3,9 Гб)
    • Бухгалтерия = 80 минут / 10,6 Гб (чистая 2,2 Гб /   файлы 5,4 Гб / заполненная 3 Гб)
    • УНФ/Розница = 50 минут / 6,6 Гб (чистая 1,8 Гб / файлы 2,9 Гб / заполненная 1,9 Гб)
    • УТ = 40 минут / 5,8 Гб (чистая 2,3 Гб / файлы 1,9 Гб / заполненная 1,6 Гб)
    • ЗУП = 40 минут / 3,8 Гб (чистая 1 Гб / файлы 1,5 Гб / заполненная 1,3 Гб)
    • ДО = 15 минут / 2,0 Гб (чистая 700 Мб / файлы 600 Мб  / заполненная 700 Гб)
  • При повторном перезаполнении процедур и функций база прибавляет в весе, рекомендую выполнять "сжатие таблиц информационной базы" с опцией "тестирование и исправление", это поможет освободить место на диске.


Мой комментарий по поводу стоимости в 10 SM, дабы избежать вопросов "почему так дорого?"

На данную разработку и всё тестирование я потратил около 3х недель.
Естественно, больше времени ушло на тестирование и определение и исправление нюансов правильного отбора функций и процедур.
10 стартмани это по текущему порядка 150 рублей, т.е. около 1500 рублей, которые нужно еще умудриться вывести из этой системы. Это равносильно примерно 30 минутам работы программиста. Так что у меня ответ один, дорого - не качайте. Если понравилось - можете еще пару раз скачать )))
Если механизм будет востребован, тогда буду и дальше дорабатывать, возможно, появится еще несколько проверок.

Всем добра и обновлений без ошибок !

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.22.106
  • 1С:Комплексная автоматизация 2, релизы 2.5.24.57
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.184.16
  • Управление торговлей, редакция 11, релизы 11.5.22.109
  • Управление нашей фирмой, редакция 3.0, релизы 3.0.12.185
  • Розница, редакция 3.0, релизы 3.0.12.185
  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.35.48
  • Документооборот КОРП, редакция 3.0, релизы 3.0.18.19

Вступайте в нашу телеграмм-группу Инфостарт

Проверка поиск исправление код ошибок конфигурации расширений обновления метод объекта обнаружен недостаточно слишком много фактических параметров

См. также

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С v8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    3495    AlexeyPROSTO_1C    1    

14

Рефакторинг и качество кода Программист Россия Бесплатно (free)

GRASP-паттерны в 1С: меньше хаоса, больше архитектуры.

28.08.2025    9312    lapinio    46    

58

Обновление 1С Программист 1С v8.3 Бесплатно (free)

При обновлении конфигураций ЕРП/КА/УТ типовыми обновлениями можно получить ошибку  Превышен максимальный расход памяти сервера за один вызов". С чем это связано? Рассмотрим исправление этой ошибки.

18.08.2025    3551    iolko    10    

19

Рефакторинг и качество кода Программист Бесплатно (free)

Рассказываем о практике Code Review: ее целях, преимуществах и подводных камнях. Автор делает обзор существующих инструментов, а также подробно описывает собственную разработку для анализа правок и комфортного взаимодействия по замечаниям. Инструмент Git Code Review позволяет оставлять ручные комментарии с указанием важности и автоматически проверять код с помощью BSL Language Server. С его помощью можно не только детально изучать измененный код, но и отслеживать трансформацию структуры метаданных в наглядном формате. А главное – Code Review можно проводить как в 1С:Предприятии, так и через специализированный веб-интерфейс, интегрированный с GitHub и GitLab. Статья будет интересна и тем, кто уже практикует Code Review, и тем, кто к этому только подступается.

31.07.2025    5825    salexdv    9    

37

Рефакторинг и качество кода Обновление 1С Программист 1С v8.3 Бесплатно (free)

Проблемы и их решение из реальных проектов сложного обновления 1С, когда нужно было сохранить целостность данных, ускориться и уложиться в оцененные и утвержденные сроки.

02.07.2025    5395    1c-izh    9    

13

DevOps и автоматизация разработки Обновление 1С Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

Продолжаем делиться опытом ICL SOFT – в этой статье рассказываем о сложном обновлении сильно доработанной конфигурации "1С:ERP Управление холдингом с версии 3.1.8.15" до актуальной версии редакции 3.2. Публикации о сложных обновлениях, которые можно найти в открытых источниках, содержат мало подробной информации об использованных инструментах и решениях. Часто в них отсутствует информация о том, что находится под капотом этих решений. Будем рады, если наша статья окажется полезной

1 стартмани

01.07.2025    3038    vladimir_iclsoft    1    

22

Обновление 1С Программист Стажер 1С v8.3 Бесплатно (free)

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

04.06.2025    4627    1c-izh    13    

17

Рефакторинг и качество кода Программист 1С v8.3 Россия Бесплатно (free)

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

03.06.2025    3138    MC4RT    5    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Torin 878 17.10.25 13:52 Сейчас в теме
(0) не смотрел , не тестил , но за саму идею +
2. Sergik_D 23 17.10.25 14:31 Сейчас в теме
А конфигурация АПК не предоставляет такой функционал по проверке?
3. Xershi 1547 17.10.25 18:54 Сейчас в теме
В ИР есть штука как проверка конфигурации к обновлению. Там нажал кнопку и весь процесс пошёл!
Так на заметку. Вижу нужно конфигурацию сохранить в файл.
4. Suker86 43 17.10.25 20:15 Сейчас в теме
(1) Спасибо :)
(2) В конфигурации АПК я не нашел такого функционала.
(3) В ИР тоже не нашел. Насколько я знаю, код исполняемых модулей нельзя получить программно, остаётся только выгружать в файлы и анализировать.

PS Добавил в публикацию: "Ограничения и необходимые системные требования"
5. Xershi 1547 18.10.25 03:48 Сейчас в теме
(4) я имел ввиду, что не нужно указывать путь, все берет сразу из базы. Хотя и есть опция взять из файла.
Для отправки сообщения требуется регистрация/авторизация