Как выбрать запросом записи регистра сведений и удалить их? В регистре сведений штрих кодов появились ошибочные записи, которые надо было быстро удалить... можно конечно и ручками выбирать и жать Delete, но это не наш метод!
Код 1C v 8.3 Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.Владелец,
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры,
| Штрихкоды.СерияНоменклатуры,
| Штрихкоды.Качество
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.СерияНоменклатуры.ПометкаУдаления";
Результат = Запрос.Выполнить();
РезультатТаблица = Результат.Выгрузить();
ТекПозиция = 0;
Для каждого СтрокаЗапроса из РезультатТаблица Цикл
ОбработкаПрерыванияПользователя();
ТекПозиция = ТекПозиция + 1;
Состояние("Выполнено " + Окр(ТекПозиция / РезультатТаблица.Количество() * 100) + "%");
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Штрихкод.Установить(СтрокаЗапроса.Штрихкод);
НаборЗаписей.Отбор.Владелец.Установить(СтрокаЗапроса.Владелец);
НаборЗаписей.Отбор.ТипШтрихкода.Установить(СтрокаЗапроса.ТипШтрихкода);
НаборЗаписей.Отбор.ЕдиницаИзмерения.Установить(СтрокаЗапроса.ЕдиницаИзмерения);
НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(СтрокаЗапроса.ХарактеристикаНоменклатуры);
НаборЗаписей.Отбор.СерияНоменклатуры.Установить(СтрокаЗапроса.СерияНоменклатуры);
// Удаляем записи
НаборЗаписей.Записать(Истина);
КонецЦикла;
Предупреждение("Обработка закончена.");
Категория:
Регистры сведений Как принудительно завершить бизнес-процесс и задачи? Стандартная механика обеспечивает автоматическое завершение бизнес-процесса, когда он достигает точки завершения и все задачи по нему выполнены.
Однако иногда может потребоваться принудительно завершить бизнес-процесс, не дожидаясь, пока он дойдет до точки завершения.
Для этого необходимо установить свойство Завершен бизнес-процесса равным Истина:
Код 1C v 8.х БизнесПроцесс.Завершен = Истина;
БизнесПроцесс.Записать();
Далее нужно отметить все задачи по этому бизнес-процессу как выполненные.
1. Отобрать задачи по бизнес-процессу можно с помощью запроса вида:
2. После чего каждой из отобранных задач нужно установить свойство Выполнена равным Истина:
Код 1C v 8.х ТекущаяЗадача.Выполнена = Истина;
ТекущаяЗадача.Записать();
Рекомендуется выполнять запись бизнес-процесса и задач в транзакции , чтобы избежать возможного расхождения бизнес-процесса и связанных с ним задач.
Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОСН_Задача.Ссылка,
| ОСН_Задача.Дата,
| ОСН_Задача.БизнесПроцесс,
| ОСН_Задача.ТочкаМаршрута,
| ОСН_Задача.Пользователь,
| ОСН_Задача.Подразделение,
| ОСН_Задача.БизнесПроцесс.ДокументДоставки
|ИЗ
| Задача.ОСН_Задача КАК ОСН_Задача
|ГДЕ
| ОСН_Задача.БизнесПроцесс.ДокументДоставки = &ДокументДоставки";
Запрос.УстановитьПараметр("ДокументДоставки", ВыбранныйДокумент);
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
ТекПозиция = 0;
Для каждого СтрокаЗапроса из Выборка Цикл
ОбработкаПрерыванияПользователя();
ТекПозиция = ТекПозиция + 1;
Состояние("Выполнено " + Окр(ТекПозиция / РезультатТаблица.Количество() * 100) + "%");
//Завешим Задачу
ОбъектЗадача = СтрокаЗапроса.Ссылка.ПолучитьОбъект();
ОбъектЗадача.Выполнена = Истина;
ОбъектЗадача.Записать();
//Если необходимо то Завершим и Бизнес Процесс
БизнесПроцесс = СтрокаЗапроса.БизнесПроцесс.ПолучитьОбъект();
БизнесПроцесс.Завершен = Истина;
БизнесПроцесс.Записать();
КонецЦикла;
Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| CRM_Задача.Ссылка,
| CRM_Задача.Дата,
| CRM_Задача.БизнесПроцесс,
| CRM_Задача.ТочкаМаршрута,
| CRM_Задача.Пользователь,
| CRM_Задача.Подразделение,
| CRM_Задача.БизнесПроцесс.ДокументДоставки
|ИЗ
| Задача.CRM_Задача КАК CRM_Задача
|ГДЕ
| CRM_Задача.Выполнена = ЛОЖЬ
| И CRM_Задача.Дата < &Дата";
Запрос.УстановитьПараметр("Дата", Дата("07.09.2012 0:00:00"));
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
ТекПозиция = 0;
Для каждого СтрокаЗапроса из Выборка Цикл
ОбработкаПрерыванияПользователя();
ТекПозиция = ТекПозиция + 1;
Состояние("Выполнено " + Окр(ТекПозиция / РезультатТаблица.Количество() * 100) + "%");
//Завешим Задачу
ОбъектЗадача = СтрокаЗапроса.Ссылка.ПолучитьОбъект();
ОбъектЗадача.ВыполнитьЗадачу();
//Если необходимо то Завершим и Бизнес Процесс
Если НЕ СтрокаЗапроса.Ссылка.БизнесПроцесс.Завершен Тогда
БизнесПроцесс = СтрокаЗапроса.Ссылка.БизнесПроцесс.ПолучитьОбъект();
БизнесПроцесс.Завершен = Истина;
БизнесПроцесс.Записать();
КонецЕсли;
КонецЦикла;
Категория:
Бизнес-процессы