Подходы к рефакторингу платформеннозависимого кода

11.02.25

Разработка - Рефакторинг и качество кода

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

 

В предыдущих статьях, подготовленных по докладу Александра Кириллова, руководителя группы разработки компании «ИТ-Экспертиза», с которым он выступил на конференции INFOSTART TECH EVENT 2024, мы рассмотрели особенности работы информационных систем 1С под управлением Linux и анализ конфигурации 1С на наличие платформеннозависимого кода. В этом материале поговорим о рефакторинге такого кода и его подходах.

Итак, мы завершили наш аудит, проставили рекомендации и сформировали отчет; теперь можно приступать к рефакторингу платформеннозависимого кода и для этого есть три подхода:

1. Всю исходную функциональность, реализованную под Windows, оставляем, а реализацию под Linux делаем в отдельном блоке условия. Такой подход удобен при поэтапной миграции с Windows на Linux, когда нужно сохранить ранее работающую функциональность. Также это позволяет сократить время на тестирование определенной части, реализованной под Linux.

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

3. Смешанный подход, при котором основные возможности адаптируются универсально, а сложная или незамещаемая функциональность разделяется на ветки.

И если на первых проектах мы использовали преимущественно первый подход с постепенной миграцией, так как было важно сохранить работоспособность на Windows, то сейчас предпочитаем смешанный подход. Если можно предложить универсальное, компактное и изящное решение, которое будет корректно работать на всех операционных системах, мы применяем его.

 

Немного про COM

Отдельно нужно сказать о сложных для замещения механизмах, в частности, самом популярном – COM, который в ОС Windows позволяет широко использовать возможности сторонних приложений, что очень ценят разработчики.

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

 

 

На рисунке выше изображен алгоритм замещения вызовов COM-объектов. В первую очередь, важно убедиться, что функциональность действительно используется и ее требуется заместить.

Если ответ положительный, нужно проверить возможность реализации средствами платформы, например, чтение документа MS Excel можно реализовать через ТабличныйДокумент. Если платформенные средства подходят, стараемся использовать их; а если нет, пытаемся найти готовое решение под ОС Linux, имеющее API или возможность работы через командную строку, и используем ее. Если никаких других вариантов не остается, реализуем собственные компоненты по технологии NativeAPI.

Что касается особенностей разработки внешних компонентов под ОС Linux, на сайте 1С:ИТС есть содержательная статья с рекомендациями, поэтому затронем только основные моменты:

  • разработчик должен предусмотреть варианты для всех платформ, включая ARM и Эльбрус
  • компонент должен поддерживать работу на всех операционных системах из списка поддерживаемых 1С:Предприятием и иметь кроссплатформенную реализацию
  • разработчик должен корректно выполнять преобразование символьных данных типа WCHAR_T
  • используемые дополнительные модули нужно указывать в документации, а несистемные run-time библиотеки должны быть статически включены в компонент
  • при возникновении исключительных ситуаций, они должны быть перехвачены, обработаны в компоненте и переданы в 1С с помощью метода AddError.

 

Работа с офисными документами

Еще одна популярная задача при разработке на 1С – это работа с документами. Это может быть как загрузка данных из табличного документа, так и формирование различных выходных форм.

Так как в ОС Linux используются только открытые форматы офисных документов, чтобы иметь возможность их редактирования, то часть задач может быть выполнена средствами платформы. Например, чтение и запись табличных документов простой структуры.

Для формирования выходных форм текстовых документов (например, формата.docx) можно использовать модули БСП. Однако встречается функциональность, которую не получится реализовать средствами платформы. В этом случае используется следующий подход:

  • нужно сформировать шаблон документа (средствами платформы или подготовить и сохранить в макете)
  • редактировать как документ в формате OOXML, то есть, вносить изменения в нужные XML-документы внутри архива.

 

 

Для разбора и внесения изменений в документы в формате OOXML мы реализовали общие модули, позволяющие выполнять действия, которые невозможно осуществить средствами платформы и которые отсутствуют в БСП.

Например:

  • изменение стилей ячеек табличного документа
  • работа с формулами
  • защита документов

Чтобы минимизировать проходы по XML-файлам мы выбрали подход, аналогичный используемому для редактирования строк табличной части в БСП, а именно – собирается структура действий с параметрами, выполняется один проход документа и данные действия применяются последовательно.

 

Подключаемое оборудование

Подключаемое оборудование является важной частью процессов многих компаний. Но при переходе на ОС Linux можно столкнуться с проблемами при его использовании; например, не окажется драйверов давно привычного и хорошо знакомого оборудования. Но даже если все драйвера в наличии, взаимодействие с оборудованием в Linux может происходить иначе. Например, для сканирования в Linux используется протокол SANE, существенно отличающийся от используемого на Windows TWAIN.

 

 

Как правило, такие проблемы можно решить при наличии средств и ресурсов; например, подобрать новое оборудование и настроить взаимодействие с устройством по новым механизмам. В нашей практике была реализация подсистемы для работы с SANE, и нам удалось повторить все исходные бизнес-процессы по потоковому сканированию документов.

 

Какие могут возникнуть проблемы?

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

1. Приложения и компоненты, не имеющие реализацию под Linux или эксклюзивные разработки под заказчика, не поддерживающие кроссплатформенность

2. Оборудование, не имеющее драйверов под Linux

3. Использование возможностей Windows, не имеющих аналогов, например:

  • извлечение текста – Windows позволяет извлекать тексты из любых файлов (в т.ч. офисных документов) средствами системы, на Linux такая функциональность отсутствует и ее требуется реализовать для каждого вида документа
  • печать документов – Windows позволяет печатать документы (в том числе, офисные) средствами системы, в Linux есть возможность печати ограниченных форматов документов, среди которых отсутствуют офисные.

Если данная функциональность для заказчика является критичной, переход с ОС Windows на Linux как таковой может оказаться под угрозой. Поэтому при обнаружении таких мест нужно экстренно оповестить заказчика, тщательно все проанализировать и подобрать возможные альтернативы. В худшем случае нужно согласовать деградацию функциональности или отказаться от замещения.

 

Предыдущие статьи доступны по ссылкам:

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

Linux конфигурация рефакторинг СУБД платформа импортозамещение миграция кластер

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Кажется, что code-review с помощью искусственного интеллекта устроено просто: достаточно отправить код в LLM, задать промт и получить список замечаний. На практике такой подход быстро упирается в недетерминированность результата, неверную оценку критичности ошибок в 1С-коде и рекомендации, которые сложно отличить от полезных замечаний. Описываем гибридный подход к автокод-ревью: статический анализатор работает вместе с LLM, а база знаний из стандартов 1С превращается в набор машиночитаемых норм. Такая архитектура помогает снизить количество галлюцинаций, точнее определять критичность нарушений и постепенно развивать качество ревью через итеративное пополнение правил.

09.06.2026    1704    Repich    5    

9

Linux Технологический журнал 1С:Предприятие 8 Бесплатно (free)

Графическая утилита, сделанная по принципу Microsoft SQL Server Profiler, но для СУБД PostgreSQL Позволяет легко настраивать сбор планов запросов как средствами PostgreSQL, так и технологическим журналом 1С Предприятие с их последующей визуализацией. Простая, понятная для пользователей утилита, не требующая прав администратора для визуализации, и требующая их для настройки. Скомпилированная в исполняемый файл.

20.05.2026    1428    capitan    4    

9

Инструментарий разработчика Рефакторинг и качество кода Программист Руководитель проекта 1С:Предприятие 8 Абонемент ($m)

MetaVision for 1C PRO — профессиональная версия статического анализатора и визуализатора кода. Загружает выгрузки конфигураций, расширения и внешние файлы, за секунды строит графы функций, находит уязвимости безопасности и подсвечивает проблемы производительности. В арсенале: визуализация логики в виде графов условий, циклов, транзакций и вызовов, статический аудит безопасности с поиском RCE, SSRF, COM-инъекций и паролей в коде, выявление запросов в циклах и вложенных блокировок, полнотекстовый поиск по всем модулям, встроенный редактор с конвертером запросов и автоформатированием, а также честная статистика по объектам и функциям. Главное новшество PRO — до пяти конфигураций одновременно с мгновенным переключением, наложение до пяти расширений как в конфигураторе, анализ внешних файлов в единой связке с основной конфигурацией и пять тем оформления. Инструмент для тех, кто ведёт несколько проектов параллельно и хочет видеть полную картину в одном окне — быстро, наглядно и безопасно.

7 стартмани

19.05.2026    3271    35    KHoroshulinAV    7    

13

Запросы Рефакторинг и качество кода Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Есть запросы, которые сразу вызывают подозрение: десятки соединений, множество временных таблиц, объединения, группировки и длинный список условий. Но чаще проблемы прячутся в другом месте — в запросах, которые выглядят вполне приемлемо. Пара обращений через точку, отбор после виртуальной таблицы, РАЗЛИЧНЫЕ «чтобы убрать дубли», большой список в параметре, реквизит регистратора через составной тип — и вот уже на тестовой базе все летает, а в рабочей базе отчет открывается минуту. Разберу такие случаи из практики: не синтаксические ошибки, а именно запросы, которые формально нормальные, но на больших данных начинают вести себя плохо.

04.05.2026    2324    YA_2060655612    11    

9

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

Код в 1С редко начинает тормозить сразу. Намного чаще он долго выглядит нормальным, а проблемы проявляются позже — когда растут данные, пользователи и количество доработок. В статье разбираю типичные причины такой деградации: запросы в цикле, лишние ПолучитьОбъект(), тяжёлые формы и обработку “по одному”. Статья практическая: с примерами, типичными ошибками и понятными признаками того, что код уже плохо масштабируется.

21.04.2026    2297    YA_2060655612    6    

11

Инструментарий разработчика Рефакторинг и качество кода Программист 1С:Предприятие 8 Бесплатно (free)

Инструмент для тех, кто устал читать модули по 50 тысяч строк и искать ошибки глазами. MetaVision загружает выгруженные файлы конфигурации и за секунды строит графы функций, находит уязвимости и подсвечивает проблемы производительности. Ключевые возможности: Визуализация логики функций (графы условий, циклов, транзакций и вызовов). Статический аудит безопасности (RCE, SSRF, COM-инъекции, пароли в коде). Поиск проблем производительности (запросы в циклах, вложенные блокировки). Полнотекстовый поиск по всем модулям конфигурации. Статистика по объектам и функциям. Безопасность: Программа работает строго локально. Код вашей конфигурации не отправляется в интернет и не анализируется на сторонних серверах. Попробуйте MetaVision сегодня — узнайте, что скрывает ваш код.

20.04.2026    12563    1311    KHoroshulinAV    58    

94

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

ИИ действительно помогает команде ускориться: быстрее разбирать код, быстрее входить в сложные участки, быстрее запускать доработки. Проблема в том, что вместе со скоростью он может ускорять и другое — накопление скрытой сложности, рост цены изменений и потерю управляемости. В статье разбираю, почему первые успехи с ИИ так легко опьяняют, когда система начинает выставлять счёт и что нужно сделать, чтобы ускорение не превратилось в новый виток технического долга.

17.03.2026    2488    IgorVasilyev    54    

28

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

В статье рассказываю, как писать код 1С в VS Code с помощью бесплатных AI-моделей 🤖 Используем GLM-4.7 через Roocode + Cerebras (до 1 миллион токенов в день). Подключаем бесплатные MCP. Генерируем новый код и смотрим, как AI справляется с задачами.

06.02.2026    21383    Ibrogim    83    

52
Для отправки сообщения требуется регистрация/авторизация