База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как установить числовое значение доп. реквизита справочника в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 день, 14 часов назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
28 октября 2025 в 13:15 #33966
OdineskiУчастниккод в обработке «групповое изменение реквизитов» установить числовое значение дополнительного реквизита справочника
-
28 октября 2025 в 13:15 #33967
Odin — ОдинэсникУчастникNelli, привет!
Для установки числового значения дополнительного реквизита справочника в обработке «Групповое изменение реквизитов» нужно работать с объектами справочника и использовать стандартные методы работы с дополнительными реквизитами.
Пример кода на 1С (в модуле обработки):
1С (Код)1234567891011121314151CПроцедура ИзменитьДопРеквизит(СписокЭлементов, ИмяРеквизита, НовоеЗначение)Для Каждого Элемент Из СписокЭлементов Цикл// Получаем объект элемента справочникаОбъект = Элемент.ПолучитьОбъект();// Устанавливаем значение дополнительного реквизитаОбъект.УстановитьЗначениеДополнительногоРеквизита(ИмяРеквизита, НовоеЗначение);// Записываем измененияОбъект.Записать();КонецЦикла;КонецПроцедурыЕсли метод
УстановитьЗначениеДополнительногоРеквизитаотсутствует (зависит от версии и реализации), то можно работать через табличную часть дополнительных реквизитов:1С (Код)12345678910111213141516171819202122232425262728291CПроцедура ИзменитьДопРеквизит(СписокЭлементов, ИмяРеквизита, НовоеЗначение)Для Каждого Элемент Из СписокЭлементов ЦиклОбъект = Элемент.ПолучитьОбъект();// Ищем строку с нужным дополнительным реквизитомСтрокаДопРеквизита = Неопределено;Для Каждого Строка Из Объект.ДополнительныеРеквизиты ЦиклЕсли Строка.Свойство.Имя = ИмяРеквизита ТогдаСтрокаДопРеквизита = Строка;Прервать;КонецЕсли;КонецЦикла;Если СтрокаДопРеквизита = Неопределено Тогда// Добавляем новую строку, если не нашлиСтрокаДопРеквизита = Объект.ДополнительныеРеквизиты.Добавить();СтрокаДопРеквизита.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизита);КонецЕсли;// Устанавливаем значениеСтрокаДопРеквизита.Значение = НовоеЗначение;// Записываем объектОбъект.Записать();КонецЦикла;КонецПроцедурыГде:
—
СписокЭлементов— список ссылок на элементы справочника, которые нужно изменить.—
ИмяРеквизита— строка с именем дополнительного реквизита.—
НовоеЗначение— числовое значение, которое нужно установить.Обратите внимание, что при массовом изменении лучше делать запись объекта после всех изменений, если позволяет логика, чтобы снизить нагрузку.
Если вы используете стандартную подсистему «Управление свойствами» (БСП), то можно применять процедуру
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта, как в вашем примере из статьи:1С (Код)12345678910111CДля Каждого ТекСтрока Из СписокЭлементов ЦиклСсылкаНаЭлемент = ТекСтрока;Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизита);МассивСтруктур = Новый Массив;МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", Свойство, НовоеЗначение));УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНаЭлемент, МассивСтруктур);КонецЦикла;Этот способ удобен тем, что не нужно явно получать объект и записывать его — процедура сама сделает это на сервере.
—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1188249/ — там подробно описан пример работы с дополнительными реквизитами через БСП.Если нужна помощь с конкретным кодом обработки — могу помочь написать точнее.
—
Оценка ответа: 9/10
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.