Ошибка при выполнении обработчика - IT Справочник
Llscompany.ru

IT Справочник
14 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ошибка при выполнении обработчика

Ошибки 1С 8.3 и их исправление

Любая программа, установленная на компьютер, может время от времени работать неправильно. Периодические сбои, которые приводят к невозможности использования ПО, называются ошибки. Чтобы суметь диагностировать и устранять ошибки в 1С, пользователь должен хотя бы немного разбираться в особенностях работы программ. Наличие минимальных знаний позволяет решать проблемы самостоятельно.

Прежде чем рассматривать основные разновидности ошибок, стоит заметить, что они отличаются между собой по происхождению. Приложение может привести к физическому или логическому сбою. В результате 1С просто не запускается или начинает работать в режиме «Конфигуратор». Пользовательский режим бывает недоступен или, при использовании определенных команд, будет появляться сбой.

Чтобы научиться быстро исправлять ошибки в 1С необходимо изначально их проанализировать. Часто во всплывающем окне написана суть некорректного поведения, что помогает решить проблему.

Причины появления ошибки в 1С

Разберем основные моменты, связанные с частым появлением сбоев при работе с базой данных. Они возникают в разных ситуациях, и определить их истинную причину не всегда возможно.

Одна из самых частых причин нарушение работы связанна с компьютером, на который установлена база данных 1С. Рабочая область может автоматически закрываться из-за нехватки оперативной памяти на сервере. Все возникающие неисправности должны быстро устраняться. В противном случае есть вероятность потери данных.

Часто возникающие ошибки 1С

Все имеющиеся сбои выводят на экран разные уведомления. Одинакового текста не бывает. Чтобы проще ориентироваться, разделим существующие ошибки 1С на следующие пункты:

  1. Недостаточно памяти.
  2. Ошибка доступа.
  3. Ошибка формата потока.
  4. Ошибка СУБД: Файл базы данных поврежден.
  5. Неправильное отображение блоков формы.
  6. Внутренняя ошибка компоненты dbeng.
  7. Dump при запуске.
  8. Неверный формат хранилища.
  9. Ничего не работает.

Для того, чтобы научиться исправлять возникающие ошибки, рассмотрим каждый пункт по отдельности.

Недостаточно памяти

Подобный сбой проявляется только в том случае, если на выполнение операций с программой выделено мало оперативной памяти. Приложение не может обрабатывать большие объемы информации, поэтому выдает «Недостаточно памяти 1С». Это случается при формировании отчета, обработки «тяжелого» файла, обновлении конфигурации и т.д. Причина – мощности компьютера недостаточно.

Пользователь может самостоятельно решить проблему с памятью. По умолчанию операционная система выделят фиксированное значение гигабайт на обслуживание приложения: 32 bit ОС – 2 Гб, 64 bit – 4 Гб.

Увеличить размер выделенной памяти можно вручную. Для этого запускается адресная строка (Пуск – Выполнить, вводиться фраза cmd). После нажатия «Ентер» достаточно ввести фразу bcdedit /set increaseuserva 4096 и подтвердить действие (клавиша «Enter»). Цифра 4096 – новый выделяемый объем «оперативки». Выполняется перезагрузка системы. Проблема должна быть устранена.

Ошибка доступа

Она возникает, если учетная запись не имеет достаточно прав. Проявляется при выполнении определенного действия, которое доступно только ограниченному кругу пользователей. Для исправления ситуации достаточно изменить роль выбранного профиля в конфигураторе (вкладка «Администрирование – Пользователи»). В некоторых случаях это увеличивает безопасность базы данных, если необходимо защитить файлы от изменения сторонними людьми.

Ошибка формата потока

Когда пользователь только запускает программу, на экране может появиться окно сбоя. Оно предлагает завершить работу или перезапустить. Причиной выступает некорректное завершение работы приложения.

Устранение подобной ошибки 1С выполняется простой чисткой кэша. Для этого необходимо перейти в папку, где хранятся временные файлы. В Windows 7 и выше она находится по адресу C:UsersUsernameAppDataLocal1C или C:UsersUsernameAppDataRoaming1C. Для Windows ХР другой путь – Local SettingsApplication Data1C. Все файлы, начинающиеся на 1cv8, кроме «1Cv8.1CD» полностью удаляются.

Если «Ошибка формата потока» возникает в процессе работы, то нужно провести тестирование (Администрирование – Тестирование и исправление), выбрать первые 2 галочки и запустить процесс.

Ошибка СУБД: Файл базы данных поврежден

Если всплывает информационное окно с подобной надписью, неисправность базы данных решается тестированием файла и всей информационной базы. Такое мероприятие может проводиться 2 способами:

  • Запуск утилиты chdbfl.exe. Эта программа предназначена для того, чтобы проверять целостность базы данных при совместном ее использовании с информационной базой. Данный метод хорош тем, что дает возможность решать сбои даже в тех ситуациях, когда конфигуратор запустить невозможно. Сначала выполняется резервное копирование информации. В папке, где установлен 1С (директория bin) находится файл chdbfl.exe. Он запускается, в окне прописывает путь к файлу базы данных и ставится галочка, чтобы провести исправление ошибок. Нажимается кнопка «Выполнить». После завершения процесса все должно заработать. Если нет – используется конфигуратор.
  • Через конфигуратор. Нужное окно вызывается после нажатия «Администрирование – Тестирование и исправление». На экране появляется форма, где выставляются галочки на следующе строчки: «Реиндексация таблиц…», «Проверка логической целостности…», «Проверка ссылочной…», «Реструктуризация таблиц…», «Тестирование и исправление» и 2 раза «Создать объекты». Нажимается кнопка «Выполнить». После завершения процедуры сбой устраняется.

Неправильное отображение блоков формы

Такая неисправность возникает от разных факторов. Чтобы привести программу к нормальной работоспособности, пользователю необходимо последовательно выполнить несколько команд. После проведения каждой проверяется устранение сбоя:

  • Очистка кэш файлов. Они хранятся в той же папке, путь к которой расписан выше «Ошибка формата потока». Зачастую такая процедура помогает вернуть нормальную работоспособность 1С.
  • Вход с другой учетной записи. Можно использовать любой доступный профиль (лучше всего администратора).
  • Вход в базу данных с другого компьютера. Это позволяет исключить ошибку, возникающую на определенном оборудовании.
Читать еще:  Ошибка 1605 при установке

Если приведенные методы не помогают, рационально будет провести обновление платформы.

Внутренняя ошибка компоненты dbeng

Подобное сообщение говорит о повреждении структуры базы данных. Приведенный в названии документ хранится в папке с программной. Решение сбоя находится простой переустановкой платформы. Если такой метод не помог, можно воспользоваться тестированием и исправлением базы данных.

Dump при запуске

Возвращение 1С в рабочее состояние проводится простым обновлением MS Visual Studio (Visual C++) и дополнительными манипуляциями. Чтобы отследить конкретный файл, в котором возникает ошибка, открывается «Просмотр событий». Для этого пользователь переходит в «Панель управления – Система и безопасность – Администрирование». С левой стороны раскрывается «Журнал Windows – Приложение».

На экране появляется список ошибок и точное расположение поврежденного файла. После установки новой версии MS Visual Studio (Visual C++) с папки System32 копируется одноименный файл dll и вставляется в папку платформы 1С. Проблема решилась.

Неверный формат хранилища

В появившемся окне обязательно будет надпись, содержащая «AppData/Local/». Она указывает на точное расположение проблемного файла. В этом сообщении уже написан правильный путь решения. Пользователю достаточно перейти по указанному адресу и удалить временные файлы. Очистка кэша помогает решить множество проблем.

Ничего не работает

Если программа перестала нормально работать без видимых причин, значит пользователю придется самостоятельно искать неисправность. Для восстановления работоспособности базы данных проводятся следующие мероприятия:

  • чистится кэш;
  • открывается файл chdbfl.exe из папки установки приложения и выполняется исправление;
  • выполняется запуск «Конфигуратора» для тестирования и исправления сбоев;
  • обновление «1С».

Если это не критичная ошибка, она должна исправляться при установке актуальной версии программного комплекса. В остальных ситуациях необходимо пользоваться помощью профессиональных мастеров, которые отлично понимают принцип подобных продуктов.

Чек пробит, но не обновлён в базе

Проблема : При попытке закрытия чека на Рабочем месте кассира (РМК) появилась нереально большая и страшная ошибка:

Ошибка (приведу целиком) : Чеку нужно установить отметку о пробитии при закрытии смены.
Запись чека не выполнена по причине:
<Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(10494)>: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: <ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1055)>: Не удалось зарегистрировать изменения на узлах плана обмена ПоРабочемуМесту по причине: <ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1328)>: Ошибка выполнения правил регистрации объектов для плана обмена ПоРабочемуМесту.
Описание ошибки:
<ОбщийМодуль.ОбменДаннымиСобытия.Модуль(2032)>: Ошибка при получении списка узлов получателей. Ошибка выполнения запроса: <ОбщийМодуль.ОбменДаннымиСобытия.Модуль(2027)>: Ошибка при вызове метода контекста (Выполнить)
МассивУзловРезультат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(«Ссылка»);
по причине:
Ошибка выполнения запроса по причине:
Конфликт блокировок при выполнении транзакции:
Не удалось заблокировать таблицу ‘_Node22’
по причине:
Не удалось заблокировать таблицу ‘_Node22’
ВызватьИсключение СтрокаСообщения;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

Оборудование : Стандартное рабочее место, 1С Розница

Решение проблемы: Для начала можно проверить, действительно ли чек не пробился. Для этого заходим в «Продажи —> Чеки».

Смотрим последний чек:

Чек действительно есть, однако при этом он проведен. При этом не установлен у него статус (следующий столбец после «Операция»). Следовательно почти наверняка нужно его провести (как бы глупо не звучало это по отношению к проведённому документу).

Вообще, отчего и почему такое могло случиться?

Всё очень просто! В магазине установлены 3 РМК. И настроена синхронизация этих РМК (или просто «касс») с сервером. Синхронизация проводится раз в пять минут. Соответственно, синхронизация производит обмен всеми изменёнными документами. На кассах таким образом актуализируется вся изменяемая номенклатура с ценами, а на сервере — появляются все пробитые документы на кассах регулярно.

При этом вроде как существует 4 базы раздельных. На сервере — главная, на кассах — зависимые. Но расположенные физически не на сервере.

Делается это потому, что очень часто будет возникать конфликт блокировок. Когда одно РМК закрывает чек. И все данные ещё не записаны нормально в базу, а другая РМК чек уже стала пробивать.

Собственно, в этот раз примерно похожее и произошло. Только чек стал закрываться и проводиться в тот момент, когда база сбрасывала информацию для обмена (синхронизации) с головной базой на сервере.

Потому надо зайти в документ и, как я уже говорил, пробить чек. Вверху нажать «Пробить чек». Чтобы в чеке всё стало неактивно. Примерно вот так:

При нажатии «Пробить чек» второй раз чек из ККТ выйти при этом не должен.

Ошибка при вызове метода контекста в 1С

Любой программист 1С встречался с таким сообщением, как «Ошибка при вызове метода контекста (Выполнить)». Обычно эта ошибка не вызывает затруднения у опытного программиста. Почему она возникает? Рассмотрим ниже.

Читать еще:  Ошибка при открытии страницы в интернете

Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.

Самые распространенные ошибки при вызове типовых методов:

  • Записать
  • Создать
  • Подключиться
  • Connect
  • ПроверитьВывод
  • PreviewFile1C
  • Прочитать
  • Выполнить
  • ВыполнитьПакет
  • ПрочитатьИзменения

Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:

Получите 267 видеоуроков по 1С бесплатно:

В конструкции «ГДЕ» мы преднамеренно ошиблись, поставив «И», но не прописав еще одно условие. Совершенно логично, что 1С не сможет справиться с таким запросом и выдаст ошибку:

<МодульСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Рассмотрим еще один пример:

Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:

<МодульСеанса(8)>: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<Справочник.ВерсииПрограмм.МодульОбъекта(20)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.

Решение проблемы

Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.

Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:

Проверьте параметры, передаваемые в функцию, и правильность её использования.

Другие статьи по 1С:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

#Ошибка выполнения операции — #Обнаружены ошибки при проведение документа «Поступление товаров и услуг»

#Ошибка выполнения операции — #Обнаружены ошибки при проведение документа «Поступление товаров и услуг «: «ОбщийМодуль.УниверсальныеМеханизмы(3783)»: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.3.9.2170): Ошибка при выполнении обработчика — ‘ПередЗаписью’
«Документ.ПоступлениеТоваровУслуг.МодульОбъекта(1268)»: Ошибка при вызове метода контекста (ДополнитьДокументЦенами)
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ДополнитьДокументЦенами ().. Документ заполнен данными с ТСД и записан, проверьте ошибки при проведении документа вручную:
откройте документ в основной базе 1С, нажмите «Провести» и посмотрите ошибки! (1С: версия приложения = «8.3.9.2170», название конфигурации = «УправлениеТорговлей», редакция= «11.1.10.185», версия драйвера = «3.0.0.111», режим работы основной базы = «серверный», режим работы базы драйвера= «файловый»)

Помогите пожалуйста решить данную проблему. ПО куплено для тестирования и внедрения для сети магазинов.

Ответы 7

дописывали что-нибудь в обработчике ПередЗаписью документа ПоступлениеТоваровУслуг?

Функцию ДополнитьДокументЦенами сами добавили?

Да, у нас в базе. У нас функция и модуль обьекта на сервере. А он думает что на клиенте. У нас то документ проводиться в базе спокойно — а у вас нет. Неверное взаимоотношение клиент сервер.

У модуля в свойствах, стоят галочки Сервер и Внешнее соединение?

Поставил при попытки передать документ с 2 отсканированными позициями через виртуальный модуль ТСД — документ в 1с с проведенного стал не проведенным а в логах в конфигурации вашей базы вышла ошибка

#Ошибка выполнения операции — #Обнаружены ошибки при проведение документа «Поступление товаров и услуг ВК08-003549 от 25.10.2017 9:46:17»: «ОбщийМодуль.УниверсальныеМеханизмы(3783)»: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.3.9.2170): Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
«Документ.ПоступлениеТоваровУслуг.МодульОбъекта(1506)»: Ошибка при вызове метода контекста (Получить)
В данной транзакции уже происходили ошибки!. Документ заполнен данными с ТСД и записан, проверьте ошибки при проведении документа вручную:
откройте документ в основной базе 1С, нажмите «Провести» и посмотрите ошибки! (1С: версия приложения = «8.3.9.2170», название конфигурации = «УправлениеТорговлей», редакция= «11.1.10.185», версия драйвера = «3.0.0.111», режим работы основной базы = «серверный», режим работы базы драйвера= «файловый»)

это вообще стандартный модуль и он даже стоит на поддержке и мы его не правили. Но это же неправильно что когда сервер занят — распроводить документ — передавать его — пусть ругнется и предложит повторить

а если документ надо сохранить — вдруг заряд тсд пропадет через несколько секунд. Зачем же при блокировках таблиц отменять проведение документа 🙂 без сообщений в тсд

работники склада таких тонкостей не понимают

Читать еще:  Ошибка java lang illegalargumentexception

Уважаемый Алексей Подмогильный,

Новый комментарий оставлен пользователем Надежда Алексеева.

Нажмите, чтобы открыть комментарий

Если у вас в программе вылезают слишком не понятные для вас ошибки, самим в настройки программы и ее конфигурацию лучше не лезть, так как именно в конфигурации вашей версии бухгалтерской программы произошли сбои. И только опытный программист сможет настроить правильно 1С: Предприятие. Я была в подобной ситуации, когда к нам в отдел взяли неопытного молодого бухгалтера, который каким-то образом полез в конфигуратор, после чего программа 1С версии 8.2 отказывалась вводить любой документ, пропадали введенные мною налоговые накладные. Одним словом наломал нам дров, директор в ярости начал кричать чтобы мы нашли программиста, который восстановит все данные и мы сможет снова вводить документы и составлять отчетность. Найдя по данным https://www.prog-msk.ru/опытного программиста Александра, решили эту проблему, человек буквально за пол часа смог настроить в правильный режим конфигуратор, восстановил все данные ранее введенные нами.

Убедитесь, что в письме присланы все необходимые данные для обработки вашей заявки: — установленный продукт; — версия драйвера; — операционная система; — версия и конфигурация 1С; — модель ТСД.

Подскажите — это ответ технической поддержки на тему решения проблемы ?

Честно говоря, этот портал — просто публичный форум. Любой зарегистрированный может писать ответы.

Ошибка при выполнении обработчика

Пример сообщения при ошибке: «: Процедура или функция с указанным именем уже определена (Подготовить таблицыЗачетаАвансовКассовыйМетод)».

Причина возникновения ошибки

В современных типовых конфигурациях появилось такое понятие как патчи (исправления), которые на самом деле представляют из себя уже знакомые нам расширения.

И получается, что разработчик, выпустив какое-то обновление к конфигурации, далее выпускает эти самые патчи, чтобы исправить обнаруженные в обновлении ошибки.

Патчи можно безболезненно устанавливать и удалять (это ведь на самом деле расширения) — причём это можно делать при работающих пользователях.

Установленный патч начинает работать у пользователя только после перезапуска открытой у него базы.

Но каждый патч предназначен лишь для определенной версии конфигурации, а значит после очередного обновления все устаревшие патчи должны быть удалены.

И вот если этого не сделать — возникает описанная выше ошибка.

Как устранить возникшую ошибку

Прежде всего обновите ваш обновлятор на последнюю доступную на сайте версию.

Начиная с версии обновлятора от 6 декабря 2019 года я предусмотрел выполнение необходимых процедур при выполнении обработчиков обновления. Эти процедуры удаляют из конфигурации устаревшие патчи (речь идёт о вызове функции ‘ИсправленияИзменены‘ из общего модуля ‘ОбновлениеКонфигурации‘).

Но что делать, если ошибка уже возникла?

Первый способ устранения ошибки

Откройте базу в режиме пользователя.

Зайдите в раздел «Администрирование» пункт «Обслуживание»:

Далее раскройте подраздел «Обновление программы» и выберите пункт «Установленные исправления (патчи)»:

В открывшемся окне удалите все установленные исправления:

После этого перезапустите 1с и убедитесь, что ошибка исчезла.

Используйте версию обновлятора после 6 декабря 2019 года, чтобы эта ошибка не возникла вновь (так как он автоматически удаляет устаревшие патчи при выполнении обработчиков обновления).

Второй способ устранения ошибки

Первый способ может быть трудоёмким, если у вас несколько десятков баз. Сейчас я покажу как можно выполнить удаление устаревших патчей при помощи обновлятора сразу во всех базах.

Прежде всего обновляем обновлятор на последнюю версию (не ранее 6 декабря 2019 года).

Далее запускаем обновлятор и переходим на закладку «Скрипты»:

В этом случае зайдите в дополнительные настройки программы и перейдите на закладку «Интерфейс и общее поведение».

Здесь установите галку «Отображать закладку Скрипты» и установите значение справа в «показывать постоянно».

  • в пункте «Базы для запуска» выберите базы, в которых нужно исправить ошибку
  • отметьте значение «пакетный скрипт»
  • в редактор скрипта вставьте следующую строчку: @remove_obsolete_patches()
  • снимите все галки под редактором скрипта
  • если есть возможность выгнать пользователей на время операции установите галки «блокировать» и «разблокировать»
  • нажмите кнопку «запустить» и дождитесь окончания операции

Указанный скрипт выполнит процедуру удаления устаревших патчей во всех базах.

Для баз, в которых возникли ошибки при выполнении скрипта воспользуйтесь первым способом.

По поводу установки новых патчей

Сейчас вы можете это делать вручную в самой базе (в разделе «Администрирование»-«Обслуживание»). При этом вы можете по ходу дела отметить галку «Загружать и устанавливать исправления (патчи) автоматически».

В скором времени я добавлю новые возможности по этому поводу и в обновлятор также. Можно будет автоматически накатывать нужные патчи сразу после обновления конфигурации.

При этом я дам возможность устанавливать патчи либо напрямую с сайта 1с (используя поддержку ИТС), либо из локальной папки (это будет полезно, если на компьютере нет интернета).

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector