Делаю Цикл по реквизитам шапки. Как обойти реквизит шапки, отсутствующий на форм #97550


#0 by DeiMos
Что-то туплю под конец дня...Как обойти реквизит шапки, отсутствующий на форме? Привожу пример кода:
#1 by Пим Сибирский
Можно наверное так попробовать:....Попытка....
#2 by SlonSpb
Уже конец ? Весело. Вообще, я года три назад просто всадил попытка-исключение, и всё катило. Но это академически неверно......
#3 by DeiMos
Туплю под конец дня...Дело в том, что у меня есть реквизит шапки "ВидОтпуска", но на форме его нет. В вышеприведённом коде - НЕ РАБОТАЕТ условие "<>" (неравенство).Т.е. цикл всё-равно пытается найти реквизит формы "ВидОтпуска"и, как следствие - ошибка"Поле агрегатного объекта не обнаружено (ВидОтпуска)"
#4 by VZ
"Как обойти реквизит шапки, отсутствующий на форм" - ты уже обходишь. В метаданных нет реквизитов формы. А вот узнать, есть ли на форме реквизит документа, из метаданных никак. FormEx тебе в зубы...
#6 by Sergei2k
Для Счетчик = 0 по Метаданные.Документ.Реквизиты.Количество Цикл...КонецЕсли
#7 by БаГ
А засунь все это в Попытку-Исключение. Тогда для тех, которых нет на форме - ничего не случиться.Или подожди, пока придет добрый друг всех реквизитов формы - АЛЬФ и объяснит 8-)
#8 by panda
а так не проще:
#9 by smaharbA
все верно, а Вот зачем Шаблон? в этом случае?
#10 by ёж
Если уж пользоваться метаданными, тогда так будет правильнее:КонецЦикла;Но тебе по моему нужно то, что есть в типовых конфигурациях - процедура глЕстьРеквизитШапки
#12 by DeiMos
Остальные - нет. Особенно неправы (5,6,8). Сейчас проверю вариант ...
#13 by panda
9 - Не только это не надо :)если уж надо циклом, то так:  Для н = 1 По Метаданные.Документ("ПриказПоОтпуску").РеквизитШапки Цикл
#14 by SlonSpb
© во-первыхъ...Далее, волнует не наличие реквизита вообще, а его ВЫВЕДЕННОСТЬ на форму.DeiMos - говорю же - попытка реквизит.доступность, ой, ошибка, поехали дальше.
#15 by Sergei2k
Вы б блин писали для какой 1ски тема
#16 by panda
P.S. Про общие реквизиты ты забыл или это так и задумано?
#17 by sdaf
мда...невнимательно прочел вопрос...попытка-исключение жжот!
#18 by ёж
че его проверять (ТиС с шут знает какого года юзает). кстати тебе тоже самое сказал, что и я. я только не понял толком что тебе надо. возможно ты некорректно тему поставил.
#19 by БаГ
В спрашивается не о том, как найти имена всех реквизитов шапки, а как сделать недоступными все реквизиты шапки, которые ЕСТЬ НА ФОРМЕ.1) Сделать СЗ, загнать туда имена существующих реквизитов.2) Через Метаданные и Попытку-Исключение3) Через FormEx.Только метод не учитывает, что на форме могут быть кнопки очистки реквизитов (и другие элементы диалога, изменяющие реквизиты) ...
#20 by ёж
14 - ВЫВЕДЕННОСТЬ !точно. я вопрос не понял. можешь мою лабуду не читать.
#21 by ёж
19, ты по-моему тоже не то понял :) слушай, 0! объясни нам точно что тебе нужно, мне прям интересно уже.
#22 by DeiMos
: Мне нужно, чтобы если реквизит шапки - отсутствует на форме,то при обходе реквизитов шапки - не выдавалось сообщение об ошибке в окно сообщений.
#23 by DeiMos
Сейчас сделал так:  Всё равно выводятся сообщения:=================================================================Поле агрегатного объекта не обнаружено (ВидОтпуска)Поле агрегатного объекта не обнаружено (КорректируемыйДокумент)Поле агрегатного объекта не обнаружено (Дополнительный)
#24 by АЛьФ
(с) DeiMosВы - настоящий петербуржец, если:1. Считаете, что Петербург - лучший город земли, хотя в других городах не были никогда и все что меньше Петербурга - деревня, а Москва - все равно хуже. В Москве, вы, правда, тоже не были.2. Считаете себя образованным человеком, хотя с трудом закончили 8 классов школы.3. Из высших уче(факинг матофильтр!)бных заведений вы, возможно, закончили ПТУ. Или автошколу.4. Ходите в грязных, стоптанных ботинках и рваной кожаной куртке, купленной на Апрашке.Неотъемлемый атрибут вашего наряда - полуторалитровая пивная бутылка в одной руке и вонючая дешевая сигарета - в другой.5. Самое длинное путешествие в вашей жизни - часовая поездка на электричке на дачу.6. Не знаете, где в Петербурге находятся вокзалы, за исключением Балтийского (или Финляндского) - потому что с него вы ездите на дачу.7. Считаете, что сам факт вашего рождения в Петербурге ставит вас гораздо выше остальных и позволяет вам относиться к другим высокомерно и пренебрежительно.Считаете упоминание о месте вашего рождения и жительства окончательным, победным аргументом в споре, вне зависимости от уровня культуры и образования вашего оппонента и его правоты.8. Считаете, что вся грязь и мусор в городе - от приезжих, но при этом уверены что большой город не может быть чистым. И вообще, понаехало тут из деревни! О том, что сами вы петербуржец в лучшем случае в третьем поколении вы предпочитаете не вспоминать.9. Гордитесь тем, что Петербург называют культурной столицей, правда в Эрмитаже первый и последний раз были классе в третьем школы. В других музеях не были никогда, но знаете, что они где-то есть.10. Упорно называете подъезд парадной, несмотря на отсутствие черной лестницы и неимоверной загаженности этой вашей парадной.11. Интерьер вашей квартиры мало отличается от парадной - ремонт последний раз вы делали 20-25 лет назад. Между отвалившимися обоями на газете, на которую они были наклеены можно прочитать приветствие Л. И. Брежнева участникам Олимпиады-80.12. Считаете вашего соседа, поставившего стеклопакеты и сделавшего ремонт буржуем и кровопийцей трудового народа, к которому вы несомненно причисляете себя, хотя и перебиваетесь случайными заработками и временной работой. Поэтому вы воруете его почту из ящика и пачкаете его дверь.13. Квартплату вы не платите, но это не мешает вам возмущаться грязью на лестнице и во дворе.14. Считаете "Зенит" приличной футбольной командой.15. Вы злитесь, когда все это читаете. А то, что все это правда, вас просто бесит.
#25 by БаГ
#26 by DeiMos
: Ехидина... Сейчас сделал так: Выдаются те же самые сообщения...Ничего не понимаю уже...Маразм какой то...
#27 by DeiMos
: Это проще всего. Отпадает такой вариант.По причинам:1) Руками не хочу перечислять2) А если добавятся/убавятся/изменятся реквизиты?
#28 by Anton R
Тебе надо определить каких реквизитов нет или просто чтобы не выдавались сообщения ?
#29 by БаГ
>1.Ручками не хочу перечислятьОх, лень-матушка. Если реквизитов много - то кто мешает один раз перебрать их через "Метаданные", выводя через "Сообщить", а потом через буфер воткнуть весь этот список в текст модуля?>2.А если добавятся...Да уж. А что, настолько часто добавляются?К тому же, мой способ позволяет:- управлять видимостью/доступностью не только реквизитов документа, но и любых других элементов диалога- создав несколько различных списков имен реквизитов, настраивать видимость/доступность различных групп реквизитов в зависимости от прав, состояния документа и т.д.- создав несколько различных списков имен реквизитов решать и другие задачи, напр. контролировать, чтоб пользователь заполнил все обязательные реквизиты"Метаданнеы
#30 by DeiMos
: Просто чтобы не выдавались сообщения.
#31 by Anton R
#32 by smaharbA
Проверь вот это, работает точно, также и с реквизитами ТЧ и Общими...
#33 by Anton R
+ Тогда просто ОчиститьОкноСобщений; :)
#34 by smaharbA
+ ПроверкаРекв - формула в скрытом тексте на форме,"все от того что плохо ты лежала, и я никак не мог в тебе попасть... Песня про мешень"
#35 by DeiMos
Всё...Кажется, победил...Сделал так:
#36 by АЛьФ
2 Ну-ну...
#37 by Anton R
И что,Шаблон( "[Форма." + Метаданные.ОбщийРеквизитДокумента(н).Идентификатор + ".Доступность]" ); перестал выдавать сообщения для отсутствующих на форме реквизитов ? что-то не верится.
#38 by БаГ
п-фффф. А чем же ЭТО лучше моего варианта?Цитирую:"DeiMos27 - 25.04.2005 - 15:46 :2) А если добавятся/убавятся/изменятся реквизиты? "
#39 by DeiMos
: Этот код уже не выполняется.Смотри условие "Если" - этот отсутствующий реквизит я задал явно в неравенстве.
#40 by АЛьФ
2 Тем что это он САМ придумал, без всяких подсказок. Во!
#41 by Anton R
Круто. Зачем тогда вообще цикл нужен ? Задавай все реквизиты через если. :)
#42 by DeiMos
: Методологически - ничем. Тоже плохое решение.А практически для моего случая - вероятность появления новых реквизитов, которые будут на форме - выше, чем появления тех, которых на форме не будет.
#43 by DeiMos
: Все реквизиты без их явного описания руками - перебираются в цикле.Руками я прописываю - только отсутствующие реквизиты. А их гоооораздо меньше, чем присутствующих. (Точнее - всего 3 штуки.) Один - реквизит шапки, и два общих.
#44 by БаГ
Кстати о лени-матушке. Меня бы просто задолбало каждый раз писатьИ далееЕсли МДдок.РеквизитШапки ля-ля-ляЭто так, к слову...
#45 by Anton R
Это я просто иронизирую. Чем тебе не нравится? Там вроде всё универсально.
#46 by DeiMos
: Согласен.
#47 by БаГ
Есть резон. Но тогда, опять же, проще загнать в СЗ список отсутствующих реквизитов.
#48 by DeiMos
мне не нравится тем, что останется окно сообщений (пусть и чистое). И для этого не надо было бы делать ,достаточно было бы в добавитьОчиститьОкноСообщений;
#49 by Anton R
1. ОкноСообщений можно программно закрыть.2. позволяет определить, есть ли на форме реквизит с заданным идентификатором.
#50 by DeiMos
: Согласен. Вобщем, резюме по итогам:1) Обошёлся без ВК2) "Выбран" - мне бы не помогло, ".Вид", как тут советовали - тоже неверно (возвращает вид значения, а не имя реквизита). Надо было ".Идентификатор"
#51 by АЛьФ
Мда... А ведь можно все сделать просто и красиво... Любят же люди извращаться и искать себе лишние проблемы...
#52 by АЛьФ
+ И даже без ВК (раз уж религия не позволяет).
#53 by DeiMos
: Без применения ВК? Тогда чего молчал и не подсказал КАК?Кстати, ещё сейчас не поздно... : Читай (28,30)
#54 by Anton R
(51, 52) Не томи, показывай...
#55 by DeiMos
Кстати, - оказался гениально прав.Код в  А код в Если Шаблон( "["+Метаданные.Документ("ПриказПоОтпуску").РеквизитШапки(н).Идентификатор+"]" )<>"ВидОтпуска" - Не работает.О как!
#56 by АЛьФ
2 Я подсказал в .
#57 by Anton R
2 В каком пункте ?
#58 by DeiMos
Теперь с чувством удовлетворённости пью чай и размышляю над .Почему так происходит....Загадка...
#59 by DeiMos
Мда уж...Похоже, АЛьФ сурьёзно обиделся на мой прикол.За всех питерцев теперь мне мстить будет ;-) Кстати, процитированным тобой текстом в - это я Guk-а прикалывал.Извини, если задел.
#60 by Anomaly
Понедельник день тяжелый наверное ))даже странно, до чего люди любят усложнять себе жизнь... такая тема...и такая реакция )) А в чем загадка? В том, почему Шаблон("[Контрагент]")<>"Контрагент" например?
#61 by smaharbA
потомучно надо вот такШаблон( "[Метаданные.Документ(""ПриказПоОтпуску"").РеквизитШапки(н).Идентификатор]" ), но всеравно это дурьа всеж попробуй, можно и в глобальник вынести для всех доков будет робить
#62 by Anton R
Надо-же, как можно было забыть про "Форма.получитьАтрибут)" !!!. Наверное, надо спать больше по ночам.
#63 by КонецЦикла
2(all) А вот скажите, как кнопки перебрать все кроме некоторых (типа "Закрыть")? Можно?
#64 by DeiMos
: Угу. Загадка. : Спасибо, попробую.
#65 by Anomaly
это ты серьезно? Вроде на тебя не похоже - просто глазам не верю, читая)) Или ты другой DeiMos?И зачем вообще этот "1с-несовместимый" шаблон, если есть замечательное "ПолучитьАтрибут"?, который клёво работает с Попытка-Исключение ?
#66 by Anton R
Он, наверное, тоже не выспался.
#67 by Муму после всплытия
в список их................... в список)
#68 by panda
+65 и даже готовый год написан еще в ;))
#69 by Anton R
Резюме:
#70 by DeiMos
: Угу. Мне очень стыдно. Туплю и не выспался.
#71 by КонецЦикла
2 У тебя тоже дети маленькие? Или дела взрослые?
#72 by Anomaly
еще бывает, что попадается книжка интересная ))) Да и вообще много разных вариантов
#73 by DeiMos
Засиделись вчера в гостях...
#74 by panda
69+
#75 by АЛьФ
2 Буду.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С