7.7 Отбор в ТЧ по значению реквизита документа

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

  1. TopicStarter Overlay
    AlexSial
    Offline

    AlexSial

    Регистрация:
    2 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Всем доброго времени суток.
    Помогите, пожалуйста, разобраться в следующем вопросе.
    Конфигурация ТиС: 7.70.938 (нетиповая).
    К справочнику "Физические лица" добавлен реквизит "Заказчик" с типом "Справочник.Контрагенты".
    В табличную документа Заявка покупателя добавлен реквизит "Лицо заказчика" с типом "Справочник.Физлица".
    Необходимо, чтобы при выборе в табличной части физлица открывался список физлиц, у которых реквизит Заказчик = Контрагент документа.

    Написал следующий код:

    Код:
    Процедура ДобавитьОтборПоРеквизиту(ТаблицаОтбор, Реквизит, Значение, Условие)
    
    ТаблицаОтбор.НоваяСтрока();
    ТаблицаОтбор.Реквизит = Реквизит;
    ТаблицаОтбор.Значение = Значение;
    ТаблицаОтбор.Условие  = Условие;
    
    КонецПроцедуры
    
    Процедура ПриИзмененииФизЛица()
    
    СписокПараметров = СоздатьОбъект("СписокЗначений");
    СписокПараметров.ДобавитьЗначение("Справочник", "Тип");
    СписокПараметров.ДобавитьЗначение("ФизЛица",	"Вид");
    
    СправочникФизЛиц = СоздатьОбъект("Справочник");	
    СправочникФизЛиц.ДобавитьЗначение("ФизЛица");
    
    ТаблицаОтборПоРеквизитам = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаОтборПоРеквизитам.НоваяКолонка("Реквизит");
    ТаблицаОтборПоРеквизитам.НоваяКолонка("Значение");
    ТаблицаОтборПоРеквизитам.НоваяКолонка("Условие");
    
    СписокФизЛиц = СоздатьОбъект("СписокЗначений");
    СписокФизЛиц.ДобавитьЗначение(СправочникФизЛиц);
    ДобавитьОтборПоРеквизиту(ТаблицаОтборПоРеквизитам, "Заказчик", Контрагент, "=");
    
    СписокПараметров.ДобавитьЗначение(ТаблицаОтборПоРеквизитам, "ОтборПоРеквизитам");
    
    ОткрытьПодбор("Обработка.ПодборОбъектов", "", СписокПараметров);
    
    КонецПроцедуры
    
    Однако при открытии справочника физлиц все равно получаю полный список. Что сделал не так? Или что не доделал?
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А собственно зачем такие сложности?
    Используем ПриНачелеВыбораЗначения в ней уже цикл по справочнику ФизЛица через ВыбратьЭлементыПоРеквизиту
  3. TopicStarter Overlay
    AlexSial
    Offline

    AlexSial

    Регистрация:
    2 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Добавил в процедуру ПриНачалеВыбораЗначения код:

    Код:
    КонтрагентДокумента = Контрагент;
    Если ЭлементДиалога="ФизЛицо" Тогда
    СправочникФизЛиц = СоздатьОбъект("Справочник");
    СправочникФизЛиц.ДобавитьЗначение("ФизЛица");
    СправочникФизЛиц.ВыбратьЭлементы(0);
    Пока СправочникФизЛиц.ПолучитьЭлемент() = 1 Цикл
    СправочникФизЛиц.ВыбратьЭлементыПоРеквизиту(Заказчик,КонтрагентДокумента,0,0);
    КонецЦикла;
    КонецЕсли;
    При проверке на синтаксические ошибки получаю:

    СправочникФизЛиц.ВыбратьЭлементыПоРеквизиту(Заказчик<<?>>,КонтрагентДокумента,0,0);
    {Документ.ЗаявкаПокупателя.ФормаМодуль(1379)}: Переменная не определена (Заказчик)
    При проверке модуля обнаружены синтаксические ошибки!

    Если я правильно понял текст синтаксис-помощника:
    ВыбратьВыбратьЭлементыПоРеквизиту(<ИмяРеквизита>,<Значение>,<РежимИерархии>,<РежимГрупп>)

    <ИмяРеквизита> - строка с именем реквизита, по которому выполняется выборка.

    Какую он требует от меня переменную? В моем случае Заказчик, это не переменная, а реквизит Справочника ФизЛица.
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Заказчик это строка... Имя реквизита. Возьмите в кавычки
  5. TopicStarter Overlay
    AlexSial
    Offline

    AlexSial

    Регистрация:
    2 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Взял. Синтаксических ошибок не обнаружено!
    В режиме предприятия при попытке выбора физлица в строке документа получаю:

    СправочникФизЛиц.ДобавитьЗначение("ФизЛица");
    {Документ.ЗаявкаПокупателя.ФормаМодуль(1379)}:Поле агрегатного объекта не обнаружено (ДобавитьЗначение)
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Я бы на вашем месте сначала почитал руководство по программированию в среде 1с... Для справочника нет метода ДобавитьЗначение....
    Это для СпискаЗначений.
  7. TopicStarter Overlay
    AlexSial
    Offline

    AlexSial

    Регистрация:
    2 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Я тоже его бы почитал))) Только такого не имею и постоянной надобности в программировании нет. Как в таком случае с этим справочником обращаться?
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если вы не программист - лучше заказать доработку. Задача элементарная. Затраты не большие. Больше времени потратите на изучение.
    На данном сайте подсказывают как решить, а не решают за вас. Для понимания нужно обладать хотя бы базовыми знаниями. У вас их просто нет.
  9. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну или как вариант разместите заявку здесь же, но в ветке Работа. Думаю найдуться желающие вам помочь. Любой каприз за ваши деньги.

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