Имя: Пароль:
1C
1С v8
УФ измененный программно элемент попадает в ТЧ в старом виде
, ,
0 SerF_2011
 
13.07.16
10:59
Привет всем. Помогите разобраться. Загружаю список товаров из файла excel в табличную часть документа. Документ создаю программно, форму не открываю. Во время загрузки для некоторых существующих товаров обновляю наименование, потом добавляю программно строку в ТЧ.
Так вот после записи документа открываю его, а там все товары, у которых наименование перезаписано, отображаются со старым наименованием. Открываю-закрываю форму - не помогает. В справочнике товары если открыть, то наименование уже новое.

Подскажите куда копать?
1 Timon1405
 
13.07.16
11:02
может быть в форму выводится другой реквизит(полное напименование/наименование для печати итд)
2 SerF_2011
 
13.07.16
11:04
(1) там просто колонка Номенклатура табличной части, в ней ссылка, вот представление этой ссылки в старом виде остается почему то.
А так я меняю и Наименование и НаименованиеПолное у товара.
3 SerF_2011
 
14.07.16
08:27
Так и не удалось победить, может быть еще кто-то подскажет, код такой:

            ТекТовар = НайденныеСтроки[0].Товар;
            Если СокрЛП(ТекТовар.Наименование) <> СокрЛП(СтрокаТЧ.Наименование) Тогда
                ТоварОбъект = ТекТовар.ПолучитьОбъект();
                ТоварОбъект.Наименование = СокрЛП(СтрокаТЧ.Наименование);
                ТоварОбъект.НаименованиеПолное = СокрЛП(СтрокаТЧ.Наименование);
                ТоварОбъект.Записать();
                ТекТовар = ТоварОбъект.Ссылка;
            КонецЕсли;
            СтрТовар = Акт.Товары.Добавить();
            СтрТовар.Номенклатура = ТекТовар;
4 SerF_2011
 
14.07.16
09:10
Видимо такую банальность подсказывать это моветон :)

Помогло вот что - после процедуры загрузки, которая выполняется на сервере, вернулся в процедуру на клиенте и добавил там

    ОповеститьОбИзменении(Тип("СправочникСсылка.Номенклатура"));
5 SerF_2011
 
14.07.16
09:16
Это тем более странно, что ни одна форма не открыта в момент загрузки (что обновлять то?), открыта только форма внешней обработки. Однако же помогло.
6 SerF_2011
 
14.07.16
09:17
Остается только КЭШ. Ну и хорошо, сам с собой поговорил, спасибо мне.
7 Fedor-1971
 
14.07.16
09:25
(6) Если СокрЛП(ТекТовар.Наименование) <> СокрЛП(СтрокаТЧ.Наименование) Тогда  - сравнение есть, а запись в СтрокаТЧ.Наименование

Если помогло (4) значит используешь ДС с установленной основной таблицей, вот и смотри когда и как нужно обновлять твой ДС.
8 Fedor-1971
 
14.07.16
09:31
7+ СтрокаТЧ.Наименование - это реквизит ТЧ документа или реквизит ТЧ формы?
Если первое, ты наименование записал в документ, так и расскажи ему когда нужно изменить данные. Тогда не понятно как тебе помогло (4) и ДС должен обновляться при открытии.
Если второе - должно обновляться при открытии/записи.
9 SerF_2011
 
14.07.16
10:14
(8) СтрокаТЧ.Наименование это наименование из файла Excel. А записываю я уже измененный товар в табличную часть Товары документа Реализация товаров и услуг. ДС никаких нет в моей обработке, программно меняю наименование товара, также создаю документ и записываю его. Только потом если в этот док зайти, то там по прежнему в ТЧ старое представление ссылки на товар.
10 Fedor-1971
 
14.07.16
11:09
(9) как-то путано:
1. "Изменённый товар" - это как? т.е. находишь запись в справочнике Номенклатура, редактируешь её и записываешь. Потом заполняешь ссылку в ТЧ?
2. Проверь в документ записываешь наименование или ссылку? Представление ссылки системное или сам своё сделал?
11 SerF_2011
 
14.07.16
11:14
(10) да все просто как никогда, я же код привел выше

получаю объект номенклатуры, меняю название, записываю

               ТоварОбъект.Записать();

потом этот записанный элемент беру и в табличную часть его, там есть реквизит Номенклатура:

            СтрТовар = Акт.Товары.Добавить();
            СтрТовар.Номенклатура = ТекТовар;
12 SerF_2011
 
14.07.16
11:15
(10)

1. Да
13 Fedor-1971
 
14.07.16
12:52
(11) СтрТовар.Номенклатура тип какой? Строка или ссылка? ТекТовар - по умолчанию, представление в виде наименования
14 Fedor-1971
 
14.07.16
12:53
13+ Проведи эксперимент: СтрТовар.Номенклатура = ТекТовар, замени на СтрТовар.Номенклатура = "1111"