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

Статья об ошибке "В данной транзакции уже происходили ошибки" в 1С 8.3. Рассмотрим исправление ошибки наиболее простыми способами и особенности транзакций.

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

1С 8.3 документация по работе с программой

Содержание

  1. Причина появления сообщения о повторных ошибках в 1С 8.3
  2. Есть ли смысл исправлять ошибки транзакции, которые уже происходили
  3. Устраняем ошибку транзакции в 1С Предприятие версии 8.3
  4. Также можно выполнить удаление другим способом:
  5. Особенности написания кода, которые помогут исключить ошибку в транзакциях

Причина появления сообщения о повторных ошибках в 1С 8.3

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

Часть функций, которые выполняет платформа 1С

Подобная ошибка может произойти при обработки ситуации «Попытка-Исключение». Например, при создании записи «Объект_1» формируется исключительная ситуация, а сама ошибка появляется в «Ссылка_2.Наименование». То есть происходит запрос базы данных объектной модели.

В «Попытке-Исключение» начинается обработка операции, которая также должна быть выполнена в транзакции, которая, в свою очередь, может быть явной или неявной (создается в момент записи объекта).

1С: Предприятие 8.3 не поддерживает транзакций вложенного типа. Однако допускается создание вложенной конструкции сразу нескольких транзакций. Из-за наличия явной и неявной транзакции может возникнуть ошибка. То есть программа запрещает транзакцию 1-го уровня на более низших уровнях.

Читайте также: Значение не является значением объектного типа 1С.

Есть ли смысл исправлять ошибки транзакции, которые уже происходили

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

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

Устраняем ошибку транзакции в 1С Предприятие версии 8.3

В первую очередь стоит очистить кэш базы данных. Сделать это можно вручную. Для этого:

  1. Переходим на диск, на котором расположена база 1С.
  2. Переходим в папку с базой (путь может отличаться, но по умолчанию она установлена в той директории, которая показана на фото ниже).Путь в данным кэша 1С версии 8.3
  3. Удаляем кэш вручную.Удаление кэша вручную
  4. То же самое делаем с кэшем в папке 1с8.2.

Также можно выполнить удаление другим способом:

  1. Создаем на рабочем столе пустой документ. Назовем его «Удаление пользовательского кэша».Создание пустого документа на рабочем столе
  2. Указываем в нем следующую строчу и сохраняем документ в формате .bat.

Указание функции для очистки кэша

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

Также вам будет интересно: Ошибка в 1С 7.7 «Порядок сортировки, установленный для базы данных, отличается от системного».

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

Прежде всего нужно опираться на нюансы корректной обработки исключений:

  • Метод «Начать транзакцию» должен быть вынесен за пределы «Попытка-Исключение».
  • Действия, осуществляемые после вызова «Начать транзакцию» должны быть в пределах блока «Попытка». К этом также относится чтение, обработка или блокировка данных.
  • Метод «Зафиксировать транзакцию» необходимо прописывать последним в блоке «Попытка» и до «Исключение».
  • В блоке «Исключение» необходимо сначала обратиться к методу «Отменить транзакцию» и уже потом выполнять прочие действия.
  • Если применяются вложенные транзакции, то в конце «Исключение» не лишним будет добавить оператора «Вызвать исключение».
  • В «Исключения» следует добавить соответствующую запись об ошибке.
  • Если транзакция неявная, то нет никакого смысла переходить к методу «Начать транзакцию». Некоторые также пробуют «обернуть» в явную транзакцию те операции, которые и вовсе не нуждаются в согласовании.

Решить проблему транзакций, в которых происходят ошибки, самостоятельно получается не всегда. Поэтому стоит попробовать выполнить простейшие действия – перезагрузить программу или очистить кэш. К более серьезным манипуляциям в 1С стоит переходить только при уверенности, что вы обладаете достаточным опытом.

Содержание:

1.       Причина ошибки в 1С Предприятие 8.3

2.       Почему ошибку «В данной транзакции уже происходили ошибки» надо устранить

3.       Как устранить ошибку в программе 1С Предприятие 8

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

В данной транзакции уже происходили ошибки

В данной транзакции уже происходили ошибки

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

Давайте разберемся в чем причина.  

1.    Причина ошибки в 1С Предприятие 8.3

С технической точки зрения эта ошибка в 1С:Предприятие 8.3 возникает в транзакции в момент первого обращения к базе данных после обработки исключительной ситуации операторами (Попытка-Исключение).

Ниже на рисунке продемонстрирован пример, когда при записи объекта «Объект_1» вызывается исключительная ситуация, при этом ошибка возникает в строке «Ссылка_2.Наименование», т.к. осуществляется запрос к базе данных в объектной модели данных. И не важно, запись это или чтение.

Возникновение ошибки в 1С Предприятие 8.3 при записи объекта

Возникновение ошибки в 1С Предприятие 8.3 при записи объекта

Причем в попытке-исключении обрабатываться операция, которая также выполняется в транзакции. Чаще всего это сочетание явных и неявных транзакций, т.е. транзакций, вызванных оператором НачатьТранзакцию явно и транзакций, вызванных платформой неявно (например, при записи объекта).

Как известно, система 1С:Предприятие 8.3 не поддерживает вложенных транзакций, но допускает организацию вложенной конструкции нескольких транзакций. В нашем примере явный вызов транзакции оператором НачатьТранзакцию – транзакция 1 уровня, а неявная транзакция записи – транзакция 2 уровня и т.д. Возникновение ошибки на нижних уровнях запрещает успешное завершение транзакции 1 уровня. Другими словами, откатывается все «дерево транзакций».

В чем же здесь проблема?  

2.    Почему ошибку «В данной транзакции уже происходили ошибки» надо устранить

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

Во-вторых, воспроизведение ошибки и ее отладка администратором тоже будет не простым занятием. Дело в том, что ошибка возникает в момент первого обращения к базе данных, т.е. в журнале регистрации будет зафиксирована именно эта строка. Хотя сама причина этой ошибки находиться в коде на самом нижнем уровне. В нашем примере «Объект_1» может содержать различные проверки перед записью, «завернутые» в конструкцию «Попытка-Исключение», которые, в свою очередь, могут также иметь глубокую иерархию вызовов процедур и функций. Попробуй разберись.

В-третьих, суть этой ошибки – некорректный код. А если быть более точным – несоблюдение требований к написанию кода с использованием транзакций.

Как решить эту проблему в 1С:Предприятие?  

3.    Как устранить ошибку в программе 1С Предприятие 8

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

1. Метод НачатьТранзакцию должен находиться за пределами блока Попытка-Исключение;

2. Все действия, выполняемые после вызова метода НачатьТранзакцию, должны находиться в одном блоке Попытка, в том числе чтение, блокировка и обработка данных;

3. Метод ЗафиксироватьТранзакцию должен идти последним в блоке Попытка перед оператором Исключение;

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

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

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

Общая схема во вложенной транзакции:

Схема вложенной транзакции в системе 1С:Предприятие 8.3

Пример:

Пример вложенной транзакции для решения ошибки «В данной транзакции уже происходили ошибки»

Пример вложенной транзакции для решения ошибки «В данной транзакции уже происходили ошибки»

Не следует использовать метод НачатьТранзакцию внутри неявной транзакции, вызванной платформой. В этом нет никакого смысла. Не стоит также «оборачивать» в явную транзакцию операцию записи коллекции объектов, которые не требуют согласованной записи. Если в блоке исключения, вложенной транзакции не используется оператор ВызватьИсключение, а используется, например, сообщение или запись в журнал регистрации, то нужно избегать явного или неявного обращения к базе данных после обработки исключения в конфигурациях 1С Предприятие 8.

Специалист компании «Кодерлайн»

Игорь Торба

В данной транзакции уже происходили ошибки!

Я
   Privetanya

02.08.19 — 09:06

Ошибка при вызове метода контекста (Выполнить)

Выборка = Запрос.Выполнить().Выбрать();

по причине:

Ошибка выполнения запроса

по причине:  

В данной транзакции уже происходили ошибки!

Не могу понять в чем проблема,помогите пожалуйста…

после выполнения

Номенклатура=Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры))

Номенклатура =Ошибка получения представления значения: В данной транзакции уже происходили ошибки!

   Cyberhawk

1 — 02.08.19 — 09:08

В поломанной транзакции обращаться к БД нельзя

   Cyberhawk

2 — 02.08.19 — 09:08

Истинная проблема где-то в коде до того места, где тебе показало эту ошибку

   piter3

3 — 02.08.19 — 09:08

С чего решил,что здесь?

Номенклатура=Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры))

   Privetanya

4 — 02.08.19 — 09:11

(3) после выполнения этой строки номенклатура=Ошибка получения представления значения: В данной транзакции уже происходили ошибки!. Отладчиком проверяла

   Privetanya

5 — 02.08.19 — 09:11

(2) как найти?

   Cyberhawk

6 — 02.08.19 — 09:12

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

   Cyberhawk

7 — 02.08.19 — 09:13

(5) Написать хитрый метод в общем модуле, в каждой строке кода в режиме трассировки вызывать этот метод, который будет возвращать признак того, что транзакция поломана. Ну это если совсем тямы нет прикинуть по коду, где же факап случился.

   piter3

8 — 02.08.19 — 09:13

(4)Нет,ищи ранее

   Privetanya

9 — 02.08.19 — 09:26

(8) я взяла эту обработку из комплексной и перенесла на нашу самописку. Там все хорошо работает.а тут такая ошибка…

   piter3

10 — 02.08.19 — 09:27

(9) И че?Ищи,попробуй на копии без транзакции

   Privetanya

11 — 02.08.19 — 09:38

(10) так странно. В этой функции ВИНоменклатуры = Неопределено

Функция НайтиСоздатьНоменклатуру(СтрокаТовара, Знач ВидНоменклатуры, СтавкаНДС, ВИНоменклатуры = Неопределено)

    
    Номенклатура = Справочники.Номенклатура.ПустаяСсылка();

    ВИНоменклатуры = Неопределено;

    
    УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено);

а при вызове ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам приходит уже Истина.

Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры)

    
    Если НЕ ЗначениеЗаполнено(СтрокаТовара.ТоварУслугаИд) Тогда

        Возврат Ложь;

    КонецЕсли;

    
    Попытка                  

        
        ИдНоменклатуры = ПолучитьИдНоменклатуры(СтрокаТовара.ТоварУслугаИд);

        Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры));

   piter3

12 — 02.08.19 — 09:39

Истина это нашла или нет?Я же не вижу что там

   Privetanya

13 — 02.08.19 — 10:21

(12) Если посмотреть в комплексной,то там получает так же неопределено. А у меня истина.

   piter3

14 — 02.08.19 — 10:21

(13) Может стоит подумать над кодом и отличиями?

   Вафель

15 — 02.08.19 — 10:24

в транзакции нельзя записывать с попыткой. все равно ломается

   Privetanya

16 — 02.08.19 — 10:27

(14) Вот ищу отличия

   dka80

17 — 02.08.19 — 10:30

Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры)

Возврат Истина

КонецФункции

Тогда увидишь где ошибка ранее

   zva

18 — 02.08.19 — 10:34

Вместо УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено);

нужно УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры);

   catena

19 — 02.08.19 — 10:37

УспешноНайдено = ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ВИНоменклатуры= Неопределено);

— ну еще бы оно не приходило «Истина»

   Privetanya

20 — 02.08.19 — 10:39

(18) ошибка осталась

   Privetanya

21 — 02.08.19 — 10:42

(17) не вижу ошибку ранее,значит она в этой функции

   Privetanya

22 — 02.08.19 — 10:51

(15) убрала попытку и вышла вот такая ошибка. {Обработка.ОбменССайтом.МодульОбъекта(5103)}: Ошибка при вызове метода контекста (ПолучитьОбъект)

        Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда

по причине:

В данной транзакции уже происходили ошибки!

Функция ВыполнитьПоискНоменклатурыХарактеристикиПоСсылкам(СтрокаТовара, Номенклатура, ХарактеристикаНоменклатуры)

    
    Если НЕ ЗначениеЗаполнено(СтрокаТовара.ТоварУслугаИд) Тогда

        Возврат Ложь;

    КонецЕсли;

    
    //Попытка

        
        ИдНоменклатуры = ПолучитьИдНоменклатуры(СтрокаТовара.ТоварУслугаИд);

        Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдНоменклатуры));

        Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда

            Возврат Ложь;

        КонецЕсли;

        
        Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда

            // Объект не найден

            СообщитьПользователю(«Номенклатура не найдена по уникальному идентификатору: » + ИдНоменклатуры, Ложь);

            Возврат Ложь;

        КонецЕсли;

        
        Если НЕ Номенклатура.ВестиУчетПоХарактеристикам Тогда

            Возврат Истина;

        КонецЕсли;

        
        ИдХарактеристики = ПолучитьИдХарактеристики(СтрокаТовара.ТоварУслугаИд);

        Если ПустаяСтрока(ИдХарактеристики) Тогда

            Возврат Истина;

        КонецЕсли;

        
        ХарактеристикаНоменклатуры = Справочники.ВариантыИсполнения.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдХарактеристики));

        ПустаяХарактеристикаСсылка=Справочники.ВариантыИсполнения.ПустаяСсылка();

        Если ХарактеристикаНоменклатуры = ПустаяХарактеристикаСсылка Тогда

            Возврат Истина;

        КонецЕсли;

            
        Если ХарактеристикаНоменклатуры.ПолучитьОбъект() = Неопределено Тогда

            СообщитьПользователю(«Объект <ХарактеристикаНоменклатуры> не найден: » + Строка(ИдХарактеристики)

                + «. Будет создан новый объект.», Ложь);

                
            Возврат Ложь;

            
        КонецЕсли;

        
    //Исключение

        
    //    Возврат Ложь;

        
    //КонецПопытки;

    
    Возврат Истина;

    
КонецФункции

   Вафель

23 — 02.08.19 — 10:54

(22) нельзя ЗАПИСЫВАТЬ в попытке. ищи запись выше по коду

   Cyberhawk

24 — 02.08.19 — 10:55

(15) (23) Что-то ты несешь ерунду

   catena

25 — 02.08.19 — 10:56

(22)Поставь уже в отладчике остановку по ошибке.

   GGDots

26 — 02.08.19 — 10:59

(25) +

   DrZombi

27 — 02.08.19 — 11:09

(22) Номенклатура.ПолучитьОбъект()

Что вы тут пытаетесь проверить… Баже святы…

У вас какой уровень в 1С? :)

   DrZombi

28 — 02.08.19 — 11:09

(25) Тут и без отладчика видно ошибку :)

   DrZombi

29 — 02.08.19 — 11:11

+(22) «Если Номенклатура.ПолучитьОбъект() = Неопределено Тогда»

Тут скрыт первый косяк… «Детектит, ГУАНО код»… Рекомендую тут подумать вам, и переписать :)

   Privetanya

30 — 02.08.19 — 11:17

похоже поняла. Ошибка происходит при записи договора контрагента.

   DrWatson

31 — 02.08.19 — 11:30

(30) Нужно найти ту первую Попытку с записью данных в БД, которая вываливается в исключение без «В данной транзакции уже происходили ошибки!». После такого исключения продолжать работу в транзакции уже нельзя. Нужно выходить из всех вызывающих процедур. Лучше всего это сделать через ВызватьИсключение с человеческим сообщением об ошибке или вообще не делать попытку.

Возможно, обработка просто не рассчитана на работу в транзакции.

   catena

32 — 02.08.19 — 11:59

(27)По-моему, проверяется найденность элемента по переданному ИД. А как надо?

   hhhh

33 — 02.08.19 — 12:08

(32) а точно там «Неопределено» выдаст? может null?

   catena

34 — 02.08.19 — 12:27

   Cyberhawk

35 — 02.08.19 — 12:29

(32) Запросом же можно (с условием на ссылку)

   catena

36 — 02.08.19 — 12:32

(35)Ну, это дело вкуса, при разовом обращении не вижу тут грубой ошибки.

  

Cyberhawk

37 — 02.08.19 — 12:34

(36) Все зависит от того, планируется ли дальнейшая работа с объектом. Если только для проверки существования, то избыточное получение данных налицо.

Описание ошибки:
При обращении к платежному терминалу в 1С 8 «Ошибка эквайринговой системы: Статус=-1 (Неизвестный статус транзакции). Операция по карте не выполнена». Платформа 1С: Предприятие 8.3.18.1289. Конфигурация 1С: Управление торговлей 10.3.71.

Найденные решения:

Нажатие на изображении увеличит его
1С 8, ошибка эквайринговой системы статус -1 неизвестный статус транзакции

Но ошибка может возникнуть и в других конфигурациях и на других релизах платформы. И сдругими терминалами. В данном примере ситуация возникла с терминалом PAX S300 от Альфа-банка.

1С 8, ошибка работы с терминалом эквайринговой системы статус -1 неизвестный статус транзакции

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

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

Но есть и другие причины и соответственно способы, как исправить, устранить ошибку «Ошибка эквайринговой системы: Статус=-1 (Неизвестный статус транзакции)». Ниже приведу краткий список интересных материалов по теме:

  • Обсуждение на форуме Инфостарт Ошибка Статус=-1 (неверный статус транзакции) — ошибка в конфигурации 1С: Розница 2 на платформе 1С 8.3.11, терминал подключен через COM-порт. Среди предлагаемых решений помогло замена переходника, т.е. причина чисто техническая. Так же среди отмеченных на примере терминалов PAX помогала перезагрузка компьютера или проверка наличия и исключение конфликта оборудования, или проблемы USB портов.
  • Обсуждение на профессиональном форуме bankomatchik.ru — на примере терминала PAX в Wndows 10 платформе 8.3, подключенного по USB с учетом эмуляции COM-порта и разбором содержимого файла pinpad.ini

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

18-03-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Добрый день, уважаемые коллеги.

Сегодня поделюсь обзором одной ошибки с неявным генезисом и отсутствующим описанием. Суть в следующем: пользователь внес в базу Бухгалтерия 3.0 документ поступление товаров и услуг (УПД), в котором неверно указан входящий номер. При попытке номер исправить и перепровести документ, 1С ругается «В данной транзакции уже происходили ошибки». Попытки отменить проведение, пометить на удаление или просто перезаписать этот документ вызывают аналогичное сообщение. Соседний аналогичный документ работает корректно.

Проблемная накладная от 01.04.2021, внешних поводов для беспокойства не вызывает. Конфигурация типовая, версии 3.0.89, релиз не самый последний, но довольно свежий и стабильный. База файловая, работает один человек. 

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

Если спросить у интернета, то он выдаст массу статей и обсуждений. Они верные по сути, но не дают ответа на вопрос что делать. То есть они объясняют суть проблемы: при возникновении ошибки в одном из уровней многоуровневой транзакции, отменяется всё дерево. Связано это с некорректным написанием кода и неверным использованием механизма транзакций. Рекомендуется писать код правильно. Что делать пользователям типовых конфигураций не написано.

Пошёл стандартным путём:

  1. Закрыл все окна, открыл документ заново и попробовал провести. Безрезультатно.
  2. Сохранив предварительно базу, обновил её до 3.0.91 — последнего релиза. Вдруг это действительно ошибка в коде. Не помогло.
  3. Протестировал базу стандартными средствами ТиИ конфигуратора и утилитой chdbfl. Ошибок нет, не помогло.
  4. Очистил кэш в папках AppDataRoaming и AppDataLocal (будьте внимательны, не удалите список баз!). Не помогло.
  5. Отключил ненужные фоновые задания. Остальным установил увеличенный интервал между попытками, расписание проверок сделал ежедневным. Впрочем, это явно лишнее — в списке активных пользователей была только одна строка. Действие не помогло.
  6. Стал размышлять: что ещё перепроводится при проведении поступления? Введённый на основании счет-фактура. При детальном изучении выяснилось, что у с/ф ошибочно была указана дата 01.01.2021. Т.е. документ попал в закрытый для редактирования период — дата запрета установлена на 31.03.2021. 

Снял флаг запрета, поправил дату и указал верный номер. Всё провелось без ошибок.

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

Небольшое пояснение. У 1С есть две похожие ошибки: «Объект изменен другим пользователем/ в другой транзакции» и «Ошибка блокировки транзакции». Они имеют пару похожих формулировок, но все они возникают когда записываемый объект занят другим пользователем. Это может быть как физический пользователь, так и регламентное задание. Частный случай — дважды открытый документ или элемент справочника. Именно для исключения этих ситуаций присутствуют действия в п. 1 и п. 5.

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

Понравилась статья? Поделить с друзьями:
  • Ошибка при проверке данных организации на госуслугах
  • Ошибка при получении бонуса твич
  • Ошибка при получении свойства subjectname указан неправильный алгоритм 0x80090008
  • Ошибка при проверке данных на госуслугах как исправить
  • Ошибка при получении undefined