Имя: Пароль:
1C
1С v8
Изменить табличное поле из внешней обработки
0 dainastar
 
01.09.11
09:57
Можно ли из внешней печатной формы изменить табличную часть документа?
Пробую так:
Объект = СсылкаНаОбъект.ПолучитьОбъект();
Форма = Объект.ПолучитьФорму("ФормаДокумента").ЭлементыФормы;
И потом не могу получить доступ к табличной части
1 Scooter
 
01.09.11
09:59
(0)в обработку передавай уже существующий объект, или форму
2 Wobland
 
01.09.11
10:00
ТабличноеПоле есть средство визуализации ТЧ
3 dainastar
 
01.09.11
10:00
Я пытаюсь изменить табличную часть, но само табличное поле остается без изменения
4 dainastar
 
01.09.11
10:04
вот так я перебираю элементы в ТЧ:
Для Каждого Стр Из СсылкаНаОбъект.РаботникиОрганизации Цикл
А как потом значение изменить в колонке?
5 Wobland
 
01.09.11
10:04
стр.Наименование=стр.Наименование+" - дурак"; ;)
6 Wobland
 
01.09.11
10:05
форму обновить что-ли попробуй
7 Шапокляк
 
01.09.11
10:06
Ну так все правильно - форма открыта, в это время что с объектом ни делай, в форме этого не увидишь, пока не перечитаешь объект.
8 dainastar
 
01.09.11
10:07
(5)
Поле объекта недоступно для записи (Наименование)
9 dainastar
 
01.09.11
10:08
пока проблема в том, что поле не доступно для записи
10 Wobland
 
01.09.11
10:09
(9) это от того, что ссылка
11 lxs
 
01.09.11
10:09
(9) Объект получи
12 Arseny
 
01.09.11
10:10
Ты из формы нажимаешь на кнопку печать, потом получаешь новую форму с данными этого документа (не теми, которые в первой форме, а теми, которые сохранены в документе) и пытаешься их менять. Давай поподробнее, что ты хочешь сделать? Если просто изменить табличную часть, так может это стоит делать не из печатной формы а из обработки табличных частей
13 lxs
 
01.09.11
10:11
ТабЧастьОбъекта = СсылкаНаОбъект.ПолучитьОбъект().<ИмяТЧ>;
Для каждого ТекСтрока Из ТабЧастьОбъекта Цикл
   ТекСтрока.<ИмяРеквизита> = <НовоеЗначениеРеквизита>;
КонецЦикла;
14 Arseny
 
01.09.11
10:12
(13) не взлетит
15 Arseny
 
01.09.11
10:13
Вот если в качестве доппараметра ты передашь в печатную форму переменную ЭтаФорма
16 lxs
 
01.09.11
10:16
(14) Да что ты говоришь?))))
17 lxs
 
01.09.11
10:18
(15) и что с того? СсылкаНаОбъект.ПолучитьФорму() даст тот же результат (это к слову)
18 Arseny
 
01.09.11
10:23
Нет, одно дело контекст уже открытой формы, другое новый контекст. a.c не то же самое, что и b.c, если a<>b
19 dainastar
 
01.09.11
10:28
(13) я делаю так как Вы написали, потом пробую перечитать форму, все равно не получается :(
20 dainastar
 
01.09.11
10:35
Объект = СсылкаНаОбъект.ПолучитьОбъект();
ТабЧастьОбъекта = Объект.<ИмяТЧ>;
Для каждого ТекСтрока Из ТабЧастьОбъекта Цикл
   ТекСтрока.<ИмяРеквизита> = <НовоеЗначениеРеквизита>;
КонецЦикла;
Объект.Записать();
Если я делаю так и потом уже вручную перечитываю данные формы, то получается. А как программно перечитать?
21 lxs
 
01.09.11
10:49
Запиши объект
22 lxs
 
01.09.11
10:49
и не надо ничего перечитывать
23 lxs
 
01.09.11
10:51
(18) Какой новый нотекст? Если ты спросишь потом СсылкаНаОбъект.ПолучитьФорму().Открыта(), то получишь истину, епт.
24 lxs
 
01.09.11
10:51
*контекст
25 dainastar
 
01.09.11
11:00
(21) я и делаю записать объект, но форма все равно не обновляется
26 НЕА123
 
01.09.11
11:16
(20)
Обновить()

?
27 dainastar
 
01.09.11
11:19
ни СсылкаНаОбъект.ПолучитьОбъект().ПолучитьФорму("ФормаДокумента").Обновить();
ни Объект.Прочитать();
не помогают :(
28 НЕА123
 
01.09.11
11:30
(0)
1. самый дельный совет к (1);
2. читать (23);
3. если уж так делаешь,то лучше без объекта
Форма = СсылкаОбъект.ПолучитьФорму("ФормаДокумента").ЭлементыФормы;
и обращайся к реквизитам через форму (практически, к существующему объекту);
4. сопливенько это все.
29 lxs
 
01.09.11
12:38
В общем, самый дельный совет - использовать обработку оповещения)