|  17.05.2007, 07:14 | #1 | 
| Участник | 
			
			Есть таблица. Создана для ее просмотра/модификации табличная форма.  Вопрос. Надо запретить редактирование таблицы с возможностью отмены запрета. Проблема. Если использовать Editable формы, то запрет ставится и на все контролы, расположенные на форме (кроме кнопок), что не есть гуд. Если использовать Editable отдельных полей в контейнерном элементе, то у пользователя остается возможность удаления, что не есть гуд. Если использовать Editable для контейнерного элемента, содержащего поля, то все гуд, кроме того, что я не могу получить доступ к этому свойству из кода. Подскажите, как решить задачу и обойти перечисленные проблемы. Заранее спасибо. | 
|  | 
|  17.05.2007, 07:47 | #2 | 
| Участник | 
			
			А что мешает на таблице перекрыть метод onDelete()?? тогда можно в ней проверять и разрешать или запрещать удаление) тогда можно перекрыть метод Editable на полях!!! 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  17.05.2007, 07:56 | #3 | 
| Участник | 
			
			2 Himan А заодно и метод onInsert(), т.к. юзер вставлять записи тоже может. Короче при этом способе юзер имеет полный доступ к таблице, не имея его к отдельным полям. Эхм... не нравится мне такой вариант, хотя в принципе он может стать решением. Хотелось бы услышать другие варианты, если есть. | 
|  | 
|  17.05.2007, 08:16 | #4 | 
| Участник | 
			
			можно на форма перекрыть методы onInsert(), onDelete():  Код: IF( Code <> '' ) THEN EXIT(FALSE); Хотя это можно разрулить, типа вам это делать не льзя абратитесь к админу) 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  17.05.2007, 09:11 | #5 | 
| Участник | 
			
			У формы есть свойства InsertAllowed, ModifyAllowed и DeleteAllowed. Они Вам не помогут? | 
|  | 
|  17.05.2007, 09:48 | #6 | 
| Участник | Цитата: едиственное нехорошо если 2 таблицы) 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  22.05.2007, 05:56 | #7 | 
| Участник | 
			
			Извиняюсь, что так долго, срочная задача отвлекла. 2 kekki Эти свойства помогли бы, но к сожалению к ним тоже нет доступа из C/AL кода. Ну что, остается только вариант Himan'а через тригеры? Больше, получается, никак не сделать? p.s. Кстати, свойство "ModifyAllowed" у меня почему-то вобще не сработало, т.е. с выставленным значением "no" все равно осталась возможность редактирования. Это вопщем странно, т.к. 2 других свойства сработали на ура и запретили вставку и удаление записей. Кто-нибудь знает, в чем дело? | 
|  | 
|  22.05.2007, 07:13 | #8 | 
| Участник | Цитата: 
		
			Сообщение от smoyk
			   p.s. Кстати, свойство "ModifyAllowed" у меня почему-то вобще не сработало, т.е. с выставленным значением  "no" все равно осталась возможность редактирования. Это вопщем странно, т.к. 2 других свойства сработали на ура и запретили вставку и удаление записей. Кто-нибудь знает, в чем дело? У Вас не так? | 
|  | 
|  22.05.2007, 09:47 | #9 | 
| Участник | 
			
			Господа, сделайте так. На форме сделайте две кнопки EditFalse и EditTrue. Наложите одну на другую. На OnPush кнопки EditTrue напишите: CurrForm.EDITABLE := TRUE; CurrForm.EditTrue.VISIBLE:=FALSE; CurrForm.EditFalse.VISIBLE:=TRUE; На OnPush кнопки EditFalse напишите: CurrForm.EDITABLE := FALSE; CurrForm.EditFalse.VISIBLE:=FALSE; CurrForm.EditTrue.VISIBLE:=TRUE; На OnOpenForm напишите: //При открытии формы, если там нет данных редактировать можно IF NOT FIND('-') THEN CurrForm.EDITABLE := TRUE ELSE //При открытии формы, если там есть данные запрещаем редактирование CurrForm.EDITABLE := FALSE; CurrForm.EditFalse.VISIBLE:=FALSE; И нет проблем. | 
|  | 
|  22.05.2007, 12:58 | #10 | 
| Участник | 
			
			2 kekki "Все страньше и страньше..." (с). Таже самая версия Navision, что и у Вас. Изменения проходят в таблицу. Не понимаю. Придется списать на есчо адын глюк navision (ну или на кривые руки программиста, кому как нравится  ). В любом случае дальше копать смысла нет (разве что из любобытства), т.к. доступа к этим свойствам из кода нет, как я уже писал, и значит эти свойства в данном случае использованы быть не могут. Мне ведь нужно дать возможность пользователю снять запрет на редактирование таблицы. 2 kas1 Как я уже писал в этом случае доступа не будет ко всем визуальным контролам формы. Чтож, отказыватся от них? Щас начну глупо хихикать... или ругатся матом. Вопрос-то простой, неужели нет способа решить его без камасутры? Есть свойства, которые делают то, что надо, но к ним нет доступа из кода, а те свойства, к которым есть доступ из модуля делают еще и то, что не надо... Есть над чем подумать. | 
|  | 
|  22.05.2007, 13:26 | #11 | 
| Участник | 
			
			Таким образом, как я написал пользователь может как давать доступ, так и запрещать его. Если нужно запрет на определенные поля: ну напишите тогда CurrForm.НазваниеПоля.Editable:=FALSE Или может я не понял всей глубины проблемы??? | 
|  | 
|  23.05.2007, 05:25 | #12 | 
| Участник | 
			
			2 kas1 Ну я же написал, что при CurrForm.EDITABLE := FALSE становятся недоступными другие контролы на форме. Это плохо. В принципе мона и без них обойтись, но этого хотелось бы избежать. А по поводу CurrForm.НазваниеПоля.Editable:=FALSE я написал в 1 посте. Блокируются поля, но не таблица, т.е. у юзера остается возможность вставки и удаления записей. Вот такая проблема. | 
|  | 
|  23.05.2007, 10:28 | #13 | 
| Участник | 
			
			Вы же сами уже все нашли во втором посте - используйте его и не парьтесь   Цитата: 
		
			Сообщение от smoyk
			   2 Himan А заодно и метод onInsert(), т.к. юзер вставлять записи тоже может. Короче при этом способе юзер имеет полный доступ к таблице, не имея его к отдельным полям. Эхм... не нравится мне такой вариант, хотя в принципе он может стать решением. Хотелось бы услышать другие варианты, если есть. | 
|  | 
|  24.05.2007, 05:41 | #14 | 
| Участник | 
			
			Ага нашел, только он мне не понравился  Но пришлось так и сделать. Через тригерры. Других вариентов не нашлось. Всем спасибо за помощь. | 
|  |