Операция не выполнена из за аварийного завершения фонового задания 1с
Рекомендации по настройке клиент-серверных систем на основе "1С:Предприятия"
В данном разделе собраны рекомендации по наладке системы на основе платформы "1С:Предприятие" в режиме работы "клиент-сервер":
- В 32-разрядном сервере "1С:Предприятия" запуск нескольких rphost позволяет лучше использовать оперативную память сервера и снизить издержки от фрагментации памяти.
В 64-разрядном сервере "1С:Предприятия" один rphost может полностью использовать и оперативную память, и процессорные ресурсы сервера.
Поэтому для 64-разрядного сервера "1С:Предприятия" нормальным следует считать запуск одного рабочего процесса на один сервер. - Из-за ошибок в платформе "1С:Предприятие" и в конфигурациях возможны аварийные завершения процессов rphost . Запуск нескольких рабочих процессов снижает критичность аварийного завершения одного рабочего процесса. Аварийные завершения рабочих процессов нельзя считать их нормальным поведением. Если подобные случаи наблюдаются в процессе эксплуатации "1С:Предприятия", то целесообразно провести необходимые расследования для выявления причин и устранения подобных ситуаций. Запуск нескольких рабочих процессов в данном случае можно считать временной мерой для снижения издержек от нестабильной работы сервера.
- Большое количество рабочих процессов:
- увеличивает издержки на служебные вызовы между процессами сервера "1С:Предприятия" и может привести к снижению общей производительности системы;
- занимает дополнительные IP порты (по 2 на каждый процесс). Диапазоны портов, определенные по умолчанию, могут оказаться недостаточными;
- повышает общую сложность поведения сервера "1С:Предприятия".
- сформулировать проблему (одно обращение=одна проблема, не рекомендуется объединять в одном письме несколько кейсов);
- подготовить скриншоты с описанием ситуации;
- указать релизы конфигурации и платформы.
- браузер может предложить прекратить длительно выполняющийся сценарий, после чего приложение станет неработоспособным;
- веб сервер может прервать длительное обращение к серверу 1С:Предприятия и вернуть ошибку 504 (шлюз не отвечает);
- в случае длительного выполнения операции, у пользователя нет возможности отменить ее.
- разработаны без использования СКД или с использованием СКД, но с переопределенной процедурой формирования отчета (переопределен обработчик кнопки «Сформировать» или в обработчике модуля отчета ПриКомпоновкеРезультата устанавливается СтандартнаяОбработка = Ложь ).
- и формирование которых, как правило, занимает длительное время.
- форму отчета не следует блокировать на время его формирования;
- пользователь может изменить настройки и переформировать отчет, не дожидаясь окончания его формирования;
- при закрытии формы отчета, формирование отчета прерывается.
- Если пользователь(*) попытается записать какой-либо объект, это приведет к ошибке (из-за установленного монопольного режима);
- В ряде случаев могут запускаться фоновые задания в качестве реакции на действия пользователя случае (при поиске в динамическом списке, при вводе по строке, формировании отчетов и пр.), которые также завершатся с ошибкой.
Кроме того, на самой форме ожидания длительной операции не следует размещать элементы управления, которые могут приводить к запуску таких фоновых заданий. Например: поля ввода, динамические списки и отчеты.
Рекомендуется начинать наладку системы на базе "1С:Предприятия" с одного рабочего процесса на сервер, и только при наличии необходимости увеличивать их количество.
Для целей отладки и локализации ошибок при небольшом количестве работающих пользователей и регламентных заданий может быть полезно запустить несколько рабочих процессов так, чтобы на один рабочий процесс приходилось не более одного соединения клиентского приложения или регламентного задания. В этом случае поведение каждого рабочего процесса будет определяться действиями одного пользователя или одного регламентного задания. Использование такой настройки кластера может облегчить поиск проблемных действий или ошибок в конфигурациях и платформе на стадии разработки и отладки конфигураций. В режиме реальной работы большого количества пользователей такая настройка кластера не рекомендуется и может оказаться не работоспособной.
Несколько дней пользователи 1С сообщали о массовом возникновении ошибки, при которой происходило аварийное завершение работы конфигураций. Фирма «1С» подготовила рекомендации для решения данной проблемы.
«Аварийное завершение»: что делать?
Пользователи решений на платформе 1С, а также компании-партнеры в течение нескольких дней фиксировали возникновение достаточно неприятной ошибки, которая аварийно завершала работу различных конфигураций при старте.
Проблема проявлялась при старте при наличии доступа к интернет. В большинстве случаев, перезапуск приложения решал задачу и не приводил к повторным падениям.
Сбой в работе 1С затронул легальных пользователей, которые не используют контрафактные версии ПО. Ошибка возникала на различных конфигурациях, версиях платформы и во всех вариантах работы – файловом, клиент-серверном и даже при работе в режиме «облака».
«Ошибка исправлена в версиях платформы начиная с 8.3.17.2231 и 8.3.18.1483 (будет опубликована 19.05.2021). Фирма «1С» приносит извинения пользователям, у которых проявилась указанная проблема. Для ее устранения предлагаем обновиться на указанные версии платформы или последующие», – говорится на официальном сайте.
Порядок регистрации ошибок платформы
Активная позиция пользователей, предпочитающих сообщить коллегам о возникновении проблемы на профессиональных форумах и в чатах, положительно сказалась на сроках устранения ошибки. Публичные дискуссии продемонстрировали, что проблема действительно является массовой, и требует максимально оперативной реакции со стороны вендора.
Но кроме общения на форумах и в конференциях, фирма «1С» предлагает пользователем регистрировать возникающие ошибки в специальном сервисе. Так можно будет достигать еще более оперативного реагирования со стороны разработчика.
Напомним, что при возникновении ошибки необходимо подготовить обращение в техническую поддержку:
О том, как работать с выявленными в 1С ошибками, написано на сайте сервиса «Публикация ошибок».
Исправленные версии платформы
Если у вас при старте программы проявилась проблема с аварийным завершением работы, фирма «1С» предлагает установить обновления 8.3.17.2231, 8.3.18.1483 и 8.3.16.1973, где эта ошибка уже исправлена.
Но кроме общения на форумах и в конференциях, фирма «1С» предлагает пользователем регистрировать возникающие ошибки в специальном сервисе. Так можно будет достигать еще более оперативного реагирования со стороны разработчика.Добрый день!
А можно поподробнее пояснить - где там регистрировать ошибки?
(1) там это нельзя сделать)))
Велком в реальность
И тут мы такие "(тадам. ) для этого можно использовать партнерку, ибо ничего более подходящего увы нет". Потому как ищем мы не номера, а описания, примеры, обсуждения.
И вынуждены так делать. А 1С вынуждено бороться с нами, как с последними вредителями, ссылаясь на правила партнерки.
Т.е. вместо того, чтобы прочесть явно сформулированный запрос сообщества и сделать трекер здорового человека, продолжают по нам долбить, что "неположено". И что "дорожки будем прокладывать по проекту, а не там где людям удобно/ходят".
(опять негодование прорвало, сорри)
"За чей счёт банкет?"
Увлеклись преследованием нелицензионников, да так, что подкинули проблем вообще ВСЕМ.
А теперь им надо помочь и написать об ошибках.
Отношение к покупателям/пользователям как к "бета-тестерам" - основной подход фирмы 1С.
В логах Windows в записи об ошибке приложения (Source: Application Error) при этом краше идут ссылки на:
- ок. 30% случаев на "C:\Program Files\1cv8\8.3.18.1363\bin\backbas.dll"
- ок. 70% случаев на "C:\Program Files\1cv8\8.3.18.1363\bin\vcruntime140.dll"
Т.к. backbas.dll на сколько я знаю - вроде как компонент защиты, то с ним мало что можно сделать. Решил разобраться с
vcruntime140.dll
1С при установке из дистрибутива хоть и ставит в систему дополнительно комплект библиотек VC++, но почему-то тащит себе в норку (Bin) свой персональный экземпляр vcruntime140.dll, а не используется системный из Windows\System32
В итоге в папке \8.3.18.1363\bin\ лежит довольно древняя версия vcruntime140.dll: у меня была 14.16.27033.
Что сделал:
Выкачал последние версии распространяемых пакетов библиотек VC++ с сайта Microsoft (на сейчас это 14.28.29914), установил их в систему и скопировал новые версии vcruntime140.dll из папок
C:\Windows\System32
и
C:\Windows\SysWOW64
в папки \8.3.18.1363\bin\ 64-битной и 32-битной 1С соответственно.
У кого одна версия 1C (обычно x32) - достаточно одну библиотеку заменить.
Делал это на терминальном сервере разработчиков 1С, где они работают и постоянно ловят эту ошибку.
До замены библиотеки vcruntime140.dll - 11 событий краша за 4 часа.
После обновления библиотеки vcruntime140.dll - 0 событий за 36 часов (на момент написания поста)
Пока стучу по дереву и собираю статистику.
Обновлять платформу из-за экспериментов от 1С точно нет возможности: 500+ юзеров и только согласование и подготовка обновления занимает 1-2 месяца
Длительные операции на сервере
Область применения: управляемое приложение.
1. При разработке конфигураций следует избегать длительных вызовов из клиентского кода в серверный. Все длительные серверные вызовы, которые могут выполняться более 8 секунд в обычных сценариях работы пользователя, следует выполнять асинхронно, с помощью фонового задания.
К таким операциям относятся: формирование отчета, групповая обработка объектов, загрузка или выгрузка данных в другое приложение, заполнение больших табличных частей и т.п.
В противном случае такие вызовы могут привести к потере работоспособности приложения или затруднению работы с ним:
2.1. Общий подход к асинхронному выполнению длительных серверных операций с помощью фонового задания:
-
Код, выполняющий длительную обработку данных, располагается в модуле менеджера объекта* или в общем модуле. Результат своей работы он помещает во временное хранилище;
а для прочих мест – выводится блокирующая форма ( РежимОткрытияОкна = БлокироватьОкноВладельца ), на которой размещена декорация с анимированной картинкой и кнопка «Отмена» :
2.2. Асинхронное формирование отчета требуется только для тех отчетов, которые
Поведение таких отчетов должно быть максимально похожим на поведение отчетов на базе СКД, а именно:
3. При использовании в конфигурации Библиотеки стандартных подсистем в распоряжении разработчика имеются вспомогательные функции и процедуры общих модулей ДлительныеОперации , ДлительныеОперацииКлиент , а также процедура УстановитьСостояниеПоляТабличногоДокумента общего модуля ОбщегоНазначенияКлиентСервер .
Пример выполнения функции в фоновом задании при использовании в конфигурации Библиотеки стандартных подсистем. В модуле менеджера объекта размещена функция, которая выполняет поиск настроек и возвращает их:
Функция ОпределитьНастройкиУчетнойЗаписи(АдресЭлектроннойПочты, Пароль) Экспорт
.
Возврат Настройки;
КонецФункции
В форме объекта выполняется вызов этой функции в фоновом задании в три этапа:
1) запуск фонового задания на сервере,
2) подключение обработчика завершения фонового задания на клиенте,
3) обработка результата выполнения фонового задания.
&НаКлиенте
Процедура НастроитьПараметрыПодключенияАвтоматически()
// 1. Запуск фонового задания на сервере.
ДлительнаяОперация = НачатьПоискНастроекУчетнойЗаписи();
// 2. Подключение обработчика завершения фонового задания.
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
Оповещение = Новый ОписаниеОповещения("ПриЗавершенииПоискаНастроек", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьПоискНастроекУчетнойЗаписи()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Справочники.УчетныеЗаписиЭлектроннойПочты.ОпределитьНастройкиУчетнойЗаписи",
АдресЭлектроннойПочты, Пароль);
КонецФункции
// 3. Обработка результата выполнения фонового задания.
&НаКлиенте
Процедура ПриЗавершенииПоискаНастроек(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда // Пользователь отменил задание.
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата);
УстановитьНастройкиУчетнойЗаписи(Настройки);
Методическая рекомендация (полезный совет)
3.1. При каждом выполнении фонового задания его результат помещается во временное хранилище на время жизни формы:
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, ПараметрФоновогоЗадания);
Если длительная операция выполняется пользователем многократно, пока эта форма открыта, то временные хранилища накапливаются, что вызывает рост потребления памяти. Поэтому для уменьшения расхода оперативной памяти в большинстве случаев рекомендуется очищать временное хранилище сразу после получения результата фонового задания:
Настройки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата); // Данные во временном хранилище больше не требуются.
Если же результат фонового задания требуется сохранять на протяжении нескольких серверных вызовов, то необходимо передавать фиксированный адрес заранее инициализированного временного хранилища:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
АдресРезультатаФоновогоЗадания = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); // Резервируем адрес временного хранилища
КонецПроцедуры
&НаСервере
Функция НачатьПоискНастроекУчетнойЗаписи()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ПараметрыВыполнения.АдресРезультата = АдресРезультатаФоновогоЗадания; // всегда используем одно и то же временное хранилище
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
"Справочники.УчетныеЗаписиЭлектроннойПочты.ОпределитьНастройкиУчетнойЗаписи",
АдресЭлектроннойПочты, Пароль);
КонецФункции
4. Если в конфигурации реализуются алгоритмы, инициирующие запуск фоновых заданий или запись данных информационной базы без участия пользователя (например, регулярное обновление информации в открытой форме), то в них следует проверять, что в текущем сеансе не установлен монопольный режим. В противном случае, следует блокировать попытки выполнения таких действий. Например:
Если МонопольныйРежим() Тогда
Возврат;
КонецЕсли;
5. В некоторых случаях возникает необходимость в выполнении длительных операций, требующих установки монопольного режима доступа к информационной базе. Например:
Обновление данных ИБ при первом интерактивном запуске программы после обновления конфигурации; Выгрузка данных информационной базы в файл для перехода в сервис; Использования монопольного режима для снижения времени выполнения массовых операций по изменению данных;При этом необходимо сначала устанавливать монопольный режим, а затем выполнять запуск фонового задания, которое реализует саму длительную операцию. В этом случае фоновым заданием будет унаследован монопольный режим, ранее установленный из пользовательского сеанса (см. документацию к платформе).
На время выполнения этого фонового задания следует блокировать весь интерфейс приложения, открывая форму ожидания завершения операции в режиме РежимОткрытияОкна = БлокироватьВесьИнтерфейс. Блокировать интерфейс приложения требуется потому, что на время выполнения задания полноценная работа пользователя с приложением уже невозможна:
* Примечание: ошибки записи также возникают в тех случаях, когда объекты записываются программно, например, из обработчиков ожидания. В них также следует проверять монопольный режим согласно п.5.
Юрий , а обновление-то прошло? Фоновые задания, запущенные перед обновлением, и должны завершаться принудительно.
У меня при обновлении конфигурация баз данных не обновилась. При попытке переобновить через конфигуратор выдает критическая ошибка, поврежден файл инфобазы. В режиме предприятия предупреждает о несоответствии конфигураций, но запускается и работает, только не обновляется. Никто не сталкивался. Заранее благодарен.
Сергей ,перед каждым обновлением необходимо делать архивную копию информационной базы, чтобы при сбое можно было бы откатиться к предыдущей версии. В Вашем случае для начала сделайте резервную копию и проверьте информационную базу с помощью средства chdbfl.exe.и проведите тестирование и исправление в конфигураторе.
Не обновляться автоматически
Обновляйтесь из конфигуратора
Добрый день. Помогите пожалуйста. Не нашла как вопрос задать, решила в похожей теме задать. Выключилось электричество во время работы. Файл базы данных поврежден. Проделала все инструкции (восстановление утилитой и конфигуратором). Выдает, что ошибок нет. Загрузила последнюю сохраненную выгрузку. Так теперь даже войти не получается, сразу всплывает окно-Файл базы данных поврежден. Что делать? (1С Предприятие 8.3 Управление торговлей базовая, редакция 11.3)
Попробуй почисти кэш
Еще можно: если база файловая, то скопируй файл базы 1Сv8.1CD в новую папку и попробуй открыть базу поэтому пути, если получиться то значит дело в о временных файлах или кэше
Юрий , пробовала-не выходит. Попробую кэш очистить.
Добрый вечер. Теперь кэш не могу найти(( Открываю окно запуска 1С, выбираю настройки. Там адрес (в инете пишут что это и есть адрес кэша): С\Users\Admin\AppDate\Roaming\1C\1cv8\tmplts. Нашла я вот С\Users\Admin\AppDate\Roaming но там одна папка uTorrent и в ней ничего похожего на 1С нет(((
Когда ошибка вылазит :файл поврежден, то, если нажать на Информацию для техподдержки, то поврежденный файл указывают С\Users\Admin\AppDate\Local\1C\1cv8\7a60182b-39cc-4aca-88e2-0ff20c4f8b07\5a0a991a-1fea-4e4b-a1c2-13d6326e0ae8\vrs-cache\cache/1CD
В uTorrent есть папка dlimagecache. В ней три файла с длинными названиями. Может это и есть кэш?
Читайте также: