Имя: Пароль:
1C
1C 7.7
v7: ТабличноеПоле
0 oslokot
 
27.09.12
20:18
Спокойной всем ночи!
Изучаю ТП, есть вопросы.
В своей очередной обработке, я решил вместо ТЗ попробовать использовать ТП.
Обработка простая, на форме есть несколько ТП, доступных для редактирования пользователю.
Поставщиком данных являются Таблицы Значений.

ТП как я понимаю, лишь красивое отображение данных от Поставщика данных?
Соответственно, если происходит редактирование ячейки в ТП, я должен учесть все изменения и в поставщике данных?
Например, если я двойным кликом отмечаю какое-либо значение в ячейке, я устанавливаю данное значение и в ТЗ (в Поставщике данных) Правильно я делаю, или есть более простой способ?
// ===============================
Процедура тпПоставщики_Выбор(ТП, НомерСтроки, ТипРегиона, ТипОбластиЯчейки)
// Двойной клик по колонке "Выбор" присваиваю значение "1" в поставщике данных и обновляю ТП
   ТП.ПоставщикДанных.ТаблицаЗначений.УстановитьЗначение(НомерСтроки,"Выбор",1);
   ТП.ОбновитьСтроки();
КонецПроцедуры // тпПоставщики_Выбор
1 Wobland
 
27.09.12
20:19
определись с версией платформы для начала. во-вторых, пойми, что семёрка - это вааще другое нечто
2 КонецЦикла
 
27.09.12
20:20
Почему бы просто не изменять данные?
ТП отражает состояние данных, автообновляется
Почитай документацию
3 ОбычныйЧеловек
 
27.09.12
20:22
(0) хочешь получить быстрый и правильный ответ - задай вопрос на форуме 1С++
4 oslokot
 
27.09.12
20:22
(1) я про клюшки вроде? или где?
(2) Да, знаю что есть автообновление ТП, но в Поставщике мне нужно явно менять переменную?
5 oslokot
 
27.09.12
20:24
(2) То есть не так:
ТП.ПоставщикДанных.ТаблицаЗначений.УстановитьЗначение(НомерСтроки,"Выбор",1);
А вот так?:
ТЗ.УстановитьЗначение(НомерСтроки_ИзТП,"Выбор",1);
ТП.ОбновитьСтроки()
6 Mikeware
 
27.09.12
20:30
(5) вроде Поставшик сам и пишет в источник?
7 Злопчинский
 
27.09.12
20:32
(6) вроде или как?
.
мне например тоже надо аналогичное ТС...
.
8 oslokot
 
27.09.12
20:33
(6) Да, но я меняю данные в ТП, я же должен их поменять так же и в Поставщике?
9 oslokot
 
27.09.12
20:48
Например, в тему. Устанавливаю флажок на ТП, он же не запомнится, после следующего обновления данных от ПоставщикаДанных, поэтому мне надо это событие отразить и у Поставщика тоже. Так?
10 oslokot
 
27.09.12
21:08
Ладно, ночь уже...
11 Злопчинский
 
28.09.12
01:23
надо бы завтра апнуть
12 ADirks
 
28.09.12
06:46
Вообще-то в ТП ничего не редактируется, это чистая визуализация. Редактируется источник данных (в данном случае ТЗ), и после этого обновляется ТП.
Типичная схема примерно такая:

Перем тпМатериалы, тзМатериалы;

Процедура Инит()
   тзМатериалы = СоздатьОбъект("ТаблицаЗначений");
   тзМатериалы.ДобавитьКолонку("Материал", "Справочник.Материалы");
   
   ПоставщикДанных = СоздатьОбъект("VTProvider");
   ПоставщикДанных.УстТаблицуЗначений(тзМатериалы);
   тпМатериалы.ПоставщикДанных = ПоставщикДанных;
   
   тпМатериалы.ОбновитьСтроки();
КонецПроцедуры


Процедура тпМатериалыВыбор(Источник, нСтрТП, КолонкаТП)
   тзМатериалы.УстановитьЗначение(нСтрТП, "Материал", ВыбМатериал);
КонецПроцедуры


т.е. ТЗ - поставщик данных (в д.с. тзМатериалы) объявляется как переменная модуля, чтобы не лазить каждый раз в ТП.ПоставщикДанных.ТаблицаЗначений.

Про флаги опять же надо понимать, что в ТП ничего не хранится, поэтому так:

Процедура тпМатериалыПриВыбореФлажка(Источник, нСтр, КолТП, ТипРегиона)
   тзМатериалы.ПолучитьСтрокуПоНомеру(нСтр);
   тзМатериалы.Галка = 1 - тзМатериалы.Галка;
   тпМатериалы.ОбновитьСтроки();
КонецПроцедуры
13 oslokot
 
28.09.12
14:54
(12) ок, теперь понятно.