![]() |
|
1С сервер на CentOS. Выполнение команды системы. | ☑ | ||
---|---|---|---|---|
0
Oldman06
05.10.20
✎
16:09
|
Приветствую. В конфигурацию интегрирована система МДЛП. Запросы к системе МДЛП идентифицируются уникальными идентификаторами, генерируемыми отдельной утилитой "uuidgen". Соответственно, вызывается команда системы с флагом дождаться окончания выполнения и вернуть поток вывода. Какое-то время это работает, потом перестает. Возвращается пустая строка. При этом в /tmp временный файл с потоком вывода создается и нем есть сгенерированный UUID. Такое ощущение, что через какое-то время 1с перестает дожидаться выполнения команды и возвращает пустое значение. Помогает перезагрузка сервиса 1с. В чем может быть дело?
|
|||
1
Garykom
гуру
05.10.20
✎
16:16
|
(0) Перепиши код на убирание к чертям утилиты "uuidgen"
|
|||
2
Oldman06
05.10.20
✎
16:29
|
(1) Кстати, в коде проверяется, что если платформа Windows, то используется просто Строка(Новый УникальныйИдентификатор), а если линукс, то вот эта вот утилита. Подсистема эта написана 1с. По какой-то причине они так сделали же.
|
|||
3
Oldman06
05.10.20
✎
17:38
|
Вообще, проблема похоже, более глобальная. Перестает подключатся компонента печати штрихкодов, перестает работать конвертирование JPG в PDF с помощью утилиты "convert". Получается, какая-то проблема с временными файлами. Помогает только перезагрузка сервиса 1С. Куда посмотреть, как по-тестировать?
|
|||
4
spiller26
05.10.20
✎
18:04
|
(0) Поставь задержку, несколько секунд. Я так обходил.
|
|||
5
spiller26
05.10.20
✎
18:08
|
(0) вот мой кусок
// Извлечь текст из файла Doc и возвратить его в виде строки. Функция ИзвлечьТекстИзФайлаDoc(ПутьКФайлу, Отказ) ИзвлеченныйТекст = ""; #Если Не ВебКлиент Тогда ВременныйDocФайл = ПолучитьИмяВременногоФайла("doc"); КопироватьФайл(ПутьКФайлу, ВременныйDocФайл); ВременныйТексДокумент = ПолучитьИмяВременногоФайла(); ТекстДокумента = новый ТекстовыйДокумент; Попытка СтрокаКонсольнойКоманды = "antiword " + ВременныйDocФайл + " > " + ВременныйТексДокумент; ЗапуститьПриложение(СтрокаКонсольнойКоманды); Sleep(2); Исключение Отказ = Истина; ИзвлеченныйТекст = ""; КонецПопытки; Попытка ТекстДокумента.Прочитать(ВременныйТексДокумент); ИзвлеченныйТекст = ТекстДокумента.ПолучитьТекст(); Исключение Отказ = Истина; ИзвлеченныйТекст = ""; КонецПопытки; #КонецЕсли УдалитьФайлы(ВременныйDocФайл); УдалитьФайлы(ВременныйТексДокумент); Возврат ИзвлеченныйТекст; КонецФункции // Извлечь текст из файла XLS и возвратить его в виде строки. Функция ИзвлечьТекстИзФайлаXLS(ПутьКФайлу, Отказ) ИзвлеченныйТекст = ""; #Если Не ВебКлиент Тогда ВременныйXLSФайл = ПолучитьИмяВременногоФайла("xls"); КопироватьФайл(ПутьКФайлу, ВременныйXLSФайл); ВременныйТексДокумент = ПолучитьИмяВременногоФайла(); ТабличныйДокумент = Новый ТабличныйДокумент; ТекстДокумента = новый ТекстовыйДокумент; Попытка ТабличныйДокумент.Прочитать(ВременныйXLSФайл, СпособЧтенияЗначенийТабличногоДокумента.Текст); // СпособЧтенияЗначенийТабличногоДокумента - новый параметр платформы 8.3.6. Второе значение "Текст". ТабличныйДокумент.Записать(ВременныйТексДокумент, ТипФайлаТабличногоДокумента.TXT); ТекстДокумента.Прочитать(ВременныйТексДокумент); ИзвлеченныйТекст = ТекстДокумента.ПолучитьТекст(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; УдалитьФайлы(ВременныйXLSФайл); УдалитьФайлы(ВременныйТексДокумент); #КонецЕсли Возврат ИзвлеченныйТекст; КонецФункции //задержка Процедура Sleep(Сек) Экспорт Нач=ТекущаяДата(); Пока ТекущаяДата() - Нач < Сек Цикл КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |