Имя: Пароль:
1C
1С v8
УТ 11.4 программно заполнить свойство
,
0 MAPATNK2
 
naïve
23.04.21
15:11
Всем доброго дня. Есть свойство в Ут 11.4 (Дополнительные реквизиты). Как программно найти свойство нужное у необходимой номенклатуры и добавить в него занчение? Может примеры есть?
1 lubitelxml
 
23.04.21
15:13
(0) справа от темы есть буква "Я" - можешь не благодарить ))
2 Kassern
 
23.04.21
15:14
(0) это же обычная табличная часть, добавляй нужное значение для свойства
3 acht
 
23.04.21
15:15
4 программистище
 
23.04.21
15:18
Ну примерно вот так:

                ДопРекв = ОбъектНоменклатуры.ДополнительныеРеквизиты;
                МассивДР = ДопРекв.НайтиСтроки(Новый Структура("Свойство", СтрокаТЗ.Свойство));
                НовыйДР = Неопределено;
                Если Не МассивДР.Количество() = 0 Тогда
                    НовыйДР = МассивДР[0];
                Иначе
                    Если ВходитВНаборДР(ОбъектНоменклатуры.ВидНоменклатуры.НаборСвойств, СтрокаТЗ.Свойство) Тогда
                        НовыйДР = ДопРекв.Добавить();
                        НовыйДР.Свойство = СтрокаТЗ.Свойство;
                    КонецЕсли;
                КонецЕсли;
                Если Не НовыйДР = Неопределено Тогда
                    МенеджерСправочника = Справочники.ЗначенияСвойствОбъектов;
                    Если СокрЛП(СтрЗамена) = "" Тогда
                        ИскомоеЗначениеСвойства = МенеджерСправочника.НайтиПоНаименованию("не заполнено", Истина,, СтрокаТЗ.Свойство);
                    Иначе
                        ИскомоеЗначениеСвойства = МенеджерСправочника.НайтиПоНаименованию(СтрЗамена, Истина,, СтрокаТЗ.Свойство);
                    КонецЕсли;
                    Если ИскомоеЗначениеСвойства.Пустая() Тогда
                        ИскомоеЗначениеСвойства = МенеджерСправочника.СоздатьЭлемент();
                        ИскомоеЗначениеСвойства.Владелец = СтрокаТЗ.Свойство;
                        ИскомоеЗначениеСвойства.Наименование = СтрЗамена;
                        Попытка
                            ИскомоеЗначениеСвойства.Записать();
                        Исключение
                            Сообщить(ОписаниеОшибки());
                        КонецПопытки;
                    КонецЕсли;
                    НовыйДР.Значение = ИскомоеЗначениеСвойства;
                    НовыйДР.ТекстоваяСтрока = ИскомоеЗначениеСвойства;
                КонецЕсли;


где ВходитВНаборДР(

&НаСервере
Функция ВходитВНаборДР(НаборСвойств, СвойствоНабора)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Ссылка
                   |ИЗ
                   |    Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты
                   |ГДЕ
                   |    НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Ссылка = &Ссылка
                   |    И НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Свойство = &Свойство";
    Запрос.УстановитьПараметр("Ссылка", НаборСвойств);
    Запрос.УстановитьПараметр("Свойство", СвойствоНабора);
    Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
5 Garykom
 
гуру
23.04.21
15:19
(4) сложновато
ты случаем не из китая?
6 kobzon2
 
23.04.21
15:30


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

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

Иначе
ДопРеквизит.Значение = 123456789;
КонецЕсли;

КонецПроцедуры

7 Timon1405
 
23.04.21
15:33
(3) +1 все уже написано за нас, с (блекджеком) блокировками и транзакциями
8 программистище
 
23.04.21
15:36
(5) из индии
9 acht
 
23.04.21
15:37
(8) Вытанцовываешь?
10 программистище
 
23.04.21
15:39
(8) ай, Кришна, дай мне красивый код, как цветы лотоса
11 Timon1405
 
23.04.21
15:49
(10) уже дали же, код состоит из одной строки УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений)
12 программистище
 
23.04.21
15:50
(11) а ну если БСП, тогда не нужен Кришна
13 Timon1405
 
23.04.21
15:51
(12) Ут 11.4 в теме и в первом сообщении подразумевает его наличие
14 программистище
 
23.04.21
15:52
(13) простите, индиец не читатель,
ждем новую тему, как создать ТаблицаСвойствИЗначений
15 MAPATNK2
 
naïve
26.04.21
09:34
(6) ТекущийОбъект.ДополнительныеРеквизиты.Найти при использовании Найти лезет ошибка.
16 MAPATNK2
 
naïve
26.04.21
09:35
(11) т.е сначала нужно сформировать программно эту таблицу, а потом вызывать УправлениеСвойствами.ЗаписатьСвойстваУОбъекта?
17 MAPATNK2
 
naïve
26.04.21
09:35
(3) У меня нет доступа к ИТС.
18 kobzon2
 
26.04.21
09:41
(15) Значит смотри, что у тебя за параметр взамен ТекущемуОбъекту:
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
19 MAPATNK2
 
naïve
26.04.21
13:41
всем спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс