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

Тема в разделе "1C и всё что с ней связано", создана пользователем olga13, 18 май 2010.

  1. olga13

    olga13 Well-Known Member

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

    TimeDontWait Well-Known Member

    Регистрация:
    4 янв 2010
    Сообщения:
    383
    Симпатии:
    0
    Попробуй через метаданные
    Перебор всех реквизитов шапки и тч, а потом просто на свой реквизит установи доступность(1)
     
  3. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Спасибо за совет, попробую.
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Можно сделать, чтобы из формы открывалась обработка для редактирования одного реквизита. Делал подобное, когда нужно было изменение реквизита без перепроведения.
     
  5. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Неплохая мысль
     
  6. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Человеки, а что с кнопками и реквизитами формы, которые не являются напрямую реквизитами шапки или ТЧ думаете делать? Я бы посмотрел в сторону FormEx.dll - можно перебрать все реквизиты формы и сделать их недоступными в цикле. Кнопки и всякого рода боксы в этом случае будут являться реквизитами формы.
    Предлагаю всем проникнуться и отплюсоваться ;)
     
  7. TimeDontWait

    TimeDontWait Well-Known Member

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Только для 7.7 это не пройдет
     
  9. vbs

    vbs Well-Known Member

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

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    vbs
    FormEx как раз для 7.7 и предназначена. А расширенный ответ TimeDontWait по гениальной наводке vitfil - есть самое правильное в данном случае решение. :RTFM:
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Виноват, с синтаксисом FormEx не очень знаком
     
  12. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    А что такое FormEx и где его взять?
     
  13. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ольга13, а что вам Google ответил на ваш вопрос?
     
  14. Gluk8888

    Gluk8888 Гость

    смотрите на dorex.ru там сама компонента + демо конфигурация возможностей
    + ссылка на форум где есть куча примеров
     
  15. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Попробовала FormEx, штука действительно замечательная. Не могу только найти, как при переборе атрибутов формы определить, что они собой представляют - это реквизит, кнопка, флажок... У меня ведь задача запретить редактирование документа, а процедура в таком виде, как предлагает TimeDontWait, делает недоступными и кнопки. Так что документ нельзя даже распечатать. Или это как-то по-другому делается?
     
  16. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    А для этого я обычно даю осмысленные префиксы реквизитам. Например, "кн_" - это кнопка, "фл_" - это все чекбоксы.
     
  17. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    А если у кнопки или флажка нет идентификатора?
     
  18. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ольга13, а добавить религия не позволяет? ну, скажем, что у кнопки может не быть идентификатора, могу себе представить, но на кой нужен флажок без идентификатора не форме???
     
  19. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Добавлять идентификаторы я умею. Хотя, для интереса посчитала - у меня на форме 18 кнопок. Поэтому хотелось бы избежать их описания. А насчет флажков без идентификаторов - я их делаю, например, для задания параметров печати. Зачем их хранить? Распечатал док. и все.
    А вопрос мой больше касается возможностей FormEx, может быть, там есть такой инструмент, да я не нашла.
     
  20. vitfil

    vitfil IT-интегратор

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

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

Поделиться этой страницей