Имя: Пароль:
1C
 
Обновить ТЧ после заполнения программно в Управляемой Форме 1С 8.2
0 ice777
 
21.01.09
14:38
сделал на Форме кнопочку, по которой добавляется некоторое количество строк в ТЧ документа ( в таблицу управляемой формы).

Но как таблицу сразу обновить - не видны добавленные, пока не выйдеш и не зайдешь в форму (документ проведен в обработчике кнопки).

- метод Обновить не катит..
-  ЭтаФорма.ОповеститьОЗаписиНового(Документ)- ничего не делает
1 TitanLuchs
 
21.01.09
14:41
F5 помогает
2 TitanLuchs
 
21.01.09
14:42
+(1) Как обновить программно - пока не искал
3 Рэйв
 
21.01.09
14:43
ЭлементыФормы.ТабЧасть.СоздатьКолонки()
4 ice777
 
21.01.09
14:49
СоздатьКолонки по описанию подходят..

ЭтаФорма.ЭлементыФормы - не работает в 8.2
5 ice777
 
21.01.09
14:52
а Объект.<имяТабЧасти>.СоздатьКолонки();
- а тут СоздатьКолонки() - не работают

Ваще меня уже прикалывать начинает, что можно пользоваться и ЭтаФорма и Объект..
6 johnbay
 
21.01.09
14:56
ЭтаФорма.Элементы.Список.Обновить();
попробуй. для динамических списков работает.
7 ice777
 
21.01.09
15:38
Поле объекта не обнаружено (Список)ЭтаФорма.Элементы.Список.Обновить();

Не прокатило
8 ice777
 
21.01.09
16:02
нашел вот:

Синтаксис:
ОбновитьОтображениеДанных()
Описание:
В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значени реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
Доступность: клиент, сервер, тонкий клиент, веб-клиент.

- и тоже нифига не делает. и не ругается :(
9 TitanLuchs
 
21.01.09
17:08
(7) Драсте, так ты вместо "Список" подставь название элемента "Динамический список", как он у тебя в дереве элементов называется
10 ice777
 
22.01.09
16:30
неа.
Нужен аналог команды "Перечитать" на форме.
11 TitanLuchs
 
22.01.09
16:43
(10) Тебе что нужно-то: при нажатии на кнопочку добавить строки и сразу же обновить форму, чтобы сделать ее видимой? Так?
12 ice777
 
22.01.09
16:47
ТАК! ТАК!
13 ice777
 
22.01.09
16:48
Точнее она видима, но в ТЧ не видно добавленное по кнопке.
Выйти и зайти - тогда вижу.
14 johnbay
 
22.01.09
16:49
(13) Ясна, такая же проблема есть, пока не нашел решения.
15 TitanLuchs
 
22.01.09
16:50
(13)(14) Сча найдем...
16 johnbay
 
22.01.09
16:51
смысл проблемы допустим тупа нада перечитать табличную часть элемента справочника. вот :)
17 ice777
 
22.01.09
16:51
я уже в общей сложности час ищу.. не хвастаюсь :(
18 ice777
 
22.01.09
16:55
(16) точнее просто перерисовать/перечитать ТЧ из уже измененных данных.
19 TitanLuchs
 
22.01.09
16:58
(18) Незаписанного элемента, то есть обновить не с сервера, а просто из оперативки, верно?
20 ice777
 
22.01.09
17:01
Я добавляю строки в ТЧ, делаю документу Записать(РежимЗаписиДокумента.Запись);
Да, на клиенте.
21 TitanLuchs
 
22.01.09
17:03
(20) Брррррр. Если делаешь "записать", то ты уже не на клиенте делаешь это, ты уже пошел на сервер. Теперь объект можно перечитать с сервака.
22 ice777
 
22.01.09
17:04
Как?
23 johnbay
 
22.01.09
17:05
(21) щяс нарисую пример
24 TitanLuchs
 
22.01.09
17:05
(22) Погодь, просто незачем читать с сервера, на фига трафик туда-сюда гонять. Сча поищем что-нить пооптимальней.
25 ice777
 
22.01.09
17:06
Вона кнопочка "Перечитать" на форме отлично это делает, что наводит на мысли, что можно и программно осуществить.

Искал также, как эту "Перечитать" программно нажать.. не нашел.
26 ice777
 
22.01.09
17:06
(24) Я на все согласен.. :) Абы работало
27 johnbay
 
22.01.09
17:08
Есть процедура на сервере, которая делает след. код:

процедура ы(ссылка)
Объект = Ссылка.ПолучитьОбъект();
НоваяСтрока = Объект.Документы.Добавить();
Объект.Записать();
Конецпроцедуры;

эта процедура вызывается кнопкой на форме. кнопку нажал, в ТЧ "Документы" добавилась строка. нада обновить форму на клиенте. усе
28 TitanLuchs
 
22.01.09
17:09
(27) Ясно, это тебе надо перечитать объект из базы.
29 johnbay
 
22.01.09
17:10
как кнопку "перечитать" позвать программно?
30 ice777
 
22.01.09
17:14
если уж на то пошло.. то мне проще сделать программное закрытие и открытие формы с позиционированием в то же место ТЧ.  Если уж так далеко запрятали в 82 простейшие функции :(
31 TitanLuchs
 
22.01.09
17:18
(30) Не гони, за такой код тебя заплюют и юзеры, и коллеги ))
(27) Воспроизвести пример получилось, сча погоняю немного...
32 ice777
 
22.01.09
17:19
(31) конешно заплюют! да я и сам в зеркало смотреться перестану ;)
33 johnbay
 
22.01.09
17:27
сделал! щяс выложу
34 ice777
 
22.01.09
17:27
метод прочитать() тоже..
35 johnbay
 
22.01.09
17:30
(34) ?
36 ice777
 
22.01.09
17:31
ЭтаФорма.Прочитать();

И ВСЕ! е-мае, убив бы эту 82
37 TitanLuchs
 
22.01.09
17:32
&НаСервереБезКонтекста
Процедура ДатьСкидкуВыполнитьНаСервере(Ссылка)

   Объект = Ссылка.ПолучитьОбъект();
   НоваяСтрока = Объект.ТМЦ.Добавить();
   НоваяСтрока.Цена = 100;
   Объект.Записать();

КонецПроцедуры

&НаКлиенте
Процедура ДатьСкидкуВыполнить()
   
   ДатьСкидкуВыполнитьНаСервере(Объект.Ссылка);
   ЭтаФорма.Прочитать();

КонецПроцедуры
38 ice777
 
22.01.09
17:32
И еще раз убив бы 1С за встроенную справку.
39 TitanLuchs
 
22.01.09
17:32
(36) Хех, успел раньше на минуту )))
40 ice777
 
22.01.09
17:32
а то ;)
41 ice777
 
22.01.09
17:32
все равно спасибо
42 johnbay
 
22.01.09
17:33
&НаСервере
Функция Перерисовать(СсылкаО)
   ЗначениеВРеквизитФормы(СсылкаО.ПолучитьОбъект(), "Объект");
КонецФункции
вот еще вариант :)
43 TitanLuchs
 
22.01.09
17:33
(38) Зря ты ругаисси на 8.2 очень полезная и добная штука! И чем справка не угодила?
44 johnbay
 
22.01.09
17:34
(42) вызывается с клиента так:

Перерисовать(Объект.Ссылка);
45 TitanLuchs
 
22.01.09
17:34
(44) Не катит - добавляется лишняя операция: передача данных на сервак
46 ice777
 
22.01.09
17:35
ну, это как бы не в топик, но:
- почти никогда нет сылочек на "похожее". что искал - то и погладел
и, - без примеров частенько
- иерархию посмотреть.. ага, мотрите в отладчике
- и многое другое
47 ice777
 
22.01.09
17:35
справка есть болезнь не 82, а 1С ваще
48 johnbay
 
22.01.09
17:37
(45) 44 на правах альтернативы. вижу что не оптимально :(
49 TitanLuchs
 
22.01.09
17:40
(47) Ну нинаю, я 8.2 по СП учил - все понятно. Хотя это субъективно, конечно
(48) Вообще такую операцию из формы вызывать не рекомендуется. И кстати, у тебя при таком коде должно было произойти исключение - платформа не позволяет переводить реквизит формы, который может измениться, в объект.
50 TitanLuchs
 
22.01.09
17:41
+(49) Хотя нет, у тебя обратное преобразование - из объекта в реквизит
51 johnbay
 
22.01.09
17:43
(50) код проверил, работает.
52 TitanLuchs
 
22.01.09
17:45
(51) А он и будет работать в том виде, в котором у тебя приведено, я же написал, что у тебя преобразование объекта в форму, по сути то же что и "Прочитать()"