• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Delovoy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Delovoy

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

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

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

Zab

но куда этот запрос потом дальше прицепить ?
ГУСАРЫ МОЛЧАТЬ!

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

Delovoy

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

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

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


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

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


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

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


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

Typhoon

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

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

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

Delovoy

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

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

у тебя в списке должна быть колонка тип номенклатуры ее можно добавить и скрыть!

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

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

Прописал в процедуре "началоВыбора" поля табличной части "Номенклатура"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!