Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как в открытой форме документа обновить значения реквизитов или конкретно реквизит Контраг

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

Кстати, вариант (6) должен работать, НО, он меняет еще и документ, т.е. при закрытии дока без каких-либо изменений будет появляться вопрос на сохранение изменений, что не здорово, а если честно считается плохим стилем программирования, когда документ меняется без внесения пользователем реальных изменений...
   box
 
8 - 26.06.20 - 17:46
(6) Так и делаю, но не работает
(7) Старая ТиС 9.2. Создается новый документ Реализация и заполняется по умолчанию реквизит Контрагент (основной покупатель). Затем через кнопку запускается обработка в которой вводится номер телефона покупателя и происходит поиск в справочнике контрагентов. Если клиент с таким номером есть, то в поле ФИО самой обработки заполняется данными из справочника. При этом оператор может изменить данные клиента и вот именно в момент изменения и записи в справочник, не происходит изменения в отображении на форме документа в реквизите Контрагент
   Сияющий Асинхраль
 
9 - 26.06.20 - 17:51
(8) Ну, если это надо для такого, то просто обычно делается по-другому: СНАЧАЛА открывается окно с вводом контрагента, если находит, то программно открывается НОВЫЙ документ с найденным контрагентом, если не найден, то контрагент создается программно и опять таки открывается НОВЫЙ документ.
   box
 
10 - 26.06.20 - 18:04
(9) Как вариант, согласен! Но просто интересно, как в открытом документе перечитать с базы данные?
   Djelf
 
11 - 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) ну, блин, хоть раз...
   IgorA100
 
18 - 26.06.20 - 23:54
Вот так точно работает:
    К=СоздатьОбъект("Справочник.Контрагенты");
    К.НайтиЭлемент(Контрагент);
    Контрагент = "";
     Контрагент = К.ТекущийЭлемент();

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

   IgorA100
 
24 - 27.06.20 - 00:53
(21)
А так точно должно работать???
Контрагент=Контрагент.ТекущийЭлемент();

   Ёпрст
 
25 - 27.06.20 - 09:55
(24) да


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.