Запись данных в дополнительные реквизиты программно

1. topver13 12.01.16 15:40 Сейчас в теме
Добрый день, всем

У меня в справочнике "Номенклатура" введены дополнительные реквизиты для названия номенклатуры
- на англ. языке
- на эст. языке

Как мне программно при чтении Excel-файла записать в них данные.
Я могу из файла брать название номенклатуры на русск. языке, искать в справочнике нужный элемент. Как к данному найденному элементу записать соответствующие названия на англ. и эст. в соответствующие доп. реквизиты?

Спасибо, всем
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1483 12.01.16 15:42 Сейчас в теме
(1) topver13, находим ссылку, получаем доп реквизит, пишем нужное значение, сохраняем реквизит.
4. config 187 12.01.16 16:05 Сейчас в теме
(1) topver13, недавно был на форуме пример
ДокПоступления = ДокументПоступления.ПолучитьОбъект();
//Получаем ссылку на доп реквизит
ДопРеквизитПроверено = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проверено (Поступление товаров и услуг)", Истина);
ЕстьСтроки = ДокПоступления.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизитПроверено));//Пусть результатом поиска будут "ЕстьСтроки"
Если ЕстьСтроки.Количество() = 0 Тогда
     СтрокаТЧ = ДокПоступления.ДополнительныеРеквизиты.Добавить();
     СтрокаТЧ.Свойство = ДопРеквизитПроверено;
Иначе
     СтрокаТЧ = ЕстьСтроки[0];
КонецЕсли;
СТрокаТЧ.Значение = Истина;
ДокПоступления.Записать();
Показать


или

МассивСтруктур = Новый Массив;
МассивСтруктур.Добавить(Новый Структура("Свойство, Значение",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проверено (Поступление товаров и услуг)", Истина),Истина);
МассивСтруктур.Добавить(Новый Структура("Свойство, Значение",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Время Разбора (Поступление товаров и услуг)", Истина),Истина);
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокументПоступления,МассивСтруктур);


http://forum.infostart.ru/forum86/topic143215/message1475018/#message1475018
http://forum.infostart.ru/forum35/topic143768/message1479031/#message1479031
aeoHeKP; so-lf; user712426; indefinitum000; Serg243; MarMargo; WhiteOwl; Legin; angur; kobayoshi; Valerianich; vladir; reshkra; SV6; beldinskiy; korpas; a1x; b00ker; myoker; Nikitos_NSK; nekit_rdx; jane_de_rio; kivals; Deslime; shaykhelov; alexandrmishinn; ekomova; bug256; neo-ti; milov.aleksey; botokash; MaiorovYury; Anton64; amaksimov; +34 Ответить
7. j.zhandos 04.02.19 08:34 Сейчас в теме
(4) Не подскажите, пожалуйста, а как наоборот прочитать доп.реквизиты програмно?
8. SeregaSC 04.02.19 22:53 Сейчас в теме
(7) УправлениеСвойствами.ЗначениеСвойства
// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
// Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
// ДокументСсылка.ЗаказПокупателя, ...
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
// дополнительный реквизит, значение которого нужно получить.
// - Строка - Имя дополнительного свойства.
//
// Возвращаемое значение:
// Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
	ПолучатьРеквизиты = УправлениеСвойствамиСлужебный.ЭтоОбъектМетаданныхСДополнительнымиРеквизитами(Объект.Метаданные());
	
	Результат = ЗначенияСвойств(Объект, ПолучатьРеквизиты, Истина, Свойство);
	Если Результат.Количество() = 1 Тогда
		Возврат Результат[0].Значение;
	КонецЕсли;
КонецФункции
9. j.zhandos 12.02.19 20:40 Сейчас в теме
(8)
ЗначенияСвойств

а функции ЗначенияСвойств нету же
надо самому дописать?
10. SeregaSC 22.02.19 22:49 Сейчас в теме
(9) она в том же модуле, что и ЗначениеСвойства
j.zhandos; +1 Ответить
11. j.zhandos 23.02.19 11:04 Сейчас в теме
(10) Серега, огромное тебе спасибо за наводки. Получилось прочитать
12. fktrc171 14.05.20 22:10 Сейчас в теме
(4) Подскажите , что не так в моем примере ?
Загружаем из Excel в Розницу2.2 номенклатуру, у которой ведены Дополнительные Реквизиты Допы с типом значения - Дополнительное значение
Для Каждого Строка Из Объект.Товары Цикл
		ЭлементНом=Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",СокрЛП(Строка.Артикул));
		Если ЭлементНом.Пустая()=Истина Тогда
		     НовыйЭл=Справочники.Номенклатура.СоздатьЭлемент();
			 НовыйЭл.Артикул=СокрЛП(Строка.Артикул);
			 НовыйЭл.Наименование=СокрЛП(Строка.Наименование);
			 НовыйЭл.НаименованиеПолное=СокрЛП(Строка.Наименование);
			 НовыйЭл.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
			 НовыйЭл.ВидНоменклатуры=Объект.ВидНоменклатуры;
			 
			 
	 ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы", Истина);

МассивСтруктур = Новый Массив;
МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитСсылка,Строка.ДопРекв ));
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НовыйЭл, МассивСтруктур);
			 

Показать

Выдается ошибка
Прикрепленные файлы:
13. independ 1520 15.05.20 09:24 Сейчас в теме
(12) Нужно сохранить объект перед записью доп.реквизитов
НовыйЭл.Записать();
user1326339; Nikitos_NSK; +2 Ответить
14. fktrc171 15.05.20 13:08 Сейчас в теме
(13) Добавила ,


Если ЭлементНом.Пустая()=Истина Тогда
		     НовыйЭл=Справочники.Номенклатура.СоздатьЭлемент();
			 НовыйЭл.Артикул=СокрЛП(Строка.Артикул);
			 НовыйЭл.Наименование=СокрЛП(Строка.Наименование);
			 НовыйЭл.НаименованиеПолное=СокрЛП(Строка.Наименование);
			 НовыйЭл.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
			 НовыйЭл.ВидНоменклатуры=Объект.ВидНоменклатуры;
		НовыйЭл.Записать();
	 
			 
	 ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы", Истина);

     МассивСтруктур = Новый Массив;
     МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитСсылка,Строка.ДопРекв ));
     УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НовыйЭл, МассивСтруктур);
Показать


и та же ошибка
Прикрепленные файлы:
15. fktrc171 15.05.20 13:23 Сейчас в теме
(14)
Внутри модуля УправлениеСвойствами

ВладелецСвойствОбъект = ВладелецСвойств.ПолучитьОбъект();


у меня ВладелецСвойств это НовыйЭл , его тип СправочникОбъект.Номенклатура - это правильно ?
16. fktrc171 15.05.20 13:35 Сейчас в теме
(15) Возник еще вопрос , как сделать из " НовыйЭл " СправочникСсылка,Номенклатура ?
17. fktrc171 15.05.20 14:24 Сейчас в теме
(16)
делала так
СсылкаНовыйЭл =НовыйЭл.ПолучитьСсылкуНового();
		       НовыйЭл.Записать();
	 ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы", Истина);

     МассивСтруктур = Новый Массив;
     МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитСсылка,Строка.ДопРекв ));
     УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНовыйЭл, МассивСтруктур);


Новая ошибка
Прикрепленные файлы:
18. fktrc171 15.05.20 15:27 Сейчас в теме
(16) ЭлементНом=НовыйЭл.Ссылка;
Ошибок нет , но доп реквизиты не появились.
При передаче в модуль УправлениеСвойствами.ЗаписатьСвойстваУОбъекта
Значение заполнено , а свойство пустое поле.
Что-то не так заполняю ?
Прикрепленные файлы:
19. independ 1520 15.05.20 16:30 Сейчас в теме
(18) В процедуру УправлениеСвойствами.ЗаписатьСвойстваУОбъекта нужно передать ссылку на объект и таблицу значений,
пример

	ТЗ=Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
	ТЗ.Колонки.Добавить("Значение");
	НовСтр=ТЗ.Добавить();
	НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("МойДопРеквизит");
	НовСтр.Значение="ЗначениеМоегоДопРеквизита";
	УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНаОбъект,ТЗ);
amel.857; +1 Ответить
20. fktrc171 15.05.20 20:19 Сейчас в теме
(19) Спасибо , что отвечаете.
Вопрос еще в наименовании Доп Реквизита.
В Дополнительных реквизитах (Администрирование- Общие настройки) по Номенклатуре прописаны Доп. свойства справочника "Номенклатура" (Общий) , имя Допы.
Тогда строка выглядит так
НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы (Доп. свойства справочника ""Номенклатура"" (Общий))");

С другой стороны в форме Допов (Дополнительный реквизит) есть Имя (Для разработчиков)
Допы_abe6502c17e640daaa03e18f232d87d4

Тогда строка должна быть такой
НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы_abe6502c17e640daaa03e18f232d87d4)");

У меня не проходит ни первый , ни второй вариант . Свойство - пустое
Кстати, просто имя "Допы" тоже пробовала.
Что еще я пишу не так ?
21. independ 1520 15.05.20 20:42 Сейчас в теме
(20) Можно так,
ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок","ИмяДопРеквизита");

Кстати любой консолью запросов можно просмотреть, что и где в ДополнительныеРеквизитыИСведения
ВЫБРАТЬ * ИЗ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
22. fktrc171 15.05.20 21:33 Сейчас в теме
(21)
Сделала так
НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы", ложь)

Теперь в модуле вижу заполненное свойство, запись идет , но в справочнике Номенклатуры у новых объектов все равно из Excel Доп реквизит не заполнен
Почему ?
Прикрепленные файлы:
23. independ 1520 15.05.20 22:05 Сейчас в теме
(22) какой тип у доп.реквизита? строка?
24. fktrc171 16.05.20 21:54 Сейчас в теме
(23)
Дополнительное значение
25. fktrc171 17.05.20 17:15 Сейчас в теме
(24) Меня смущает , что после выполнения команды ВладелецСвойствОбъект.Записать();
Значение Доп Реквизита равно типу и равно СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты
Прикрепленные файлы:
26. fktrc171 17.05.20 17:18 Сейчас в теме
(23)Изменила тип доп. реквизита на строку и УРА - ПОБЕДА!!!
Спасибо большое.
Но вот почему на тип Дополнительное соглашение не сработало , не понимаю .
27. fktrc171 18.05.20 09:12 Сейчас в теме
(26) Клиентам все-таки нужен доп реквизит с типом дополнительное значение, процесс продолжается...
28. fktrc171 18.05.20 21:47 Сейчас в теме
(27) Нашла такую фразу для Доп реквизитов с типом Доп значение

у меня доп реквизит "Дополнительное значение", поэтому в свойство нужно передавать не строку, а элемент справочника ЗначенияСвойствОбъектов
Подскажите , как это реализовать ?
я передаю свойство из
НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Допы", ложь)
а надо выбрать из Справочник.ЗначенияСвойствОбъектов ?
29. independ 1520 19.05.20 03:42 Сейчас в теме
(28)
ЗначенияСвойствОбъектов.НайтиПоНаименованию("ИмяДопЗначения");
Elvira_Saydasheva; +1 Ответить
30. fktrc171 19.05.20 10:33 Сейчас в теме
(29)
ЗначенияСвойствОбъектов.НайтиПоНаименованию("ИмяДопЗначения");


НовСтр.Свойство=ЗначенияСвойствОбъектов.НайтиПоНаименованию("Допы",Ложь ); - ошибка

НовСтр.Свойство=Справочник.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Допы",Ложь ); - тоже ошибка
Elvira_Saydasheva; +1 Ответить
31. fktrc171 19.05.20 13:37 Сейчас в теме
(30) Ошибки - Не определена Переменная
ЗначенияСвойствОбъектов в 1 случае и Справочник во 2 случае
32. fktrc171 20.05.20 13:53 Сейчас в теме
(29)Как учесть , что ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения - владелец справочника ЗначенияСвойствОбъектов ?
33. independ 1520 20.05.20 14:34 Сейчас в теме
(32)
ТЗ=Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
    ТЗ.Колонки.Добавить("Значение");
    НовСтр=ТЗ.Добавить();
    НовСтр.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("МойДопРеквизит");
    НовСтр.Значение=ЗначенияСвойствОбъектов.НайтиПоНаименованию("ИмяДопЗначения",,,НовСтр.Свойство);
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНаОбъект,ТЗ);
Elvira_Saydasheva; vladir; user1252779; +3 Ответить
34. fktrc171 20.05.20 14:46 Сейчас в теме
(33)
{ВнешняяОбработка.ЗагрузкаИЗEXCEL.Форма.Форма.Форма(298,21)}: Переменная не определена (ЗначенияСвойствОбъектов)
НовСтр.Значение=<<?>>ЗначенияСвойствОбъектов.НайтиПоНаименованию(Строка.ДопРекв,,,НовСтр.Свойство); (Проверка: Сервер)
35. independ 1520 20.05.20 15:26 Сейчас в теме
(34)
НовСтр.Значение=Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ИмяДопЗначения",,,НовСтр.Свойство);
Elvira_Saydasheva; Egor_R; user1252779; +3 Ответить
36. fktrc171 20.05.20 15:58 Сейчас в теме
(35){ВнешняяОбработка.ЗагрузкаИЗEXCEL.Форма.Форма.Форма(298,21)}: Переменная не определена (Справочник)
НовСтр.Значение=<<?>>Справочник.ЗначенияСвойствОбъектов.НайтиПоНаименованию(Строка.ДопРекв,,,НовСтр.Свойство); (Проверка: Сервер)
37. independ 1520 20.05.20 16:53 Сейчас в теме
(36)
Справочник

Справочники
38. fktrc171 20.05.20 17:17 Сейчас в теме
39. Touch_Of_Soul 29 28.07.22 07:48 Сейчас в теме
(38)Здравствуйте. Можете поделится готовым кодом? Нужно тоже самое только для справочника контрагенты из экселя грузить доп свойства. Чтоб понять принцип и переделать под себя. Если это возможно.
3. NightGod 12.01.16 15:49 Сейчас в теме
Если доп реквизиты хранятся в табличной части (как в ут 11), то нужно в цикле пройти ТЧ и если этот реквизит добавлен то изменить, иначе добавить и заполнить значение. Ну и СправочникОБъект записать )
5. Поручик 4674 12.01.16 16:47 Сейчас в теме
Надо же, сколько лет пользуюсь БСПятиной, а ЗаписатьСвойстваУОбъекта только сейчас увидел.
Скорее всего, эта функция не во всех релизах БСП присутствует.
AlgoritmS; Deslime; D_e_X_T_e_R; botokash; amaksimov; +5 Ответить
6. topver13 13.01.16 11:17 Сейчас в теме
Все понятно.
СПАСИБО ВСЕМ!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот