Расходная накладная

Тема в разделе "1C и всё что с ней связано", создана пользователем Delovoy, 22 мар 2008.

Статус темы:
Закрыта.
  1. Delovoy

    Delovoy Гость

    Есть документ "Расходная накладная"
    Есть справочник номенклатуры, состоящий из собственно:
    Номенклатура и Вид номенклатуры (материал или услуга соответсвенно)

    При заполнении табличной части в Расходной накладной, нужно чтобы по полю
    Номенклатура пользователь мог выбрать только записи из справочника Номенклатура с видом материал.

    По идее нужно написать запрос к справочнику с условием что вид=материал, но куда этот запрос потом дальше прицепить ?
     
  2. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    ГУСАРЫ МОЛЧАТЬ!

    Можешь прицепить результат запроса методом
    Код (Text):
    ИспользоватьСписокЭлементов(<?>);
    UseItemList(<?>);
    Синтаксис:
    ИспользоватьСписокЭлементов(<СписокЗначений>)
    Назначение:
    Реализует фильтрацию элементов справочника, используя нединамический фильтр.
    Параметры:
    <СписокЗначений> - необязательный параметр. Значение типа - ''СписокЗначений'' - должен представлять собой список элементов справочника, выбранных для просмотра. Если это значение пустое, то фильтр отключается.
    Замечание:
    Метод доступен только в контексте Модуля формы списка справочника и относится ко всему текущему справочнику.
    Но, тебе, по идее, правильнее было бы воспользоваться методом
    Код (Text):
    УстановитьОтбор(<?>,);
    SetSelection(<?>,);
    Синтаксис:
    УстановитьОтбор(<ИмяОтбора>,<ЗначениеОтбора>)
    Назначение:
    Установить отбор списка справочника.
    Параметры:
    <ИмяОтбора> - строка с именем реквизита справочника (по которому возможен отбор, т.е. взведен флажок ''Отбор по реквизиту'' в свойствах реквизита справочника), по которому установлен отбор. Если это значение пустое, то отбор отключается.
    <ЗначениеОтбора> - необязательный параметр. Значение отбора.
    Замечание:
    Метод доступен только в контексте Модуля формы списка справочника и относится ко всему текущему справочнику.
    т.к. не придется делать никаких запросов :)
     
  3. Delovoy

    Delovoy Гость

    я в 1С совсем недавно и еще спотыкаюсь на элементарных мелочах, поэтому

    УстановитьОтбор(<?>,);

    <ИмяОтбора> - строка с именем реквизита справочника (по которому возможен отбор, т.е. взведен флажок ''Отбор по реквизиту'' в свойствах реквизита справочника), по которому установлен отбор. Если это значение пустое, то отбор отключается.


    Зашел в свой справочник Номенклатуры, нашел реквизит ВидНоменклатуры - но в свойствах реквизита "Отбор по реквизиту" такого нет ...

    Замечание:
    Метод доступен только в контексте Модуля формы списка справочника и относится ко всему текущему справочнику


    Тут, я тоже торможу - модуля формы списка справочника у меня тоже нет, ее нужно создать ?

    И последний вопрос - где этот метод вызывать в модуле Документа РсаходнаяНакладная ?


    П.С. полазил по инету, ответа не нашел - но понял что нужно сказать что у меня 1С 8
     
  4. Typhoon

    Typhoon Гость

    Ну в 1с8 вообще все просто там просто при открытии формы нужно передать параметр тип номенклауры а в процедуре при открытии вписать код

    СписокНоменклатуры.Отбор.ТипНоменклатуры.Установить(Параметр) вот типа того, да и совсем забыл у тебя в списке должна быть колонка тип номенклатуры ее можно добавить и скрыть!

    Если я ответил не понятно могу написать полный кусок кода!
     
  5. Delovoy

    Delovoy Гость

    Спасибо за ответы, все получилось

    Единственное с чем не соглашусь, это с наличием скрытой колонки - эти данные не нужны, и будут только
    зря занимать место и время

    Выкладываю финальный код, надеюсь пригодится еще кому нибудь !

    Код (Text):
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, элемент);
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.СправочникСписок.Отбор.ВидыНоменклатуры.Значение = Перечисления.ВидыНоменклатуры.Материал;
    ФормаВыбора.СправочникСписок.Отбор.ВидыНоменклатуры.ВидСравнения = ВидСравнения.Равно;
    ФормаВыбора.СправочникСписок.Отбор.ВидыНоменклатуры.Использование = Истина;
    ФормаВыбора.Открыть();
    Прописал в процедуре "началоВыбора" поля табличной части "Номенклатура"
     
Статус темы:
Закрыта.

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