Вход | Регистрация

1С:Предприятие ::

Метки:

помогите начинающему с многоуровневыми справочниками

Я
   Storm
30.07.04 - 13:50
Есть справочник сотрудники, одним из реквизитов которого является поле подразделение типа справочник.подразделения, так вот этот справочник.подразделения является многоуровневым. В справочник.подразделения для каждой записи есть название подразделения и его код. Если получать переменную через справочник.сотрудники.подразделение то в ней будет название подразделения (и то как то странно выдает, т.е. название будет (например маркетинг), а если его в Если с чем нибудь сравнивать (например с "маркетинг") то они не совпадают). А как можно зная название получить код?
 
 
   Guk
 
1 - 30.07.04 - 13:58
(0) Сотры=СоздатьОбъект("Справочник.Сотрудники");
Если Сотры.Найти<по чему-нибудь>(...)=1 Тогда
    Сообщить(Сотры.Подразделение.Код);
КонецЕсли;

Это?
А вообще-то ничего не понятно...
   Michael99
 
2 - 30.07.04 - 14:00
справочник.сотрудники.подразделение.КОД
   Michael99
 
3 - 30.07.04 - 14:06
+(2) справочник.сотрудники.подразделение - это эемент справочника и сравнивать его можно только спеременной типа элемент справочника.
Визуальное представление этой переменной определяется параметром Основное представление справочника.
Два атрибута справочника Код и Наименование явл. предопределнными.
Т.е сравнивать надо например
Врег(СокрЛП(справочник.сотрудники.подразделение.Наименование))="МАРКЕТИНГ"
   Storm
4 - 30.07.04 - 14:28
Уточняю.
В общем пишу так:
Процедура Отчет2()
 Таб = СоздатьОбъект("Таблица");
 Таб.ИсходнаяТаблица("Отчет2");
 Таб.ВывестиСекцию("Шапка");
 Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
     Спр=СоздатьОбъект("Справочник.Сотрудники"); 
     Спр.ВыбратьЭлементы();
//    Спр.ИспользоватьДату(ДатаДок);

    
    Пока Спр.ПолучитьЭлемент()=1 Цикл
        
    //    Если Спр.Подразделение.Получить(ДатаДок)="маркетинг" Тогда

            
            Таб.ВывестиСекцию("Строка_1");
   //    КонецЕсли;

        КонецЦикла;
 Таб.ВывестиСекцию("Подвал");
 Таб.ТолькоПросмотр(1);
 Таб.Показать("Отчет2","");
КонецПроцедуры 

В таблице:
спр.Подразделение.код.получить(датадок)
на это ругается: Поле агрегатного объекта не обнаружено (код)
Без .код в поле таблицы выдает названия отделов (маркетинг и т.д.), но если раскоментировать Если то в таблице значений не будет вообще.
   Michael99
 
5 - 30.07.04 - 14:33
//    Если Спр.Подразделение.Получить(ДатаДок)="маркетинг" Тогда 

           Таб.ВывестиСекцию("Строка_1"); 
 //    КонецЕсли; 



ТекПодр=Спр.Подразделение.Получить(ДатаДок);
Если Врег(СокрЛП(ТекПодр.Наименование))="МАРКЕТИНГ" Тогда
КонецЕсли;
   Storm
6 - 30.07.04 - 14:59
С Если почти разобрался. Спасибо.
Может подскажете что ему не нравится в выражении ="инж.технические работники" (там где маркетинг), длинное, или ему точка не нравится (с маркетингом ОК, с таким выражением ничего не находит)?
И с .код вопрос остается открытым. Если справочник.сотрудники.подразделение имеет тип справочник.подразделения, в справочник.подразделения обязано быть поле код, то почему ругается на спр.Подразделение.код.получить(датадок), может нужно спр.Подразделение.получить(датадок).код (сам знаю что странное выражение, но вдруг? или что то подобное)
   Storm
7 - 30.07.04 - 15:09
Дополнение: работает конструкция 
Если (Нрег(СокрЛП(Спр.Подразделение.Получить(ДатаДок)))="маркетинг") Тогда
выдает то что должно быть в .наименование, куда же делся код?
   Michael99
 
8 - 30.07.04 - 15:10
Функция Получить используется для работы с ПЕРИОДИЧЕСКИМ реквизитами справочника.
РЕквизить Подразделение является периодичестким для справочника Сотрудники.
Метод возвращает значение реквизита на поределенную дату.
Т.е ты получаешь элемент справочника Подразделения .

А выражение не странное а правильное.
   Storm
9 - 30.07.04 - 15:25
УРА. Все работает кроме "инж.технические работники", это конечно можно обойти, но всеже интересно узнать в чем же здесь может быть подвох?


Список тем форума
Рекламное место пустует   Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует