Имя: Пароль:
1C
1С v8
Ошибка блокировок при очистке регистра сведений
0 Puzoter
 
27.11.17
15:04
Запросом выбираю записи РС, далее:

НаборЗаписей.Загрузить(РезультатЗапроса.Выгрузить());
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

При попытке записать вываливается ошибка:

"Конфликт блокировок при выполнении транзакции".
Регистр не периодический, регистратору не подчинен.

В чем причина ошибки?
1 Puzoter
 
27.11.17
15:05
(0) + В монопольном режиме
2 Elatiell
 
27.11.17
15:19
Можно увидеть весь код процедуры?
3 Numerus Mikhail
 
27.11.17
15:21
А зачем загружать и очищать сразу после этого?

посмотрите подписки на события, мб там что-то
4 Puzoter
 
27.11.17
15:24
(2) НаборЗаписей = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
    Сч = 1;    
    Пока Истина Цикл
        ОбработкаПрерыванияПользователя();        
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1000
        |    ГрафикиРаботы.ГрафикРаботы,
        |    ГрафикиРаботы.Месяц,
        |    ГрафикиРаботы.План,
        |    ГрафикиРаботы.ВидУчетаВремени,
        |    ГрафикиРаботы.Дата
        |ИЗ
        |    РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
        |ГДЕ
        |    ГрафикиРаботы.Дата > &Дата";
        
        Запрос.УстановитьПараметр("Дата", Дата(2016,12,31));
        
        РезультатЗапроса = Запрос.Выполнить();
        Если РезультатЗапроса.Пустой() Тогда
            Прервать;
        КонецЕсли;    
        
        НаборЗаписей.Загрузить(РезультатЗапроса.Выгрузить());
        НаборЗаписей.Очистить();
        НаборЗаписей.Записать();
        Сообщить(Сч);
        Сч = Сч +1;    
    КонецЦикла;
5 Puzoter
 
27.11.17
15:25
(3) Все сразу не получается - не хватает памяти.
6 Numerus Mikhail
 
27.11.17
15:33
(5) я к тому, что отбор же не устанавливается? и затрутся в любом случае все записи.
Ну, если верить синтаксис помощнику и здравому смыслу.
7 Elatiell
 
27.11.17
15:37
(4) У Вас это откуда запускается?
8 Elatiell
 
27.11.17
15:37
(4) Фоновое задание не используется?
9 ptiz
 
27.11.17
15:39
(4) А ты понимаешь, что этот код делает?
10 Puzoter
 
27.11.17
16:04
(6) Я почему-то был уверен, что отбор применяется только в момент чтения, а записывается соответственно то, что попало в отбор.
11 Puzoter
 
27.11.17
16:04
(8) Запускается из толстого клиента, фоновые задания отключены.
12 Puzoter
 
27.11.17
16:16
Ок, тогда вопрос: как удалить записи РС порциями при том, что критерий отбора находится в диапазоне?
13 Elatiell
 
27.11.17
16:17
(11) Пришло время Вам научиться пользоваться технологическим журналом...
14 Волшебник
 
модератор
27.11.17
16:23
(12) Используй менеджер записи.
15 ptiz
 
27.11.17
16:26
(12) Вариант 1: поштучно удалять из базы.
Вариант 2: большим отбором, покрывающим все записи с запасом, прочитать данные, удалить лишние, записать.
16 aleks_default
 
27.11.17
16:37
(10)"Я почему-то был уверен, что отбор применяется только в момент чтения, а записывается соответственно то, что попало в отбор." - где у тебя в коде хоть раз используется слово "отбор"?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший