7.7 Работа со справочником

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Dem0lisher, 23 дек 2009.

  1. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Здравствуйте!
    Нужна помощь в работе со справочником:
    Есть СпрСотр(Сотрудники), есть документ "Приказ об увольнении" хочу, чтобы при выборе ФИО сотрудника из справочника графы документа "Отдел"и"Должность",заполнялись автоматом из этого самомго СпрСотр.
    Пробовал следующий код-ничего не получается:

    Процедура ВводНового()
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
    СпрСотр.ВыбратьЭлементы();
    Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
    Если ФИО=СпрСотр.Наименование Тогда
    Отдел=СпрСотр.Отдел;
    Должность=СпрСотр.Должность;
    Прервать;
    Иначе
    Продолжить;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
  2. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Пользуемся тэгами.
    А что не получается, описание ошибки?
  3. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Никаких ошибок не выводит-просто не выполняет то, что я от этого кода требую
  4. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Прогони через Отладчик.
  5. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Возможно ето периодические реквизиты, пробуй
    Код:
    Отдел=СпрСотр.Отдел.Получить(некаяДата);
    
    
  6. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Нет, реквизиты не периодические, возможно я ошибся в чем-то базовом.. общеизвестном ибо я недавно начал вспоминать язык..
    Пробовал напрямую создать процедуру тест() чтобы проверить можно ли вообще получить доступ к тому реквизиту
    Код:
    Процедура Тест()
    Отдел="Отдел маркетинга";
    
    
    Но и этот код также не имел успеха, при том, что ошибок тоже никаких не выводилось..
    Может это потому, что реквизит отдел на форме документа надо выбирать из справочника? может это как-то помешать?
  7. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Смотри вот мой пример рабочий:
    Код:
    Процедура Заполнить()
    Спр = СоздатьОбъект("Справочник.ТвойСпр");  
    Спр.ВыбратьЭлементы();
    
    Пока Спр.ПолучитьЭлемент()=1 Цикл 
    
    НоваяСтрока();
    
    Співробітник =Спр.ТекущийЭлемент();
    РеквизитТЗ = Спр.ТекущийЭлемент().Реквизит//.Получить(ДатаДок);
    ...
    КонецЦикла;
    КонецПроцедуры
    
    
  8. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Ну во-первых почему "НоваяСтрока()" ? Она будет работать если в этом документе все реквизиты шапки?
    Прилепил кнопку заполнить() на форму документа и добавил кусок вашего кода-он действительно рабочий, но нет проверки по ФИО, т.е он просто первого попавшегося из справочника заносит, а как сделать, через "Если" чтобы проверялось введенное ФИО в форму документа и после этого в этом цикле находился имеено тот сотрудник?
    Обязательно ли делать кнопку "Заполнить"? или можно привязать процедуру "заполнить()" к формуле в свойствах реквизита?
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    ну, не знаю...
    в табличной части создаешь два текстовых поля: в одном в формуле пишешь Сотрудник.Отдел, во втором Сотрудник.Должность
  10. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Фобец прав, я перепутал с предыдущим вопросом, подумал что надо перегнать в в тз..
  11. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Спасибо огромное всем, У меня сейчас работает следующий код:
    Код:
    Процедура Заполнить()
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
    Если ФИО.Выбран()=1 Тогда
    СпрСотр.НайтиЭлемент(ФИО);
    Отдел=СпрСотр.Отдел;
    Должность=СпрСотр.Должность;
    КонецЕсли;
    КонецПроцедуры
    
    
    
    Т.е не требуется никакого перебора и условий с конструкциями типа "ПРервать"
    Н или "Продолжить"о остается непонятным, почему если установить реквизиту "Отдел" тип Справочник.Сотрудники ничего не работает, а если тип Справочник.Отделы-все работает, хотя Поиск идет именно по СпрСотрудники, а не по отделам? Если Ставить тип СпрСОтрудники, то вообще нельзя получить достпу к этом уреквизиту.. почему?
  12. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    потому что Отдел у сотрудника это справочник Отделы.
    P.S. В этом случае чтобы обойтись без перебора попробуй поставить в Дополнительно Сотрудник.Отдел
  13. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Так и не понял, что и куда.. может что-то не так делаю? Вы говорите о том, чтобы я реквизиту Отдел установил тип "Справочник.Сотрудники.Отдел" ?? или как? Объясните плиз
  14. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Если есть такой реквизит - см выше. Если нет, то просто создаем текстовое поле и в формуле пишем Сотрудник (или как у вас реквизит в документе называеття, который к справочнику Сотрудники обращается) и нужный реквизит, который вы хотите отображать

    Вложения:

    • Pole.JPG
      Pole.JPG
      Размер файла:
      46,8 КБ
      Просмотров:
      23
  15. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Ахха!! Ясно! Спасибо за скриншот! =)

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