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

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 конфигурация рефакторинг СУБД платформа импортозамещение миграция кластер

См. также

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

ИИ для код-ревью – не просто модный тренд, а реальный инструмент, который уже помогает разработчикам экономить время и повышать качество кода. В статье разбираемся, как запустить локальную LLM на базе Ollama, подключить ее к Git через Webhook и Python-скрипт, а также какие параметры модели отвечают за точность и галлюцинации. Делимся схемой работы, настройками и результатами тестирования, доказывая, что автоматизированное код-ревью действительно может работать – даже без космического бюджета.

30.10.2025    3054    user2100900    3    

15

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

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

28.10.2025    3407    vaillant    35    

13

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

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

24.10.2025    1886    1c-izh    6    

6

Обновление 1С Рефакторинг и качество кода 1С v8.3 Абонемент ($m)

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

10 стартмани

17.10.2025    4584    21    Suker86    12    

19

Linux Системный администратор Бесплатно (free)

Есть великолепная инструкция по сборке постгреса из сорцов от Алмаза Шарипова https://almaz-sharipov.ru/article/linux-1c/pg1c, низкий ему поклон. Но с июня 2025 у 1С что-то внутре cломалось: ейные девопсы затупили и вендор начал выкладывать архив с битым файлом dsc.

10.10.2025    2077    Cocky_Idiot    7    

9

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

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

23.09.2025    5299    AlexeyPROSTO_1C    1    

15

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

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

28.08.2025    10659    lapinio    46    

58

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

Недавно наша команда завершила разработку (на несколько тысяч часов) на проекте по внедрению ERP. Заказчик на этом проекте настоял на том, чтобы вся разработка была выполнена в расширениях. Расскажу, с чем столкнулись на 24-25-ых версиях платформы и какие выводы сделали.

19.08.2025    3868    ovetgana    0    

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