Как выбрать запросом записи регистра сведений и удалить их? В регистре сведений штрих кодов появились ошибочные записи, которые надо было быстро удалить... можно конечно и ручками выбирать и жать 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 ) + "%" ) ;
ОбъектЗадача = СтрокаЗапроса. Ссылка. ПолучитьОбъект( ) ;
ОбъектЗадача. ВыполнитьЗадачу( ) ;
Если НЕ СтрокаЗапроса. Ссылка. БизнесПроцесс. Завершен Тогда
БизнесПроцесс = СтрокаЗапроса. Ссылка. БизнесПроцесс. ПолучитьОбъект( ) ;
БизнесПроцесс. Завершен = Истина ;
БизнесПроцесс. Записать( ) ;
КонецЕсли ;
КонецЦикла ;
Категория:
Бизнес-процессы Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя? Код 1C v 8.х
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП. АдресСервераSMTP = Константы. АдресСервераSMTP. Получить( ) ;
ИПП. ВремяОжидания = Константы. ВремяОжидания. Получить( ) ;
ИПП. Пароль = Константы. Пароль. Получить( ) ;
ИПП. ПарольSMTP = Константы. ПарольSMTP. Получить( ) ;
ИПП. Пользователь = Константы. Пользователь. Получить( ) ;
ИПП. ПользовательSMTP = Константы. ПользовательSMTP. Получить( ) ;
ИПП. ПортSMTP = Константы. ПортSMTP. Получить( ) ;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение. Получатели. Добавить( "file@server.ru" ) ;
Сообщение. Отправитель. Адрес = "test@serv.ru" ;
Сообщение. Тема = "Срочно в номер!" ;
Сообщение. Тексты. Добавить( "Доброе время суток!" ) ;
Вложение = Новый ДвоичныеДанные( ПутьКФайлуВложения) ;
Сообщение. Вложения. Добавить( Вложение, "attach.txt" ) ;
Почта = Новый ИнтернетПочта;
Почта. Подключиться( ИПП) ;
Почта. Послать( Сообщение) ;
Почта. Отключиться( ) ;
СостояниеПриема = "Подключение к серверу" ;
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП. АдресСервераPOP3 = Константы. АдресСервераPOP3. Получить( ) ;
ИПП. ВремяОжидания = Константы. ВремяОжидания. Получить( ) ;
ИПП. Пароль = Константы. Пароль. Получить( ) ;
ИПП. Пользователь = Константы. Пользователь. Получить( ) ;
ИПП. ПортPOP3 = Константы. ПортPOP3. Получить( ) ;
Соединение = Новый ИнтернетПочта;
Соединение. Подключиться( ИПП) ;
СостояниеПриема = "Получение выборки писем" ;
Выборка = Соединение. Выбрать( ЗабиратьССервера) ;
СостояниеПриема = "Создание документов - писем" ;
КоличествоВВыборке = Выборка. Количество( ) ;
Индекс = 1 ;
Для Каждого Письмо Из Выборка Цикл
ТекПозиция = Окр( Индекс * 100 / КоличествоВВыборке) ;
Если ТекПозиция < > Позиция Тогда
Позиция = ТекПозиция;
КонецЕсли ;
Док = Документы. Письмо. СоздатьДокумент( ) ;
Док. Тема = Письмо. Тема;
СтрПолучатели = "" ;
Для Каждого Адрес Из Письмо. Получатели Цикл
СтрПолучатели = СтрПолучатели + Адрес. Адрес + "," ;
КонецЦикла ;
Док. Получатели = СтрПолучатели;
Если ТипЗнч( Письмо. Отправитель) = Тип( "Строка" ) Тогда
Отправитель = Письмо. Отправитель;
Иначе
Отправитель = Письмо. Отправитель. Адрес;
КонецЕсли ;
Док. Отправитель = Отправитель;
Содержание = "" ;
Для Каждого ТекстСообщения Из Письмо. Тексты Цикл
Содержание = Содержание + ТекстСообщения. Текст + Символы. ПС;
КонецЦикла ;
Док. Содержание = Содержание;
Индекс = Индекс + 1 ;
Док. Записать( ) ;
КонецЦикла ;
Соединение. Отключиться( ) ;
Категория:
Работа с Интернет, Почтой (Mail), FTP Поле списка ~ Как получить текущую строку (позицию) поля списка размещенного на форме? Код 1C v 8.х ТекПозиция= ЭлементыФормы. ПолеСписка1 . ТекущаяСтрока;
Категория:
Работа с Формой (Диалог) и её элементами