Имя: Пароль:
1C
1С v8
Как создать регламентное задание во внешней обработке для установки пометки
0 1сhelp
 
29.10.21
07:41
Добрый день, ситуация следующая: нужно создать обработку к регламентному заданию которая в запросе вызывает справочник и смотрит по его элементу если значение булево то установить на другой элемент флажка значение булево
Процедура АвтоматическаяБлокировка() Экспорт
    Менеджер = Справочники.ВариантыНоменклатуры.Выбрать();
    ВыборкаБлокировки = Менеджер.ЗаблокироватьДляЗаявокНаПриобретениеТМЦ;
    ВыборкаУдаления = Менеджер.ПометкаУдаления;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ВариантыНоменклатуры.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_Варианты
    |ИЗ
    |    Справочник.ВариантыНоменклатуры КАК ВариантыНоменклатуры
    |ГДЕ
    |    НЕ ВариантыНоменклатуры.ПометкаУдаления
    |    И ВариантыНоменклатуры.ЗаблокироватьДляЗаявокНаПриобретениеТМЦ;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ПартииВариантовНоменклатурыНаСкладахОстатки.ВариантНоменклатуры КАК ВариантНоменклатуры,
    |    ПартииВариантовНоменклатурыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток
    |ИЗ
    |    РегистрНакопления.ПартииВариантовНоменклатурыНаСкладах.Остатки КАК ПартииВариантовНоменклатурыНаСкладахОстатки
    |ГДЕ
    |    ПартииВариантовНоменклатурыНаСкладахОстатки.ВНаличииОстаток = 0
    |    И ПартииВариантовНоменклатурыНаСкладахОстатки.ВариантНоменклатуры В
    |            (ВЫБРАТЬ
    |                ВТ_Варианты.Ссылка
    |            ИЗ
    |                ВТ_Варианты)";
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        //Если ВыборкаБлокировки = Истина Тогда
        //    ВыборкаУдаления = Истина;
        //КонецЕсли;
    КонецЦикла;
КонецПроцедуры
1 ДенисЧ
 
29.10.21
07:49
Вопрос-то в чём?
2 1сhelp
 
29.10.21
07:55
Вот смотрите у меня 2 флажка надо чтобы в цикле было условие для того чтобы если флажок1= истина тогда флажок 2 истина как это сделать?
3 Admin_Net_1C
 
29.10.21
08:01
А как между собой связаны запрос и установка значений переменных в цикле обхода результатов запроса?
4 Мультук
 
гуру
29.10.21
08:02
(3) Это метод псевдослучайного программирования. Итерационный.
5 1сhelp
 
29.10.21
08:07
(3) Я ведь создаю внешнюю обработку и в нём делаю запрос
6 Гений 1С
 
гуру
29.10.21
08:16
ничего не понял из вопроса. в чем задача то?
7 RomaH
 
naïve
29.10.21
08:47
Менеджер = Справочники.ВариантыНоменклатуры.Выбрать();
    ВыборкаБлокировки = Менеджер.ЗаблокироватьДляЗаявокНаПриобретениеТМЦ;
    ВыборкаУдаления = Менеджер.ПометкаУдаления;

этот код работает?
8 1сhelp
 
29.10.21
08:48
(7) вроде ошибок не выдаёт но и не делает ничего
9 Irbis
 
29.10.21
08:51
(6) Ну, какой ты после этого гений?!
10 RomaH
 
naïve
29.10.21
08:54
Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
Если Выборка.ЗаблокироватьДляЗаявокНаПриобретениеТМЦИ НЕ Выборка.ПометкаУдаления Тогда
ВариантНоменклатуры = Выборка.ПолучитьОбъект();
        Если ВариантНоменклатуры.ЗаблокироватьДляЗаявокНаПриобретениеТМЦТогда
            ВариантНоменклатуры.ПометкаУдаления= Истина;
        КонецЕсли;
ВариантНоменклатуры.Записать();
    КонецЦикла;
11 RomaH
 
naïve
29.10.21
08:56
Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЗаблокироватьДляЗаявокНаПриобретениеТМЦИ НЕ Выборка.ПометкаУдаления Тогда
            ВариантНоменклатуры = Выборка.ПолучитьОбъект();
            ВариантНоменклатуры.ПометкаУдаления = Истина;
            ВариантНоменклатуры.Записать();
        КонецЕсли;
    КонецЦикла;
12 1сhelp
 
29.10.21
09:22
(11) ваш код очень подходит но при выполнении регламентного задания все равно флажок в ПометкаУдаления не ставиться
13 Kassern
 
29.10.21
09:24
(12) потому что пометка удаления ставится вот так: ВариантНоменклатуры.УстановитьПометкуУдаления(Истина);
14 1сhelp
 
29.10.21
09:26
(13) ПометкаУдаления Это Элемент справочника
15 1сhelp
 
29.10.21
09:27
(13) попробовал не сработало
16 Kassern
 
29.10.21
09:30
(15) напишите во внешней обработке:
ВариантНоменклатуры=Справочники.ВариантыНоменклатуры.НайтиПоКоду(Код позиции).ПолучитьОбъект();
Если Не ВариантНоменклатуры.ПометкаУдаления Тогда
ВариантНоменклатуры.УстановитьПометкуУдаления(Истина);
КонецЕсли;

И посмотрите ставится ли пометка удаления. Если ставится, значит проблема в логике установки этой пометки
17 Kassern
 
29.10.21
09:31
и научитесь уже пользоваться отладкой, посмотрите, попадает ли вообще отладчик на установку пометки удаления у вас в коде
18 Guk
 
29.10.21
10:14
(14) о как!...