26.05.19 — 18:59
Добрый день. При обмене данными между 1с и битриксом, постоянно вываливается ошибка:
{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(1516)}: Ошибка при вызове конструктора (ЧтениеТекста)
ЧтениеТекста = Новый ЧтениеТекста(ИмяФайлаОтвета, лКодировка);
по причине:
Ошибка совместного доступа к файлу ‘/home/usr1cv8/tmp/v8_mWVbFi_10c8.tmp’
Конфигурация 11 (11.3.4.103), платформа 8.3.10.2505, модуль битрикса 7.0.1.6. От версии модуля битрикса не зависит. 1с клиент-сервер, сервер установлен на debian. В прочем, когда-то он был и на windows эта ошибка тоже присутствовала, но обмен проходил без ошибок 1 раз из 5 примерно. Сейчас проходит так же, 1 раз и 5. Может упасть через 5 минут, может через час, но падает в любом случае. В чём проблема может-быть?
Сервер 1c запускается от юзера usr1cv8, права на папку /opt/1C ему даны, он владелец, я даже дал ему права на tmp. Поменял umask на 0002. Я уже не знаю куда копать, помогите пожалуйста!!!!
1 — 26.05.19 — 19:01
Во время падения обмена с этой ошибкой, в tmp файл этот, который указан в ошибке присутствует, там простой ответ сервера «success»
2 — 26.05.19 — 19:08
В последнее время заметил такое. Ребут сервера, делаю обмен — проходит нормально, повторный обмен и последующие уже падают в ошибку.
3 — 27.05.19 — 08:03
Возьми унлокер и посмотри, кто держит этот файл
4 — 27.05.19 — 08:15
(0) Вы реально уже полгода с этой багой сидите?
https://forum.infostart.ru/forum86/topic204814/
Не проще уже нанять специалиста, за денежку естественно.
5 — 27.05.19 — 08:16
https://toster.ru/q/544116
упс Вопрос задан 06 июля 2018
6 — 27.05.19 — 08:17
7 — 27.05.19 — 08:17
8 — 27.05.19 — 08:20
Да 1С и держит этот файл, прост времени на завершение походу не хватает и он следом обмен стартует.
9 — 27.05.19 — 08:27
В смысле периодичность обмена слишком малый интервал и стартует новое фоновое когда еще старое не закончило?
10 — 27.05.19 — 08:33
С вероятностью 146%
11 — 27.05.19 — 10:06
На тостере и лансере не я писал=)
Посмотрел я код модуля, там чёт таймаутов не нашёл. Почему же у других всё успевает?
12 — 27.05.19 — 10:21
13 — 27.05.19 — 10:29
Автообмен я выключил давно, стартую в ручном режиме(
14 — 27.05.19 — 10:30
Сервер хороший на ssd, чего он там не успевает блин
15 — 27.05.19 — 10:36
Регламентные операции я тоже вырубил, касательные обмена. Обмен идёт, но в какой-то момент, совершенно рандомно он падает. И падает не на больших данных, а именно на ответах сервера в 1кб и единственной строчкой «success», при чём он может перед падением этот «success» обработать 10 раз, а на 11 упасть
16 — 27.05.19 — 11:00
Во время старта обмена, в сеансах 2 сеанса, один от сервера фоновое задание (сам обмен) второй от меня (клиента)
17 — 27.05.19 — 11:01
А ты разбирался как этот обмен то устроен?
Эту проблему решить можно но бесплатно вряд ли кто будет ковыряться, так что или тем кто продал в поддержку или нанимайте за денежку.
18 — 27.05.19 — 11:03
Да принцип простой. Начало обмена>аторизация на сайте>ответ от сайта>1с начинает выгружать данные и отправлять на сайт>сайт их принял и обработал>посылает 1ске ответ «success»>1с переходит к следующему шагу и так по кругу
19 — 27.05.19 — 11:06
Вряд ли в платформе дело?
20 — 27.05.19 — 11:17
(18) «Ошибка совместного доступа к файлу была из-за прав на папку /tmp на debian сервере, где 1с. Нужно было не 777 права выставлять, а 1777»
«Сегодня sticky bit используется в основном для каталогов, чтобы защитить в них файлы. В такой каталог может писать ЛЮБОЙ пользователь. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов.»
У того похоже сторонний процесс папку /tmp чистил не вовремя
21 — 27.05.19 — 11:19
Проверь возможно тоже самое права 1777 на /home/usr1cv8/tmp/ сделай
22 — 27.05.19 — 11:21
(21)+ Хотя если сама 1С и удаляет временный файл раньше времени то не поможет.
Еще глянуть если ли там распаковка zip архива например.
Или если все время тот же самый файл читает то у 1С глюки с не отпусканием файла.
23 — 27.05.19 — 11:34
Она эти темпы создаёт постоянно и всегда одинаковые, меняется лишь име временного файла и вот она нормально читает и отпускает их, но на каком-то вдруг падает, причём этот «какой-то» вообще ничем не отличается от пред идущих
24 — 27.05.19 — 11:35
1777 было сделано первым делом, я даж usr1cv8 делал рутом
25 — 27.05.19 — 11:51
Ну значит ошибка в этом «ОбщийМодуль.Б_ОбменССайтомСервер»
Эта хрень она типовая из УТ11 а от битрикса встраивается, вот трясите саппорт битрикса кто писал этот модуль.
Да проблема в 1С — но в модуле который предоставляется для интеграции битриксом, для встраивания в конфу.
26 — 27.05.19 — 11:52
(25) *хрень НЕ типовая из УТ11
27 — 27.05.19 — 11:56
Попробуем конечно, смущает только, что всё-таки у большинства то работает эта хрень
28 — 27.05.19 — 11:56
Да и поддержка битрикса, это 7 кругов ада
29 — 28.05.19 — 11:29
Начал мониторить процессы, вопрос, почему на 1 файл 2 процесса, это нормально для 1ски?
https://cdn1.radikalno.ru/uploads/2019/5/28/8761eb117ded898d9125c50439997c7b-full.jpg
30 — 28.05.19 — 11:47
(29) Это значит у тебя два фоновых сеанса одновременно обмен ведут.
Проверяй в чем проблема, может две базы 1С или еще что
31 — 28.05.19 — 11:52
Т.е проблема походу в этом? Оно запускает 2 одновременных обмена?
32 — 28.05.19 — 12:02
(29) ут11 любит фоновые операции, а они могут под другим процессом работать.
надо чтобы запускающий фоновую операцию код отпускал файл на время работы фонового.
mortnes
33 — 28.05.19 — 13:43
Вот кусок кода, где падает обмен, что тут необычного?
// Функция — получает информацию от сайта процесс загрузки файла
//
// Параметры:
// ПараметрыОбмена — Настройки узла обмена
// ПолноеИмяФайла — Полное имя к выгружаемому файлу
// Соединение — Http соединение к сайту
// ПараметрыЗапроса — Параметры http запроса
// Заголовки — Заголовки http запроса
// Возвращаемое значение:
// Ответ сайта
Функция ПолучитьРезультатОтправкиФайлаНаСервер(ПараметрыОбмена,ПолноеИмяФайла, Соединение, ПараметрыЗапроса=»», Заголовки=»»)
ОтветСервера = Неопределено;
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
Попытка
HTTPОтвет = Соединение.ОтправитьДляОбработки(ПолноеИмяФайла, СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета, СокрЛП(Заголовки));
ContentType = HTTPОтвет.Заголовки.Получить(«Content-Type»);
лКодировка = Прав(ContentType, СтрДлина(ContentType) — (Найти(ContentType, «charset=»)+7));
Исключение
СообщитьПодробно(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПараметрыОбмена, Истина, Истина);
КонецПопытки;
ФайлОтвета = Новый Файл(ИмяФайлаОтвета);
Если ФайлОтвета.Существует() Тогда
ЧтениеТекста = Новый ЧтениеТекста(ИмяФайлаОтвета, лКодировка);
ТекстОтвета = ЧтениеТекста.Прочитать();
Если НЕ ПустаяСтрока(ТекстОтвета) Тогда
ОтветСервера = ТекстОтвета;
Иначе
СообщитьПодробно(«Получение данных с сервера: Получен пустой ответ сервера.», ПараметрыОбмена, Истина, Истина);
КонецЕсли;
Иначе
СообщитьПодробно(«Отправка файла на сервер: Ответ сервера не получен.», ПараметрыОбмена, Истина, Истина);
КонецЕсли;
Попытка
УдалитьФайлы(КаталогВременныхФайлов(), ИмяФайлаОтвета);
Исключение
КонецПопытки;
Возврат ОтветСервера;
КонецФункции
Пользователь 164786 Эксперт Сообщений: 457 |
#1 0 23.08.2017 17:55:19 УТ 8.3 11.3 При обмене лезет постоянно ошибка при этом файл .tmp всегда разный. Как вылечить? Обмен 7 версии, такое было и в 6, но через раз. Ошибка возникает при полной выгрузки картинок
|
||
Пользователь 14571 Эксперт Сообщений: 787 |
Может быть файл этот использует и 1С и какой-нибудь антивирус. Попробуйте отключить антивирус и посмотреть будет ли повторяться ошибка. |
Пользователь 164786 Эксперт Сообщений: 457 |
Точно нет, не антивирус. Пробовал с разных машин. С чистой windows. И не понятно, куда пишет он в TMP чего, сервера или TMP машины с которой клиент запущен |
Пользователь 105835 Эксперт Сообщений: 761 |
На сервере создается каталог. |
Пользователь 164786 Эксперт Сообщений: 457 |
Сервер 1с на debian, куда он там создаёт в home или /var/tmp? |
Пользователь 164786 Эксперт Сообщений: 457 |
И такое только с полной выгрузкой картинок |
Пользователь 164786 Эксперт Сообщений: 457 |
Помогите с проблемой…Такое было и на виндовом серваке и на линуксовом, на 8.2 всё нормально было, как перешли на 8.3 так всё, ошибка эта. Может такое быть, что два rphost’a пытаются ломится в один файл? |
Пользователь 14571 Эксперт Сообщений: 787 |
#8 0 29.08.2017 14:50:15
в windows аналогично пишет ошибку? мои проекты: https://blog.sokov.org/category/dhynedhdhudhnn/ | меня рекомендуют: https://blog.sokov.org/recommendations/ | обо мне: https://spb.hh.ru/resume/9f303161ff02e561e20039ed1f654846726333 | 1 час работы — 1200 руб. |
||
Пользователь 164786 Эксперт Сообщений: 457 |
|
Пользователь 164786 Эксперт Сообщений: 457 |
#10 0 30.08.2017 09:09:03 Уже игрался с кол-вом выгружаемых пакетов и зипом. Не вышло. Самое тупое, что обмен идёт по 4 часа и потом валится в эту тупую ошибку. Это жесть. |
Пользователь 164786 Эксперт Сообщений: 457 |
#11 0 30.08.2017 09:10:00 У меня есть ещё один сайт на битрикс, там ситуация такая же. Мелкие обмены проскакивают хорошо, а чуть больше 5к позиций и всё, аут. |
Администратор Сообщений: 4928 |
#12 0 30.08.2017 16:02:21 Может на момент обращения к файлу — файла уже не существует? |
Пользователь 164786 Эксперт Сообщений: 457 |
#13 0 30.08.2017 17:01:53 А куда же он может деться если его создаёт сама 1ска по требованию из модуля обмена с сайтом? |
Пользователь 164786 Эксперт Сообщений: 457 |
#14 0 30.08.2017 17:13:55 Вот заметил, что файлы TMP после обмена не удаляются, либо удаляются не все. Может проблема в этом? |
Пользователь 164786 Эксперт Сообщений: 457 |
#15 0 30.08.2017 17:18:21 Вот ещё что замечено. Если сформировать дерево каталога и выгрузить его пару раз, а потом поменять дерево каталога и попытаться выгрузить, выгружается и старое дерево, которое уже удалено и с сайта и из 1с модуля обмена, т.е не правильное кеширование где-то происходит |
Пользователь 164786 Эксперт Сообщений: 457 |
#16 0 30.08.2017 22:31:32 Вот лог: Ошибка на стороне сервера. Как понимать сервера — хостинга или сервера 1с? Что может вызывать эту ошибку?
|
||
Пользователь 164786 Эксперт Сообщений: 457 |
#17 0 31.08.2017 09:50:33 А может быть нехватка ОЗУ на хостинге причиной? |
Пользователь 14571 Эксперт Сообщений: 787 |
#18 0 31.08.2017 11:25:31
так /tmp/* должны удаляться после рестарта системы по моему. мои проекты: https://blog.sokov.org/category/dhynedhdhudhnn/ | меня рекомендуют: https://blog.sokov.org/recommendations/ | обо мне: https://spb.hh.ru/resume/9f303161ff02e561e20039ed1f654846726333 | 1 час работы — 1200 руб. |
||
Пользователь 14571 Эксперт Сообщений: 787 |
#19 0 31.08.2017 11:34:20
а может быть так, чисто гипотетически, что вы выгружаете на сайт с двух 1С-ок? Одна какая-то тестовая, а другая рабочая. мои проекты: https://blog.sokov.org/category/dhynedhdhudhnn/ | меня рекомендуют: https://blog.sokov.org/recommendations/ | обо мне: https://spb.hh.ru/resume/9f303161ff02e561e20039ed1f654846726333 | 1 час работы — 1200 руб. |
||
Пользователь 164786 Эксперт Сообщений: 457 |
#20 0 31.08.2017 11:36:15
Нет, менял пароль к сайту. |
||||
Пользователь 164786 Эксперт Сообщений: 457 |
#21 0 31.08.2017 11:42:40 Попробовать выгрузить в каталог и засунуть через импорт на сайт? Так получиться с картинками? |
Пользователь 164786 Эксперт Сообщений: 457 |
#22 0 12.09.2017 16:20:55 |
Пользователь 164786 Эксперт Сообщений: 457 |
#23 0 12.09.2017 17:16:27 Чем можно отследить ошибку? |
Александр Денисюк
Администратор Сообщений: 4928 |
#24 0 12.09.2017 19:10:40
Не знаю. Надо смотреть. Самый простой способ — экспортировать дерево групп, а потом назад его импортировать. |
||
Пользователь 164786 Эксперт Сообщений: 457 |
#25 0 12.09.2017 20:23:49
Эта проблема решена, осталась с ошибкой доступа к файлу или хотя бы пустому ответа сервера в логе, что бы понять что ему не так |
||||
Первая статья в новом 2021 году будет посвящена программе 1С. Это связанна с тем что данное ПО очень распространено. Так как альтернативы пока что нет. К типовым конфигурация претензий практически нет, в них не появляются ошибки, при обновлении, переносе и других манипуляциях. Что нельзя сказать о самопысных конфигурациях или измененных типовых. Как правило занимаются этим программисты не высокого уровня, так как час разработки профессионала стоить достаточно дорого. В результате конечный пользователь получаем огромные проблемы которые возникают после каких либо манипуляций либо с базой или клиентами. Сегодня поговорим об одной интересной ошибки которая появляется при попытке распечатать какой либо документ «Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован».
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
5 и т.д.
Это самые распространенные.
У меня есть еще несколько статей в которых я рассказывал как можно исправить различные ошибки 1С рекомендую прочитать.
Ошибка при отправке запроса на сервер
При появлении ошибки в 1С нет кнопки подробнее
Как настроить сортировку в отчете
Как сохранить обработку (как внешнюю)
Как указать версию платформы
Как посмотреть изменения в конфигурации
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован
Первый способ
Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
cd windowssyswow64
И регистрируем
regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.
Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.
Содержание:
1. Почему может возникнуть ошибка при вызове конструктора (COM-объект 1С)?
2. С помощью чего можно исправить ошибку при вызове конструктора (COM-объект 1С)?
3. Параметры при вызове конструктора (COM-объект 1С), которые регистрируют компоненты строки кода перед регистрируемым dll-файлом
1. Почему может возникнуть ошибка при вызове конструктора (COM-объект 1С)?
Когда ты начинающий специалист 1С, то иногда приходится чувствовать себя шаманом с бубном, так как не знаешь причин ошибки и как её исправить тоже.
Сегодня мы разберем одну из ошибок, которые появляются при работе с базой, а именно ошибку при вызове конструктора (COM-объект 1С).
Ситуацию такую, мы можем наблюдать при загрузке с Excel при использовании (COM-объекта 1С), при обмене между базами. Ситуаций, когда возникает данное сообщение с возникшей проблемой довольно много при работе с программой.
Как правило, данная ошибка возникает из-за того, что при установке платформы1С не произошла автоматическая регистрация 64-х разрядной компоненты, которая отвечает за использование COM-соединения 1С 8.3. А почему это произошло, спросите? Все очень просто и в то же время сложно, если не знаешь, в чем все ядро проблемы. А причина в том, что те, у кого выдаются такие ошибки, используют 32(86) – разрядную операционную систему и ставят вместо платформы необходимой разрядности их системы, платформу 1С предназначенную для совсем другой системы.
2. С помощью чего можно исправить ошибку при вызове конструктора (COM-объект 1С)?
Исправить данную ошибку, довольно легко. Для этого необходимо всего лишь зарегистрировать библиотеку dll в реестре при помощи командной строки или программы PowerShell, в зависимости от того, что любите использовать, и команды regsvr32.
Для того чтобы выполнить команду, достаточно будет в строке написать такой текст команды «regsvr32 «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll»». Вместо «ХХ.ХХХХ» необходимо указать необходимый релиз платформы, библиотеку которой, необходимо зарегистрировать в реестре системы.
Если все выполнено правильно и регистрация произошла успешно, то должно выдать сообщение, как на скриншоте, об успешной регистрации библиотеки.
Администратор: Командная строка
3. Параметры при вызове конструктора (COM-объект 1С), которые регистрируют компоненты строки кода перед регистрируемым dll-файлом
Также есть некоторые особенности команды, которая регистрирует компоненты.
На данный момент я знаю только 4 параметра (которые при написании строки кода указываются перед регистрируемым dll-файлом):
· /u — параметр, отменяет регистрацию
· /i — параметр, который позволяет при необходимости, в зависимости от библиотеки.
· /n —параметр используется только для установки компоненты 1С, в основном пишется вместе с предыдущим (/I);
· /s – возможность отключить все сообщения при регистрации;
Существует, также, один немаловажный момент, что в зависимости от версии командной строки, иногда приходится прописывать путь к самой утилите.
Кстати, существуют специальные программы-инструменты, которые помогают регистрировать компоненты, без знания команд и утилит администрирования, зарегистрировать библиотеку и продолжить работать дальше.
Таких программ достаточно много и писать, какое-то одно название смысла нет.
Для того чтобы быстро и качественно решать такие проблемы, необходимо изучать разнообразные статьи, для повышения уровня знаний и квалификации.
Специалист компании «Кодерлайн»
Олег Мороз