|
Создание характеристик программно | ☑ | ||
---|---|---|---|---|
0
bebibo
15.11.22
✎
13:26
|
Всем доброго времени суток!
Получился вот такой код: Для каждого стр из ТабЗначенийИзФайлаЭксель цикл НаименованиеНоменклатуры = стр.КакПланируемНаименование; НаименованиеКатегории = стр.КАКПЛАНИРУЕМНАИМЕНОВАНИЕ; ПроизводительЗнач = стр.Производитель; СуффиксЗнач = стр.Суффикс; ЕдИзм = стр.ЕдИзм_; ЦенаНом = стр.ЦенаВРФРуб_; //Создание категории НайденаКатегория = Справочники.КатегорииНоменклатуры.НайтиПоНаименованию(НаименованиеКатегории); Если НЕ ЗначениеЗаполнено(НайденаКатегория) тогда обКатегория = Справочники.КатегорииНоменклатуры.СоздатьЭлемент(); обКатегория.Наименование = НаименованиеКатегории; обКатегория.ТипНоменклатурыПоУмолчанию = Перечисления.ТипыНоменклатуры.Запас; обКатегория.ИспользоватьХарактеристики = Истина; обКатегория.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм); обКатегория.Записать(); НайденаКатегория = обКатегория.Ссылка; КонецЕсли; //Находим или создаем номенклатуру НайденаНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеНоменклатуры); Если НЕ ЗначениеЗаполнено(НайденаНоменклатура) тогда НовыйЭлементНоменклатуры = Справочники.Номенклатура.СоздатьЭлемент(); НовыйЭлементНоменклатуры.Наименование =НаименованиеНоменклатуры; НовыйЭлементНоменклатуры.КатегорияНоменклатуры = НайденаКатегория; НовыйЭлементНоменклатуры.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдИзм); НовыйЭлементНоменклатуры.НаименованиеПолное = НаименованиеНоменклатуры; НовыйЭлементНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Запас; НовыйЭлементНоменклатуры.ИспользоватьХарактеристики = Истина; НовыйЭлементНоменклатуры.Записать(); НайденаНоменклатура = НовыйЭлементНоменклатуры.Ссылка; КонецЕсли; // НоваяТЗ = новый ТаблицаЗначений; НоваяТЗ.Колонки.Добавить("Свойство"); НоваяТЗ.Колонки.Добавить("Значение"); Суффикс = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Суффикс", Истина); ЗначениеРеквизита = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ЗначениеРеквизита.Наименование = СуффиксЗнач; ЗначениеРеквизита.Владелец = Суффикс; ЗначениеРеквизита.Записать(); Стр = НоваяТЗ.Добавить(); Стр.Свойство = Суффикс; Стр.Значение = ЗначениеРеквизита.Ссылка; Производитель = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Производитель", Истина); ЗначениеРеквизита = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ЗначениеРеквизита.Наименование = ПроизводительЗнач; ЗначениеРеквизита.Владелец = Производитель; ЗначениеРеквизита.Записать(); Стр = НоваяТЗ.Добавить(); Стр.Свойство = Производитель; Стр.Значение = ЗначениеРеквизита.Ссылка; НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); НоваяХарактеристика.Владелец = НайденаНоменклатура; НоваяХарактеристика.Наименование = СуффиксЗнач+", "+ПроизводительЗнач; НоваяХарактеристика.НаименованиеДляПечати = СуффиксЗнач+", "+ПроизводительЗнач; НоваяХарактеристика.Записать(); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяХарактеристика.Ссылка,НоваяТЗ); КонецЦикла; Вот у номенклатуры характеристика создалась, всё нормально. Но заходя в эту характеристику на форме в табличной части пусто. То есть в ТЧ нет свойств и их значений. Пишет они указываются в категории номенклатуры. Захожу в категорию - там тоже пусто. Что не хватает в моём коде? Почему тч со свойствами не заполняется? |
|||
1
bebibo
15.11.22
✎
13:49
|
Я думал вот эта строчка: "УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяХарактеристика.Ссылка,НоваяТЗ);" - всё решит..Но нет..
|
|||
2
Ryzeman
15.11.22
✎
13:58
|
(1) УправлениеСвойствами - для дополнительных реквизитов и сведений. У характеристики это дополнительные реквизиты или другая табличная часть?
Ну или что за конфа? начнём с этого... |
|||
3
bebibo
15.11.22
✎
14:00
|
(2) Конфа УНФ 1.6.
У характеристики - доп реквизит |
|||
4
lamme
15.11.22
✎
14:03
|
обычно - Характеристика - это отдельный справочник, а не доп.реквизит.
о чем у тебя в коде и написано Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); что касается - не отображается "Но заходя в эту характеристику на форме в табличной части пусто" зайди все в тот же конфиг в карточку товара и посмотри - из чего он заполняет эту таблицу (если это таблица вообще, а не какой ниб РС) |
|||
5
lamme
15.11.22
✎
14:07
|
штатно
в УНФ 1,6 - хар-ка - это справочник и отображение хар-к - это большой запрос |
|||
6
lamme
15.11.22
✎
14:08
|
||||
7
lamme
15.11.22
✎
14:09
|
и да ..
вспомнил |
|||
8
bebibo
15.11.22
✎
14:09
|
(4) Да, хар-ка это справочник. Просто в (2) спросили у хар-ки это доп реквизиты или другая тч. Я ответил- доп реквизиты.
Я захожу в номенклатуру - в ней сверху перехожу по гиперссылке "Характеристики". Она там моя есть, которую я загрузил. Жму на неё 2 раза, открывается форма "Характеристика номенклатуры", снизу есть поле "Свойства и значения". Вот это поле пустое. А снизу пишется - "Состав свойств изменяется в карточке Категории номенклатуры". Иду опять в номенклатуру и перехожу из нее в её категорию. Внизу на форме категории тоже есть поля "Свойства хар-к" и "Свойства ном-ры" - оба пустые. |
|||
9
lamme
15.11.22
✎
14:09
|
при программном создании карточки товара
обКатегория.ИспользоватьХарактеристики = Истина; этого мало |
|||
10
bebibo
15.11.22
✎
14:10
|
(6) Блин..Вот попадос..
|
|||
11
lamme
15.11.22
✎
14:11
|
там есть доп реквизит - в котором так же указываешь что Хар-ки использовать
|
|||
12
lamme
15.11.22
✎
14:11
|
найду- покажу
|
|||
13
bebibo
15.11.22
✎
14:11
|
(9) Мне надо программно тч заполнить еще? Только не у категории я так понимаю. Есть справочник "Наборы дополнительных реквизитов и сведений", туда что ли?
|
|||
14
lamme
15.11.22
✎
14:13
|
13
нет. там еще доп реквизит есть у него тип - перечисление. те обКатегория.ИспользоватьХарактеристики = Истина; там еще надо ставить обКатегория.<ЧегоТо> = Перечисления....Использовать; но не вижу какой это реквизит ищу |
|||
15
lamme
15.11.22
✎
14:20
|
не - не вижу.
просто знаю - что с такой же ситуацией сталкивался и тоже тупил. |
|||
16
bebibo
15.11.22
✎
14:34
|
(14) хм..Сложно..На форумах просмотрел ничего такого не нашел(
|
|||
17
bebibo
15.11.22
✎
14:39
|
(15) То есть по коду у меня всё верно, я просто не заполнил какой то реквизит. Так?
|
|||
18
lamme
15.11.22
✎
14:39
|
на мой взгляд - да
|
|||
19
lamme
15.11.22
✎
14:43
|
попробуй делать по шагам
те сначала просто создать товар + характеристику без создания свойств и категорий. |
|||
20
lamme
15.11.22
✎
14:46
|
||||
21
Ryzeman
15.11.22
✎
14:49
|
(17) Самое простое решение если "в лоб" - создай ручками номенклатуру и заполни характеристику, потом через консоль запросов поочереди сравни их - номенклатуры, характеристики, допреквизиты. Вот если это не поможет, тогда надо курить формы и смотреть откуда что берётся и как отображается. Сразу делать так конечно правильнее, но ты уже много времени на этот вопрос убил)
|
|||
22
bebibo
15.11.22
✎
15:20
|
Разобрался. Кому будет полезно может:
Надо было при создании характеристики заполнить тч: СтрДопРеквизит = НоваяХарактеристика.ДополнительныеРеквизиты.Добавить(); СтрДопРеквизит.Свойство = Производитель; СтрДопРеквизит.Значение = ЗначениеРеквизита.Ссылка; И всё сработало. |
|||
23
bebibo
15.11.22
✎
15:30
|
(22) Только в категории тоже надо что то заполнить, так как там тоже пусто всё равно.
|
|||
24
bebibo
15.11.22
✎
16:41
|
(23) Проблема решена этим:
обНаборСвойствХарактеристики = обКатегория.НаборСвойствХарактеристики.ПолучитьОбъект(); СтрДопРеквизит = обНаборСвойствХарактеристики.ДополнительныеРеквизиты.Добавить(); СтрДопРеквизит.Свойство = Производитель; СтрДопРеквизит = обНаборСвойствХарактеристики.ДополнительныеРеквизиты.Добавить(); СтрДопРеквизит.Свойство = Суффикс; обНаборСвойствХарактеристики.Записать(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |