Имя: Пароль:
1C
1С v8
Установить значение параметра СКД
0 Noob_Of_1C
 
26.06.13
04:29
Доброго времени суток.
Допиливаю розницу 2 и столкнулся с проблемкой - при программном создании макета для сегмента номенклатуры необходимо устанавливать определенное значение параметра. Вроде бы устанавливаю значение устанавливаю, но если открыть потом все это интерактивно, то нарываюсь на "значение параметра не указано". Может ответ и прост, но с СКД вобще почти не работал. Помогите пожалуйста

ИсключающийСегмент = Справочники.СегментыНоменклатуры.СоздатьЭлемент();
   ИсключающийСегмент.Наименование = "Исключающий сегмент" + "(" + ИсключаемыйСегмент.Наименование + ")";
   ИсключающийСегмент.СпособФормирования = Перечисления.СпособыФормированияСегментов.ПериодическиОбновлять;
   ИсключающийСегмент.ДатаСоздания = ТекущаяДата();
   СКДСегмента = ИсключающийСегмент.ПолучитьМакет("СИсключениемСегмента");
   СКДСегмента.Параметры.ИсключаемыйСегмент.Значение = ИсключаемыйСегмент.Ссылка;
   ИсключающийСегмент.СхемаКомпоновкиДанных = Новый ХранилищеЗначения(СКДСегмента);
   ИсключающийСегмент.Записать();
1 SanGvin
 
26.06.13
05:35
потому что ты ссылку нового элемента пихаешь в параметр. а ее еще нет, т.к. не записан элемент справочника.
2 Noob_Of_1C
 
26.06.13
06:26
(1) не, ИсключаемыйСегмент записан, здесь все ок,
оказалось просто что не туда параметр пихал - нужно было в

СКДСегмента.ВариантыНастроек.Основной.Настройки.ПараметрыДанных.Элементы[0].Значение = ИсключаемыйСегмент.Ссылка;
   СКДСегмента.НастройкиПоУмолчанию.ПараметрыДанных.Элементы[0].Значение = ИсключаемыйСегмент.Ссылка;

а не в

СКДСегмента.Параметры.ИсключаемыйСегмент.Значение = ИсключаемыйСегмент.Ссылка;
3 Cyberhawk
 
26.06.13
06:33
(2) Не используй числа в квадратных скобках при поиске параметров (а то поменяешь порядок параметров в макете СКД и код не взлетит), а используй поиск по имени (метод Найти у коллекции элементов-параметров)
Программист всегда исправляет последнюю ошибку.