Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:31

Отбор по номенклатуре

Автор Шурик_1985, 14 ноя 2011, 08:31

0 Пользователей и 1 гость просматривают эту тему.

Шурик_1985

Всем привет, нужна Ваша помощь

Проблема вот в чём. Есть Документ Расходная Накладная на ней расположен реквизит: Транспорт с типом значения Номенклатура. Так вот, при выборе реквизита транспорт должно сделать отбор по Номенклатура транспорт.

Транспорт предопределенный

Заранее спасибо!

Вот что я пробовал написать;(


&НаКлиенте
Процедура ТранспортНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура("Предопределенный",ДанныеВыбора );
ПараметрыВыбора = Новый Структура ("Отбор", ЗначениеОтбора);
Форма = ПолучитьФорму("Справочник.Номенклатура.Транспорт.ФормаВыбора", ПараметрыВыбора, Элемент);
Форма.Элементы.Список.Отображение = ОтображениеТаблицы.Список;

Форма.Открыть();
КонецПроцедуры

has

У номенклатуры есть реквизит транспорт чтоли? Не совсем понял, но вот пример отбора
&НаКлиенте
Процедура ТранспортНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)  

  СтандартнаяОбработка = Ложь;

  ФормаВыбора= ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаВыбора", ,Элемент);

  ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
  ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Транспорт");
  ЭлементОтбора.Использование = Истина;
  ЭлементОтбора.ПравоеЗначение = ПолучитьНоменклатураТранспорт();
  ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

  ФормаВыбора.Открыть();

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьНоменклатураТранспорт()
  Возврат Справочники.Номенклатура.Транспорт;
КонецФункции

Шурик_1985

Цитата: has от 14 ноя 2011, 08:37
У номенклатуры есть реквизит транспорт чтоли? Не совсем понял, но вот пример отбора
&НаКлиенте
Процедура ТранспортНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)   

   СтандартнаяОбработка = Ложь;

   ФормаВыбора= ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаВыбора", ,Элемент);

   ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Транспорт");
   ЭлементОтбора.Использование = Истина;
   ЭлементОтбора.ПравоеЗначение = ПолучитьНоменклатураТранспорт();
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

   ФормаВыбора.Открыть();

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьНоменклатураТранспорт()
   Возврат Справочники.Номенклатура.Транспорт;
КонецФункции

У справочника номенклатуры есть предопределенный элемент "транспорт" вот по нему нужно сделать отбор!

has

т.е. выбрать этот элемент только? Тогда зачем вобще тут отбор? Просто присваивай нужному реквизиту Справочники.Номенклатура.Транспорт и все

Шурик_1985

Цитата: has от 14 ноя 2011, 12:02
т.е. выбрать этот элемент только? Тогда зачем вобще тут отбор? Просто присваивай нужному реквизиту Справочники.Номенклатура.Транспорт и все
Можно на примере

has

На примере чего? Смотря зачем этот реквизит транспорт и какую роль он играет.

Шурик_1985

Цитата: has от 14 ноя 2011, 13:19
На примере чего? Смотря зачем этот реквизит транспорт и какую роль он играет.
да просто что бы пользователю удобно было выбрать нужный транспор, что бы избежать ошибок!
а реквизит транспорт делает запись регистрах, в конце месяца по этому реквизиту делаеться отчеты!

has

если элемент транспорт предопределенный, то он будет единственным

AntonB

Для значений, которые может принимать реквизит, наверное, должен быть сделан отдельный справочник или перечисление... почему он из Номенклатуры то выбирается?
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Шурик_1985

Вроде получилось, зацените
&;НаКлиенте
Процедура ТранспортНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)     
    СтандартнаяОбработка = Ложь;
        стрТранспорт = Новый Структура;
ПолучитьНоменклатураТранспорт1 (стрТранспорт);

ПараметрыФормы = Новый Структура("Отбор",стрТранспорт);
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",ПараметрыФормы,);


КонецПроцедуры

  &;НаСервере
  Процедура ПолучитьНоменклатураТранспорт1 (стрТранспорт)
стрТранспорт.Вставить("Родитель", Справочники.Номенклатура.Транспорт);
стрТранспорт.Вставить("ЭтоГруппа", Ложь);
  КонецПроцедуры
 
  &;НаСервере

Процедура  ПолучитьНоменклатураТранспорт(сзТранспорт)

ЗапрНаНоменклатуру = Новый запрос("ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.Транспорт)");
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.Транспорт);

Пока выборка.Следующий() Цикл
     сзТранспорт.Добавить(выборка.Ссылка);
КонецЦикла;

КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск