Содержание:
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 уровня, а неявная транзакция записи – транзакция 2 уровня и т.д. Возникновение ошибки на нижних уровнях запрещает успешное завершение транзакции 1 уровня. Другими словами, откатывается все «дерево транзакций».
В чем же здесь проблема?
2. Почему ошибку «В данной транзакции уже происходили ошибки» надо устранить
Во-первых, пользователь никогда не поймет в чем причина, т.к. формулировка сообщения об ошибке для него не информативна.
Во-вторых, воспроизведение ошибки и ее отладка администратором тоже будет не простым занятием. Дело в том, что ошибка возникает в момент первого обращения к базе данных, т.е. в журнале регистрации будет зафиксирована именно эта строка. Хотя сама причина этой ошибки находиться в коде на самом нижнем уровне. В нашем примере «Объект_1» может содержать различные проверки перед записью, «завернутые» в конструкцию «Попытка-Исключение», которые, в свою очередь, могут также иметь глубокую иерархию вызовов процедур и функций. Попробуй разберись.
В-третьих, суть этой ошибки – некорректный код. А если быть более точным – несоблюдение требований к написанию кода с использованием транзакций.
Как решить эту проблему в 1С:Предприятие?
3. Как устранить ошибку в программе 1С Предприятие 8
Основным требованием к написанию кода с использованием транзакций, непосредственно связанным с ошибкой «В данной транзакции уже происходили ошибки» в 1С:Предприятие, являются правила использования обработки исключения:
1. Метод НачатьТранзакцию должен находиться за пределами блока Попытка-Исключение;
2. Все действия, выполняемые после вызова метода НачатьТранзакцию, должны находиться в одном блоке Попытка, в том числе чтение, блокировка и обработка данных;
3. Метод ЗафиксироватьТранзакцию должен идти последним в блоке Попытка перед оператором Исключение;
4. В блоке Исключение нужно сначала вызвать метод ОтменитьТранзакцию, а затем выполнять другие действия;
5. При использовании вложенных транзакций в конце блока Исключение рекомендуется добавить оператор ВызватьИсключение. Это позволит перенаправить исключение выше по стеку. В этом случае в журнале регистрации мы получим именно ту строку, которая привела к ошибке;
6. В блоке исключения рекомендуется сделать запись об ошибке средствами встроенного языка.
Общая схема во вложенной транзакции:
Схема вложенной транзакции в системе 1С:Предприятие 8.3
Пример:
Пример вложенной транзакции для решения ошибки «В данной транзакции уже происходили ошибки»
Не следует использовать метод НачатьТранзакцию внутри неявной транзакции, вызванной платформой. В этом нет никакого смысла. Не стоит также «оборачивать» в явную транзакцию операцию записи коллекции объектов, которые не требуют согласованной записи. Если в блоке исключения, вложенной транзакции не используется оператор ВызватьИсключение, а используется, например, сообщение или запись в журнал регистрации, то нужно избегать явного или неявного обращения к базе данных после обработки исключения в конфигурациях 1С Предприятие 8.
Специалист компании «Кодерлайн»
Игорь Торба
Добрый день, уважаемые коллеги.
Сегодня поделюсь обзором одной ошибки с неявным генезисом и отсутствующим описанием. Суть в следующем: пользователь внес в базу Бухгалтерия 3.0 документ поступление товаров и услуг (УПД), в котором неверно указан входящий номер. При попытке номер исправить и перепровести документ, 1С ругается «В данной транзакции уже происходили ошибки». Попытки отменить проведение, пометить на удаление или просто перезаписать этот документ вызывают аналогичное сообщение. Соседний аналогичный документ работает корректно.
Проблемная накладная от 01.04.2021, внешних поводов для беспокойства не вызывает. Конфигурация типовая, версии 3.0.89, релиз не самый последний, но довольно свежий и стабильный. База файловая, работает один человек.
Беда подобной ошибки в том, что она не имеет четкого описания. Нет ссылок на проблемный код в конфигураторе. Нет отсылок к неверным реквизитам или пользовательским данным. С чего начинать поиски причины неясно.
Если спросить у интернета, то он выдаст массу статей и обсуждений. Они верные по сути, но не дают ответа на вопрос что делать. То есть они объясняют суть проблемы: при возникновении ошибки в одном из уровней многоуровневой транзакции, отменяется всё дерево. Связано это с некорректным написанием кода и неверным использованием механизма транзакций. Рекомендуется писать код правильно. Что делать пользователям типовых конфигураций не написано.
Пошёл стандартным путём:
- Закрыл все окна, открыл документ заново и попробовал провести. Безрезультатно.
- Сохранив предварительно базу, обновил её до 3.0.91 — последнего релиза. Вдруг это действительно ошибка в коде. Не помогло.
- Протестировал базу стандартными средствами ТиИ конфигуратора и утилитой chdbfl. Ошибок нет, не помогло.
- Очистил кэш в папках AppData\Roaming и AppData\Local (будьте внимательны, не удалите список баз!). Не помогло.
- Отключил ненужные фоновые задания. Остальным установил увеличенный интервал между попытками, расписание проверок сделал ежедневным. Впрочем, это явно лишнее — в списке активных пользователей была только одна строка. Действие не помогло.
- Стал размышлять: что ещё перепроводится при проведении поступления? Введённый на основании счет-фактура. При детальном изучении выяснилось, что у с/ф ошибочно была указана дата 01.01.2021. Т.е. документ попал в закрытый для редактирования период — дата запрета установлена на 31.03.2021.
Снял флаг запрета, поправил дату и указал верный номер. Всё провелось без ошибок.
Однако вопрос к коду типовой конфигурации остался: ошибка очень неявная. Вместо конкретного указания на невозможность перепровести счет-фактуру из-за установленной даты запрета, пользователь видит неинформативную надпись общего характера. Как так получается, что 1С игнорирует собственные стандарты разработки затрудняя поиск источника проблем не только пользователю, но и специалистам — загадка.
Небольшое пояснение. У 1С есть две похожие ошибки: «Объект изменен другим пользователем/ в другой транзакции» и «Ошибка блокировки транзакции». Они имеют пару похожих формулировок, но все они возникают когда записываемый объект занят другим пользователем. Это может быть как физический пользователь, так и регламентное задание. Частный случай — дважды открытый документ или элемент справочника. Именно для исключения этих ситуаций присутствуют действия в п. 1 и п. 5.
Если статья оказалась полезной, вы можете поддержать блог, отправив символическую сумму через форму ниже. Ваша поддержка вдохновляет меня на создание новых статей.
EugeniaK
02.06.13
✎
21:06
Есть 2 связанных документа.
ПриходныйДокумент по которому формируется ОтчетПроизводстваЗаСмену (ОПЗС)
Ссылка на сформированный ОПЗС записывается в ПриходныйДокумент.
Необходимо при проведении ПриходногоДокумента дополнительно проводить связанный ОПЗС.
Однако в некоторых случаях при проведении ОПЗС происходит ошибка проведения. Т.е. его провести нельзя в связи с недозаполненностью каких-либо данных.
При этом оба документа должны остаться непроведенными.
Однако в этом случае выскакиеват сообщение «В данной транзакции уже происходили ошибки», которое пугает пользователя.
Насколько я понимаю, ошибка связана с тем, что происходит отмена транзакции внутри транзакции. Собственно вопрос, как убрать сообщение об ошибке «В данной транзакции уже происходили ошибки» и заменить на более корректное?
EugeniaK
02.06.13
✎
21:14
Ошибка при вызове метода контекста (Записать): В данной транзакции уже происходили ошибки!
hhhh
02.06.13
✎
21:25
(1) наверно при первой ошибке забыли отменить транзакцию
EugeniaK
02.06.13
✎
21:28
(2) Первая ошибка заключается в том, что в ОбработкеПроведения ОПЗС записали Отказ=Истина.
Т.е. ошибка как таковой и не было. При проведении связанного документа не прошли проверки и проведение отменилось.
Соответственно и проведение исходного документа должно отмениться.
hhhh
02.06.13
✎
21:31
значит были ошибки, раз она говорит. Может это не первая ошибка, а вторая ошибка в цикле повторяется?
EugeniaK
02.06.13
✎
21:48
(4) В проведении документа есть команда вида
ДокументОПЗС.Записать(РежимЗаписи.Проведение)
Вот в случае если вложенное проведение не прошло (Отказ = Истина) и возникает ошибка.
До этого ошибок никаких нет.
Кстати, «Отказ = Истина» это вообще классифицируется как ошибка или как корректная отмена проведения?
ИсчадиеADO
02.06.13
✎
21:53
вложенная транзакция с попыткой. Если в попытке срабатывает исключение, то возникает ошибка
Славен
02.06.13
✎
21:54
(6)+100
Emilio
02.06.13
✎
23:45
(0) у мебя часто наблюдал эту ошибку из-за неправильных блокировок.
Emilio
02.06.13
✎
23:45
(8) *себя
ICWiner
03.06.13
✎
04:36
В исключении юзай ИнформацияОбОшибке, посмотри в СП синтаксис.
Web00001
03.06.13
✎
05:10
(5)Что вы понимаете под «корректная отмена проведения»?
Документ либо провелся и сделал движения, либо нет.
Ну и как бы да. Если отказ проведения штатная ситуация, просто используй исключение в момент записи и отрабатывай ошибочную ситуацию, как тебе удобно.
EugeniaK
03.06.13
✎
10:39
(11) Корректная отмена проведения — при проведении какая-то проверка показала, что проводить нельзя.
Некорректная отмена — произошла исключительная ситуация (блокировка в базе, деление на ноль или что-то еще нестандартное)
(10) Попробую
ИсчадиеADO
03.06.13
✎
11:06
Женя, нет ли вложенной транзакции? Если есть,то (6)
EugeniaK
03.06.13
✎
16:48
(13) Там получается транзакция, в ней попытка и в этой попытке снова транзакция.
Вынесла проведение связанного документа ОПЗС в процедуру ПередЗаписью() модуля формы. Ничего лучше не придумала.
В модуле объекта в любом случае получается транзакция в транзакции.
acsent
03.06.13
✎
16:49
попытка Записать() исключение Отказ = Итсина Конец
acsent
03.06.13
✎
16:50
(14) в этом вся фишка то и есть, что в одной транзакции все происходит
EugeniaK
03.06.13
✎
17:24
(15) Так и стояло изначально.
Просто транзакция уже начата, находимся в ОбработкеПроведения. При вызове Записать(Режим.Проведение) открывается вложенная транзакция.
И если в команде Записать(Режим.Проведение) проведение неудачно (т.е. внутри Отказ = Истина), то ошибка.
«Попытка» не спасает.
Все равно «В данной транзакции уже происходили ошибки»
рубрики: Язык программирования 1С | Дата: 25 апреля, 2017
В прошлый раз мы рассмотрели простейший способ явной организации транзакций средствами встроенного языка 1С. На практике транзакции гораздо чаще используются совместно с конструкцией Попытка — Исключение. Это позволяет в случае ошибки продолжить выполнение кода, а также выдать адекватное сообщение об ошибке пользователю и записать информацию в журнал регистрации или в файл логов для последующего анализа администратором системы.
Если мы обратимся к технической документации или к диску ИТС, то увидим, что фирма 1С рекомендует следующий способ организации транзакции в попытке
Попытка
//1. Начало транзакции.
НачатьТранзакцию();
//2. Блок операций, выполняющихся в транзакции.
//3. Если все операции успешны, фиксируем транзакцию.
ЗафиксироватьТранзакцию();
Исключение
//4. Если при выполнении кода возникли ошибки, отменяем транзакцию.
ОтменитьТранзакцию();
//5. При необходимости запись в журнал регистрации.
//6. При необходимости вывод сообщения пользователю.
КонецПопытки;
Собственно каких-то особых пояснений код не требует. Если в процессе попытки выполнения транзакционного кода возникает ошибка, мы сразу проваливаемся в блок исключение, т.е. до метода ЗафиксироватьТранзакцию() мы просто не доходим. Ну а в исключении соответственно отменяем транзакцию и если это необходимо выводим сообщение об ошибке и записываем информацию в журнал регистрации. Фиксировать ошибки в журнале регистрации крайне желательно, особенно для тех операций, которые выполняются без участия пользователя (например, регламентные задания). Это позволит в дальнейшем проанализировать ошибку. Вместо записи в журнал регистрации можно организовать отправку сообщений администратору по электронной почте.
Теперь вооружившись новыми знаниями попробуем видоизменить код, рассмотренный в статье про простейшие транзакции. Напомню, что мы рассматривали запись в справочник Товары и в регистр сведений Цена по следующей схеме:
&НаСервереБезКонтекста
Процедура ВыполнитьТранзакциюНаСервере()
НачатьТранзакцию();
//записываем новый товар
Товар = Справочники.Товары.СоздатьЭлемент();
Товар.Наименование = "Дырокол";
Товар.Записать();
//записываем цену
НаборЗаписей = РегистрыСведений.Цена.СоздатьНаборЗаписей();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Товар = Товар.Ссылка;
НоваяЗапись.Сумма = 100;
НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
КонецПроцедуры
А теперь поместим транзакцию в блок Попытка Исключение. Скорее всего ошибки могут возникнуть только в момент записи в справочник или в регистр сведений, поэтому предварительную подготовку вынесем за пределы транзакции.
&НаСервереБезКонтекста
Процедура ВыполнитьТранзакциюНаСервере()
//создаем новый товар
Товар = Справочники.Товары.СоздатьЭлемент();
Товар.Наименование = "Дырокол";
//Создаем запись с ценой
НаборЗаписей = РегистрыСведений.Цена.СоздатьНаборЗаписей();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Сумма = 100;
//Выполняем транзакцию в попытке
Попытка
НачатьТранзакцию();
Товар.Записать();
НоваяЗапись.Товар = Товар.Ссылка;
НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Произошла ошибка при записи товара и его цены";
Сообщение.Сообщить();
ЗаписьЖурналаРегистрации("Произошла ошибка при записи товара и его цены");
КонецПопытки;
КонецПроцедуры
Как НЕ НАДО делать
У тех кто только начинает работать с транзакциями зачастую возникает желание сделать вот таким образом
НачатьТранзакцию();
Попытка
НачатьТранзакцию();
//Блок операций
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
Попытка
НачатьТранзакцию();
//Блок операций
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
ЗафиксироватьТранзакцию();
Или в цикле
НачатьТранзакцию();
Для каждого Данные Из МассивДанных Цикл
Попытка
НачатьТранзакцию();
Данные.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
На первый взгляд мы сделали все в соответствии с рекомендациями фирмы 1С. Но дело в том, что платформа 1С не поддерживает вложенные транзакции. То есть чисто технически так писать можно. Но при этом все вложенные транзакции не образуют новые, а относятся к той же самой транзакции верхнего уровня. Таким образом, если в одной из вложенных транзакций произойдет ошибка, следующую вложенную транзакцию нельзя будет зафиксировать. Система выдаст сообщение вида: «В данной транзакции уже происходили ошибки!». Продемонстрируем это на примере. Допустим мы решили записать два товара, каждый в своей транзакции. И сделаем эти транзакции вложенными в третью. Далее искусственно вызовем ошибку в первой транзакции с помощью метода ВызватьИсключение:
&НаСервереБезКонтекста
Процедура ВыполнитьТранзакциюНаСервере()
НачатьТранзакцию();
Попытка
НачатьТранзакцию();
Товар = Справочники.Товары.СоздатьЭлемент();
Товар.Наименование = "Стол";
Товар.Записать();
ВызватьИсключение "Ошибка записи товара.";
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
Попытка
НачатьТранзакцию();
Товар = Справочники.Товары.СоздатьЭлемент();
Товар.Наименование = "Стул";
Товар.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
ЗафиксироватьТранзакцию();
КонецПроцедуры
В результате выполнения этой процедуры увидим в окне сообщений следующее:
{ВнешняяОбработка.ТранзакцииВПопытке.Форма.Форма.Форма(20)}: Ошибка записи товара.
{ВнешняяОбработка.ТранзакцииВПопытке.Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (Записать): В данной транзакции уже происходили ошибки!
Таким образом, организация вложенных транзакций в 1С абсолютно бессмысленна.
Возможные варианты
Теперь вернемся к варианту, где мы записывали товар и цену для него. Если у нас при выполнении транзакции произойдет ошибка, то будет трудно понять в какой момент она произошла — при записи товара или при записи цены, поскольку и то и другое происходит в рамках одной попытки. Чтобы определить место возникновения ошибки, нам надо каждую операцию записи заключить в свою собственную попытку и при этом избежать вложенных транзакций. Для этого введем булеву переменную Отказ и в зависимости от ее значения в конце всех операций будем фиксировать или отменять транзакцию.
&НаСервереБезКонтекста
Процедура ВыполнитьТранзакциюНаСервере()
// Начинаем транзакцию
Отказ = Ложь;
НачатьТранзакцию();
// Пытаемся записать товар
Попытка
Товар = Справочники.Товары.СоздатьЭлемент();
Товар.Наименование = "Дырокол";
Товар.Записать();
Исключение
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Ошибка при записи товара";
Сообщение.Сообщить();
КонецПопытки;
// Пытаемся записать цену
Попытка
НаборЗаписей = РегистрыСведений.Цена.СоздатьНаборЗаписей();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Товар = Товар.Ссылка;
НоваяЗапись.Сумма = 100;
НаборЗаписей.Записать();
Исключение
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Ошибка при записи цены";
Сообщение.Сообщить();
КонецПопытки;
// Фиксируем или отменяем транзакцию
Если НЕ Отказ Тогда
ЗафиксироватьТранзакцию();
Иначе
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры
Аналогичным образом можно поступить и когда мы перебираем и записываем какие-либо данные в цикле. В этом случае мы сможем получить перечень всех данных с ошибками, если такие будут.
Иногда при работе в 1С может возникнуть ошибка «Конфликт блокировок при выполнении транзакции: превышено максимальное время ожидания предоставления блокировки». Рассмотрим как исправить данную ошибку.
Содержание
- Конфликт блокировок при выполнении транзакции в 1С: причины и пути их устранения
- Причина 1. Одновременная работа пользователей с большим объемом данных
- Причина 2. Зависшие блокировки в 1С
- Причина 3. Ошибка в конфигурации
Причина 1. Одновременная работа пользователей с большим объемом данных
При одновременной работе нескольких пользователей с одной и той же информационной базой могут возникнуть ситуации, когда несколько пользователей пытаются внести в данные какие-то изменения. И в таких случаях, если не предусмотреть возможности подключения специальных механизмов системы, могут возникнуть проблемы с информационной базой, ее целостностью. При обращении нескольких сеансов к одним и тем же данным одновременно используются механизмы блокировок и транзакций.
Блокировка — это информация о том, что данный объект занят пользователем для выполнения какого-то действия. Смысл блокировки в запрете определенных действий над объектом на ограниченное время. Благодаря этим запретам сохраняется целостность и непротиворечивость информационной базы, предсказуемость работы пользователей.
Механизм объектных блокировок — обеспечивает конкурентный доступ пользователей к данным 1С, как правило, это работа пользователей в формах — создание новых объектов, их редактирование, удаление и др.
Для согласованного изменения данных в 1С применяется механизм транзакций, а для конкурентного доступа к данным — механизм транзакционных блокировок. Если транзакции нужно получить доступ к элементу, то она блокирует элемент и продолжает удерживать блокировку элемента до тех пор, пока не освободит элемент. Это происходит либо в ходе выполнения транзакции, либо по ее окончании как успешном, так и не успешном.
Поэтому, при одновременном чтении и изменении одних и тех же данных могут возникнуть проблемы одновременного доступа, о чем программа 1С и сообщает в ошибке. Это временная ошибка и когда другой пользователь завершит работу с этим объектом, ошибка не будет появляться.
Причина 2. Зависшие блокировки в 1С
Иногда возникают такие ситуации, что пользователь уже давно закрыл документ, вышел из программы, а его сеанс по-прежнему остается в системе. Т.е. какой-то сеанс поставил блокировку и не убрал ее. Такие ситуации чаще встречаются при использовании сетевых ключей защиты.
Оптимальный вариант решения проблемы — это найти и завершить сеанс, заблокировавший необходимые данные. В этом нам помочь может раздел Администрирование — Обслуживание, где можем посмотреть активных пользователей и при необходимости заблокировать их работу, т.е. отключить.
При большом количестве компьютеров, проблему можно решить завершив подобный сеанс через консоль администратора. С ее помощью можно управлять подключенными сеансами определенной информационной базы, управлять блокировками. В консоли администрирования можно посмотреть такие зависшие сеансы и удалить их. Эта утилита входит в состав 1С Предприятия.
Запустить ее можно из папки common — 1CV8Servers.
Причина 3. Ошибка в конфигурации
Конфигурации, разработанные фирмой 1С, учитывают все рекомендации по улучшению производительности. Но в программах сторонних разработчиков могут быть ошибки производительности в коде конфигурации, порождающие избыточные блокировки. Это является самой распространенной причиной ошибок конфликта блокировок, которые могут нарушить работу всех пользователей, постоянно блокируя нормальную работу в системе.
Если такого рода ошибки появляются часто, то разобравшись в причине, из-за которой возникает конфликт блокировок в 1С, необходимо их ликвидировать — определить уязвимые места в системе, оптимизировать конфигурацию, а также работу пользователей.
См. также:
- Недостаточно памяти 1С: как исправить
- Неверный формат хранилища данных 1С 8.3: как исправить
- Ошибка формата потока 1С 8.3: как исправить
- Ошибка СУБД: файл базы данных поврежден в 1С 8.3
- Не найден файл внешней компоненты в 1С 8.3: как исправить
Если Вы еще не являетесь подписчиком системы БухЭксперт8:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно