7.7 Открытие списка справочника с отбором

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

  1. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Добрый день!!!
    Имеется Справочник "Авто" с реквизитом "Владелец" (тип Справочник "Контрагенты") и соответственно справочник "Контрагенты".
    Создаем документ и в нем реквизиты "Контрагент" и "Авто".
    После выбора "контрагента" выбираем "авто". Как при открытии списка справочника установить отбор по реквизиту "Владелец"?
    Есть метод УстановитьОтбор(Тип, Значение), но не могу понять куда его вписать в код, чтобы при нажании "Авто" открывался список с этим отбором по контрагенту.
    Если при открытии списка справочника, то как туда передать значение "Контрагент" из документа?
    Подскажите, пожалуйста!!!
    Спасибо.
  2. alvenav
    Offline

    alvenav Опытный в 1С

    Регистрация:
    7 янв 2009
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    В справочник при открытии передаешь параметр "Контрагент" (это выбранный тобою контрагент), в модуль справочника в процедуру приоткрытии() пишешь пару строк

    Парам = Форма.Параметр;
    УстановитьОтбор("Контрагент",Парам.Получить("Контрагент"));

    Пробуй.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Легче на форме в свойствах авто (закладка дополнительно) указать что Авто "связан с" Владелец. Все будет автоматом
  4. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    "связан с" - недоступен, скорее всего из-за того, что "Авто" не подчинен "Контрагент" (изменять не хотелось бы)
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Тогда по варианту от alvenav. Хотя странно - зачем тебе в авто лишний реквизит? Ведь у автомобиля не может быть несколько владельцев.......
  6. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Вызвало ошибку:
    {Справочник.Автомобили.ФормаСписка.ФормаСписка.Модуль(57)}: Значение не представляет агрегатный объект (Получить)


    Да странно, но такая конфигурация (может уже и доработанная умельцы изменяли, а может и типовая, не знаю), изменять не хочется. Конфигурация АльфаАвто(древний релиз от 2005-2006года)
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для того чтобы не было ошибки ты должен передать в форму в качестве параметра СписокЗначений.

    Код:
    Сп=СоздатьОбъект("СписокЗначений");
    Сп.ДобавитьЗначение(Контрагент,"Контрагент");
    ОткрытьФорму("Справочник.ТвойСправочник.ФормаСписка",Сп)
    
    
    А можно и не заморачиваться, а передавать весь контекст целиком. Так лучше
    FreeekA нравится это.
  8. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Это верно, но я то не на кнопку нажимаю, чтобы можно было использовать метод ОткрытьФорму().
    а это происходит при нажатии на "..." реквизита документа, а не формы, и список "Авто" открывается автоматически.
    Как в этом случае передать "Контрагент"
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используйте процедуру

    ПриНачалеВыбораЗначения(<ИдентЭлемДиалога>,<ФлагСтандОбр>)
    Назначение:
    Предопределенная процедура после выбора значения в форме выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с ''педалькой'').
    <ИдентЭлемДиалога> - идентификатор элемента диалога, которым инициализирован выбор значения.
    <ФлагСтандОбр> - флаг, изначально, при вызове процедуры равен 1, если в теле процедуры значение этого параметра поменять на 0, то стандартный процесс выбора значения не будет происходить.
    Код:
    Если ИдентЭлемДиалога="Авто" Тогда
    ФлагСтандОбр=0;
    //здесь текст вызова. Только нужно сначала проверить на пустое значение контрагента
    КонецЕсли;
    
    
  10. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое!
    Буду пробовать

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