Имя: Пароль:
1C
 
Характеристики номенклатуры (программно)
Ø
0 Mila
 
26.11.06
19:28
Такой вопроc: Если в УТ зайти в справочник "характеристики номенклатуры" и добавить элемент, то откроется форма в которой нужно заполнить свойство, значение и наименование ( я так поняла что это форма обработки "ЗначенияСвойствОбъекта") так вот я никак не могу понять как программно можно в этой форме заполнитьеквизит значение?????
помогите плиз!!!!!
1 PinkVin
 
27.11.06
03:06
Посмотри какие регистры двигает эта обработка и подвигай их в своей. УТ к сожалению не обслуживаю пока.
2 PinkVin
 
27.11.06
03:28
ЗаписатьЗначенияСвойств() - Посмотри эту функцию в обработке "ЗначенияСвойствОбъекта"
3 Mila
 
27.11.06
06:11
(2) посмотрела, там идет запись в РегистрыСведений.ЗначенияСвойствОбъектов.
в своей обработке сделала запись в это регистр, но в справочникке "Характеристики номенклатуры" тогда ничего не отображается все равно , хотя щаписи в регистре сведений и есть
4 PinkVin
 
27.11.06
08:14
Блин. Всю эту обработку в комплексе надо рассматривать.
5 MaxS
 
27.11.06
08:22
  СправочникОбъектХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
  СправочникОбъектХарактеристика.Владелец = Номенклатура;
  СтрокаНаименование = "";
  Для каждого СтрокаСвойств Из СтруктураСвойств Цикл // тут делать на ваше усмотрение СтрокаЗначенияСвойства = СокрЛП(ЭлементыФормы[ПрефиксПоляХарактеристики+СтрокаСвойств.Ключ].Значение);
    Если ПустаяСтрока(СтрокаНаименование) Тогда
      СтрокаНаименование = СтрокаЗначенияСвойства;
    Иначе
      СтрокаНаименование = СтрокаНаименование + ", " + СтрокаЗначенияСвойства;
    КонецЕсли;
  КонецЦикла;
  СправочникОбъектХарактеристика.Наименование = СтрокаНаименование;
  
  НачатьТранзакцию();
  Попытка
    СправочникОбъектХарактеристика.Записать();
  Исключение
    Предупреждение("Не удалось записать характеристику:
    |" + ОписаниеОшибки());
    Возврат Неопределено;
  КонецПопытки;
  
  НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
  НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(СправочникОбъектХарактеристика.Ссылка);
  
  Для каждого СтрокаСвойств Из СтруктураСвойств Цикл
    ЗначениеИзФормы = ЭлементыФормы[ПрефиксПоляХарактеристики+СтрокаСвойств.Ключ].Значение;
    Если НЕ ЗначениеНеЗаполнено(ЗначениеИзФормы) Тогда
      Запись = НаборЗаписейЗначенияСвойств.Добавить();
      Запись.Объект = СправочникОбъектХарактеристика.Ссылка;
      Запись.Свойство = СтрокаСвойств.Значение;
      Запись.Значение = ЗначениеИзФормы;
    КонецЕсли;
  КонецЦикла;
  
  // Запись набора записей.
  Попытка
    НаборЗаписейЗначенияСвойств.Записать();
  Исключение
    Предупреждение("Не удалось записать значения свойств характеристики:
    |" + ОписаниеОшибки());
    Возврат Неопределено;
  КонецПопытки;
  
  ЗафиксироватьТранзакцию();
6 PinkVin
 
27.11.06
08:23
Вот так например в форме элемента справочника "ХарактеристикиНоменклатуры" происходит добавление нового свойства:
Процедура ОбработкаЗаписиНовогоОбъекта(Объект, Источник)
  Если ТипЗнч(Объект) = Тип("ПланВидовХарактеристикОбъект.СвойстваОбъектов") Тогда
  ОбработкаОбъектЗначенияСвойств.ПроверитьДобавитьНовоеСвойство(Объект.Ссылка, ЭлементыФормы.СвойстваИЗначения);
  КонецЕсли;
КонецПроцедуры
Также рекомендую посмотреть процедуру "ПередЗаписью()" той же формы.
7 Mila
 
27.11.06
09:40
(5) так и делала сейчас, все инормально, кроме того, что если открыть справоник "НОменклатура", потом выбрать товар и перейти к справочнику "Характеристики номенклатуры" там будет записанная характеристика, если ее открыть, то колонка значений то не заполнена!! ф вот и не догоняю как ее заполнить((((
8 Mila
 
27.11.06
12:30
плак- плак