• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы olga13
  • Дата начала
O

olga13

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

TimeDontWait

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

unknown181538

Можно сделать, чтобы из формы открывалась обработка для редактирования одного реквизита. Делал подобное, когда нужно было изменение реквизита без перепроведения.
 
V

vitfil

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

TimeDontWait

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

vbs

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

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

vitfil

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

vitfil

Ольга13, а что вам Google ответил на ваш вопрос?
 
O

olga13

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

vitfil

А для этого я обычно даю осмысленные префиксы реквизитам. Например, "кн_" - это кнопка, "фл_" - это все чекбоксы.
 
O

olga13

А если у кнопки или флажка нет идентификатора?
 
V

vitfil

Ольга13, а добавить религия не позволяет? ну, скажем, что у кнопки может не быть идентификатора, могу себе представить, но на кой нужен флажок без идентификатора не форме???
 
O

olga13

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

vitfil

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!