Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 апр 2024, 01:54

Удаление записей регистра сведений

Автор Александр2018, 17 авг 2018, 15:50

0 Пользователей и 1 гость просматривают эту тему.

Александр2018

Всем привет! Задача: удалить определённые записи из регистра сведений программным методом. Почти написал внешнюю обработку для удаления, но не могу понять как найти функцию или метод удаления в выборке. Почему программным методом, а не интерактивным - не спрашивайте, долго объяснять. Есть идея, что нужно СоздатьНаборЗаписей(), но как это осуществить?
&НаСервере
Процедура УдалитьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеОбъектовДляРегистрацииВОбменах.УзелИнформационнойБазы,
| ДанныеОбъектовДляРегистрацииВОбменах.Ссылка
|ИЗ
| РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах КАК ДанныеОбъектовДляРегистрацииВОбменах";

РезультатЗапроса = Запрос.Выполнить();
Выб = РезультатЗапроса.Выбрать();
Пока Выб.Следующий() Цикл
Если Выб.Ссылка = неопределено тогда
Выб.Удалить(); //ВОТ ЭТА СТРОКА НЕ РАБОТАЕТ, ОНА КЛЮЧЕВАЯ
        КонецЕсли;
КонецЦикла;
КонецПроцедуры                     

&НаКлиенте
Процедура Удалить(Команда)
УдалитьНаСервере();
КонецПроцедуры

alex0402

Цитата: Александр2018 от 17 авг 2018, 15:50Есть идея, что нужно СоздатьНаборЗаписей(), но как это осуществить?

примерно так:
НаборЗаписей = РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ИмяИзмерения.Установить(Значение);
//удалить лишние записи
НаборЗаписей.Записать(Истина);


но можно и по другому, главное записать нужные записи (без не нужных) с замещением.
Спасибо за Сказать спасибо

alexandr_ll

Цитата: Александр2018 от 17 авг 2018, 15:50
Всем привет! Задача: удалить определённые записи из регистра сведений программным методом. Почти написал внешнюю обработку для удаления, но не могу понять как найти функцию или метод удаления в выборке. Почему программным методом, а не интерактивным - не спрашивайте, долго объяснять. Есть идея, что нужно СоздатьНаборЗаписей(), но как это осуществить?
&НаСервере
Процедура УдалитьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеОбъектовДляРегистрацииВОбменах.УзелИнформационнойБазы,
| ДанныеОбъектовДляРегистрацииВОбменах.Ссылка
|ИЗ
| РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах КАК ДанныеОбъектовДляРегистрацииВОбменах";

РезультатЗапроса = Запрос.Выполнить();
Выб = РезультатЗапроса.Выбрать();
Пока Выб.Следующий() Цикл
Если Выб.Ссылка = неопределено тогда
Выб.Удалить(); //ВОТ ЭТА СТРОКА НЕ РАБОТАЕТ, ОНА КЛЮЧЕВАЯ
        КонецЕсли;
КонецЦикла;
КонецПроцедуры                     

&НаКлиенте
Процедура Удалить(Команда)
УдалитьНаСервере();
КонецПроцедуры

Вот из синтакс-помощника:
   Рег = РегистрыСведений.ЗначенияПравПользователя;
    Выборка = Рег.Выбрать();
    Пока Выборка.Следующий() Цикл
        Выборка.ПолучитьМенеджерЗаписи().Удалить();
    КонецЦикла;

LexaK

так как вам надо удалить все данные где Ссылка = Неопределено, то весь ваш код вообще не нужен, все делается в три строчки

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

1.проверьте есть ли вообще данные с условием Ссылка = Неопределено
2.сначала потренируйтесь на кошках (т.е. тестовой базе)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск