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

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)

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

17.03.2026    1650    IgorVasilyev    51    

26

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

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

06.02.2026    14718    Ibrogim    80    

50

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

Некоторые задачи можно и нужно делегировать ИИ, а простые задачи можно отдавать бесплатным моделям. В статье коротко рассказываю про расширение roocode для vscode, инструмент openrouter и реальную задачу по рефакторингу кода.

02.02.2026    13082    Ibrogim    54    

49

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

Костыль, рефакторинг или архитектура - делюсь своим видением того, как выбирать правильный инструмент под конкретную задачу. За годы в 1С я выработал алгоритм "трех зон", который помогает мне не только писать код, но и говорить с бизнесом на его языке. В статье рассказываю, когда временное решение оправдано, а когда оно становится миной замедленного действия. Никаких нотаций, только мой опыт принятия решений, где каждая строчка имеет цену. Буду рад, если моя система поможет вам по-новому взглянуть на привычную рутину.

19.12.2025    2662    GarriSoft    14    

17

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

История о легендарном отчете на 11 000 строк, копеечном расхождении и костыле 2014 года, который пережил все обновления. О том, как Василий спас квартальное закрытие, не тронув ни единой строчки кода монолита

15.12.2025    1972    GarriSoft    21    

20

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

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

30.10.2025    5730    user2100900    4    

19

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

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

28.10.2025    7036    vaillant    36    

16

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

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

24.10.2025    4140    1c-izh    6    

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