Имя: Пароль:
1C
1С v8
Загрузка свойств из XML
,
0 MAPATNK2
 
naïve
11.11.19
13:04
Всем доброго дня Управление нашей фирмой, редакция 1.6 (1.6.17.123) .
1) Подскажите пожалуйста. Есть файл XML с кучей номенклатуры, почти у каждой номенклатуры свои свойства, подскажите, как их правильно загружать, чтобы в карточке номенклатуры не было свалки, а отражались только те свойства, которые использовались.
Делал так, создал отдельный вид номенклатуры и уже к нему добавлял свойства, но их получается порядка 500 и при открытии номенклатуры начинается такой тупняк.(Групп номенклатуры внутри файла нет ,если даже подгружать их из другого файла, то один черт в 1 группе 100-200 свойств для разных товаров).

                                                Для каждого строчка из Таб цикл
                        Запрос4 = новый запрос;
                        Запрос4.Текст =
                        "ВЫБРАТЬ
                        |    ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка
                        |ИЗ
                        |    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
                        |ГДЕ
                        |    ДополнительныеРеквизитыИСведения.Наименование = &ЗнчНаименования
                        |    И ДополнительныеРеквизитыИСведения.НаборСвойств = &ЗнчНабора";
                        Запрос4.УстановитьПараметр("ЗнчНаименования",строчка.СвойствоХарак);
                        Запрос4.УстановитьПараметр("ЗнчНабора",Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Загружен по API"));
                        Результат4 = Запрос4.Выполнить().Выгрузить();    
                        Если Результат4.Количество()=0 тогда
                            новарак = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
                            Новарак.Наименование = строчка.СвойствоХарак;
                            Новарак.ВыводитьВВидеГиперссылки=Ложь;
                            Новарак.ДополнительныеЗначенияИспользуются=Ложь;
                            
                            Новарак.ДополнительныеЗначенияСВесом=Ложь;
                            Новарак.Заголовок = строчка.СвойствоХарак;
                            Новарак.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Загружен по API");
                            Новарак.Виден=Истина;
                            Новарак.ТипЗначения=ОбщегоНазначения.ОписаниеТипаСтрока(1024);
                            Новарак.Записать();
                            Сообщить("Добавлено новое свойство - "+строчка.СвойствоХарак);
                            ПолученноеСвойство = Новарак.Ссылка;
                        Иначе
                            ПолученноеСвойство = Результат4[0].ссылка;
                        КонецЕсли;
                        
                        НовыйРеквизит = НоваяПозиция.ДополнительныеРеквизиты.Добавить();
                        НовыйРеквизит.Свойство = ПолученноеСвойство;
                        НовыйРеквизит.Значение = строчка.ЗначениеСвойства;
                    КонецЦикла;


2) При добавлении свойств ваше описанным методом, они не появляются в карточке номенклатуры. Нужно зайти в вид номенклатуры, выбрать созданные кодом свойства, нажать выбрать, записать вид номенклатуры, и только после этого все свойства появляются в карточке номенклатуры, я понимаю, что я что то не доделал своим кодом, но что.....?
1 SeriyP
 
11.11.19
13:24
Владельца свойства не прописали?
2 MAPATNK2
 
naïve
11.11.19
13:57
(1) как видите. У меня прост оест ьвид номенклатуры, который я создавал вручную. И там тоже владелец пустой, но там все отображается
3 MAPATNK2
 
naïve
11.11.19
14:07
(1) В общем поставил вместо    Новарак.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Загружен по API");
   Новарак.НаборСвойств = СсылкаНаНоменклатуру;

И свойства появились в карточке нмоенклатуры, но они зачеркнуты. Что с этим делать?
4 MAPATNK2
 
naïve
11.11.19
14:08
Отражаться отражаются, но зачеркнутые свойства не выгружаются в CommercML
5 MAPATNK2
 
naïve
11.11.19
14:21
Как свойства для конкретной номенклатуры создавать? Да так, чтобы они не были зачеркнутыми?
6 SeriyP
 
11.11.19
14:34
ЗначениеСвойства = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
ЗначениеСвойства.Владелец = СсылкаНаПланыВидовХарактеристикСвойстваОбъектовСозданноеЗаранее;

Это для УТ как УНФ - не знаю
7 Maniac
 
11.11.19
14:35
Чувак, а ты не пробовад что если значение пустое - то не вносить его.
8 Maniac
 
11.11.19
14:36
Код конечно кривой и ужасный.
но самое главное то ГДЕ - пропуск если значения НЕТ.
9 MAPATNK2
 
naïve
11.11.19
14:45
(8) Чёё? Для чего? Оно в любом случае будет отражаться пустым. А мне нужно, чтобы его вообще не было.
10 MAPATNK2
 
naïve
11.11.19
14:46
(6)Нет такого. ПланыВидовХарактеристикСвойстваОбъектов
11 MAPATNK2
 
naïve
11.11.19
14:49
(8) И это не самое главное. Самое главное, как вообще добавить новое свойство программно, т.к. пока вообще никто не ответил на вопрос? Может инструкиця есть какая? на обычных формах все было просто. Тут я не понимаю, какие то зачеркнутые свойства появились
12 Maniac
 
11.11.19
14:50
(9) жесть то какая. если у тебя пустое значение свойства то ты его вообще НЕ ДОБАВЛЯЕШЬ

НовыйРеквизит = НоваяПозиция.ДополнительныеРеквизиты.Добавить();
13 MAPATNK2
 
naïve
11.11.19
14:52
(12) Момент, попробую....Может реально тормоз.
14 MAPATNK2
 
naïve
11.11.19
14:55
(12) А к видуноменклатуры как добавить то новое свойство? Тем кодом, что я пытаюсь добавить, оно появляется только внутри вида нмоенклатуры, а не у карточки номенклатуры в доп реквизитах.
15 MAPATNK2
 
naïve
11.11.19
19:14
(12) В общем нет. Не добавлять значения к свойству не помогает. Просто в карточке номенклатуры куча пустых свойств.
16 Maniac
 
11.11.19
19:44
Ну еще потому что ты их самих свойств НАСОЗДАВАЛ к НАБОРУ
17 Maniac
 
11.11.19
19:45
если у товаров разные свойства то это должны быть РАЗНЫЕ НАБОРЫ
18 Chameleon1980
 
11.11.19
21:58
Там ещё справочник нужно заполнить типа наборы свойств (её помню название) чтобы зачёркнуто не было
19 MAPATNK2
 
naïve
12.11.19
08:25
(18) (17) Да, заполнил это все, помогло. Но проблема осталась главная, у номенклатуры 475 свойств из них 10 заполнено. Как то можно не показывать свойства, которые не заполнены?
20 MAPATNK2
 
naïve
12.11.19
09:27
Видимо тут без доработок никак? По логике ведь правильно выводить все свойства...вдруг кто то открыл форму, чтобы их заполнить. А если по моей логике судить, то не получится заполнить свойства, при необходимости, если их нет на форме.
21 hhhh
 
12.11.19
09:58
вроде в ут уже выбросили этот справочник НаборыСвойств. Решили без него.
22 MAPATNK2
 
naïve
12.11.19
13:46
Есть где нибудь инфа как программно все это добавить 4 дня уже маюсь. Нужно добавить Программно: категорию, справочник НаборыДополнительнызРеквизитов и сведений, к нему планы видов характеристик, в номенклатуру отдельно добавить свойства. Есть у кого пример программного добавления свойств? Вообще не понимаю как все эти вещи связать.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший