Имя: Пароль:
1C
1С v8
Регистр сведений прочитать и удалить записи
0 prtx
 
11.06.15
22:36
Думал что все так просто, как -то это нетак(((

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

        НоваяЗапись = РегистрыСведений.Потребность.СоздатьМенеджерЗаписи();

        НоваяЗапись.Организация = Выборка.Организация;
        НоваяЗапись.Склад = Выборка.Склад;
        НоваяЗапись.Номенклатура = Выборка.Номенклатура;
        НоваяЗапись.КоличествоЦелое = 1;

        НоваяЗапись.Записать();

    КонецЦикла;
    
    НаборЗаписей.Записать();

В этом коде я хочу прочитать нужные записи из регистра Дефектура, записать эти записи в регистр Потребность, и после записи удалить эти записи из регистра Дефектура.

Что-то не выходит... Неужели после записи в регистр Потребность, мне опять создавать набор записей и удалять их из регистр. Как-то не логично повторять первый кусок кода. Подскажите где я свернул не туда?
1 RomanYS
 
11.06.15
22:46
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
2 prtx
 
11.06.15
22:56
(1) Очень даже логично!) Огромное спасибо!

Только я вот не пойму, а почему если не использовать НаборЗаписей.Прочитать(); а сделать НаборЗаписей.Записать(); то тогда записи удаляются. а не все догнал...

Еще раз спасибо!


Окончательный код(может кому пригодиться, т.к. гуглил но не нашел примера):

Удаление записей после прочтения:

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

        НоваяЗаписьПотребности = РегистрыСведений.Потребность.СоздатьМенеджерЗаписи();

        НоваяЗаписьПотребности.Организация = ЗаписьДефектуры.Организация;
        НоваяЗаписьПотребности.Склад = ЗаписьДефектуры.Склад;
        НоваяЗаписьПотребности.Номенклатура = ЗаписьДефектуры.Номенклатура;
        НоваяЗаписьПотребности.КоличествоЦелое = 1;

        НоваяЗаписьПотребности.Записать();

    КонецЦикла;
    
    НаборЗаписейДефектуры.Очистить();
    НаборЗаписейДефектуры.Записать();
3 prtx
 
11.06.15
22:59
(0) А еще такой вопрос на засыпку. Можно ли подобное реализовать через запрос(выбрать можно, а удалить как?, я не силен в запросах), и будет ли оно быстрее? Ведь запросы должны быть быстрее, правильно?

Поделитесь опытом! Может кому-то еще это пригодиться...
4 Мимохожий Однако
 
12.06.15
08:40
Можно через запрос.Запросы не удаляют, только читают.Будет также.И в первом и во втором варианте заканчивается запросом.
5 trad
 
12.06.15
09:30
(2) метод Записать набора записей сначала удаляет записи из базы потом записывает их из набора
если ты набор прочитал, то его и запишешь
если не прочитал или очистил то ничего записывать
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший