Имя: Пароль:
1C
1С v8
Удалить из регистра с отбором
0 ALbinos
 
03.08.15
07:53
Здравствуйте, требуется удалить записи из регистра Скидки и Наценки Номенклатуры за определенный период.
Делаю так:
Процедура СкидкиИНаценкиНажатие (Элемент)
    
        Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|                  *
|ИЗ
|                  РегистрСведений.СкидкиНаценкиНоменклатуры КАК СкидкиНаценки
|ГДЕ
|                    (СкидкиНаценки.ДатаОкончания = ДАТАВРЕМЯ(2015, 7, 31))";

ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();
НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);
НаборЗаписей.Записать();
КонецПроцедуры
__________________
Ругается, что не установлен отбор по регистратору, не пойму..
Подскажите как сделать?
1 chelentano
 
03.08.15
08:00
(0) сначала установить отбор по регистратору, потом записывать набор записей
2 ИС-2
 
naïve
03.08.15
08:10
т.е делаем иерархическую выборку по регистратору, затем отбираем записи по регистратору и записываем только нужные
3 ALbinos
 
03.08.15
08:12
Спасибо, а с примером можно?
4 fishb1
 
03.08.15
08:23
(0) Это еще хорошо, что ругнулся, а не все записи в регистре потер. :)
(3) В СП к СоздатьНаборЗаписей() есть пример использования отбора.
5 ALbinos
 
03.08.15
08:37
Прочитал, делаю так
НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.ДатаОкончания = ДАТА(2015, 7, 31);
НаборЗаписей.Отбор.Регистратор.использование = Истина;
Поле объекта не обнаружено..
Как правильно записать?
6 ДенисЧ
 
03.08.15
08:39
"НаборЗаписей.Отбор.Регистратор.ДатаОкончания = ДАТА(2015, 7, 31);"

Это что хрень?
7 ALbinos
 
03.08.15
08:41
(6) Ну, хотел отобрать по регистратору с такой датой.(((
8 1Сергей
 
03.08.15
08:41
(7) не получится
9 ALbinos
 
03.08.15
09:07
ок, пишу так
НаборЗаписей.Отбор.ЗначениеУсловия = Справочники.ИнформационныеКарты.НайтиПоКоду("УТ0016022");
___
тоже поле не найдено.
что ему надо?
10 1Сергей
 
03.08.15
09:09
НаборЗаписей.Отбор.Регистратор = СсылкаНаРегистратор;
11 ALbinos
 
03.08.15
09:16
(10) Поле объекта недоступно для записи (Регистратор)
НаборЗаписей.Отбор.Регистратор = СсылкаНаРегистратор;
12 ДенисЧ
 
03.08.15
09:17
(11) НаборЗаписей.Отбор.регистратор.Установить(ссылкаНаРегистратор)
13 ALbinos
 
03.08.15
09:30
Все равно ругается "Не установлен отбор по регистратору"
________

Процедура СкидкиИНаценкиНажатие (Элемент)
    
            Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|                  *
|ИЗ
|                  РегистрСведений.СкидкиНаценкиНоменклатуры КАК СкидкиНаценки
|ГДЕ
|                    (СкидкиНаценки.ДатаОкончания = ДАТАВРЕМЯ(2015, 7, 31))";

ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();
НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Справочники.ИнформационныеКарты.НайтиПоКоду("УТ0016022"));
НаборЗаписей.Отбор.Регистратор.Установить(Документы.УстановкаСкидокНоменклатуры.НайтиПоНомеру("УТ000000329"));
НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);
НаборЗаписей.Записать();

КонецПроцедуры
14 ALbinos
 
03.08.15
09:31
НаборЗаписей.Отбор.Регистратор.Установить(Справочники.ИнформационныеКарты.НайтиПоКоду("УТ0016022")); - это ошибочно, удалил. все равно не работает.
15 ДенисЧ
 
03.08.15
09:34
А почему ты регистратором справочник устанавливаешь?
16 ALbinos
 
03.08.15
09:37
(15) Нет, не справочник, документ.
17 hhhh
 
03.08.15
09:37
(14) НайтиПоКоду - два параметра должно быть: номер и дата. Ты иди поспи, ведь не выспался, после обеда продолжишь.
18 hhhh
 
03.08.15
09:38
НайтиПоНомеру
19 ALbinos
 
03.08.15
09:53
(18) дату тоже ставил.
все одно..Не установлен отбор по регистратору.
Ушел спать)))
20 D_E_S_131
 
03.08.15
10:12

Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
|    СкидкиНаценкиНоменклатуры.Регистратор КАК РегистраторСсылка
|ИЗ
|    РегистрСведений.СкидкиНаценкиНоменклатуры КАК СкидкиНаценкиНоменклатуры
|ГДЕ
|    СкидкиНаценкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(2015, 7, 31)"
;

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

Если Результат.Пустой() Тогда
    Возврат;
КонецЕсли;

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

    НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
    
    НаборЗаписей.Отбор.Регистратор.Установить(Выборка.РегистраторСсылка);
    
    НаборЗаписей.Записать();

КонецЦикла;
21 D_E_S_131
 
03.08.15
10:12
В запросе можно добавить "ВЫБРАТЬ РАЗЛИЧНЫЕ".
22 fishb1
 
03.08.15
10:35
(20) Только ему наоборот нужно. Удалить все кроме 31 июля.

Проснется человек, а ему тут готовое решение написали. Миста - это здорово. :)