Имя: Пароль:
1C
1С v8
Использование транзакции при очистки движений
0 Sasha_H
 
21.03.12
14:29
Необходимо очситить в РН движения, использую транзакцию, но после фиксирования ее, движения остаются. Вот собственно сам код:

НачатьТранзакцию();
СчетчикТранзакций=0;

Пока ВыборкаПоДокументам.Следующий() Цикл
   
   СчетчикТранзакций=СчетчикТранзакций+1;
   
   УдаляемыйОбъект = ВыборкаПоДокументам.ТекущийДокумент.ПолучитьОбъект();
   ДвиженияОбъекта = УдаляемыйОбъект.Движения;
   
   Для каждого НаборДвижений из ДвиженияОбъекта Цикл
       
       ИмяТаблицы = НаборДвижений.Метаданные().Имя;
       Если ОбщегоНазначения.ПринадлежностьКлассуМетаданных("РегистрыНакопления",НаборДвижений.Метаданные()) Тогда
           
           НаборЗаписей = РегистрыНакопления[ИмяТаблицы].СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ТекущийДокумент);
           НаборЗаписей.Прочитать();
           НаборЗаписей.Записать();
           
       ИначеЕсли ОбщегоНазначения.ПринадлежностьКлассуМетаданных("РегистрыСведений",НаборДвижений.Метаданные()) Тогда
           
           НаборЗаписей = РегистрыСведений[ИмяТаблицы].СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ТекущийДокумент);
           НаборЗаписей.Прочитать();
           НаборЗаписей.Записать();
           
       ИначеЕсли ОбщегоНазначения.ПринадлежностьКлассуМетаданных("РегистрыБухгалтерии",НаборДвижений.Метаданные()) Тогда    
           
           НаборЗаписей = РегистрыБухгалтерии[ИмяТаблицы].СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ТекущийДокумент);
           НаборЗаписей.Прочитать();
           НаборЗаписей.Записать();
           
       КонецЕсли;    
       
       Если СчетчикТранзакций >= 200 Тогда
           ЗафиксироватьТранзакцию();
           НачатьТранзакцию();
           СчетчикТранзакций=0;
       КонецЕсли;
       
   КонецЦикла;    
   
КонецЦикла;    

ЗафиксироватьТранзакцию();
1 Axel2009
 
21.03.12
14:30
а почему должно очиститься?
2 Sasha_H
 
21.03.12
14:32
как это почему, я же установил отбор по регистратору и записал пустой набор, он бы должен его чикнуть!
3 Ненавижу 1С
 
гуру
21.03.12
14:32
это все в обработке проведения что ли?
4 Ахмадинежад
 
21.03.12
14:33
пустой ?
5 zinch
 
21.03.12
14:34
В каком месте там пустой набор?
6 Ненавижу 1С
 
гуру
21.03.12
14:34
и кстати да, где там пустой набор записей?
7 Sasha_H
 
21.03.12
14:34
(3) Нет :)

это обработина отдельная. Вообще задача почистить СУБД от определенных документов. Но УстановитьПоМеткуНаУдаление отрабатывается долго из-за проверок, вот хочу начать все из самих документов.
8 Sasha_H
 
21.03.12
14:35
i Как удалить записи из регистра сведений, подчиненного регистратору?

Запрос = Новый Запрос;
Запрос.Текст = "
|    ВЫБРАТЬ
|    ЦеныНоменклатурыКонтрагентов.Регистратор
|ИЗ
|    РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

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

НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
   НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
   НаборЗаписей.Записать();
КонецЦикла;
9 Sasha_H
 
21.03.12
14:36
вопрос закрадывается перед тем как почитить надо прочитать!?
10 zinch
 
21.03.12
14:36
не надо
11 Ахмадинежад
 
21.03.12
14:36
чувак, Набор.Очистить()
12 Ненавижу 1С
 
гуру
21.03.12
14:38
зачем читать вообще?
13 Sasha_H
 
21.03.12
14:39
(12) кхм...
14 Axel2009
 
21.03.12
14:39
НаборЗаписей = РегистрыНакопления[ИмяТаблицы].СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ТекущийДокумент);
           НаборЗаписей.Прочитать();
           НаборЗаписей.Очистить();
           НаборЗаписей.Записать();
вот здесь будет пустой
15 Sasha_H
 
21.03.12
14:41
(12) хороший вопрос.
16 Sasha_H
 
21.03.12
14:42
Выходит так, что я замещал набор сам собой
17 Ненавижу 1С
 
гуру
21.03.12
14:46
(14) проще надо быть

НаборЗаписей = РегистрыНакопления[ИмяТаблицы].СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.ТекущийДокумент);
           НаборЗаписей.Записать();
18 Sasha_H
 
21.03.12
14:47
(17) да-да я так и сделал.
(14) я так понял он просто показал пример, что у меня набор то не чистый.
19 Sasha_H
 
21.03.12
14:47
Все спс. Вопр - закрыт ;)