Не найден файл внешней компоненты
добрый день
1. Есть УТ ред 11.3.3. При печати этикеток выдает ошибку "не найден файл внешней компоненты" файл во вложении
2. Работа устроена так. База располагается на сервере 1С Предприятии
3. Компьютер с которого отправляют на печать этикетку работает через тонкий клиент, к нему же и подключен принтер этикеток
4. Все работало до вчерашнего дня, пока не вышла ошибка при работе с базой, и всех выкинуло из программы.
5. Причина - нехватка свободного места на диске, на сервере.
1. Есть УТ ред 11.3.3. При печати этикеток выдает ошибку "не найден файл внешней компоненты" файл во вложении
2. Работа устроена так. База располагается на сервере 1С Предприятии
3. Компьютер с которого отправляют на печать этикетку работает через тонкий клиент, к нему же и подключен принтер этикеток
4. Все работало до вчерашнего дня, пока не вышла ошибка при работе с базой, и всех выкинуло из программы.
5. Причина - нехватка свободного места на диске, на сервере.
Прикрепленные файлы:
По теме из базы знаний
- 1C Native компонента сканирования на вирусы CLAMAV1C
- Решение "Не найден файл внешней компоненты" для ЗУП 3.1
- Отключение проверки компоненты штрихкода при запуске конфигурации Бухгалтерия предприятия, редакция 3.0
- Python в 1С: создаем NativeAPI-компоненту для выполнения скриптов без глубоких знаний C++
- Программная конвертация отчетов 1С в графический формат без установки дополнительных компонентов
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
нужно понять что за файл внешней компоненты, как называется, где его искать, может просто его удалили.
На клиентской машине 1С barcode даже не был установлен, и печатал себе без проблем. Но установил по новой. И не помогло
а макет ценника открывается для редактирования?
запустить отладку и поставить галочку на "останавливаться на ошибке"
запустить отладку и поставить галочку на "останавливаться на ошибке"
вот что выяснил:
1. Компонента использует библиотеку ImageMagick, разработанную ImageMagick Studio LLC. вот ссылка -
2.
Вот тут в строке - вываливается в ошибку
3. А это проходит успешно
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
Вопрос почему?
1. Компонента использует библиотеку ImageMagick, разработанную ImageMagick Studio LLC. вот ссылка -
2.
Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
// Создадим объект внешней компоненты.
Если ПодключениеВыполнено Тогда
ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");
Иначе
Возврат Неопределено;
КонецЕсли; ПоказатьВот тут в строке -
"ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");"3. А это проходит успешно
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
Вопрос почему?
(10) Достаточно перезагрузить Сервис 1С, не обязательно весь сервер.
Проблема возникает при удалении / блокировании временного файла на котором отрабатывала внешняя компонента, можно пойти способом (12), можно решить проще... Получитьимявременногофайла(), и использовать его имя в качестве адреса.
Вообще по штрихкодам, всюду где не нужна картинка, а можно обойтись шрифтом штрихкода - лучше обойтись шрифтом (imho).
Проблема возникает при удалении / блокировании временного файла на котором отрабатывала внешняя компонента, можно пойти способом (12), можно решить проще... Получитьимявременногофайла(), и использовать его имя в качестве адреса.
Вообще по штрихкодам, всюду где не нужна картинка, а можно обойтись шрифтом штрихкода - лучше обойтись шрифтом (imho).
не , это не решение вопроса, у меня такая же проблема с этой компонентой ... час поработает , а потом валится перезапуск сервера, изменение чего то в конфе, а потом ее обновление , динамически или нет , решает проблему помогает ненадолго, но это не вариант .
в общем я сделал следующий обходной трюк , может быть кому поможет, у меня пока работает, но на 100% я не уверен.
Т.О я регистрирую компоненту каждый раз под новым именем , и надо помнить, что имя компоненты не может начинаться с цифры, в следствии чего и есть код который отсеивает такие неприятности.
МакетКомпаненты=ПолучитьМакет("КомпонентаПечатиШтрихкодов");
Адрес=ПоместитьВоВременноеХранилище(МакетКомпаненты);
ИмяКомпоненты=ПолучитьИмяКомпоненты();
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(Адрес, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
Если ПодключениеВыполнено Тогда
Попытка
КомпонентШК = Новый("AddIn."+ИмяКомпоненты+".Barcode");
Исключение
КомпонентШК= Неопределено;
Возврат;
КонецПопытки;
Иначе
Возврат;
КонецЕсли;
ПоказатьФункция ПолучитьИмяКомпоненты()
ИмяКомпоненты=Строка(новый УникальныйИдентификатор);
ИмяКомпоненты=СтрЗаменить(ИмяКомпоненты,"-","");
ПервыйСимвол= Лев(ИмяКомпоненты,1);
Если ПервыйСимвол="1" или
ПервыйСимвол="2" или
ПервыйСимвол ="3" или
ПервыйСимвол="4" или
ПервыйСимвол="5" или
ПервыйСимвол ="6" или
ПервыйСимвол="7" или
ПервыйСимвол="8" или
ПервыйСимвол ="9" или
ПервыйСимвол ="0" тогда
ИмяКомпоненты=ПолучитьИмяКомпоненты();
КонецЕсли;
Возврат ИмяКомпоненты;
КонецФункции
ПоказатьТ.О я регистрирую компоненту каждый раз под новым именем , и надо помнить, что имя компоненты не может начинаться с цифры, в следствии чего и есть код который отсеивает такие неприятности.
Отличное решение.
Только вместо функции ПолучитьИмяКомпоненты() можно написать 1 строку:
Только вместо функции ПолучитьИмяКомпоненты() можно написать 1 строку:
ИмяКомпоненты = "A" + СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
Такая же ошибка всплыла при переходе с 8.3.6 на 8.3.11.2954 с одновременным переездом СЭД 1.4 на 2.0.19.
То лавинообразно появляется у всех юзеров, то так же внезапно у всех работает нормально.
Решение пока не нашел.
То лавинообразно появляется у всех юзеров, то так же внезапно у всех работает нормально.
Решение пока не нашел.
Обновили платфору.
Платформа: 1С:Предприятие 8.3 (8.3.13.1690)
Конфигурация: Документооборот 8 КОРП, редакция 2.1 (2.1.12.2)
Началось такое же. Причем какое-то время всё работало, а потом внезапно началось:
{Справочник.ВнутренниеДокументы.Форма.ФормаЭлемента.Форма(2399)}: Ошибка при вызове метода контекста (ПолучитьДанныеДляВставкиШтрихкодаВОбъект)
ДанныеОШтрихкоде = ШтрихкодированиеСервер.ПолучитьДанныеДляВставкиШтрихкодаВОбъект(Приемник);
по причине:
Не найден файл внешней компоненты
Штрихкодирование вообще не используем.
Платформа: 1С:Предприятие 8.3 (8.3.13.1690)
Конфигурация: Документооборот 8 КОРП, редакция 2.1 (2.1.12.2)
Началось такое же. Причем какое-то время всё работало, а потом внезапно началось:
{Справочник.ВнутренниеДокументы.Форма.ФормаЭлемента.Форма(2399)}: Ошибка при вызове метода контекста (ПолучитьДанныеДляВставкиШтрихкодаВОбъект)
ДанныеОШтрихкоде = ШтрихкодированиеСервер.ПолучитьДанныеДляВставкиШтрихкодаВОбъект(Приемник);
по причине:
Не найден файл внешней компоненты
Штрихкодирование вообще не используем.
UPD
На тестовой базе нет таких ошибок, работают на одном серваке, в тест залили уже после образования ошибок.
На тестовой базе нет таких ошибок, работают на одном серваке, в тест залили уже после образования ошибок.
В последних релизах различных типовых конфигураций штрих-код формируется с помощью общего макета метаданных КомпонентаПечатиШтрихкодов, а также вспомогательных функций и процедур: ПодключитьВнешнююКомпонентуПечатиШтрихкода, ОпределитьТипШтрихкода, ПолучитьКартинкуШтрихкода и т.п.. Файл установки компоненты доступен по подписке на сайте ИТС . При возникновении ошибки 1CBarCode: "Ошибка внешней компоненты" некорректное значение свойства "Шрифт" - необходимо обновить 1CBarCode.exe до последней версии. Работа с QR-кодом осуществляется с помощью функций в модуле объекта ПолучитьГенераторQRкода() и ПолучитьQRкод(). Типовая печать QR-кода в 1С 8.3 реализована на уровне Библиотеки стандартных подсистем, которая соответствует национальному стандарту штрихкодирования платежных реквизитов и доступен при подписке на ИТС.
Появилась аналогичная проблема: на сервере перестала подключаться КомпонентаПечатиШтрихкодов и стало выскакивать ошибка "Не найден файл внешней компоненты".
Если подключать компоненту на клиенте в толстом клиенте - то все хорошо, а на сервере нет.
Перезагрузка сервера - помогает не на долго.
При подключение компоненты в папку C:\Windows\Temp платформа сохраняет временный файл этой компоненты.
И скорее всего этот файл кто то удаляет - поэтому и появляется эта ошибка.
Выяснил, что у сисадминов есть скрипты, которые чистят папку Temp на компьютерах.
Но! так же заметил, что в папке Temp есть огромная папка, в которую пишется технологический журнал сервера 1С. Как оказалось, за день до проявления проблемы - один из коллег включил технологический журнал. И в этой папке за 1 час добавлялся файл на 8гб, а за позапрошлый час файл удалялся.
Технологический журнал выключил.
Сисадминов попросил не чистить эту папку на серверах.
И все заработало.
Думаю, что проблема была в включение технологического журнала.
Возможно глюк, а возможно он стал писаться в папку Temp, а сама Windows решила чистить эту папку.
Но и возможно сисадмины своими скриптами чистили.
Если подключать компоненту на клиенте в толстом клиенте - то все хорошо, а на сервере нет.
Перезагрузка сервера - помогает не на долго.
При подключение компоненты в папку C:\Windows\Temp платформа сохраняет временный файл этой компоненты.
И скорее всего этот файл кто то удаляет - поэтому и появляется эта ошибка.
Выяснил, что у сисадминов есть скрипты, которые чистят папку Temp на компьютерах.
Но! так же заметил, что в папке Temp есть огромная папка, в которую пишется технологический журнал сервера 1С. Как оказалось, за день до проявления проблемы - один из коллег включил технологический журнал. И в этой папке за 1 час добавлялся файл на 8гб, а за позапрошлый час файл удалялся.
Технологический журнал выключил.
Сисадминов попросил не чистить эту папку на серверах.
И все заработало.
Думаю, что проблема была в включение технологического журнала.
Возможно глюк, а возможно он стал писаться в папку Temp, а сама Windows решила чистить эту папку.
Но и возможно сисадмины своими скриптами чистили.
Мы мучались с этой ошибкой около 3х месяцев, перезапускали службу агента сервера сначала раз в день, потом 2 раза, в последнюю неделю перезапуск требовался каждые 2 часа. Ошибка возникала на разных компонентах, лицензирования, склонения фио и пр. Пробовали обновлять платформу, обновлять компоненты, использовать другие компоненты.
По заверениям администратора, папка temp была добавлена во все исключения, не очищалась, не было ограничений по доступу, технологический журнал был выключен.
Помогла нам только смена папки временных файлов на другую. Просто поменяли папку временных файлов у пользователя под которым запускается служба агента сервера, и вот уже сутки вылетов нет. На двух серверах, между собой никак не связанных.
По заверениям администратора, папка temp была добавлена во все исключения, не очищалась, не было ограничений по доступу, технологический журнал был выключен.
Помогла нам только смена папки временных файлов на другую. Просто поменяли папку временных файлов у пользователя под которым запускается служба агента сервера, и вот уже сутки вылетов нет. На двух серверах, между собой никак не связанных.
Причина в том, что при первом вызове:
в каталоге пользователя, под которым работает служба сервера, создается временный файл с библиотекой компоненты. И это файл "живет" до тех, пока все сеансы, которые его использовали, не будут завершены. А должен был "жить" до тех пор, пока не будет завершен сам процесс с сеансами (это и есть глюк некоторых версий платформы).
Обычно это происходит когда в настройках конфигуратора устанавливают время завершения спящих сеансов пользователей значительно меньше 86400.
Лечить можно либо вернув время завершения спящих сеансов в исходное, либо так:
Вместо:
где XX это разрядность
Надо так:
BarCodeXX.dll взять из макета обработки. Имя приваиваете любое. Помещать в каталог
"C:\Users\ПОЛЬЗОВАТЕЛЬ_СЛУЖБЫ\AppData\Roaming\1C\1cv8\ExtCompT"
подкаталог "DLL" можно не создавать, но для напоминания себе самому лучше создать и добавить текстовый файл с комментарием о чем и для чего это сделано.
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);в каталоге пользователя, под которым работает служба сервера, создается временный файл с библиотекой компоненты. И это файл "живет" до тех, пока все сеансы, которые его использовали, не будут завершены. А должен был "жить" до тех пор, пока не будет завершен сам процесс с сеансами (это и есть глюк некоторых версий платформы).
Обычно это происходит когда в настройках конфигуратора устанавливают время завершения спящих сеансов пользователей значительно меньше 86400.
Лечить можно либо вернув время завершения спящих сеансов в исходное, либо так:
Вместо:
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("Обработка.ПечатьЭтикетокИЦенников.Макет.КомпонентаПечатиШтрихкодовWindowsXX", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);где XX это разрядность
Надо так:
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("C:\Users\ПОЛЬЗОВАТЕЛЬ_СЛУЖБЫ\AppData\Roaming\1C\1cv8\ExtCompT\DLL\BarCodeXX.dll", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);BarCodeXX.dll взять из макета обработки. Имя приваиваете любое. Помещать в каталог
"C:\Users\ПОЛЬЗОВАТЕЛЬ_СЛУЖБЫ\AppData\Roaming\1C\1cv8\ExtCompT"
подкаталог "DLL" можно не создавать, но для напоминания себе самому лучше создать и добавить текстовый файл с комментарием о чем и для чего это сделано.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
