&НаКлиенте Процедура ПриОткрытии(Отказ) Попытка // /C из командной строки; файл читается на клиенте (локальный путь Mac/Windows). ПутьКФайлу = НормализоватьПутьКлиент(ПараметрЗапуска); Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда ПутьКФайлу = ПрочитатьПутьМаркераКлиент(); КонецЕсли; ТекстКода = ПрочитатьФайлКлиент(ПутьКФайлу); ВыполнитьТекстBSLНаСервере(ТекстКода, ПутьКФайлу); Исключение // В пакетном режиме — в лог /Out, без модального окна клиента. Сообщить("ОШИБКА: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Закрыть(); ЗавершитьРаботуСистемы(Ложь); КонецПроцедуры &НаКлиенте Функция НормализоватьПутьКлиент(ПутьКФайлу) Результат = СокрЛП(ПутьКФайлу); Если СтрДлина(Результат) >= 2 И Лев(Результат, 1) = """" И Прав(Результат, 1) = """" Тогда Результат = Сред(Результат, 2, СтрДлина(Результат) - 2); КонецЕсли; Возврат Результат; КонецФункции &НаКлиенте Функция ПрочитатьПутьМаркераКлиент() ПутьМаркера = ПутьМаркераЗапускаКлиент(); Файл = Новый Файл(ПутьМаркера); Если НЕ Файл.Существует() Тогда Возврат ""; КонецЕсли; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ПутьМаркера, КодировкаТекста.UTF8); Возврат НормализоватьПутьКлиент(ТекстовыйДокумент.ПолучитьТекст()); КонецФункции &НаКлиенте Функция ПутьМаркераЗапускаКлиент() Возврат "/Users/kma/projects/crm3-26/data_transfer/crm3-26/.run_bsl_path.txt"; КонецФункции &НаКлиенте Функция ПрочитатьФайлКлиент(ПутьКФайлу) Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда ВызватьИсключение "Не задан путь к BSL-файлу (/C или .run_bsl_path.txt)"; КонецЕсли; Файл = Новый Файл(ПутьКФайлу); Если НЕ Файл.Существует() Тогда ВызватьИсключение "BSL-файл не найден (клиент): " + ПутьКФайлу; КонецЕсли; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ПутьКФайлу, КодировкаТекста.UTF8); Возврат ТекстовыйДокумент.ПолучитьТекст(); КонецФункции &НаСервере Процедура ВыполнитьТекстBSLНаСервере(Знач ТекстКода, Знач ПутьКФайлу) ОбъектОбработки = РеквизитФормыВЗначение("Объект"); ОбъектОбработки.ВыполнитьТекстBSL(ТекстКода, ПутьКФайлу); КонецПроцедуры