Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Странности функции справочника Уровень()  (Прочитано 11402 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Глория
Интересующийся

by
Offline Offline

« : 23-12-2009 09:40 » 

Доброго дня! Сегодня столкнулась с такой странностью. Не могу понять, то ли я бестолковая, то ли это глюк какой. Использовала функцию Уровень() в двух процедурах и получила разные результаты на обних и тех же элементах. Первая процедура ПриВыбореРодителя, вторая ПриСменеИерархии. Справочник двухуровневый. Первый уровень-одни папки, второй элементы. ПриВыбореРодителя на уровне, где папки функция Уровень() вернула 2, а там где элементы вернула 1. Если же отменить иерархию, а потом ее востановить, на уровне где папки возвращается 1, а там где элементы - 2. Т.е. наоборот.  Обработку я конечно написала исходя из факта, но все же любопытно, что за лажа.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 23-12-2009 09:59 » 

А ты пробовала выводить вместе со значением уровня еще и сам элемент (в отладке)? Может просто справочник позиционируется на другой элемент, чем ты ожидаешь?
Платформа - 7.70.027?
Записан
Глория
Интересующийся

by
Offline Offline

« Ответ #2 : 02-02-2010 13:35 » 

Элемент вводила.
Платформа 7.70.025
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-02-2010 16:28 » 

Прилепи сюда текст проблемных процедур - попробую проверить на 027 релизе...
Записан
Глория
Интересующийся

by
Offline Offline

« Ответ #4 : 24-02-2010 20:20 » 

Да ничего особо сложного. Смысл в том, что если пользователь находится на уровне папок, он должен видеть колонку наименование, но не видеть КодЖ и Улицы (есть еще колонки, я их убрала для экономии места). А на уровне элементов все наоборот. И для получения этого результата я в одной процедуре применяю Уровень()=2, а в другой Уровень()=1, хотя, по идее, должно возвращаться одно и то же число.

Процедура ПриВыбореРодителя()
Если Уровень()=2 тогда
   Форма.Наименование.Видимость(1);
   Форма.КодЖ.Видимость(0);
   Форма.Улицы.Видимость(0);
иначе
   Форма.Наименование.Видимость(0);
   Форма.КодЖ.Видимость(1);
   Форма.Улицы.Видимость(1);
КонецЕсли;   
КонецПроцедуры    
 
Процедура ПриСменеИерархии(ВыбСпособ)
Если ВыбСпособ=0 тогда
   Форма.Наименование.Видимость(0);
   Форма.КодЖ.Видимость(1);
   Форма.Улицы.Видимость(1);
иначе  
   Если Уровень()=1 тогда
      Форма.Наименование.Видимость(1);
      Форма.КодЖ.Видимость(0);
      Форма.Улицы.Видимость(0);
   иначе
      Форма.Наименование.Видимость(0);
      Форма.КодЖ.Видимость(1);
      Форма.Улицы.Видимость(1);
   КонецЕсли;   
КонецЕсли;
КонецПроцедуры


« Последнее редактирование: 26-02-2010 06:09 от Sel » Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #5 : 05-07-2010 08:55 » 

Я так понял, речь идет о форме списка справочника.
Если так, то все гораздо проще.
Не надо описывать никаких предопределенных процедур
Просто кидаем на форму текст и прикрепляем к нему функцию типа
Если уровень()=1 тогда
   описываем че надо
инче 
   альтернатива
конецЕсли;
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 06-07-2010 14:01 » 

AndyG, в смысле увидеть - да, ты прав, но если для справочника включен режим редактирования в диалоге то твой способ не подойдет.
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #7 : 07-07-2010 06:48 » 

AndyG, в смысле увидеть - да, ты прав, но если для справочника включен режим редактирования в диалоге то твой способ не подойдет.

Я вот не поленился, набрал код
Режим редактирования определил "в диалоге"
Работает все !

Функция видимостьколонки()
   Если Уровень()=1
   тогда
      Форма.Рекв1.Видимость(1);
      Форма.Рекв2.Видимость(0)
   иначе
      Форма.Рекв1.Видимость(0);
      Форма.Рекв2.Видимость(1)
   КонецЕсли;
   возврат "";
КонецФункции //видимостьколонки

на форме текст со ссылкой на эту функцию
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines