Имя: Пароль:
1C
 
Как очистить регистр накопления?!
0 navarafree
 
29.12.09
20:38
Вечер Добрый! Люди добрые подскажите как регистр накопления отчистить? Почитал Габеца, там только про регистры сведений нашел. А как с регистрами накопления быть? Заранее спасибо!
1 Irbis
 
29.12.09
20:38
Для каждого регистратора набор очищать
2 navarafree
 
29.12.09
20:43
(1) набор?
3 NcSteel
 
29.12.09
20:43
(2) Набор записей
4 Irbis
 
29.12.09
20:43
Набор записей регистра накопления
5 AndreyFAN
 
29.12.09
20:44
например так

   Запрос=Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    Регистр.Регистратор
   |ИЗ
   |    РегистрНакопления.ЗаказыМагазинов КАК Регистр
   |ГДЕ
   |    Регистр.Регистратор.Дата<&КонПериода";
   Запрос.УстановитьПараметр("КонПериода",КонПериода);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
   Кол=0;
   Пока Выборка.Следующий() цикл
       Набор = РегистрыНакопления.ЗаказыМагазинов.СоздатьНаборЗаписей();
       Набор.Отбор.Регистратор.Значение = Выборка.Регистратор;
       Набор.Записать();
       Кол=Кол+1;
       Сообщить(""+Кол+"    "+Выборка.Регистратор.Дата);
   КонецЦикла;
   Предупреждение("Обработка завершена. Удалены записи по "+Кол+" документам.",60);
6 navarafree
 
29.12.09
20:52
(5) а без отбора по регистратору никак?
7 Irbis
 
29.12.09
20:54
(5) Желательно в запрос еще РАЗЛИЧНЫЕ
(6) Отмени проведение всех документов
8 navarafree
 
29.12.09
20:57
(7)(6) Точно! Спасибо!
9 AndreyFAN
 
29.12.09
21:12
(8) ну если этот регистратор никаких больше действий не производит, то да...
обычно ещё куча взаимосвязей...
у меня например юзеры следят за удалением доков, т.к. зарплату получают в том числе и от кол-ва обработанных доков ;-))))
10 acsent
 
29.12.09
21:16
желательно очишать с конца
11 H A D G E H O G s
 
29.12.09
21:40
Запрос=Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    Регистр.Регистратор
   |ИЗ
   |    РегистрНакопления.ЗаказыМагазинов КАК Регистр
   |ГДЕ
   |    Регистр.Регистратор.Дата<&КонПериода";
   Запрос.УстановитьПараметр("КонПериода",КонПериода);
   РезультатЗапроса = Запрос.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
   Кол=0;
   БылиОшибки=Ложь;
   Пока Выборка.Следующий() цикл
ОбработкаПрерыванийПользователя();
       Набор = РегистрыНакопления.ЗаказыМагазинов.СоздатьНаборЗаписей();
       Набор.Отбор.Регистратор.Значение = Выборка.Регистратор;
       Попытка
       Набор.Записать();
       Исключение
       БылиОшибки=Истина;
       КонецПопытки;
       Кол=Кол+1;
       ЕСЛИ Кол%100=0 Тогда
           Сообщить("Отработано "+Кол+" документов из "+Выборка.Количество());
       КонецЕсли;
   КонецЦикла;
Если БылиОшибки Тогда
   Предупреждение("Обработка завершена. Регистр очищен не до конца!!!");
КонецЕсли;
12 H A D G E H O G s
 
29.12.09
21:42
(5) Наверное никогда по настоящему БОЛЬШИЕ регистры не чистили.

Сообщить(""+Кол+"    "+Выборка.Регистратор.Дата); - очень плохо.
1) - обращение через точку: "Регистратор.Дата"
2) - на отображение надписи ресурсов тратится очень много!
13 H A D G E H O G s
 
29.12.09
21:43
Нет Попытки/Исключения - спокойно пописать не отойдешь.
Нет ОбработкаПрерыванийПользователя() - не прервешься, когда надоест.
14 Irbis
 
29.12.09
21:44
(13) Про отключение расчета итогов еще забыл сказать
15 acsent
 
29.12.09
21:44
На скуле можно все быстрее сделать
16 Irbis
 
29.12.09
21:45
Хотя тоже штука обоюдоострая
17 H A D G E H O G s
 
29.12.09
21:45
Ах, да! В начале, перед циклом:

РегистрыНакопления.ЗаказыМагазинов.УстановитьИспользованиеИтогов(Ложь);

После цикла:

РегистрыНакопления.ЗаказыМагазинов.УстановитьИспользованиеИтогов(Истина);
18 AndreyFAN
 
29.12.09
21:50
ОК. Профи есть профи :-)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.