Вопрос о создании независимого исполняемого файла (EXE) средствами 1С часто возникает у разработчиков, когда необходимо реализовать небольшую утилиту, системный скрипт или алгоритм, который должен работать без запуска тяжелой платформы «1С:Предприятие». В рамках данной статьи мы проанализируем ситуацию и разберем несколько проверенных способов реализации этой задачи: от использования альтернативных движков до прямой компиляции кода через встроенные инструменты операционной системы.
Если ваша основная цель — писать код на привычном языке 1С, но получать на выходе EXE-файл, то использование OneScript является наиболее профессиональным решением. Проанализируем, что это такое. OneScript — это независимая реализация виртуальной машины для исполнения сценариев на языке 1С. Она не требует установленной платформы 1С и позволяет работать с файловой системой, сетью и COM-объектами.
Рассмотрим по шагам, как превратить скрипт в исполняемый файл:
.os.Проанализируем пример простейшего скрипта 1С для OneScript:
Сообщить("Привет! Этот файл запущен без платформы 1С!");
ИмяФайла = "C:\temp\log.txt";
Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Текст.ЗаписатьСтроку("Дата запуска: " + ТекущаяДата());
Текст.Закрыть();
После сборки вы получите файл, который можно переносить на другие ПК, где даже не установлена 1С.
Этот метод позволяет создавать настоящие, легковесные EXE-файлы, используя возможности операционной системы Windows. На любом компьютере с установленным .NET Framework (который всегда есть в современных Windows) присутствует компилятор csc.exe. Мы можем заставить 1С написать код на C#, а затем вызвать этот компилятор.
Выясним причину, почему это удобно: вам не нужно устанавливать Visual Studio, а итоговый файл будет весить всего несколько десятков килобайт. Рассмотрим алгоритм действий в 1С:
program.cs.C:\Windows\Microsoft.NET\Framework\v4.0.30319\).ЗапуститьПриложение.Посмотрим на пример кода в 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.
Разберем ситуацию, когда вам нужно распространить полноценную обработку 1С так, чтобы пользователь думал, что запускает один EXE-файл. Это часто применяется для переносных инструментов. Для этого мы можем использовать возможности архиваторов 7-Zip или WinRAR.
Суть метода заключается в создании SFX-архива, который содержит:
.bat или .cmd), который запускает платформу с нужными ключами.В настройках SFX-архива указывается команда автоматического запуска батника после распаковки. Пользователь видит один файл, запускает его, работает в 1С, а при закрытии временные файлы удаляются. Это отличный способ упаковать решение "всё в одном".
Для полноты картины рассмотрим способ, упомянутый в дискуссии на форуме — формирование EXE через БуферДвоичныхДанных. Технически любой EXE-файл — это набор байтов, соответствующих спецификации PE (Portable Executable).
Проанализируем этот процесс. Чтобы создать такой файл "чистыми" средствами 1С, вам пришлось бы:
БуферДвоичныхДанных..exe.Хотя 1С позволяет работать с двоичными данными через функции Записать и Прочитать, этот метод крайне трудоемок, так как требует глубоких знаний архитектуры процессора и структуры исполняемых файлов Windows. Однако, как факт, это подтверждает гибкость платформы 1С при работе с файловой системой.
Нельзя обойти стороной официальный современный инструмент от компании 1С — 1С:Исполнитель. Это интерпретатор сценариев нового поколения. Хотя он не компилирует код в чистый бинарный EXE, он позволяет создавать файлы с расширением .script, которые запускаются в операционной системе как независимые программы (при наличии установленной среды исполнения).
Он поддерживает современный синтаксис (типизация, асинхронность) и идеально подходит для задач администрирования. Если ваша задача — уйти от запуска тяжелой конфигурации и справочников, 1С:Исполнитель станет отличной альтернативой попыткам создания EXE.
Мы рассмотрели различные подходы к формированию исполняемых файлов. Выясним, какой выбрать:
Таким образом, создание EXE-файла средствами 1С вполне реально, если правильно подобрать инструмент под конкретную техническую задачу.