Имя: Пароль:
1C
1С v8
Программное добавление/изменение дополнительных реквизитов
0 logman
 
11.10.21
12:04
Всем добрый день!
Уже несколько дней мучаюсь с доп. реквизитам в ERP
К примеру, вот такой код, по непонятным мне причинам не работает:

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

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


Смотрю отладчиком, в тч ДополнительныеРеквизиты все нормально добавляется, но на форме поле доп. реквизита остается пустым
А после ручной записи документа, добавленная строка в тч вовсе исчезает
В чем может быть проблема?
(УправлениеСвойствами.ЗаписатьСвойстваУОбъекта не предлагать, ругается на странную блокировку этого документа мной же, в базе кроме меня никого)
1 sqr4
 
11.10.21
12:15
а зачем ты используешь вот это "ДокументОбъект = РеквизитФормыВЗначение("Объект"); " Когда табличная часть доступна и через Объект. А после того как добавишь, нужно будет инициализировать функцию, с помощью которой, заполнится отображение доп реквизита на форме, записывать тут не зачем.

Или вообще нужно понять, какое поле на Форме связано с твоим доп реквизитом и изменять его и вызывать необходимые обработчики изменения этого поля.
Т.е так как ты сейчас пытаешься сделать, не подойдет. Т.к в момент закрытия формы происходит "переброска" значений связанных полей на Форме, в значение ТЧ ДополнительныеРеквизиты. А так как связанные поля у тебя не заполнены, добавленная строка в ТЧ и исчезает.
2 banco
 
11.10.21
12:15
(0) УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме
3 logman
 
11.10.21
13:19
(2) У меня этот код выполняется в событии обработки выбора поля табличной части, теперь доп. реквизит заполняется, но поле табличной части остается неизменным, пробовал прежде чем вызывать эту процедуру из общего модуля, записывать документ, но не помогло:(
4 Документовед
 
11.10.21
13:22
Это потому что ты работаешь с ОБъектом, а тебе надо с формой.

https://infostart.ru/1c/articles/867282/
5 logman
 
11.10.21
15:22
Всем большое спасибо за помощь!
С помощью (4) ссылки получилось, правда муторно это всё
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn