Форматирование кода по стандартам 1с или BSL

Doc2000 Открыто

При использовании варианта формитирования по стандартам 1с

получаю ошибку

ScriptEngine.Machine.RuntimeException: {Модуль C:\TurboConf\apps\7794\CodeFormatter\CodeFormatter.os / Ошибка в строке: 78 / Недопустимое состояние потока чтения JSON в строке 2 позиции 29
({Модуль  / Ошибка в строке: -1 / Задано неправильное имя атрибута структуры '                    '}    
)}    
	Данные = ПрочитатьJSON(Чтение, Ложь);   в ScriptEngine.HostedScript.Library.Json.GlobalJsonFunctions.JsonReaderInternal.Read[T]()
   в lambda_method(Closure , GlobalJsonFunctions , IValue[] )
   в ScriptEngine.Machine.Contexts.GlobalContextBase`1.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
   в ScriptEngine.Machine.MachineInstance.CallContext(IRuntimeContextInstance instance, Int32 index, MethodInfo& methInfo, IValue[] argValues, Boolean asFunc)
   в ScriptEngine.Machine.MachineInstance.MethodCallImpl(Int32 arg, Boolean asFunc)
   в ScriptEngine.Machine.MachineInstance.CallFunc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
   в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
   в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)

при использовании форматирования BSL скачанного с маркета нарушается структура модуля, произвльно двигаются и удаляются строки. После пары нарушений, в сердцах удалил команду.

Хотелось бы получить однозначный и работающий форматтер кода.

Комментарии

tormozit
#1, 11 июля 2026 18:20

Есть еще форматер в ИР адаптере https://fastcode.im/Templates/8924


Doc2000
#2, 11 июля 2026 18:23

с установкой ИР иногда возникают проблемы.
Хочется получить один работающий вариант плагина.


bolsun
#3, ред. 11 июля 2026 19:36

(2) Doc2000, код скрипта на языке 1С открыт, можно попробовать исправить самостоятельно, раз автор скрипта Phoenix, не поддерживает его больше.


Doc2000
#4, 11 июля 2026 20:14

(3) bolsun,
в случае такого умения, как редактирование скрипта Phoenix, я конечно бы, сделал этот самостоятельно. Таких навыков у меня нет, увы.


bolsun
#5, ред. 14 июля 2026 14:53

(4) Doc2000, нужно заменить файл settings.json
в .\settings\CodeFormatter и перезапустить ТурбоКонф


Doc2000
#6, 14 июля 2026 15:50

заменил.
для форматирования какой скрипт использовать? bsl или форматировать по стандартам 1С?
может заново загрузить с маркета скрипт?


bolsun
#7, 14 июля 2026 15:57

(6) Doc2000, в заявке речь шла про ошибку скрипта "Форматировать модуль Стандарты 1С"

ScriptEngine.Machine.RuntimeException: {Модуль C:\TurboConf\apps\7794\CodeFormatter\CodeFormatter.os / Ошибка в строке: 78 / Недопустимое состояние потока чтения JSON в строке 2 позиции 29
({Модуль / Ошибка в строке: -1 / Задано неправильное имя атрибута структуры ' '}
)}

Эту ошибку я исправил.


Doc2000
#8, 14 июля 2026 16:03

ScriptEngine.Machine.ExternalSystemException: {Модуль C:\TurboConf\apps\7794\CodeFormatter\CodeFormatter.os / Ошибка в строке: 44 / Внешнее исключение (System.IO.DirectoryNotFoundException): Не удалось найти часть пути "C:\TurboConf\scripts\CodeFormatter\CoreCodeFormatter.os".}
Форматирование = ЗагрузитьСценарий("scripts/CodeFormatter/CoreCodeFormatter.os");
---> System.IO.DirectoryNotFoundException: Не удалось найти часть пути "C:\TurboConf\scripts\CodeFormatter\CoreCodeFormatter.os".
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
в ScriptEngine.Environment.FileBasedSource.GetCodeString()
в ScriptEngine.CompilerService.CompileInternal(ICodeSource source)
в ScriptEngine.CompilerService.Compile(ICodeSource source)
в ScriptEngine.Machine.Contexts.AttachedScriptsFactory.CompileModuleFromSource(CompilerService compiler, ICodeSource code, ExternalContextData externalContext)
в ScriptEngine.Machine.Contexts.AttachedScriptsFactory.LoadAndCreate(CompilerService compiler, ICodeSource code, ExternalContextData externalContext)
в ScriptEngine.HostedScript.Library.SystemGlobalContext.LoadScript(String path, StructureImpl externalContext)
в lambda_method(Closure , SystemGlobalContext , IValue[] )
в ScriptEngine.HostedScript.Library.SystemGlobalContext.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в ScriptEngine.Machine.MachineInstance.CallContext(IRuntimeContextInstance instance, Int32 index, MethodInfo& methInfo, IValue[] argValues, Boolean asFunc)
в ScriptEngine.Machine.MachineInstance.MethodCallImpl(Int32 arg, Boolean asFunc)
в ScriptEngine.Machine.MachineInstance.CallFunc(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)


bolsun
#9, 14 июля 2026 16:10

(8) Doc2000, с этими форматерами полный ад, почему то в публикации Форматирование кода - лежит BslFormatter


bolsun
#10, 14 июля 2026 16:16

(8) Doc2000, попробуй выполнить проверку обновлений и должна быть новая версия скрипта, нужно обновить.


bolsun
#11, ред. 14 июля 2026 17:01

(10) не поможет, скрипт к тому же не поддерживает автоматическую установку


bolsun
#12, 14 июля 2026 16:32

(11) исправил и это, нужно обновить скрипт, через автоматическое обновление. Но возможна ошибка "скрипт уже добавлен" нужно удалить папку CodeFormatter внутри apps\7794\


bolsun
#13, 14 июля 2026 16:35

(12) добавил совместимость со старой структурой скипта, чтобы не было ошибки при обновлении.


Doc2000
#14, ред. 14 июля 2026 16:48

скачал

код до форматирования

Код после форматирования

ошибок не было, это отлично, молодцы! Отступы поставил, каноничное написание надеюсь подправите.


bolsun
#15, 14 июля 2026 17:01

добавил также автоматическое исправление ошибки, если файл настроек уже был создан до этого в неправильной кодировке.


bolsun
#16, 14 июля 2026 17:03

(14) Doc2000, каноничное описание можно дополнить самому в файл etalons.txt
затем выложить файл, я обновлю.


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера