8.х Оптимизация обработки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ученик1c, 3 дек 2010.

  1. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Выбираю - Операции введенные вручную - Документ с вводом остатков товаровов.
    Задача: удалить строки с отрицательным количеством в документе.
    Сделал, но очень долго работает, можно ли как-то оптимизировать обработку?!
    Код:
    ИскомыйДокумент  = СсылкаДок.ПолучитьОбъект(); 
    
    
    сзЗаписи = Новый СписокЗначений;
    
    НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ИскомыйДокумент.Ссылка);
    НаборЗаписей.Прочитать();
    Для Каждого СтрокаРег Из НаборЗаписей Цикл
    ОбработкаПрерыванияПользователя();
    Если СтрокаРег.КоличествоДт < 0 Тогда 
    сзЗаписи.Добавить(СтрокаРег);
    КонецЕсли;
    КонецЦикла; 
    
    Для каждого эл Из сзЗаписи Цикл
    ОбработкаПрерыванияПользователя();
    НаборЗаписей.Удалить(эл.Значение);
    КонецЦикла; 
    НаборЗаписей.Записать(Истина);
    
    
    
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Фактически нет, Вы не табличную часть документа очищаете, а непосредственно регистры.
    Согласно правилам работы с регистрами отбор набора записей можно делать только на уровне регистратора. Могу только порекомендовать писать в транзакции
    Код:
    НачатьТранзакцию()
    ЗафиксироватьТранзакцию()
    
  3. Oleg_NSK
    Offline

    Oleg_NSK Опытный в 1С

    Регистрация:
    25 окт 2010
    Сообщения:
    164
    Симпатии:
    0
    Баллы:
    26
    А зачем объект получаете, если используете только ссылку? Убирайте строку ИскомыйДокумент = СсылкаДок.ПолучитьОбъект(); и в отбор давайте ссылу НаборЗаписей.Отбор.Регистратор.Установить(СсылкаДок);
    Таким образом немного убыстритесь :)
  4. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Пытаюсь обработать большой документ - ошибка:
    Конфликт блокировок при выполнении транзакции:
    Превышено максимальное время ожидания предоставление блокировки из-за ожидания сессии 1360.

    В чем может быть косяк? :(
    База на MS SQL
  5. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Ругается на - НаборЗаписей.Записать(Истина)
  6. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Висела сессия пользователя. Не отбивалась. Перезагрузили сервер. Запустил обработку - пока норм.

Поделиться этой страницей