Имя: Пароль:
1C
1С v8
УФ. Как в ТЧ у поля сделать ТолькоПросмотр, но с кнопкой открытия ☑
0 Max1986
 
26.04.12
✎
12:54
Как в УФ в ТЧ у поля сделать ТолькоПросмотр, но с кнопкой открытия.
сабж. Надо что бы в списке у ТЧ пользователь не мог изменяь номнклатуру, но посмотреть (нажав на лупу - мог).
Если ставлю у поля ТолькоПросмотр, то лупа пропадает.
Как это сделать?
1 Buster007
 
26.04.12
✎
13:03
вот это да... 1С отожгло...
2 Buster007
 
26.04.12
✎
13:06
ну что ж... пиши обработчики... )
3 Buster007
 
26.04.12
✎
13:21
&НаКлиенте
Процедура ТЧВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
   Если Поле.ТолькоПросмотр тогда
   
       ИмяПоля = ВернутьИмяКолонки(Поле.Имя);
       
       МассивПримитивныхТипов = Новый Массив;
       МассивПримитивныхТипов.Добавить(Тип("Число"));
       МассивПримитивныхТипов.Добавить(Тип("Строка"));
       МассивПримитивныхТипов.Добавить(Тип("Булево"));
       
       Значение = Элемент.ТекущиеДанные[ИмяПоля];
       Если НЕ МассивПримитивныхТипов.Найти(ТипЗнч(Элемент.ТекущиеДанные[ИмяПоля])) = Неопределено тогда
           Возврат;
       КонецЕсли;
       
       ОткрытьЗначение(Значение);
       
   КонецЕсли;
   
КонецПроцедуры

&НаСервере
Функция ВернутьИмяКолонки(Поле)
   
   ПутьКДанным = Элементы[Поле].ПутьКДанным;
   
   Пока Найти(ПутьКДанным, ".") > 0 цикл
       
       ПутьКДанным = Сред(ПутьКДанным, Найти(ПутьКДанным, ".")+1, СтрДлина(ПутьКДанным));
       
   КонецЦикла;
   
   Возврат ПутьКДанным;
   
КонецФункции
4 Buster007
 
26.04.12
✎
13:22
+(3) плохо что на сервер всю форму конечно тащу...
5 wald
 
26.04.12
✎
13:35
(4) Можно проще. в процедуре НачалоВыбора() проверяй на какое нибудь условие (можно роль создать) и если не нужно выбирать, то СтандартнаяОбработка = Ложь; Тоже самое в процедуре Очистка().
6 Buster007
 
26.04.12
✎
13:42
(5) а если я начну в поле вводить текст и будет срабатывать автоподбор?
7 Buster007
 
26.04.12
✎
13:42
(5) и для каждого поля я должен процедуру писать?
8 Mort
 
26.04.12
✎
13:43
А тупо по щелчку в поле не сутба открывать?
9 wald
 
26.04.12
✎
13:43
(5) Можно еще круче - делаешь ТолькоПросмотр у поля. А для таблицы создаешь команду контекстного меню, что-то типа "Открыть элемент". Пишешь обработчик для команды и пользватели писают кипятком))
10 Buster007
 
26.04.12
✎
13:44
(8) это как?
11 wald
 
26.04.12
✎
13:44
(7) ну создай общую процедуру обработчиков.... конечно нужно для каждого поля соответсвующую процедуру писать
12 wald
 
26.04.12
✎
13:46
Кстати чтобы не создавать обработчик для каждого поля, команда контекстного меню ваще тема, можно по текущим данным определять какую ссылку нужно отркывать, не нужно залезать на сервер
13 Mort
 
26.04.12
✎
13:49
(10)
&НаКлиенте
Процедура ПрограммныеОбъектыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   Если Поле = Элементы.ПрограммныеОбъекты1ПрограммныйОбъект Тогда
       НС = ПолучитьНавигационнуюСсылку(Элемент.ТекущиеДанные.ПрограммныйОбъект);
       ПерейтиПоНавигационнойСсылке(НС);
   КонецЕсли;
КонецПроцедуры
14 Buster007
 
26.04.12
✎
13:51
(13) молодец ) у меня 10 колонок у всех только просмотр. Для каждого поля писать условие?
15 Mort
 
26.04.12
✎
14:12
(14) Если Поле.ТолькоПросмотр... и т.д.