Как удалить строку табличной части справочника программно (1С:Программисту 8.3) — 1C-h
 

Как удалить строку табличной части справочника программно (1С:Программисту 8.3)

2

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

Удаление строки табличной части выполняется по индексу:
ОбъектСпр.ДополнительныеРеквизиты.Удалить(ИндексЭлементаКоллекции);
Индекс предварительно нужно получить

Пример:

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Наименование", "Категория рабочих (Штатное расписание)");
Запрос.Текст =
"ВЫБРАТЬ
//| ШтатноеРасписаниеДополнительныеРеквизиты.Ссылка,
//| ШтатноеРасписаниеДополнительныеРеквизиты.Свойство,
| ШтатноеРасписаниеДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.ШтатноеРасписание.ДополнительныеРеквизиты КАК ШтатноеРасписаниеДополнительныеРеквизиты
|ГДЕ
| ШтатноеРасписаниеДополнительныеРеквизиты.Свойство.Наименование = &Наименование
| И ШтатноеРасписаниеДополнительныеРеквизиты.Ссылка = &Ссылка";

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

// Для каждого элемента справочника выполняем запрос, в качестве параметра передавая в запрос ссылку на элемент справочника
// запрос строится так, чтобы получить строку со значением конкретного реквизита табличной части справочника
Запрос.УстановитьПараметр("Ссылка", ВыборкаСправочника.Ссылка);

// в цикле находим строку табличной части
Результат = Запрос.Выполнить();
ВыборкаЗапроса = Результат.Выбрать();

Если ВыборкаЗапроса.Следующий() Тогда

// ОчищаемаяСтрока - ссылка на конкретную строку ТЧ справочника
ОчищаемаяСтрока = ОбъектСпр.ДополнительныеРеквизиты.Найти(ВыборкаЗапроса.Значение);

// получаем индекс найденной строки
ИндексЭлементаКоллекции = ОбъектСпр.ДополнительныеРеквизиты.Индекс(ОчищаемаяСтрока);

// удаляем строку ТЧ по индексу
ОбъектСпр.ДополнительныеРеквизиты.Удалить(ИндексЭлементаКоллекции);

КолЗамен = КолЗамен + 1;

// записываем изменения
ОбъектСпр.Записать();
КонецЕсли;

КонецЦикла;

2 thoughts on “Как удалить строку табличной части справочника программно (1С:Программисту 8.3)

  1. В старой школе при удаление элементов коллекции удаляемые элементы заносились в массив, а затем обходя этот массив удаляли нужные записи…

    1. Угу. То, как все сейчас, лично мне не очень-то нравится. Но приходится мириться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Next Post

Программисту 1С - настройка автоматического резервного копирования и автоматического восстановления копии базы данных без остановки работы пользователей средствами SQL сервера

Пн Янв 23 , 2017
В данной статье мы расскажем о том, как можно удобно для программиста 1С настроить автоматическое создание и разворачивание копии базы данных текущего дня в другую базу. В некоторых случаях, кроме обычной настройки резервного копирования рабочей базы данных, бывает полезно ежедневно автоматически разворачивать созданные копии «в сторонке» для анализа, например, действий пользователей. Это […]