Как удалить программно одну запись из Регистра сведений по кнопке
Добрый день! Я выбираю строки со списка документов по ним у меня забиваться Регистр сведений и по кнопке он выводит мне весь список строк которые я добавил.
Вопрос: Как мне удалить строку выведенную из регистра сведений и эту же строку в самом Регистре сведений?
Регистр сведений независимый, в пределах дня.
Вопрос: Как мне удалить строку выведенную из регистра сведений и эту же строку в самом Регистре сведений?
Регистр сведений независимый, в пределах дня.
По теме из базы знаний
- Всякие полезности
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Как сдать экзамен 1С:Специалист по платформе?
- Инструментарий для анализа и редактирования регистров 1С (Управляемые формы)
- Взаимодействие с сотрудниками и клиентами из одного окна конфигурации 1С (Телеграм, ВКонтакте, Facebook, Discord). Преимущества, технические особенности, подводные камни
Найденные решения
Вот решение
Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.
Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
НаборЗаписей=РегистрыСведений.(Название вашего регистра сведений).СоздатьМенеджерЗаписи();
НаборЗаписей.Период = НачалоДня(ТекущаяДата());
НаборЗаписей.Контрагент=Контрагент;
НаборЗаписей.Организация=Организация;
(ТУТ по больше ваших записей )
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить();
Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.
Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
данный код удалит запись регистра по валюте
поставьте вместо валюты своё значение.
Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта)
Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
Запись.Валюта = Валюта;
Запись.БазоваяВалюта = БазоваяВалюта;
Запись.Удалить();
КонецПроцедуры
данный код удалит запись регистра по валюте
поставьте вместо валюты своё значение.
Вот решение
Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.
Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
НаборЗаписей=РегистрыСведений.(Название вашего регистра сведений).СоздатьМенеджерЗаписи();
НаборЗаписей.Период = НачалоДня(ТекущаяДата());
НаборЗаписей.Контрагент=Контрагент;
НаборЗаписей.Организация=Организация;
(ТУТ по больше ваших записей )
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить();
Если по указанным полям не найдется записи, то, естественно, ничего удаляться не будет.
Если по указанным полям найдется несколько записей, то никакого удаления также не произойдет.
может код кривой?
вот с таким кодом получилось
регистр шк: измерения номенклатура, единица и шк
было 2 записи с одинаковой номенклатурой и разными единицами
нужно было удалить обе записи.
выполнил код 2 раза удалились обе записи.
выше в примерах не было строки НаборЗаписей.Записать();
не говорю что у меня код "прямой" :) он просто рабочий
вот с таким кодом получилось
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(НаборЗаписей[0]);
НаборЗаписей.Записать();
регистр шк: измерения номенклатура, единица и шк
было 2 записи с одинаковой номенклатурой и разными единицами
нужно было удалить обе записи.
выполнил код 2 раза удалились обе записи.
выше в примерах не было строки НаборЗаписей.Записать();
не говорю что у меня код "прямой" :) он просто рабочий
(9)
а может все гораздо проще;
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(НаборЗаписей[0]);
НаборЗаписей.Записать();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(НаборЗаписей[0]);
НаборЗаписей.Записать();
а может все гораздо проще;
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(Объект.номенклатура);
НаборЗаписей.Записать();
В моём примере заполнялась таблица значений с РегистраСведений и мне нужно было удалить в таблице значений строку и также параллельно удалить ее в регистре сведений. я выбирал нужную мне строку и по кнопке удалял ее и в таблице значений и в регистре сведений.
Вот мое полное решение:
Вариантов решение много, так же можно код оптимизировать на быстродействие и красоту)
Вот мое полное решение:
//Кнопка Удалить
&НаСервере
Процедура УдалениеРегистраСведений()
Для каждого Строка Из ТаблицазначенийВаша Цикл
Если Строка.Выбрана Тогда
СчетСсылка=Строка.ДокументМой.Ссылка;
НаборЗаписей=РегистрыСведений.РеестрСведенийВаш.СоздатьМенеджерЗаписи();
НаборЗаписей.Период = НачалоДня(ТекущаяДата());
НаборЗаписей.Контрагент=Строка.Контрагент;
НаборЗаписей.Организация=Строка.Организация;
НаборЗаписей.УИД=Строка.ДокументМой.УИД;
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Удалить(Команда)
Для каждого Строка Из ТаблицазначенийВаша Цикл
Если Строка.Выбрана Тогда
УдалениеРегистраСведений();
Отбор = Новый Структура;
Отбор.вставить("Выбрана", Истина);
СтрокиУдалить = ТаблицазначенийВаша.НайтиСтроки(Отбор);
Пока СтрокиУдалить.Количество() > 0 Цикл
ТаблицазначенийВаша.Удалить(СтрокиУдалить[0]);
СтрокиУдалить = ТаблицазначенийВаша.НайтиСтроки(Отбор);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьВариантов решение много, так же можно код оптимизировать на быстродействие и красоту)
(13)
1. НаборЗаписей - не набор, лучше назвать Запись (она всегда одна).
2. Строку НаборЗаписей.Удалить() нужно обрамить в условие
3. В "отбор" записи менеджера можно ставить измерения и реквизиты, но обязательно все измерения должны быть указаны, иначе запись будет пустой.
1. НаборЗаписей - не набор, лучше назвать Запись (она всегда одна).
2. Строку НаборЗаписей.Удалить() нужно обрамить в условие
Если Запись.Выбран() Тогда
Запись.Удалить();
КонецЕсли;
3. В "отбор" записи менеджера можно ставить измерения и реквизиты, но обязательно все измерения должны быть указаны, иначе запись будет пустой.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот