7.7 Фильтрация значений в справочнике при подборе из документов

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

  1. TopicStarter Overlay
    Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Всем доброго времени суток.

    Давненько что то не кодил, тут ступор напал какой то.
    В общем задача в следующем: Самописная конфига, сочиняю в ней ведение серийных номеров для оборудования. Создал справочник СерийныеНомера
    Наименование - строка, инвентаризационный номер
    ЗаводскойНомер - строка, серийный номер
    Местоположение - Справочник.Контрагенты, для отслеживания где оборудование с этим серийником находиться (в базе не реализован партионный учет, так что как то так...)
    Предполагается, что если оборудование на складе организации, то поле Местоположение пустое, если у клиентов, то, соответственно, туда кладем у кого.
    Есть два документа ОтпускОборудованияКлиенту и ВозвратОборудования добавил в оба реквизит СерНом, соответственно тип Справочник.СерийныеНомера. Добавил колонку в табличную часть документов. Теперь цели и задачи таковы, что бы при открытии формы подбора из документа ОтпускОборудованияКлиенту значения справочника СерийныеНомера отображались только те, у которых реквизит Местоположение пустой. А из дока ВозвратОборудования отображались элементы по контрагенту на которого делается документ. Вопрос, собственно, вот в чем - как в форму подбора справочника передать какой документ его открыл, а заодно сразу бы и контрагента. Понятно что через Форма.Параметр, но никак не могу найти подходящий пример как использовать... :(
  2. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Контекст
  3. TopicStarter Overlay
    Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Лаконично... В смысле через Контекст значение Контрагента взять из документа? Это то понятно. Как документ передать в форму справочника? :unsure:
  4. TopicStarter Overlay
    Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    А я вот тут подумал... А если документ не записан так это вообще работать не будет? Может так вообще нельзя сделать?
  5. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
    ОткрытьФорму("Справочник.СерийныеНомера", Контекст)
    
    в форме списка:
    Код:
    Форма.Параметр
    
  6. TopicStarter Overlay
    Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Я сейчас ещё более тупой вопрос задам:
    Код:
    ОткрытьФорму("Справочник.СерийныеНомера", Контекст)
    
    где прописать?
    В документе в табличной части попробовал поставить в колонке в которой должен быть серийный номер, в таком виде выдает ошибку "Открытие окна в данном режиме недоступно!", попробовал ОткрытьПодбор, ошибки нет, но Форма.Параметр в ФормеПодбора справочника СерийныеНомера пустое.
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Используй
    Код:
    Процедура ПриНачалеВыбораЗначения(ИД, Флаг)
    Если ИД="СерНом" Тогда
    Флаг=0;
    Если ПустоеЗначение(Контрагент)=1 Тогда
    Предупреждение("Выберите контрагента!");
    Возврат;
    КонецЕсли;
    Если ТипЗначения(ФормаСетНомер) = 100 Тогда
    ФормаСетНомер.Форма.Закрыть(0);
    КонецЕсли;
    Парам=Контекст;
    ОткрытьФорму("Справочник.СерийныеНомера", Парам);
    ФормаСетНомер=Парам;//
    КонецЕсли;
    КонецПроцедуры
    
    //
    Процедура ПриЗакрытии()
    
    Если ТипЗначения(ФормаСетНомер) = 100 Тогда
    ФормаСетНомер.Форма.Закрыть(0);
    КонецЕсли;			
    
    КонецПроцедуры // ПриЗакрытии()
    
    
    

    В форме списка справочника при открытии получай параметр, делай отбор и применяй метод
    ИспользоватьСписокЭлементов();
    Реквизит справочника Местоположение должен иметь отбор по реквизиту.....
  8. TopicStarter Overlay
    Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Спасибо. Получилось. Я только не понял зачем вот это:
    Код:
     Если ТипЗначения(ФормаСетНомер) = 100 Тогда
    ФормаСетНомер.Форма.Закрыть(0);
    КонецЕсли;
    
    и какое значение должно быть у ФормаСетНомер?
    Кстати на Парам=Контекст; ругается, работает вариант ОткрытьФорму("Справочник.СерийныеНомера", Контекст)
    Премного благодарен за консультацию.
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Сорри. Надо так
    Код:
    Функция ВернутьКонтекст()
    Возврат Контекст;
    КонецФункции
    
    .....
    
    
    Парам=ВернутьКонтекст();
    
    
    ТипЗначения=100 проверяется для того чтобы нельзя было открыть 2 формы справочника одновременно, т.к. вызов не модальный

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