|
ПечФорма: вывод по условию | ☑ | ||
---|---|---|---|---|
0
листопад
13.04.14
✎
13:40
|
Подскажите, почему не срабатывает условие при выводе печ.формы:
Границы = Справочники.ВидыГраниц.НайтиПоНаименованию("Граница1"); Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница1"); ТабличныйДокумент.Вывести(ОбластьМакета); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница2"); ОбластьМакета = Макет.ПолучитьОбласть("П_35"); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; Объясняю: в спр.Договоры добавлен реквизит "ВидГраницы" (ссылка на спр.ВидыГраниц). И мне надо, в зависимости от значения реквизита выводит ттот или иной текст в печ.форму. |
|||
1
Wobland
13.04.14
✎
13:46
|
потому что оно принимает значение ложь. ваш К.О.
|
|||
2
XLife
13.04.14
✎
13:46
|
(0) объясни вот это v8: Формат даты в виде "__" ______ _____ г.
|
|||
3
Wobland
13.04.14
✎
13:47
|
(2) пару-тройку лет назад товарищ и на мисте спалился. две одинаковые темы под разными полами
|
|||
4
листопад
13.04.14
✎
14:00
|
(1) Сейчас всегда выводит Область("ПечГраница1") и Область("ПечГраница2"), независимо от того какакя граница указана в реквизите. Хотя я и поставила условие в (0)...
(2), (3) На инфостарте это не я. Сама незнаю, кому именно мои темы понадобилось дублировать на другом ресурсе. Если вы внимательно посмотрите, то увидите, что на инфостарте тема была создана уже после того, как я получила ответ на мисте. И на инфостарте в этой теме писал всего один человек. |
|||
5
Alex S D
13.04.14
✎
14:02
|
(4) брехня какаято.. перезапустите конфигуратор
|
|||
6
Alex S D
13.04.14
✎
14:02
|
и ТабличныйДокумент.Вывести(ОбластьМакета); надо вынести за условие. че за овнокод
|
|||
7
Wobland
13.04.14
✎
14:06
|
(4) значит, выполняется не то, что ты видишь
|
|||
8
Wobland
13.04.14
✎
14:07
|
(4) 01:11 Ну может примерчик какой-нибудь покажите...
и в 01:23 создаётся тема на инфорстарте |
|||
9
листопад
13.04.14
✎
14:10
|
Не получается...
(5) Это во внеш.печ.форме код. Конфигуратор не при чем. |
|||
10
листопад
13.04.14
✎
14:16
|
Исправила код. Теперь никогда не выводит Область("ПечГраница1"). Т.е. в условие ошибка. Как правильно написать?
Границы = Справочники.ВидыГраниц.НайтиПоНаименованию("Граница1"); //Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда Если Шапка.ДоговорКонтрагента.ВидГраницы.Наименование = Границы Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница1"); ТабличныйДокумент.Вывести(ОбластьМакета); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница2"); ОбластьМакета = Макет.ПолучитьОбласть("П_35"); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; |
|||
11
Alex S D
13.04.14
✎
14:17
|
какая ошибка? вы че первый раз тут?
|
|||
12
листопад
13.04.14
✎
14:18
|
Все время выводит Область("ПечГраница2"), т.е. это в случае, если не находит. Хотя находить должен.
|
|||
13
листопад
13.04.14
✎
14:19
|
(11) Ошибки нет. Неправильно области в макете выводит. Условие не срабатывает:
Границы = Справочники.ВидыГраниц.НайтиПоНаименованию("Граница1"); Если Шапка.ДоговорКонтрагента.ВидГраницы.Наименование = Границы Тогда |
|||
14
Alex S D
13.04.14
✎
14:21
|
а отладчик включить?
|
|||
15
листопад
13.04.14
✎
14:54
|
(14) Тогда придется новую тему создавать:
Как пользоваться отладчиком во внеш.печ.форме. |
|||
16
Wobland
13.04.14
✎
14:54
|
а когда наименование (строка) бываетравно ссылке?
|
|||
17
Wobland
13.04.14
✎
14:56
|
||||
18
Мимохожий Однако
13.04.14
✎
15:00
|
"ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница2");
ОбластьМакета = Макет.ПолучитьОбласть("П_35"); ТабличныйДокумент.Вывести(ОбластьМакета); " Зачем дважды присваивать к одной переменной разные области макета? ... (0)Отладчиком встань на условие и посмотри |
|||
19
Torquader
13.04.14
✎
15:05
|
(15) И что там такого ?
Нужно найти, где "развернута" форма и открыть её на отладку. |
|||
20
Alex S D
13.04.14
✎
15:07
|
(15) это даст на много больше пользы чем эта тема..
|
|||
21
листопад
13.04.14
✎
15:07
|
(18) Вот мой итоговый код. Извините, раньше я не тот выкладывала.
Границы = Справочники.ВидыГраниц.НайтиПоНаименованию("Граница1"); //Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда Если Шапка.ДоговорКонтрагента.ВидГраницы.Наименование = Границы Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница1"); ТабличныйДокумент.Вывести(ОбластьМакета); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница2"); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; Мне кажется проблема подсказана в (1) и (16). Но как ее решить??? |
|||
22
Wobland
13.04.14
✎
15:08
|
сравнивать значения одинаковых типов
|
|||
23
Wobland
13.04.14
✎
15:08
|
(20) если уж человек за столько лет не научился..
|
|||
24
Alex S D
13.04.14
✎
15:08
|
а если граница не найдена?
|
|||
25
Torquader
13.04.14
✎
15:09
|
Когда мы что-то находим по наименованию, то получаем в ответ ссылку, а не строку, а Наименование - всегда строка.
|
|||
26
Alex S D
13.04.14
✎
15:09
|
(23) ну никогда не поздно... я считаю..
|
|||
27
Torquader
13.04.14
✎
15:09
|
Кстати, можно вставить "Сообщить(ТипЗнч(Границы))", чтобы было понятнее, с чем мы имеем дело.
|
|||
28
Wobland
13.04.14
✎
15:10
|
Область="ПечГраница"+?(Шапка.ВидГраницы=ПерваяГраница, 1, 2);
ТабДок.Вывести(Область) |
|||
29
Alex S D
13.04.14
✎
15:10
|
(27) типа "Если 1=1 то сообщить("ку-ку")" как пишут иногда )
|
|||
30
Wobland
13.04.14
✎
15:11
|
(28) это если не хочется одну область заделать
|
|||
31
Torquader
13.04.14
✎
15:12
|
(28) Ты вот такой код пишешь для (0), чтобы (0) понял, что он полный ноль ?
|
|||
32
Wobland
13.04.14
✎
15:12
|
(31) надеюсь, у человека на это ума есть
|
|||
33
Torquader
13.04.14
✎
15:15
|
(32) Человек с ником "листопад" к дятлу находится очень близко, так что объясняйте так, чтобы клюв не затупился.
|
|||
34
Wobland
13.04.14
✎
15:17
|
(33) подождём реакции на (16) и (25) ;)
|
|||
35
Torquader
13.04.14
✎
15:19
|
(34) Как раз по пониманию написанного мы и определим "коэффициент близости к дятлу".
|
|||
36
листопад
13.04.14
✎
15:20
|
(28) У меня несколько условий, на форум я выложила всего два, для простоты. Поэтому конструкция ? не подойдет.
(31) Не он а ОНА. (33) Стыдно не незнать, стыдно не учиться. |
|||
37
Torquader
13.04.14
✎
15:22
|
(36) Ну и, та, которая ОНА, думает, что сравнивать разные типы и ожидать, что они совпадут - вполне можно ?
Хотя, если наименования нет, то будет НЕОПРЕДЕЛЕНО. |
|||
38
Wobland
13.04.14
✎
15:24
|
(36) уверен, что если глянуть твои старые темы, проблемы будут схожи. стыдоба
|
|||
39
листопад
13.04.14
✎
15:36
|
Написала, для проверки:
... Границы = Справочники.УровниКУ.НайтиПоНаименованию("Граница1"); Сообщить(Границы); Сообщить(ТипЗнч(Границы)); ... В результате в окне Сообщить, по первому - ничего не вывел, по второму Сообщить - вывел "Виды Границ". |
|||
40
Wobland
13.04.14
✎
15:37
|
таак. шифт+ф9 это делает гораздо качественнее
|
|||
41
Torquader
13.04.14
✎
15:39
|
(39) Не иначе как вам вернули пустую ссылку ^_^
|
|||
42
Wobland
13.04.14
✎
15:42
|
поделюсь мудростью богов
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. |
|||
43
листопад
13.04.14
✎
15:44
|
(41), (42) И как быть в этом случае???
|
|||
44
Wobland
13.04.14
✎
15:46
|
(43) это ты нам расскажи, как быть, если у тебя Границы1 нету
|
|||
45
листопад
13.04.14
✎
15:47
|
(44) ОНА ЕСТЬ!!!
|
|||
46
Torquader
13.04.14
✎
15:48
|
(45) Может быть, и есть, но называется не совсем так.
|
|||
47
листопад
13.04.14
✎
15:49
|
(44), (45) - все элементы этого справочника - предопределенные, вводились в конфигураторе.
|
|||
48
листопад
13.04.14
✎
15:49
|
(46) Я копировала из этого справочника и вставляла в код, т.е. ошибиться не могла.
|
|||
49
Torquader
13.04.14
✎
15:50
|
(47) Так Граница1 - это предопределённое имя элемента в метаданных, а не наименование ?
И чего мы тогда по наименованию ищем ? Справочники.УровниКУ.Граница1 - что возвращает ? |
|||
50
Wobland
13.04.14
✎
15:51
|
(45) убеди нас
|
|||
51
Torquader
13.04.14
✎
15:51
|
(48) При копировании кода нужно понимать, что он делает - иначе можно получить феерический бред (слава богу, в нашем случае этого не случилось).
|
|||
52
hhhh
13.04.14
✎
15:51
|
(48) "Граница 1"
|
|||
53
Torquader
13.04.14
✎
15:59
|
Ну и где этот "опавший листочек" ?
|
|||
54
листопад
13.04.14
✎
15:59
|
(49) УРА! Мы уже почти у цели. Исправила код, теперь он находит Границу1 в справочнике, условие опять не срабатывает!
// Границы = Справочники.ВидыГраниц.НайтиПоНаименованию("Граница1"); Границы = Справочники.УровниКУ.Граница1; //Если Шапка.ДоговорКонтрагента.ВидГраницы.Наименование = Границы Тогда Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница1"); ТабличныйДокумент.Вывести(ОбластьМакета); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ПечГраница2"); ТабличныйДокумент.Вывести(ОбластьМакета); КонецЕсли; |
|||
55
Wobland
13.04.14
✎
16:00
|
(54) от такой вот вид границы у договора
|
|||
56
листопад
13.04.14
✎
16:00
|
+(54) Проблема в этой строчке, я полагаю:
Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда Как теперь сравнить это найденное предопределенное значение справочника? |
|||
57
Wobland
13.04.14
✎
16:03
|
(56) надо, чтобы с обеих сторон были одинаковые типы
|
|||
58
Torquader
13.04.14
✎
16:03
|
ДоговорКонтрагента - это кто ?
|
|||
59
листопад
13.04.14
✎
16:10
|
(58) Это тоже справочник, типовой, ДоговорыКонтрагентов. А в моем случае он служит реквизитом на форме док-та РеализпцияТиУ. Вообще это я корректирую типовую печ.форму Акта у док-та РеализацияТиУ.
Так вот, у справочника ДоговорыКонтрагентов добавлен реквизит "ВидГраницы" (ссылка на спр.ВидыГраниц). Мне его теперь надо сравнивать по условию. |
|||
60
Torquader
13.04.14
✎
16:14
|
(59) А УровниКУ - это кто тогда ?
|
|||
61
листопад
13.04.14
✎
16:15
|
Опечатка:
Так вот, у справочника ДоговорыКонтрагентов добавлен реквизит "ВидГраницы" (ссылка на спр.ВидыГраниц). Мне его теперь надо сравнивать по условию. Читать так: Так вот, у справочника ДоговорыКонтрагентов добавлен реквизит "УровниКУ" (ссылка на спр.УровниКУ). Мне его теперь надо сравнивать по условию. |
|||
62
Wobland
13.04.14
✎
16:15
|
(61) с небольшими замечаниями код одобрен
|
|||
63
листопад
13.04.14
✎
16:20
|
(61) Я вас всех запутала!!!
Границы и ДоговорКонтрагента.ВидГраницы это один и тот же справочник!!! |
|||
64
Wobland
13.04.14
✎
16:21
|
(63) да вроде нет. я себя хорошо чувствую
|
|||
65
листопад
13.04.14
✎
16:24
|
Т.е. Границу мы нашли (Границы = Справочники.УровниКУ.Граница1;). Как теперь сравнить найденное значение с предопределенным элементом справочника? Если пишу так:
Если Шапка.ДоговорКонтрагента.ВидГраницы = Границы Тогда то не находит! |
|||
66
Torquader
13.04.14
✎
16:25
|
(63) Так он называется УровниКУ или нет ?
|
|||
67
Torquader
13.04.14
✎
16:26
|
(65) Мы не элемент нашли, а получили его "ссылку", теперь её и будем сравнивать с нужной ссылкой, но, есть подозрение, что ссылки из разных справочников.
|
|||
68
Wobland
13.04.14
✎
16:27
|
(65) не "не находит", а считает разными
|
|||
69
hhhh
13.04.14
✎
16:29
|
(65) области в макете проверьте. Наверняка ПечГраница1 = ПечГраница2
|
|||
70
листопад
13.04.14
✎
16:29
|
(66) Да
|
|||
71
Wobland
13.04.14
✎
16:29
|
(68) а, ну или считает одинаковыми, а Михаил Иванов нам тут заливает
|
|||
72
листопад
13.04.14
✎
16:29
|
(67) Нет, справочники ОДИНАКОВЫЕ.
|
|||
73
Torquader
13.04.14
✎
16:31
|
(72) Так одинаковые или один и тот же ?
|
|||
74
листопад
13.04.14
✎
16:35
|
(73) Один и тот же.
|
|||
75
Torquader
13.04.14
✎
16:37
|
(74) Замечательно - теперь смотрим, что у нас в договоре:
Сообщить(Шапка.ДоговорКонтрагента.ВидГраницы); Сообщить(ТипЗнч(Шапка.ДоговорКонтрагента.ВидГраницы)); |
|||
76
листопад
13.04.14
✎
16:45
|
(75) В результате в окне Сообщить^
по первому выдал "Граница2" по второму Сообщить - вывел "Виды Границ". |
|||
77
Wobland
13.04.14
✎
16:46
|
(76) -> (55)
|
|||
78
листопад
13.04.14
✎
16:47
|
Ой, сейчас внимательно протестировала. Оказывается, все у нас получилось!!!
Всем СПАСИБО! Особая БЛАГОДАРНОСТЬ Torquader!!! :*) |
|||
79
Wobland
13.04.14
✎
16:51
|
кто такой Михаил Иванов и почему он целует Торквадера? ;)
|
|||
80
Torquader
13.04.14
✎
17:23
|
Не надо меня целовать - лучше налейте чего-нить вкусного.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |