Имя: Пароль:
1C
1С v8
как в УФ получить на клиенте значение поля табличной части
,
0 Новичок111
 
22.07.11
14:55
Конечно, если знаешь имя реквизита, то проблем никаких. А если нет? Или если поле таблицы вообще не связано с данными?
Нужно переписать в 8.2 (УП) код 7.7:
Процедура ПриНачалеРедактированияСтроки()
сАтр = Форма.ТекущаяКолонка();
   Если ПустоеЗначение(сАтр) = 0 Тогда ...

Здесь мы начинаем редактирование любой колонки таб.части, и если проверяем значение поля на заполненность.
Как это реализовать в 8.2?
1 Новичок111
 
22.07.11
15:03
никто не знает?
2 Amra
 
22.07.11
15:06
Не надо удалять гланды через жо.у
3 Новичок111
 
22.07.11
15:07
не понял. В 7.7 гланды через ж. удаляются?
4 jump if zero
 
22.07.11
15:16
Элементы[ТабЧасть].ТекущиеДанные.Поле
5 jump if zero
 
22.07.11
15:17
если ЗначениеЗаполенено() тогда
6 Новичок111
 
22.07.11
15:22
ну, Элементы[ТабЧасть] - это на самом деле Элемент в процедуре 8.2 ПередНачаломИзменения.
далее - Элемент.ТекущиеДанные - получим текущую строку таблицы. С данными, разумеется.
А вот имя поля откуда взять?
Максимум, что можно получить на клиенте - это имя поля таблицы. Но не имя реквизита.
7 jump if zero
 
22.07.11
15:58
Элементы.ТабЧасть.ПодчиненныеЭлементы.ПолеТЧ.ПутьКДанным
8 Новичок111
 
22.07.11
16:20
jump if zero - условия задачи внимательно смотрел?
Надо переписать код 7.7 в 8.2. код записан в (0).
Имя поля заранее неизвестно, процедура должна отрабатывать на любом поле таблицы.
что такое ПолеТЧ ?
9 jump if zero
 
22.07.11
16:33
&НаКлиенте
Процедура ДанныеКЗагрузкеПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
   
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ""+Элемент.ТекущийЭлемент.Имя;        
Сообщение.Сообщить();    

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

а как реквизит получить  я тебе уже написал
10 Новичок111
 
22.07.11
16:37
при чем здесь сообщение пользователю?????
мне нужно получить значение в той колонке, куда я ткнулся мышкой!
Причем работающий код, а не выдуманный из головы на ходу.
11 jump if zero
 
22.07.11
16:38
Элементы[ТабЧасть].ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]

так сработает?
12 Новичок111
 
22.07.11
16:41
если бы это работало, я бы сюда и не писал!
Элемент.ТекущийЭлемент.Имя - это имя поля таблицы, а нужно получить имя реквизита.
13 Новичок111
 
22.07.11
16:41
разницу понимаешь?
14 jump if zero
 
22.07.11
16:42
а в (7) я кому писал?
15 Новичок111
 
22.07.11
16:43
вопрос в (8) видишь?
16 Новичок111
 
22.07.11
16:43
в последней строке
17 Mort
 
22.07.11
16:44
Стук по дереву в соседних ветках слышно.
18 Новичок111
 
22.07.11
16:46
Мort, если есть что-то по теме, то готов послушать.
19 Mort
 
22.07.11
16:48
Тебе уже сто раз написали про ПутьКДанным. СП украли?
20 Новичок111
 
22.07.11
16:50
достаточно написать только 1 раз. И работающий код.
Пока его не увидел.
21 Mort
 
22.07.11
16:55
(20) И не увидишь.
22 Новичок111
 
22.07.11
16:57
(21) может, тебе в LIFE?
23 Новичок111
 
22.07.11
17:07
Один из способов я нашел.
&НаКлиенте
Процедура ТабЧастьПередНачаломИзменения(Элемент, Отказ)
   
   Стр = Элемент.ТекущиеДанные;
   ПутьКДанным = ПолноеИмяРеквизита();
   текКолонкаИмя = СтрЗаменить(ПутьКДанным, "Объект.ТабЧасть.", "");
   Если ЗначениеЗаполнено(Стр[текКолонкаИмя]) Тогда
       // действуем
   КонецЕсли;
   
КонецПроцедуры

&НаСервере
Функция ПолноеИмяРеквизита()
   
   Возврат Элементы.ТабЧасть.ТекущийЭлемент.ПутьКДанным;
   
КонецФункции

Однако, сдается мне, что это - (2).
Ибо в 7.7 это занимает лишь 2 строчки.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший