1С 7.7 Редактирование реквизита документа

olga13

Well-known member
10.10.2008
208
0
#1
Добрый день! Суть проблемы такова: после отгрузки товара со склада необходимо запретить редактирование всего документа кроме одного реквизита. Применение Форма.ТолькоПросмотр(1) устанавливает запрет на весь документ, а описывать все реквизиты через Форма.Доступность(0) как-то не хочется... Может, существуют другие решения?
 
T

TimeDontWait

#2
Попробуй через метаданные
Перебор всех реквизитов шапки и тч, а потом просто на свой реквизит установи доступность(1)
 

unknown181538

НеГуру
28.12.2008
1 417
0
#4
Можно сделать, чтобы из формы открывалась обработка для редактирования одного реквизита. Делал подобное, когда нужно было изменение реквизита без перепроведения.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#6
Человеки, а что с кнопками и реквизитами формы, которые не являются напрямую реквизитами шапки или ТЧ думаете делать? Я бы посмотрел в сторону FormEx.dll - можно перебрать все реквизиты формы и сделать их недоступными в цикле. Кнопки и всякого рода боксы в этом случае будут являться реквизитами формы.
Предлагаю всем проникнуться и отплюсоваться ;)
 
T

TimeDontWait

#7
А и правда. Даже напишу пример
Код:
РФ= СоздатьОбъект("РасширениеФормы"); 
РФ.УстановитьФорму(Форма);
Для С = 0 По РФ.КоличествоАтрибутов() - 1 Цикл
РФ.ПолучитьАтрибут(С).Доступность = 0;
КонецЦикла;
 

vbs

Well-known member
18.02.2007
1 708
1
#9
Человеки, а что с кнопками и реквизитами формы, которые не являются напрямую реквизитами шапки или ТЧ думаете делать?
Так если элементы формы не являются реквизитами документа, то это никак не помешает.
А предложение
unknown181538
на мой взгляд, вполне реализуемо :
1. В процедуре ПриОткрытии() ставим Форма.ТолькоПросмотр(1);
2. Вызываем простенькую обработку редактирования единственного реквизита
3. И закрываем документ с измененным реквизитом.

Если перепроведение необходимо, понадобятся еще манипуляции, но все преодолимо
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#10
vbs
FormEx как раз для 7.7 и предназначена. А расширенный ответ TimeDontWait по гениальной наводке vitfil - есть самое правильное в данном случае решение. :RTFM:
 

olga13

Well-known member
10.10.2008
208
0
#15
Попробовала FormEx, штука действительно замечательная. Не могу только найти, как при переборе атрибутов формы определить, что они собой представляют - это реквизит, кнопка, флажок... У меня ведь задача запретить редактирование документа, а процедура в таком виде, как предлагает TimeDontWait, делает недоступными и кнопки. Так что документ нельзя даже распечатать. Или это как-то по-другому делается?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#16
А для этого я обычно даю осмысленные префиксы реквизитам. Например, "кн_" - это кнопка, "фл_" - это все чекбоксы.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#18
Ольга13, а добавить религия не позволяет? ну, скажем, что у кнопки может не быть идентификатора, могу себе представить, но на кой нужен флажок без идентификатора не форме???
 

olga13

Well-known member
10.10.2008
208
0
#19
Добавлять идентификаторы я умею. Хотя, для интереса посчитала - у меня на форме 18 кнопок. Поэтому хотелось бы избежать их описания. А насчет флажков без идентификаторов - я их делаю, например, для задания параметров печати. Зачем их хранить? Распечатал док. и все.
А вопрос мой больше касается возможностей FormEx, может быть, там есть такой инструмент, да я не нашла.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#20
Добавлять идентификаторы я умею. Хотя, для интереса посчитала - у меня на форме 18 кнопок. Поэтому хотелось бы избежать их описания. А насчет флажков без идентификаторов - я их делаю, например, для задания параметров печати. Зачем их хранить? Распечатал док. и все.
А вопрос мой больше касается возможностей FormEx, может быть, там есть такой инструмент, да я не нашла.
Вы путаете идентификатор флажка и его связь с реквизитом.
Но даже если вам надо оставить доступным функционал по печати, вполне достаточно назначить идентификатор 1-2 кнопкам и флажкам, которые отвечают за печать и в цикле проверять их, а все остальные сделать недоступными. Но даже если 18 кнопок, не вижу проблем ЕДИНОЖДЫ в 18 раз задать идентификаторы кнопок. Типа кн_Печать, кн_Ок и т.д.
Кстати, раз уж пошла такая пьянка, я бы руки поотрубал за 18 кнопок!
Ок - Записать, Провести, Закрыть
Закрыть - Закрыть
Провести - Провести
Печать - все формы печати
Действия - Подбор, Заполнить и т.д.
И не пытайтесь убедить меня, что требуется больше функциональных кнопок (за исключением кнопок возле реквизитов, если требуется открывать формы этих реквизитов или обнулять значения реквизитов - для не подозревающих про "горячие" клавиши).

Если больше 5-6 кнопок на форме, это навевает тоску на пользователя. Как и количество колонок, не помещающееся на ширину открытой формы, в табличной части. Вместо мыслей о том "что я должен делать", у пользователя будет постоянно вертеться в голове "как бы не забыть, что делает какая кнопка".