Имя: Пароль:
1C
1C 7.7
v7: Как в открытой форме документа обновить значения реквизитов или конкретно реквизит Контраг
0 box
 
26.06.20
17:07
1С 7.7 Как в открытой форме документа обновить значения реквизитов или конкретно реквизит Контрагент? Форма.Обновить() не подходит
1 Builder
 
26.06.20
17:10
В смысле?
2 Сияющий Асинхраль
 
26.06.20
17:11
А что же это за реквизит, что сам собой меняется?
3 box
 
26.06.20
17:12
В открытом документе, в котором уже заполнен реквизит Контрагент, запускается обработка, которая изменяет Наименование в справочнике Контрагенты. При этом в открытой форме документа представление реквизита Контагент не изменяется
4 box
 
26.06.20
17:15
Через кнопку выбора в поле Контрагент также не видны изменения, но когда в списке открыть объект Контрагент, то изменения видны
5 box
 
26.06.20
17:15
Одним словом, каким образом перечитать данные в открытой форме документа?
6 Builder
 
26.06.20
17:17
Видимо для начала надо перечитать контрагента.
А потом что-то типа
Контрагент = ВыбКонтрагент;
7 Сияющий Асинхраль
 
26.06.20
17:29
Вот ведь!!! Круто!!! Мне бы такое в голову не пришло. Если не напрягу, расскажи, пожалуйста, что у Вас там происходит с контрагентами, что они меняются в документах, да еще и программно! Жутко любопытно...

Кстати, вариант (6) должен работать, НО, он меняет еще и документ, т.е. при закрытии дока без каких-либо изменений будет появляться вопрос на сохранение изменений, что не здорово, а если честно считается плохим стилем программирования, когда документ меняется без внесения пользователем реальных изменений...
8 box
 
26.06.20
17:46
(6) Так и делаю, но не работает
(7) Старая ТиС 9.2. Создается новый документ Реализация и заполняется по умолчанию реквизит Контрагент (основной покупатель). Затем через кнопку запускается обработка в которой вводится номер телефона покупателя и происходит поиск в справочнике контрагентов. Если клиент с таким номером есть, то в поле ФИО самой обработки заполняется данными из справочника. При этом оператор может изменить данные клиента и вот именно в момент изменения и записи в справочник, не происходит изменения в отображении на форме документа в реквизите Контрагент
9 Сияющий Асинхраль
 
26.06.20
17:51
(8) Ну, если это надо для такого, то просто обычно делается по-другому: СНАЧАЛА открывается окно с вводом контрагента, если находит, то программно открывается НОВЫЙ документ с найденным контрагентом, если не найден, то контрагент создается программно и опять таки открывается НОВЫЙ документ.
10 box
 
26.06.20
18:04
(9) Как вариант, согласен! Но просто интересно, как в открытом документе перечитать с базы данные?
11 Djelf
 
26.06.20
18:10
(10) Пробовал Контрагент="";Контрагент=ВыбКонтрагент; ?
12 Ёпрст
 
26.06.20
22:32
(0) есть там финт для этого, если вспомню, напишу
13 Мимохожий Однако
 
26.06.20
22:44
"...стоя и в гамаке.. Наше фсё!"
14 Злопчинский
 
26.06.20
22:45
.ТекущийЭлемент()
15 Ёпрст
 
26.06.20
22:50
(0)Сообщить(Контрагент.ТекущийЭлемент());
16 Ёпрст
 
26.06.20
22:50
о ёпт.. Чебур опередил
17 Злопчинский
 
26.06.20
23:13
(16) ну, блин, хоть раз...
18 IgorA100
 
26.06.20
23:54
Вот так точно работает:

    К=СоздатьОбъект("Справочник.Контрагенты");
    К.НайтиЭлемент(Контрагент);
    Контрагент = "";
    Контрагент = К.ТекущийЭлемент();

Но, последствия как описано в (7)
19 Злопчинский
 
27.06.20
00:00
(18) ну, это лечится
20 Сияющий Асинхраль
 
27.06.20
00:08
(19) Согласен, лечится. Но реализуемое решение изначальной задачи кривое. А так да, победить можно, вопрос - нужно ли. Просто я понимаю, когда кривые решения делаются для ускорения процесса, но нормальное решение ничуть не более трудоемкое, чем это мягко говоря странное...
21 Cthulhu
 
27.06.20
00:22
БылоИзмененоДоТого = Форма.Модифицированность(); Контагент=Контагент.ТекушийЭлемент();
Если БылоИзмененоДоТого*Выбран()<>0 Тогда НачатьТранзакцию(); Записать(); ОтменитьТранзакцю(); КонецЕсли;
22 Cthulhu
 
27.06.20
00:23
Если (БылоИзмененоДоТого<>1)B(Выбран()<>0) Тогда НачатьТранзакцию(); Записать(); ОтменитьТранзакцю(); КонецЕсли;
23 Cthulhu
 
27.06.20
00:23
24 IgorA100
 
27.06.20
00:53
(21)
А так точно должно работать???
Контрагент=Контрагент.ТекущийЭлемент();
25 Ёпрст
 
27.06.20
09:55
(24) да
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой