3deb9120b6
Внешняя обработка-обёртка для ENTERPRISE /Execute с передачей пути к BSL в /C. Co-authored-by: Cursor <cursoragent@cursor.com>
86 lines
3.7 KiB
Plaintext
86 lines
3.7 KiB
Plaintext
|
|
&НаКлиенте
|
|
Процедура ПриОткрытии(Отказ)
|
|
|
|
Попытка
|
|
// /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(ТекстКода, ПутьКФайлу);
|
|
|
|
КонецПроцедуры
|