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

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

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

Автор: kostya77 23.01.25, 14:59

Добрый день. У меня возникла необходимость удалить все дополнительные реквизиты номенклатуры. Пробовать делать так

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка КАК Ссылка
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура";  
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Об = Выборка.Ссылка.ПолучитьОбъект();
        Об.ДополнительныеРеквизиты.Очистить();
        об.записать();
    КонецЦикла;


вылетает ошибка Объект недоступен для изменения.

Подскажите как сделать?

Автор: Profi_1C77 23.01.25, 15:11

kostya77 @ Сегодня, 14:59 * ,
В запрос попадают и группы тоже, а у группы точно не может быть табличной части

Автор: kostya77 23.01.25, 15:22

Очищу Доп ректвизиты в Номенклатуре, а как дальше удалять?

Автор: Profi_1C77 23.01.25, 15:36

kostya77 @ Сегодня, 15:22 * ,

Об.ДополнительныеРеквизиты.Очистить();
об.записать();

Какая конфигурация?

Автор: kostya77 23.01.25, 15:45

Profi_1C77 @ Сегодня, 15:36 * ,
Малий Бізнес

Profi_1C77 @ Сегодня, 15:36 * ,
цим методом не вдалось очистити Доп реквізити

Автор: Profi_1C77 23.01.25, 16:07

kostya77 @ Сегодня, 15:45 * ,
Потому что в этой Конф табличная часть из Свойство/Значение вероятно ( ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения);
или запрос сложнее писать или искать в модулях процедуру удаления ... ( вероятно БСП)

Автор: Slon747 23.01.25, 16:59

//Выбираем товары с существующими доп. реквизитами
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
               |    НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка
               |ИЗ
               |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты";

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

Если после этого доп. реквизиты останутся, нужно смотреть что в ПередЗаписью().
Если там принудительно заполняется ТЧ, то в свой код перед записью добавить:
Об.ОбменДанными.Загрузка = Истина;

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