Юлчурин Ринат

61
Рейтинг

rinat_alp2
Ринат Юлчурин



  •   Регистрация: 22.03.2012 (12 лет назад)

  •   Был(а) на сайте: 26.04.2024

Подписчики 3

Группы

Профессиональный разработчик

IE 2018 Online

IE2022 Докладчик

IE2023 Докладчик

Рейтинг 61

Обманчивая ошибка "Данные были изменены или удалены другим пользователем"

Статья Программист Платформа 1С v8.3 Windows Абонемент ($m) Архив с данными Механизмы платформы 1С

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

1 стартмани

25.03.2018    47114    9    rinat_alp2    8       

11

Очень быстрая замена ссылок на элемент справочника предопределенным значением

Статья Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free) Нет файла Механизмы платформы 1С

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

08.05.2017    13870    rinat_alp2    9       

43

Комментарии

DevКоманда "ЗафискироватьТранзакцию();" отменяет транзакцию#11 28.04.23 9:43
(8) В исключении возврат, если бы исключение сработало, тогда обращения к объекту бы не было.
Код
 
   Исключение
        ОтменитьТранзакцию();

        Возврат "Ошибка создания заказа";
    КонецПопытки;
HighLoadСамый быстрый шринк на Диком Западе#49 09.08.21 15:24
Не могли бы Вы в статье упомянуть как работает процедура dbo.sp_MoveTablesToFileGroup?
По коду вижу использование секционирования.
Получается что, если в базе уже используется секционирование таблиц, тогда dbo.sp_MoveTablesToFileGroup применять нельзя.

Можно упомянуть, что в случае секционированных таблиц сценарий использования dbcc shrinkfile с параметром EMPTYFILE будет другим.
ПубликацииРегистры бухгалтерии. Общая информация#24 21.05.20 9:45
(9) Тоже вопрос, как я понимаю в примере один регистратор у регистра, поэтому TRef не нужен, но обычно их больше одного )
ОбменКак работает 1С размером 13 ТБ в условиях непрерывной разработки#53 04.05.20 12:07
(52) Еще не перешли, тестируем новую реструктуризацию с точки зрения больших объемов, например:
1) При добавлении в регистр накопления реквизита новый механизм использует alt er table add column и это быстро, но при добавлении измерения или ресурса происходит пересчет таблиц итогов (создание новых и удаление старых).
Если таблицы итогов небольшие, то это не страшно, но они могут быть и большие.
2) Если таблица регистра накопления была создана давно (поле _Period с типом datetime) и добавить хотя бы реквизит, то это вызовет конвертацию типа поля _Period в datetime2(0).
Что на больших объемах не успеет в технологическое окно: переливка значения через update, создание новых индексов и перестроение кластерного индекса, пересчет таблиц итогов.
Сейчас конвертируем понемногу datetime на datetime2(0).
Adminкак задать местоположение базы postgres на linux#17 11.09.19 15:37
(9) Очень помогло, когда место закончилось на виртуалке, спасибо!
в п. 4 имя файлика postmaster.opts
DevКак отловить ошибку SQL#16 02.09.19 7:56
Когда в скрипте SQL передается несколько строк, тогда для получения ошибок выполнения последующих после первой строк скрипта необходимо использовать метод NextRecordset.

Пример:
Код
   ADOСоединение = Новый COMОбъект("ADODB.Connection");
   String = "driver={SQL Server};server=ServerName;Database=DataBaseName;Trusted_Connection=Yes";
   ADOСоединение.ConnectionTimeOut = 200;
   ADOСоединение.CommandTimeOut = 180;
   
   ADOСоединение.Open(String);
      
   ТекстКоманды = "
   |      SELECT 1;
   |      SELECT 1;
   |      print 1 / 0;";

   Command = Новый COMОбъект("ADODB.Command");
   Command.CommandType = 1;
   Command.ActiveConnection = ADOСоединение;
   Command.CommandTimeout = ADOСоединение.CommandTimeOut;
   Command.CommandText = ТекстКоманды;
   
   RecordSet= Command.Execute();

   //Для получения ошибок
   NextRecordSet = RecordSet.NextRecordSet();
   Пока NextRecordSet <> Неопределено Цикл
      NextRecordSet = NextRecordSet.NextRecordSet();
   КонецЦикла;


В результате ошибка на стороне СУБД в третьей строке скрипта будет выявлена исключением в вызывающем коде:
Ошибка при вызове метода контекста (NextRecordset): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Обнаружена ошибка: деление на ноль.
DevСовершенный коТ (Cat complete)#110 04.06.19 11:20
(25) Добрый день, различие будет, если прочитать набор записей внутри внешней транзакции (при проведении) и потом записать. Разделяемая управляемая блокировка (накладывается при Набор.Прочитать()) превратится в исключительную (Набор.Записать()), а это потенциальный deadlock.

А с объектным чтением документа с табличными частями почему то не воспроизвелось, нет и все разделяемой управляемой блокировки. ))
DevСовершенный коТ (Cat complete)#108 04.06.19 9:25
Интересно про SELECT…Version в технологическом журнале, спасибо.
HighLoadВосстановление базы 1С, ошибка источника потока#20 11.04.19 10:25
Напишите, пожалуйста, сколько рабочих серверов 1С?
У нас ошибки падения после динамического обновления пропали, после того как убрали дублирующееся требование назначения функциональности на один сервер.
Уже точно не помню какая функциональность была.