Как создать исполняемый EXE-файл средствами 1С или с использованием её синтаксиса

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование экосистемы OneScript (1Script)

Если ваша основная цель — писать код на привычном языке 1С, но получать на выходе EXE-файл, то использование OneScript является наиболее профессиональным решением. Проанализируем, что это такое. OneScript — это независимая реализация виртуальной машины для исполнения сценариев на языке 1С. Она не требует установленной платформы 1С и позволяет работать с файловой системой, сетью и COM-объектами.

Рассмотрим по шагам, как превратить скрипт в исполняемый файл:

  1. Устанавливаем OneScript на компьютер разработчика.
  2. Пишем код алгоритма в обычном текстовом файле с расширением .os.

Проанализируем пример простейшего скрипта 1С для OneScript:


Сообщить("Привет! Этот файл запущен без платформы 1С!");
ИмяФайла = "C:\temp\log.txt";
Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Текст.ЗаписатьСтроку("Дата запуска: " + ТекущаяДата());
Текст.Закрыть();

После сборки вы получите файл, который можно переносить на другие ПК, где даже не установлена 1С.

Метод 2. Компиляция C# кода "на лету" через 1С (CSC.exe)

Этот метод позволяет создавать настоящие, легковесные EXE-файлы, используя возможности операционной системы Windows. На любом компьютере с установленным .NET Framework (который всегда есть в современных Windows) присутствует компилятор csc.exe. Мы можем заставить 1С написать код на C#, а затем вызвать этот компилятор.

Выясним причину, почему это удобно: вам не нужно устанавливать Visual Studio, а итоговый файл будет весить всего несколько десятков килобайт. Рассмотрим алгоритм действий в 1С:

  1. Формируем текст программы на языке C#.
  2. Записываем этот текст в файл program.cs.
  3. Находим путь к компилятору (обычно он находится в папке C:\Windows\Microsoft.NET\Framework\v4.0.30319\).
  4. Запускаем компиляцию через команду ЗапуститьПриложение.

Посмотрим на пример кода в 1С, который генерирует EXE-файл:


ПутьККоду = "C:\MyExe\Program.cs";
ПутьКEXE = "C:\MyExe\Result.exe";

// Формируем текст на C#
ТекстКода = "using System; 
|namespace MyGame { 
|  class Program { 
|    static void Main() { 
|      Console.WriteLine(""EXE создан из 1С!""); 
|      Console.ReadLine(); 
|    } 
|  } 
|}";

// Сохраняем файл
Запись = Новый ТекстовыйДокумент;
Запись.УстановитьТекст(ТекстКода);
Запись.Записать(ПутьККоду, КодировкаТекста.ANSI);

// Запускаем компилятор
Компилятор = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe";
ПараметрыЗапуска = "/out:""" + ПутьКEXE + """ """ + ПутьККоду + """";
ЗапуститьПриложение(Компилятор + " " + ПараметрыЗапуска, , Истина);

В результате работы этого кода в папке появится полноценный Result.exe.

Метод 3. Создание самораспаковывающихся архивов (SFX)

Разберем ситуацию, когда вам нужно распространить полноценную обработку 1С так, чтобы пользователь думал, что запускает один EXE-файл. Это часто применяется для переносных инструментов. Для этого мы можем использовать возможности архиваторов 7-Zip или WinRAR.

Суть метода заключается в создании SFX-архива, который содержит:

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

Метод 4. Низкоуровневое формирование файла (Теоретический метод)

Для полноты картины рассмотрим способ, упомянутый в дискуссии на форуме — формирование EXE через БуферДвоичныхДанных. Технически любой EXE-файл — это набор байтов, соответствующих спецификации PE (Portable Executable).

Проанализируем этот процесс. Чтобы создать такой файл "чистыми" средствами 1С, вам пришлось бы:

  1. Создать объект БуферДвоичныхДанных.
  2. Побайтно записать заголовок DOS (MZ-заголовок).
  3. Записать таблицу секций и заголовок PE.
  4. Поместить скомпилированный машинный код (ассемблерный код) вашего алгоритма.
  5. Сохранить буфер в файл с расширением .exe.

Хотя 1С позволяет работать с двоичными данными через функции Записать и Прочитать, этот метод крайне трудоемок, так как требует глубоких знаний архитектуры процессора и структуры исполняемых файлов Windows. Однако, как факт, это подтверждает гибкость платформы 1С при работе с файловой системой.

Метод 5. 1С:Исполнитель (1C:Executor)

Нельзя обойти стороной официальный современный инструмент от компании 1С — 1С:Исполнитель. Это интерпретатор сценариев нового поколения. Хотя он не компилирует код в чистый бинарный EXE, он позволяет создавать файлы с расширением .script, которые запускаются в операционной системе как независимые программы (при наличии установленной среды исполнения).

Он поддерживает современный синтаксис (типизация, асинхронность) и идеально подходит для задач администрирования. Если ваша задача — уйти от запуска тяжелой конфигурации и справочников, 1С:Исполнитель станет отличной альтернативой попыткам создания EXE.

Подведение итогов

Мы рассмотрели различные подходы к формированию исполняемых файлов. Выясним, какой выбрать:

Таким образом, создание EXE-файла средствами 1С вполне реально, если правильно подобрать инструмент под конкретную техническую задачу.

← На главную