Как удалить программно одну запись из Регистра сведений по кнопке

1. user1582372 27.04.21 11:18 Сейчас в теме
Добрый день! Я выбираю строки со списка документов по ним у меня забиваться Регистр сведений и по кнопке он выводит мне весь список строк которые я добавил.
Вопрос: Как мне удалить строку выведенную из регистра сведений и эту же строку в самом Регистре сведений?
Регистр сведений независимый, в пределах дня.
По теме из базы знаний
Найденные решения
6. user1582372 05.05.21 14:02 Сейчас в теме
Вот решение

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

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

Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
CratosX; avmironov; Ketzalkoatl; BoBaH; Serg243; daho; Михаська; any__uta; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 27.04.21 11:21 Сейчас в теме
(1)Структура регистра сведений при этом какая?
3. Nubsdale 27.04.21 11:53 Сейчас в теме
(1)
Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта)
	Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
	Запись.Валюта = Валюта;
	Запись.БазоваяВалюта = БазоваяВалюта;
	Запись.Удалить();
КонецПроцедуры

данный код удалит запись регистра по валюте
поставьте вместо валюты своё значение.
4. user1582372 27.04.21 12:28 Сейчас в теме
(3) значение которое я забиваю в регистр или вывожу?
5. Nubsdale 27.04.21 13:01 Сейчас в теме
(1)
и эту же строку в самом Регистре сведений?

Свои данные подставьте и удалите запись в регистре сведений
6. user1582372 05.05.21 14:02 Сейчас в теме
Вот решение

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

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

Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
CratosX; avmironov; Ketzalkoatl; BoBaH; Serg243; daho; Михаська; any__uta; +8 Ответить
10. Onwardv 64 06.12.22 11:33 Сейчас в теме
(6) Тут создается ОДНА запись, а не набор записей.
Рекомендую переименовать "НаборЗаписей" в "ЗаписьРС", иначе будут сложности потом, при анализе кода.
CratosX; armeec; insurgut; +3 Ответить
7. Anarchist12 05.12.22 19:35 Сейчас в теме
подскажите непонятливому.
после метода НаборЗаписей.Прочитать();
все НаборЗаписей.Контрагент
НаборЗаписей.Организация

становятся пустыми и ничего не происходит.. почему?
8. пользователь 05.12.22 19:37
Сообщение было скрыто модератором.
...
9. Anarchist12 05.12.22 21:17 Сейчас в теме
может код кривой?

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


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

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


не говорю что у меня код "прямой" :) он просто рабочий
request4t; +1 Ответить
11. Onwardv 64 06.12.22 11:35 Сейчас в теме
(9) Аккуратнее с удалением набора записей регистра сведений.
Т.к. можете очистить весь регистр, если отбор не наложится по каким-либо причинам.
user1582372; +1 Ответить
12. user1582372 06.12.22 11:52 Сейчас в теме
(11) все верно, лучше это делать в тестовой базе, так как можете все очистить весь регистр.
14. lvictor58 135 20.12.22 12:44 Сейчас в теме
(9)
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(НаборЗаписей[0]);
НаборЗаписей.Записать();


а может все гораздо проще;
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Записать();
AndyBad; ВИЛенин; insurgut; +3 Ответить
13. user1582372 06.12.22 12:31 Сейчас в теме
В моём примере заполнялась таблица значений с РегистраСведений и мне нужно было удалить в таблице значений строку и также параллельно удалить ее в регистре сведений. я выбирал нужную мне строку и по кнопке удалял ее и в таблице значений и в регистре сведений.

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

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

Вариантов решение много, так же можно код оптимизировать на быстродействие и красоту)
15. CratosX 112 01.02.24 19:44 Сейчас в теме
(13)
1. НаборЗаписей - не набор, лучше назвать Запись (она всегда одна).
2. Строку НаборЗаписей.Удалить() нужно обрамить в условие
Если Запись.Выбран() Тогда
	Запись.Удалить();
КонецЕсли;

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот