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

удалить запись регистра

Автор Sinsinmin, 27 июл 2011, 08:10

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

Sinsinmin

Подскажите как удалить запись периодического регистра подчинённого регистратору.
Погуглил, но не понимаю сути как работает.
У документа 4 регистра. В одном из них перебирая записи по условию, мне нужно удалить запись если условие истина.

cannabis_86

Запрос = Новый Запрос;
Запрос.Текст = "
|                  ВЫБРАТЬ
|                  ЦеныНоменклатурыКонтрагентов.Регистратор
|ИЗ
|                  РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

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

Sinsinmin

Как я понимаю после отбора я получаю движения Документа. Но что делает наборЗаписей. Записать() ?
Мне ведь нужно удалить одну запись регистра из 10 к примеру.

cannabis_86

Происходит запись пустых наборов движений в ИБ(очистка старых движений)

cannabis_86

Т.е. ты сперва создаешь пустой набор записей, потом делаешь отбор по своему условию и делаешь запись пустого набора.

Sinsinmin

Я получаю записи регистра для данного регистратора.

1 - А - Б - В
2 - Г - Б - В
3 - А - В - Д
4 - А - Ц - Ф

Вот я получил набор записей.
Мне нужно 2 запись удалить, а три остальных оставить. То есть регистр был из 4 записей, а станет из трёх записей.

То есть получается что я сделаю пустой набор записей. Потом вставляю в отбор условие. И по условию должно попасть что останется три записи. И потом я делаю запись регистра?

Sinsinmin

Ага происходит очистка движений. А мне нужно удалить одну строку из четырёх. Мне не нужно очищать все движения

cannabis_86

Тебе нужно сделать так, чтобы когда ты напишешь НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
У тебя вернулась только одна запись регистра. Соответственно тебе нужно немного изменить НаборЗаписей.Отбор. ну и тут надо посмотреть что надо поставить, чтобы выйти на эту запись твоего регистра. Посмотри как найти определенную запись регистра.

Dethmontt

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

                                
КонецПроцедуры

Ну как то так
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Нужно оставить в набореЗаписей только то что тебе нужно удалить!!!
После записываешь и удаляться только те записи которые осталлись в наборе
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск