Имя: Пароль:
1C
1С v8
Удаление записей из регистра сведений
0 Ly_Alena
 
30.09.15
07:12
Доброе утро!
Есть корректировка заказа поставщика. Условие такое если количество в корректировке отрицательное, то цену номенклатуры не записываем и нужно удалить ту что была в заказе поставщика. делаю так:
Если Выборка.Количество < 0 Тогда
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
                 НаборЗаписей.Отбор.Период.Установить(Выборка.ДатаЗаказПоставщика);
                НаборЗаписей.Записать();
КонецЕсли;

Выдает ошибку "Поле объекта не обнаружено (Период)"
1 jurassic
 
30.09.15
07:14
это хорошо или плохо?
2 Ly_Alena
 
30.09.15
07:16
(1) Плохо ) Нужно чтоб удалил запись с датой заказ поставщика
3 jurassic
 
30.09.15
07:16
а чем цена провинилась вообще?
4 1Сергей
 
30.09.15
07:17
(2) все цены на эту дату?
5 Ly_Alena
 
30.09.15
07:18
(4) на эту дату будет только одна цена
6 jurassic
 
30.09.15
07:20
(5) ну выясни, каким документом она установлена, и распроведи
7 Ly_Alena
 
30.09.15
07:21
(6) в документе могут быть и другая номенклатура, которая в корректировке не участвует
8 Ly_Alena
 
30.09.15
07:22
(6) не проще запись удалить?
9 jurassic
 
30.09.15
07:23
(8) проще оставить цену в покое
10 Ly_Alena
 
30.09.15
07:24
Цена идет дальше в расчет, и если ее не убрать - расчет будет неверным, потому что по факту этих позиций не будет.
11 echo77
 
30.09.15
07:26
Записи в этом регистре подчинены регистратору.
По хорошему, надо из регистратора уалять
12 jurassic
 
30.09.15
07:27
имхается мне, в расчёт идёт не то, что там информационно в регистре лежит, а число из конкретной корректировки
13 Ly_Alena
 
30.09.15
07:29
(12) в данном случае берется срез последних и цен номенклатуры.
14 jurassic
 
30.09.15
07:32
космическая логика. читай (6), (11), много думай
15 AntonyFO
 
30.09.15
07:34
(0)Можно сначала считать набор, потом обойти записи и ненужных отключить активность

Если Выборка.Количество < 0 Тогда
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
                 НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
                НаборЗаписей.Прочитать();
Для каждого Стр Из НаборЗаписей Цикл
    Если Стр.период<>НужногоПериода Тогда
Стр.Активность = ложь;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
16 jurassic
 
30.09.15
07:51
и не забывать отключать обратно при перепроведении
17 Ly_Alena
 
30.09.15
11:38
(15) Кажется самое время тупых вопросов )
Стр.период<>НужногоПериода (НужногоПериода) - это дата заказа поставщика?
18 AntonyFO
 
01.10.15
10:32
(17)Я может сам тупо не так тебя понял. Я просто показал как можно деактивировать записи регистра сведений без
НаборЗаписей.Отбор.Период.Установить(Выборка.ДатаЗаказПоставщика);
и сам ошибся: не Стр.период <> НужногоПериода, а Стр.период = ДатаЗаказаПоставщика.
19 AntonyFO
 
01.10.15
10:33
А вообще можно сделать так:  

НаборЗаписей.Отбор.Регистратор.Установить(Выборка.ЗаказПоставщика);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать()
20 rabbidX
 
01.10.15
10:46
Я думаю, корректировка не должна изменять движения корректируемого документа, иначе при перепроведении будет беда. Она должна их корректировать, приводить остатки в нужное состояние.
Лучше всего изменить механизм расчета, чтоб такие цены не попадали.
Можно корректировкой установить предыдущую актуальную цену, но тогда при внесении документов задним числом будут проблемы.
Короче какой-то аналог сторнирования нужен.