Имя: Пароль:
1C
 
Тч дополнительные реквизиты, у номенклатуры в УТ 11.4
0 falselight
 
30.04.20
08:35
В УТ 11.4.11.84, у справочника номенклатура есть табличная часть ДополнительныеРеквизиты.
Каким образом она заполняется и где её можно увидеть? Не увидел её в режиме предприятия у элемента справочника номенклатура.
1 falselight
 
30.04.20
09:40
up
2 probably
 
30.04.20
09:44
Настрой сначала использование доп реквизитов для базы в настройках
Потом для номенклатуры добавь доп реквизт там же
После этого увидешь в форме номенклатуры
3 Aleksey
 
30.04.20
09:44
ну как бы книжки почитать не пробовал? Ну там как работать в УТ11. Накрайняк видео в ютубе посмотри, если чтать не любишь/не умеешь
4 NeoVision
 
30.04.20
09:48
5 John83
 
30.04.20
10:30
через консоль запросов посмотреть можно
6 falselight
 
01.05.20
09:25
(5) Да я и через редактор реквизитов вижу эту тч.
То есть она для создания дополнительных реквизитов со стороны режима предприятия??

А программно как они заполняются?

(4) Жаль пока нет ИТС доступа. Нужно завести будет. Буду благодарен пока за информацию тут.

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

Подскажите пожалуйста как.
7 falselight
 
01.05.20
09:28
К примеру вот, пользователь сам добавил реквизиты дополнительные.
И мне нужно их заполнять программно.

http://joxi.ru/krDbeX8CJ5a732
8 Aleksey
 
01.05.20
09:34
(7) познай силу типового заполнения, это не так сложно

Ну или можешь свой велосипед изобрести, выбор за тобой
9 falselight
 
01.05.20
09:36
(8) Типовое заполнение это как?

Свой не нужно. Расскажите о чем вы?

Пользователь черед дополнительные реквизиты как то создал несколько, мне их нужно заполнять.
Я хочу узнать как это делать правильно. Заполнять мне их нужно программно.
10 falselight
 
01.05.20
09:37
Как он создал эти три реквизита и как их заполнять программно.
11 Aleksey
 
01.05.20
09:43
(9) Доп. реквизиты это из БСП, и для управления нсьб глобальные модули, типа управление свойствами
12 falselight
 
01.05.20
09:50
(11) Ну а по коду как программно их заполнять не подскажете?
13 Aleksey
 
01.05.20
09:54
(12) ХЗ как у УТ, я в бп при загрузки заполняю так

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

Наверняка что то похожее в УТ11
14 Aleksey
 
01.05.20
09:56
Ну или тупо в лоб, доп реквизиты это ТЧ у объекта так что ищи в ТЧ добавляй строки или меняй найденное
15 falselight
 
01.05.20
10:00
(13)  Спасибо. Давно с этим не сталкивался.

(14) Сейчас буду пробовать.

Вот ещё, тоже пример нашел, -

ТЗ = Новый ТаблицаЗначений();
   ТЗ.Колонки.Добавить("Свойство");
   ТЗ.Колонки.Добавить("Значение");

НомеклатураОбъект = Номеклатура;
                ТЧ = НомеклатураОбъект.ДополнительныеРеквизиты;
                Для каждого Строка ИЗ ТЧ Цикл
                    Если Строка.Свойство.Наименование = "Производитель" Тогда
                         НоваяСтрока = ТЗ.Добавить();
                         НоваяСтрока.Свойство = Строка.Свойство;
                         НоваяСтрока.Значение = Производитель;
                         УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НомеклатураОбъект, ТЗ);
                         ТЗ.Очистить();
                    КонецЕсли;  
                КонецЦикла;
16 Aleksey
 
01.05.20
10:04
(15) бредовый пример.
Перебираем ТЧ с допреквизитами у номенклатуры, и если нашли "Производитель", то через УправлениеСвойствами меняем его.
У меня только 2 вопроса. Что будет если в ТЧ нет строки с этим реквизитом (например новая позиция) - правильно ничего не будет, он его не добавит не убавит.
2. если перебором нашли нужную строку, то зачем менять через УправлениеСвойствами, почему сразу нельзя поменять значение?
17 falselight
 
01.05.20
10:17
(16) Ну согласен. Возможно кривой пример попался, буду сейчас пробовать его правильно сделать.
18 falselight
 
01.05.20
10:24
(16) А как сразу менять значение?
19 falselight
 
01.05.20
10:24
(18+) Почему то везде делается через

УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НомеклатураОбъект, ТЗ);
20 falselight
 
01.05.20
10:28
Подскажите пожалуйста.
А вот это . http://joxi.ru/DmBweOnuzBGEb2

Это идентификатор, как ссылаться на этот реквизит из режима предприятия?
21 falselight
 
01.05.20
10:34
(16) Так, вы имели ввиду сразу?

            ТЧ = НоваяНоменклатура.ДополнительныеРеквизиты;
            Для Каждого Строка ИЗ ТЧ Цикл
                Если Строка.Свойство.Наименование = "Автор" Тогда
                    Строка.Значение = СокрЛП(СтрТз.Автор);    
                ИначеЕсли Строка.Свойство.Наименование = "Год" Тогда
                    Строка.Значение = СокрЛП(СтрТз.Год);        
                ИначеЕсли Строка.Свойство.Наименование = "АртикулИМТ" Тогда
                    Строка.Значение = СокрЛП(СтрТз.АртикулИМТ);    
                КонецЕсли;  
            КонецЦикла;
22 Aleksey
 
01.05.20
10:38
(21) Да, но только это работает на изменение. Т.е. там где не проставлено ничего не будет
23 falselight
 
01.05.20
11:25
(22) Я создал эти реквизиты.
Но при загрузке показывает что ТЧ.Количество() = 0

А как делать на создание ?
24 falselight
 
01.05.20
11:40
Наверное вот это нужно делать после записи НоваяНоменклатура ?

            // *** Заполнение ДОПОЛНИТЕЛЬНЫХ РЕКВИЗИТОВ ***
            ТаблицаСвойствИЗначений = Новый ТаблицаЗначений;
            ТаблицаСвойствИЗначений.Колонки.Добавить("Свойство");
            ТаблицаСвойствИЗначений.Колонки.Добавить("Значение");
            //
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Автор");
            НовоеСвойство.Значение = СтрТз.Автор;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура, ТаблицаСвойствИЗначений);
            //
            ТаблицаСвойствИЗначений.Очистить();
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Год");
            НовоеСвойство.Значение = СтрТз.Год;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура, ТаблицаСвойствИЗначений);
            //
            ТаблицаСвойствИЗначений.Очистить();
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("АртикулИМТ");
            НовоеСвойство.Значение = СтрТз.АртикулИМТ;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура, ТаблицаСвойствИЗначений);
            //



А то идет ошибка

{ОбщийМодуль.УправлениеСвойствами.Модуль(1164)}: Метод объекта не обнаружен (ПолучитьОбъект)
            ВладелецСвойствОбъект = ВладелецСвойств.ПолучитьОбъект();
25 falselight
 
01.05.20
11:43
У меня идет ошибка

Метод объекта не обнаружен (ПолучитьОбъект)
{ОбщийМодуль.УправлениеСвойствами.Модуль(1164)}:            ВладелецСвойствОбъект = ВладелецСвойств.ПолучитьОбъект();
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(338)}:            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура, ТаблицаСвойствИЗначений);
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(171)}:    СоздатьДокумент_ПоступлениеТоваровУслуг();
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(166)}:    ЗагрузитьНаСервере();


не подскажете что у меня не так?
26 falselight
 
01.05.20
11:45
Ошибка на этой строке

    НачатьТранзакцию();
    Попытка
        Если ЕстьДопРеквизиты Тогда
            ВладелецСвойствОбъект = ВладелецСвойств.ПолучитьОбъект();


там почему то уже объект

http://joxi.ru/LmGbQ18CJd3dJr
27 falselight
 
01.05.20
11:52
Так сейчас буду пробовать

УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура.Ссылка, ТаблицаСвойствИЗначений);
28 falselight
 
01.05.20
12:08
Записываю сначала создаваемый элемент номенклатура

потом задаю ему значения дополнительных реквизитов

потом ещё раз записываю

почему идет такая ошибка?

Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(357)}:            НоваяНоменклатура.Записать();                        
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(171)}:    СоздатьДокумент_ПоступлениеТоваровУслуг();
{ВнешняяОбработка.ЗагрузкаOzonIDсXLS.Форма.Форма.Форма(166)}:    ЗагрузитьНаСервере();

по причине:
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
29 falselight
 
01.05.20
12:09
НоваяСтрока.Номенклатура = НоваяНоменклатура.Ссылка;
            //
            // *** Заполнение ДОПОЛНИТЕЛЬНЫХ РЕКВИЗИТОВ ***
            ТаблицаСвойствИЗначений = Новый ТаблицаЗначений;
            ТаблицаСвойствИЗначений.Колонки.Добавить("Свойство");
            ТаблицаСвойствИЗначений.Колонки.Добавить("Значение");
            //
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Автор");
            НовоеСвойство.Значение = СтрТз.Автор;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура.Ссылка, ТаблицаСвойствИЗначений);
            //
            ТаблицаСвойствИЗначений.Очистить();
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Год");
            НовоеСвойство.Значение = СтрТз.Год;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура.Ссылка, ТаблицаСвойствИЗначений);
            //
            ТаблицаСвойствИЗначений.Очистить();
            НовоеСвойство          = ТаблицаСвойствИЗначений.Добавить();
            НовоеСвойство.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Артикул");
            НовоеСвойство.Значение = СтрТз.Артикул;
            УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяНоменклатура.Ссылка, ТаблицаСвойствИЗначений);
            //
            МенеджерЗаписи              = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
            МенеджерЗаписи.Штрихкод     = СтрТз.Баркод;
            МенеджерЗаписи.Номенклатура = НоваяНоменклатура.Ссылка;
            МенеджерЗаписи.Записать();
            //
            НоваяНоменклатура.Записать();                        
        КонецЕсли;
30 falselight
 
01.05.20
12:15
Что я не так делаю. подскажите пожалуйста.
31 falselight
 
01.05.20
12:23
После прохода вот этой строки

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

НоваяНоменклатура.ДополнительныеРеквизиты.Количество() = 0


Почему? Я же добавил туда запись!
32 Aleksey
 
01.05.20
12:24
Зачем каждый раз дергать УправлениеСвойствами? Заполняй тз и передавай 1 раз
Ну и заполняй свойства после записи, повторно записовать не нужно
33 Aleksey
 
01.05.20
12:26
(31)
потому что ты передал ссылку и тз с реквизитами, и он сам нашел объект и записал. Т.е. тебе нужно прочитать изменения, если так нужно.
НоваяНоменклатура.Прочитать();
34 Aleksey
 
01.05.20
12:27
Зайди в УправлениеСвойствами.ЗаписатьСвойстваУОбъекта и посмотри что он там делает
35 falselight
 
01.05.20
13:06
(34) Ок. Спасибо. С этим вроде разобрался.