Имя: Пароль:
1C
 
Дополнительные реквизиты
,
0 Yur1492
 
16.04.18
15:16
Доброго всем времени.
УНФ, 1.6.13. Подскажите пожалуйста, у номенклатуры при выборе категории из плана видов характеристик поставляются доп реквизиты. Пишу обработку для заполнения из эксель номенклатуры, там есть доп реквизит допустим мощность и как его заполнить при обработке. Подскажите пожалуйста.
1 FFIL0S0FF
 
16.04.18
15:23
Стандартной обработкой "загрузка данных из табличного документа 8.3" доп реквизиты на сколько я помню она не грузит. Но можно доработать в инете есть статьи на эту тему. Гугли. Один раз разберешся потом легче будет.
2 Yur1492
 
16.04.18
15:29
(1) Ну я не стандартной пользуюсь, решил сам напсать так как экселька очень интересная, все работает, а вот как доп реквизиты заполнить не пойму
3 delavar
 
16.04.18
15:32
вот что-то подобное я делал -

НоменклатураОб = Номенклатура.ПолучитьОбъект();
        
        ТЗЗначенияСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Номенклатура);
//доп реквизит
                СвойствоНоменклатуры = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СтрокаТЗ.ИмяРеквизита);
                Если НЕ ЗначениеЗаполнено(СвойствоНоменклатуры) Тогда
                    Сообщить("Не найден реквизит/допреквизит по наименованию: "+СтрокаТЗ.ИмяРеквизита);
                    Продолжить;
                КонецЕсли;
                
                Если УправлениеСвойствами.ПроверитьСвойствоУОбъекта(Номенклатура, СвойствоНоменклатуры) Тогда
                    СтрокаТЗСвойств = ТЗЗначенияСвойств.Найти(СвойствоНоменклатуры,"Свойство");
                    Если СтрокаТЗСвойств = Неопределено Тогда
                        Если СокрЛП(ЗначениеРеквизита) = "" И НЕ флПерезаписывать Тогда
                            Продолжить;
                        КонецЕсли;
                        СтрокаТЗСвойств = ТЗЗначенияСвойств.Добавить();
                    Иначе
                        Если НЕ флПерезаписывать Тогда
                            Продолжить;
                        КонецЕсли;
                    КонецЕсли;
                    
                    //Получаем типы свойства
                    //считаем, что тип свойств у нас не составные - поэтому берем первый
                    ТипСвойства = СвойствоНоменклатуры.Типзначения.Типы()[0];
                    
                    Если ТипСвойства = Тип("СправочникСсылка.ЗначенияСвойствОбъектов") Тогда
                        РеквизитОбъекта = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеРеквизита,Истина,,СвойствоНоменклатуры);
                        Если ЗначениеЗаполнено(РеквизитОбъекта) Тогда
                            СтрокаТЗСвойств.Свойство = СвойствоНоменклатуры;
                            СтрокаТЗСвойств.Значение = РеквизитОбъекта;    
                            РеквизитОтработан = Истина;
                        Иначе
                            Сообщить("Не найдено значение допрекизита по наименованию "+ЗначениеРеквизита+" Для свойства "+СвойствоНоменклатуры);
                            ТЗЗначенияСвойств.Удалить(СтрокаТЗСвойств);
                            Продолжить;
                        КонецЕсли;
                    ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипСвойства) Тогда
                        ИмяСправочника = Метаданные.НайтиПоТипу(ТипСвойства).Имя;
                        РеквизитОбъекта = Справочники[ИмяСправочника].НайтиПоНаименованию(ЗначениеРеквизита);
                        Если ЗначениеЗаполнено(РеквизитОбъекта) Тогда
                            СтрокаТЗСвойств.Свойство = СвойствоНоменклатуры;
                            СтрокаТЗСвойств.Значение = РеквизитОбъекта;    
                            РеквизитОтработан = Истина;
                        Иначе
                            Сообщить("Не найдено значение допрекизита по наименованию "+ЗначениеРеквизита+" Для свойства "+СвойствоНоменклатуры);
                            ТЗЗначенияСвойств.Удалить(СтрокаТЗСвойств);
                            Продолжить;
                        КонецЕсли;
                    ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСвойства) Тогда
                        ИмяПеречисления = Метаданные.НайтиПоТипу(ТипСвойства).Имя;
                        СтрокаТЗСвойств.Свойство = СвойствоНоменклатуры;
                        СтрокаТЗСвойств.Значение = Перечисления[ИмяПеречисления][ЗначениеРеквизита];    
                        РеквизитОтработан = Истина;
                    ИначеЕсли ТипСвойства =  Тип("Строка") Тогда
                        СтрокаТЗСвойств.Свойство = СвойствоНоменклатуры;
                        СтрокаТЗСвойств.Значение = ЗначениеРеквизита;    
                        РеквизитОтработан = Истина;
                    ИначеЕсли ТипСвойства = Тип("Число") Тогда    
                        СтрокаТЗСвойств.Свойство = СвойствоНоменклатуры;
                        СтрокаТЗСвойств.Значение = Число(ЗначениеРеквизита);    
                        РеквизитОтработан = Истина;
                    КонецЕсли;
                    
                КонецЕсли;
4 hhhh
 
16.04.18
15:35
(2) ну это таб. часть справочника номенклатуры. "Допреквизиты".

что-то типа

стр = ОбъектНом.ДополнительныеРеквизиты.Добавить();
стр.Свойство = ТомуТо;
стр.Значение = ТомуТо;
5 Yur1492
 
16.04.18
16:18
Написал во так вот;
                ТабДок = НовыйОбьект.ДополнительныеРеквизиты.Добавить();
                ТабДок.Свойство =  ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Насосы.Высота");
                ТабДок.Значение = Высота;



Выдает ошибку

Ошибка при вызове метода контекста (Записать)
            НовыйОбьект.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{ОбщийМодуль.КатегорииНоменклатурыСервер.Модуль(1336)}: Ошибка при вызове метода контекста (Записать)
    НаборЗаписей.Записать();
по причине:
Запись не верна! Значение поля "Свойство" не может быть пустым!: ЗаполненностьСвойствКатегорий: Насосы, , 00000000-0000-0000-0000-000000000000,  (Регистр сведений: Заполненность свойств категорий; Номер строки: 1)
6 hhhh
 
16.04.18
16:31
(5) дебильное название, потому что

Как вы яхту назовете, так она и поплывет.

"Насосы.Высота" ?? что за дебилизм. По русски назовите.
7 Yur1492
 
16.04.18
19:20
(6) Тогда не понимаю как обратиться, есть категория "насосы" в ней реквизит "Высота"
8 Мимохожий Однако
 
16.04.18
19:24
(5) Разъясни
ТабДок = НовыйОбьект.ДополнительныеРеквизиты.Добавить();
НовыйОбъект что это?
9 Yur1492
 
16.04.18
19:30
(6) Все разобрался)))просто в инете нашел как кто то так обращался к доп реквизитам надо было "Ширина (Насосы)"
(8) это Новая номенклатура
10 Yur1492
 
16.04.18
19:31
Всем спасибо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший