Не удалось записать страна мира 1с
Ошибки базы данных и транзакции
При работе с базой данных могут происходить ошибки. В 1С:Предприятии 8 ошибки базы данных подразделяются на следующие две категории:
К невосстановимым относятся такие ошибки базы данных, при возникновении которых функционирование 1С:Предприятия 8 может быть серьезно нарушено. Поэтому, во избежание более серьезных неприятностей (например, порчи данных), при возникновении невосстановимой ошибки выполнение 1С:Предприятия 8 прекращается. Если невосстановимая ошибка базы данных произошла в процессе выполнения транзакции, то все изменения сделанные в рамках этой транзакции отменяются.
При возникновении восстановимой ошибки считается, что серьезных нарушений в работе 1С:Предприятия 8 не произошло и работа может быть продолжена, но сама вызвавшая ошибку операция прекращается, и вызывается исключение, которое может быть перехвачено и обработано средствами встроенного языка. Казалось бы, все понятно. Но есть тонкость. Если восстановимая ошибка базы данных произошла в процессе выполнения транзакции, то, вне зависимости от того, было исключение, вызванное этой ошибкой, перехвачено и обработано или нет, транзакция уже не может быть продолжена или зафиксирована. Единственная операция с базой данных, которую можно произвести в такой ситуации - это отмена транзакции. Таким образом, приведенный фрагмент кода не вполне корректен:
Если при выполнении оператора Данные.Записать() произойдет восстановимая ошибка базы данных (например, по причине того, что элемент данных был заблокирован другим пользователем), то вызванное этой ошибкой исключение будет перехвачено, но повторное выполнение этого же оператора в цикле уже безусловно приведет к ошибке, так как при выполнении данной транзакции уже имела место ошибка базы данных. Следует заметить, что не всякая ошибка приводит к невозможности продолжения выполнения и фиксации транзакции, а именно ошибка базы данных. Исключения, не имеющие отношения к ошибкам базы данных, никакого влияния на возможность продолжения выполнения транзакции не оказывают.
Как же выйти из такой ситуации? Общее правило состоит в следующем: если при выполнении транзакции имели место ошибки базы данных, то следует отменить всю транзакцию в целом и, в случае необходимости, повторить попытку ее выполнения с самого начала. Таким образом, приведенный выше пример должен быть переработан следующим образом:
В данном варианте, если при выполнении оператора Данные.Записать() произойдет восстановимая ошибка базы данных, то при обработке исключения, вызванного этой ошибкой, транзакция будет отменена и при повторном выполнении цикла транзакция будет начата сначала.
Следует однако сделать предостережение. Дело в том, что в рамках уже выполняемой транзакции можно обращаться к методам НачатьТранзакцию() , ЗафиксироватьТранзакцию() и ОтменитьТранзакцию() . Однако вызов метода НачатьТранзакцию() при уже выполняющейся транзакции не означает начала новой транзакции. В этом случае просто произойдет увеличение на 1 значения внутреннего счетчика транзакций. Метод НачатьТранзакцию() начинает новую транзакцию только в том случае, если значение внутреннего счетчика транзакций равно 0. Аналогично, обращение к методам ЗафиксироватьТранзакцию() или ОтменитьТранзакцию() приводит к реальному завершению транзакции только в том случае, если значение внутреннего счетчика транзакций равно 1. Если при значении счетчика транзакций большем 1 произойдет обращение к методу ЗафиксироватьТранзакцию() , то значение счетчика будет просто уменьшено на 1:
Если же при значении счетчика траназкций большем 1 произойдет обращение к методу ОтменитьТранзакцию() , то значение счетчика транзакций не только будет уменьшено на 1, но и произойдет установка признака, не позволяющего зафиксировать результаты выполнения всей транзакции в целом. И последующее обращение к методу ЗафиксироватьТранзакцию() , выполняемое при значении счетчика транзакций равном 1, фактически приведет к отмене транзакции:
Аналогично, ошибка базы данных, произошедшая при значении счетчика транзакций большем 1, приведет к невозможности продолжения и фиксации всей транзакции в целом.
При интеграции с порталом и использовании услуг портала возможно возникновение проблем или ошибок, например:
У пользователя не работает услуга портала.
Подписки перестали отправляться в портал.
Ниже описаны действия при возникновении других ошибок.
Содержание
1. Общие действия
Проверить актуальность расширения по интеграции с порталом ИТСПроверить актуальность расширения по интеграции с порталом ИТС для менеджера сервиса: команды меню Все функции — Управление расширениями конфигурации , расширение ИнтеграцияСПорталомИТС .
Проверить основные настройки интеграции с порталом в менеджере сервисаПроверить основные настройки интеграции с порталом в менеджере сервиса: команды меню Интеграция — Учетные системы , учетная система Портал 1С:ИТС .
2. Если у пользователя не работают услуги портала.
При возникновении ошибок при работе с услугами портала, например не выполняется заполнение реквизитов контрагентов, необходимо выполнить следующие действия.
Проверить, отправлены ли портал данные абонента, пользователя абонента и подпискиНужно проверить, отправлены ли портал следующие данные:
Статус интеграции показывается в справочнике Абоненты (команда меню Обслуживание — Абоненты):
И в форме свойств абонента (пункт меню формы Интеграция ):
Статус интеграции показывается в справочнике Пользователи абонентов (команда меню Обслуживание — Пользователи абонентов):
И в форме свойств абонента (пункт меню формы Пользователи абонента ):
Статус интеграции показывается в форме списка Подписки (команда меню Управление тарифами — Подписки):
И в форме свойств подписки (пункт меню формы Интеграция ):
Если какой либо из объектов не интегрирован и вместо значка указан значок , нужно проверить наличие ошибок в логе отправки. Лог отправки расположен в нижней части формы элемента после выбора пункта меню формы Интеграция :
Нужно проверить, заполнен ли реквизит Идентификатор у обслуживающей организации, указанной в портале.
Для этого нужно открыть карточку обслужи вающей организации в справочнике Абоненты :
В поле Идентификатор нужно указать код партнера. Например, если Код партнера 000987-77, то указываем 000987, или 987
Открыть форму свойств активной подписки клиента и проверить наличие нужной услуги на вкладке Услуги :
Если услуги нет, возможно в тарифе указан некорректный тариф поставщика Портала 1С:ИТС.
Симптомы проблемы
В списке Подписки у новых подписок не появляются значки интеграции, либо долго висят значки «часиков» .
В списке подписок не отправленные в портал подписки отображаются знаком .
Решение
Если пользователь абонента, который вызывает услугу, не отправлен на порталОткрыть карточку абонента, выбрать в ней команду меню Пользователи абонента , проверить состояние интеграции, показанное в левой колонке:
Причины неотправки абонентов в основном технические, возможны разные ситуации:
Область данных: 38 253
3. Расхождение данных портала и менеджера сервиса
Расхождение данных Портала 1С:ИТС и менеджера сервиса. Например: на портале на 10 подписок больше чем в менеджере сервиса.
Чтобы объект также был удалён на портале, достаточно поставить пометку на удаление на соответствующий объект Подписки, Абонента или Пользователя абонента.
4. Подписки перестали отправляться в портал
В списке подписок у новых подписок не появляются значки интеграции, либо долго висят значки «часиков»5. Устранение причин непринятия подписок порталом
- Вывести карточку свойств подписки и выбрать команду меню Интеграция.
- Посмотреть описание состояния интеграции и лог отправки.
Открыть описание объекта к отправке, показанное в списке Данные к отправке:
По этим сведениям можно понять причину, после чего нужно эту причину устранить. Возможные причины делятся на 2 типа:
- Бизнес-ошибка в подписке
- Техническая ошибка на Портале 1С:ИТС
5.1. Бизнес-ошибки
Бизнес-ошибки нужно устранять силами партнера, указав ее причины.
На каждый запрос идет проверка по логину и паролю от конкретного экземпляра сервиса Фреш.
Также выполняются проверки заполнения полей. Описание проверок приведены в п.6 документа Rest API Портала 1С:ИТС Fresh-Integration
Ниже приведены примеры бизнес-ошибок.
Could not read JSON document: Can not deserialize valueПример ошибки
Решение
У обслуживающей организации указан код партнера отличный от числа. Нужно чтобы у обслуживающей организации код партнера был числом.
Код партнера указывается в поле Идентификатор без последних цифр после "-". Например, если Код партнера 000987-123, то указываем 000987, или 987 :
Пример ошибки
Решение
Тарифы поставщиков услуг доступны с помощью команды меню Управление тарифами — Тарифы поставщиков услуг или по ссылке e1cib/list/Справочник.ТарифыПоставщиковУслуг.
Пример ошибки
Решение
Партнер или оператор сервиса должен создать новую подписку. Эту подписку нужно вернуть в исходное состояние или пометить на удаление, если она не актуальна.
5.2. Технические ошибки
Технические ошибки нужно устранять самостоятельно, либо, если ошибка не устраняется, нужно связаться с отделом разработки портала 1С:ИТС.
Пример ошибки
Решение
Здесь будут доступны те же кнопки и . Их можно использовать следующим образом:
- Если в списке выделен один элемент, то операция будет выполнена для всех элементов списка.
- Если в списке выделено несколько элементов, то операция будет выполнена только для выделенных элементов.
Также в этом списке можно открывать отдельные объекты к отправке и выполнять их отправку из формы свойств объекта.
Симптомы проблемы
Решение
Ошибка проявляется на тестовых и боевых серверах.
-
В инфраструктуре сервиса Портала 1С:ИТС идут какие-то нагрузочные тесты.
Код партнера должен быть из существующих кодов партнера.
Нужно установить обслуживающей организации существующий код партнера, например 987 или 456.
Читайте также: