Имя: Пароль:
1C
1C 7.7
v7: Обновление таблицы.
,
0 Eeakie
 
17.12.12
18:23
Есть справочник "Клиенты". У каждого клиента есть контакты (подчиненный справочник). Все контакты выведены на форму элемента в виде ТЗ и недоступны для юзеров. Править их можно только по кнопке, которая отправляет прямиком в подчиненный справочник. Вопрос: как после правки справочника сразу обновить ТЗ, которая находится на форме элемента справочника "Клиенты". Бредово звучит, но уже час мучаюсь и ничего не получается.
1 zak555
 
17.12.12
18:25
переформировать её ?
2 2012_12_17
 
17.12.12
18:25
Форма.Обновить()
3 Eeakie
 
17.12.12
18:30
(1) В том то и проблема. При открытии элемента "Клиенты" формируется эта ТЗшка. Как запустить повторную процедуру формирования ПОСЛЕ закрытия подчиненного справочника?
4 Eeakie
 
17.12.12
18:33
На кнопке редактирования подчиненного справочника висит ОткрытьФорму(...). После закрытия надо запустить процедуру формирования.
5 GLazNik
 
17.12.12
18:41
Вариант1: ОбработкаОжидания + глобальная переменная (или константа, зависит от деталей) отвечающая за измененность справочника.
Вариант2: при ОткрытьФорму передать контекст текущей формы. при записи перезаполнять ТЗ по контексту.
6 Eeakie
 
17.12.12
18:43
(5) Спасибо.
7 Eeakie
 
18.12.12
13:44
(5) Я извиняюсь, конечно, но после передачи контекста в форму подчиненного справочника, как менять первоначальную ТЗ?

// повешено на кнопку редактирования
ОткрытьФорму("Справочник.КонтактыКлиентов", глВзятьКонтекст(Контекст));

// в подчиненном справочнике
// ПриОткрытии()
Конт = Форма.Параметр;                                                                                                                                                                                
// ПриЗакрытии() (там всего 4-5 элемента)
Конт.Форма.ТЗКонтакты.УдалитьСтроки();
ВыбратьЭлементы();
Пока ПолучитьЭлемент() = 1 Цикл
  Конт.Форма.ТЗКонтакты.НоваяСтрока();
...
КонецЦикла;

Нихрена, естественно, не происходит в исходной таблице. Как вернуть измененный контекст?
8 Eeakie
 
18.12.12
13:46
*Жду очередного глума от MikeWare*
9 Mikeware
 
18.12.12
13:47
:-)
10 Eeakie
 
18.12.12
13:47
(9) Я тебя заметил первее, чем ты откомментил ;)
11 dk
 
18.12.12
13:48
тебе же сказали уже обнови форму

Конт.Форма.ТЗКонтакты.УдалитьСтроки();
ВыбратьЭлементы();
Пока ПолучитьЭлемент() = 1 Цикл
  Конт.Форма.ТЗКонтакты.НоваяСтрока();
...
КонецЦикла;
Конт.Форма.Обновить(0 или 1);
12 Eeakie
 
18.12.12
13:54
А можно как-нибудь вызвать процедуру первоначального модуля через модуль редактируемого справочника?
13 Надсмотрщик
 
18.12.12
13:55
Процедура ПриПовторномОткрытии()
КонецПроцедуры
Синтаксис:
ПриПовторномОткрытии()
Назначение:
Предопределенная процедура при повторном открытии формы в случае, если открывают уже открытую форму - то есть форма просто активизируется.
Замечание:
Данная процедура может располагаться только в программном модуле формы.
14 Eeakie
 
18.12.12
14:02
(13) Не работает что-то.
15 Надсмотрщик
 
18.12.12
14:05
(14) А что ты там пишешь?
16 Eeakie
 
18.12.12
14:08
(15) ЗаполнениеКонтактов() - процедурка для заполнения ТЗ. Через отладчик в ПриПовторномОткрытии даже не останавливается.
17 palpetrovich
 
18.12.12
14:09
а посмотреть в типовой Справочник Номенклатура с подчиненными Единицами не судьба?
18 Эльниньо
 
18.12.12
14:15
ОткрытьФормуМодально("Справочник.КонтактыКлиентов");
ОсвежитьТЗ();
19 Eeakie
 
18.12.12
16:06
(18) Лучший.
20 Eeakie
 
18.12.12
16:12
MikeWare, давай, я жду ;D
21 Ёпрст
 
18.12.12
16:18
(20) могу ответить за него - ТП на форму, поставщиком прямой запрос, + автообновление в свойствах ТП..
усё.
22 m-serg74
 
18.12.12
16:20
(19) если у справочника КонтактыКлиентов есть Форма элемента, то после ОткрытьМодально, если начнешь добавлять новые элементы, думаю лажа будет, но не уверен до конца... пусть знающие поправят
23 Ёпрст
 
18.12.12
16:21
(22) никакой лажи не будет
24 Надсмотрщик
 
18.12.12
16:22
(0) ЗаполнениеКонтактов()
повесь на свою кнопку последней строкой
25 Eeakie
 
18.12.12
16:26
(24) Уже сделал. Всё отлично пашет.
(21) Так и хотел сделать изначально, но попросили сделать ТЗшкой и правкой справочника отдельной кнопкой. Проще было бы даже редактировать напрямую в ТЗ, но...
26 Sh1ko
 
18.12.12
18:09
Перезаполнять всю таблицу при изменении одного элемента не кошерно. В типовых сделано именно через контекст и меняется только нужная строка (при изменении), или добавляется в конец новая, и все это в модуле формы элемента подчиненного справочника.