Добрый день! Я выбираю строки со списка документов по ним у меня забиваться Регистр сведений и по кнопке он выводит мне весь список строк которые я добавил.
Вопрос: Как мне удалить строку выведенную из регистра сведений и эту же строку в самом Регистре сведений?
Регистр сведений независимый, в пределах дня.
---
Вот решение

```1c
    НаборЗаписей=РегистрыСведений.(Название вашего регистра сведений).СоздатьМенеджерЗаписи();
    НаборЗаписей.Период = НачалоДня(ТекущаяДата());
    НаборЗаписей.Контрагент=Контрагент;
    НаборЗаписей.Организация=Организация;
    (ТУТ по больше ваших записей )
    НаборЗаписей.Прочитать();
    НаборЗаписей.Удалить();
```

Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.

Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
---
Структура регистра сведений при этом какая?
---
```1c
    Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта)
    Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
    Запись.Валюта = Валюта;
    Запись.БазоваяВалюта = БазоваяВалюта;
    Запись.Удалить();
    КонецПроцедуры
```

данный код удалит запись регистра по валюте
поставьте вместо валюты своё значение.
---
значение которое я забиваю в регистр или вывожу?
---
и эту же строку в самом Регистре сведений?
Свои данные подставьте и удалите запись в регистре сведений
---
Вот решение

```1c
    НаборЗаписей=РегистрыСведений.(Название вашего регистра сведений).СоздатьМенеджерЗаписи();
    НаборЗаписей.Период = НачалоДня(ТекущаяДата());
    НаборЗаписей.Контрагент=Контрагент;
    НаборЗаписей.Организация=Организация;
    (ТУТ по больше ваших записей )
    НаборЗаписей.Прочитать();
    НаборЗаписей.Удалить();
```

Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.

Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
---
Тут создается ОДНА запись, а не набор записей.
Рекомендую переименовать "НаборЗаписей" в "ЗаписьРС", иначе будут сложности потом, при анализе кода.
---
Зачем читать запись перед удалением? Нужно задать значения ключевых полей и вызвать метод Удалить().
---
Добрый день, в документе при проводке есть регистр там регистры движения, как мне в расширении добавить
(16)

Можно и так, все зависит от твоей задачи, главно наборзаписи.очистить() не написать а то затерет все записи тебе в регистре
---
подскажите непонятливому.
после метода НаборЗаписей.Прочитать();
все НаборЗаписей.Контрагент
НаборЗаписей.Организация

становятся пустыми и ничего не происходит.. почему?
---
Сообщение было скрыто модератором.
---
может код кривой?

вот с таким кодом получилось

```1c
    НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Удалить(НаборЗаписей[0]);
    НаборЗаписей.Записать();
```

регистр шк: измерения номенклатура, единица и шк
было 2 записи с одинаковой номенклатурой и разными единицами
нужно было удалить обе записи.
выполнил код 2 раза удалились обе записи.

выше в примерах не было строки НаборЗаписей.Записать();

не говорю что у меня код "прямой" :) он просто рабочий
---
Аккуратнее с удалением набора записей регистра сведений.
Т.к. можете очистить весь регистр, если отбор не наложится по каким-либо причинам.
---
все верно, лучше это делать в тестовой базе, так как можете все очистить весь регистр.
---
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(НаборЗаписей[0]);
НаборЗаписей.Записать();

а может все гораздо проще;

```1c
    НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
    НаборЗаписей.Записать();
```
---
В моём примере заполнялась таблица значений с РегистраСведений и мне нужно было удалить в таблице значений строку и также параллельно удалить ее в регистре сведений. я выбирал нужную мне строку и по кнопке удалял ее и в таблице значений и в регистре сведений.

Вот мое полное решение:

```1c
    //Кнопка Удалить
    &НаСервере
    Процедура УдалениеРегистраСведений()
    Для каждого Строка Из ТаблицазначенийВаша Цикл
    Если Строка.Выбрана Тогда
    СчетСсылка=Строка.ДокументМой.Ссылка;
    НаборЗаписей=РегистрыСведений.РеестрСведенийВаш.СоздатьМенеджерЗаписи();
    НаборЗаписей.Период = НачалоДня(ТекущаяДата());
    НаборЗаписей.Контрагент=Строка.Контрагент;
    НаборЗаписей.Организация=Строка.Организация;
    НаборЗаписей.УИД=Строка.ДокументМой.УИД;
    НаборЗаписей.Прочитать();
    НаборЗаписей.Удалить();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаКлиенте
    Процедура Удалить(Команда)
    Для каждого Строка Из ТаблицазначенийВаша Цикл
    Если Строка.Выбрана Тогда
    УдалениеРегистраСведений();
    Отбор = Новый Структура;
    Отбор.вставить("Выбрана", Истина);
    СтрокиУдалить = ТаблицазначенийВаша.НайтиСтроки(Отбор);
    Пока СтрокиУдалить.Количество() > 0 Цикл
    ТаблицазначенийВаша.Удалить(СтрокиУдалить[0]);
    СтрокиУдалить = ТаблицазначенийВаша.НайтиСтроки(Отбор);
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```

Вариантов решение много, так же можно код оптимизировать на быстродействие и красоту)
---
1. НаборЗаписей - не набор, лучше назвать Запись (она всегда одна).
2. Строку НаборЗаписей.Удалить() нужно обрамить в условие

```1c
    Если Запись.Выбран() Тогда
    Запись.Удалить();
    КонецЕсли;
```

3. В "отбор" записи менеджера можно ставить измерения и реквизиты, но обязательно все измерения должны быть указаны, иначе запись будет пустой.