Имя: Пароль:
1C
1С v8
Обновление значений доп. реквизитов на форме
0 Chameleon1980
 
12.04.18
21:06
Приветствую всех.

Чет не пойму.

У документа РТУ есть доп. реквизит.
У партнера есть доп. реквизит.

При изменении контрагента пишу типа



СтруктураДляОтбора=Новый Структура;

СтруктураДляОтбора.Вставить("Свойство", ПВХНеВключатьРеализациюВКнигуПродаж);

НайденныеСтроки=Объект.ДополнительныеРеквизиты.НайтиСтроки(СтруктураДляОтбора);

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


при выходе из этой серверной процедуры делал
и так:
    ЭтаФорма.ОбновитьОтображениеДанных(Элементы.ГруппаДополнительныеРеквизиты);

и так:
ЭтаФорма.ОбновитьОтображениеДанных();

но блин значение реквизита на форме не обновляется.

Где (чем) обновлять значения доп. реквизитов на форме) ?

Спасибо.
1 Cyberhawk
 
12.04.18
21:07
Оповещением формы (посмотри в ней обработку оповещения)
2 Chameleon1980
 
12.04.18
21:08
если суть кода не ясна - готов объяснить подробнее
но дело даже не в нем.
вопрос в обновлении

т.е. я поменял ТЧ доп.реквизиты программно при изменении партнера. ТЧ точно поменялась как нужно, а на форме то обновится, то нет. Не нашел закономерности
3 Chameleon1980
 
12.04.18
21:12
(1) давай попробуем Оповестить() без параметров.
Если я правильно понял и выбрал правильный метод.

да я чет думал и это "ОбновитьОтображениеДанных" подойдет
там и группу конкретную можно указать (в которой лежат доп. реквизиты на форме)
4 Cyberhawk
 
12.04.18
21:13
Ну тупи. Элементы формы строятся динамически. Обновить их содержимое можешь конечно распарсив структуру элементов и данных, но делать так безсмысленно - используй механику БСП
5 Cyberhawk
 
12.04.18
21:13
Оповестить он без параметров собрался... не в коня корм видимо
6 Chameleon1980
 
12.04.18
21:22
(4) хорошо. Смотри.

новый документ, партнер пустой:
http://prntscr.com/j4f9un

доп реквизит пустой:
http://prntscr.com/j4fa98

меняю партнера, при установке которого (по условиям) должна добавиться строка в ТЧ доп реквизиты (т.е. установиться доп. реквизит документа):

http://prntscr.com/j4fb7p

реквизит документа:
http://prntscr.com/j4fbeh

установлен.

Но блин - срабатывает оно как-то через раз.

пошел копать бсп в эту сторону (эту подсистему)
7 Chameleon1980
 
12.04.18
21:25
(5) я уже и это давал им:

http://prntscr.com/j4fcek

судя по всему - доп. реквизиты в этой группе собираются рождаться:

http://prntscr.com/j4fcz9

не разбирал сильно БСП - так пойду :) посмотрим
8 Chameleon1980
 
12.04.18
21:41
ну вот оно собако (если кому интересно):

УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтаФорма, Объект);
9 Chameleon1980
 
12.04.18
21:42
Спасибо за внимание :)
10 Chameleon1980
 
12.04.18
21:43
(4) спасибо. Я то думал и так нарисуется. Пля - туплю когда или только проснулся или когда уже спать пора.
11 Cyberhawk
 
12.04.18
21:45
(6) "меняю партнера, при установке которого (по условиям) должна добавиться строка в ТЧ доп реквизиты (т.е. установиться доп. реквизит документа)" // Тоже пади вручную это делаешь, а не механикой БСП? Тогда тебе придется искать строку и заменять, а не всегда тупо добавлять. Надеюсь ты это учел в коде? )
12 Chameleon1980
 
12.04.18
22:04
(11) ну а код не смотрел?

вот кусок жеж:

ИначеЕсли НайденныеСтроки.Количество()<>0 И (НайденныеСтроки[0].Значение<>ЗначениеРеквизитаНеВключатьВКнигуПродажПартнера) Тогда
    
    НайденныеСтроки[0].Значение=ЗначениеРеквизитаНеВключатьВКнигуПродажПартнера;
13 Chameleon1980
 
12.04.18
22:04
замена даже с проверкой на несоответствие старого и нового
14 Cyberhawk
 
12.04.18
22:15
В твоем коде не обрабатывается ситуация, когда найденных строк больше одной )
15 Chameleon1980
 
13.04.18
06:58
(14) а нафига.
БСП дасть создать значение реквизита в допах более одного?
Ну и я не дам.

Зачем проверка ента?
16 Chameleon1980
 
13.04.18
06:58
+(15) тип - булево.
17 Chameleon1980
 
13.04.18
07:00
+отбор строго по ПВХ (свойство):

СтруктураДляОтбора=Новый Структура;

СтруктураДляОтбора.Вставить("Свойство", ПВХНеВключатьРеализациюВКнигуПродаж);

НайденныеСтроки=Объект.ДополнительныеРеквизиты.НайтиСтроки(СтруктураДляОтбора);
18 Chameleon1980
 
13.04.18
07:01
думал сначала тоже про не одну строку, но ИМХО - не нужно оно тут