Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=55718)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Почистить регистр "Удалить все, кроме последнего"

Автор: Inkognito 13.12.19, 12:54

Бухгалтерия 1.2, обычные формы.
Есть собственный регистр, который уже порядком разросся, за несколько лет. Желательно его почистить - оставить только последнюю запись (по отбору номенклатуры).
Придумал так:

Отбор = Новый Структура("Номенклатура", Номенклатура);
ТаблицаНоменклатур = РегистрыСведений.НоменклатурыДП.СрезПоследних(КонецДня(ТекущаяДата()), Отбор);
ТаблицаНоменклатур .Сортировать("Период убыв");


Но это уже другая таблица, а мне нужно удаление производить в самом регистре. ЧЯДНТ?

Автор: Макс1С 13.12.19, 13:18

Inkognito @ Сегодня, 12:54 * ,
Попробуйте загрузить полученную таким образом таблицу в набор записей без отборов. Метод Записать() заменит все записи теми данными которые вы добавили в набор записей.
ПС. Только срез последних - также без отборов. Можно и без даты, тогда вернет самые последние записи, на тот случай если есть будущей датой
ПС2. Или срез последних с отбором, тогда и набор записи с таким же отбором, чтобы чистить частями

Автор: Inkognito 23.12.19, 9:11

Макс1С
Методом проб и ошибок, лучшее решение придумано такое: создать копию регистра, перебрать из существующего все последние записи, и добавить их в новый регистр. Старый удалить, новый переименовать на имя старого. Протестировал, сработало. Пока пользователи работают почти круглосуточно, ждем ближайших выходных.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua