Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 04:00

Отобразить несколько реквизитов в поле выбора выпадающего списка УФ

Автор BujiMuji, 12 окт 2017, 17:56

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

BujiMuji

Здравствуйте. Не нашел как сделать такую вещь:
При выборе товара в таб.части накладной (в поле Наименование) выпадает список. В нем отражается только Наименование (и, если набирать артикул, то и артикул).
Как сделать так, чтобы кроме Наименования в выпадающем списке отражались другие реквизиты номенклатуры (например Рост и Размер)?
Спасибо.

Golickoff

Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Oldman06

Цитата: Golickoff от 13 окт 2017, 09:13
Если я правильно понял, https://forum-1c.ru/index.php?topic=68038.0
Это заменит представление элемента везде.
Если надо только в накладной, и я так понял при подборе, а не выборе, то как-то примерно так:

&НаКлиенте
Процедура ТоварыНоменклатураАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если СтрДлина(Текст) > 2 Тогда
МоментВремени = ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.Дата, Мин(ТекущаяДата(), КонецДня(Объект.Дата)));
ДанныеВыбора = ПодборЭлементовНоменклатурыНаСервере(МоментВремени, Объект.Организация, Объект.Склад, Текст);
КонецЕсли;
КонецПроцедуры

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

ТекСтрока = Элементы.Товары.ТекущиеДанные;
ТекСтрока.Номенклатура = ВыбранноеЗначение.Ссылка;
ТекСтрока.ЕдиницаИзмерения = ВыбранноеЗначение.ЕдиницаИзмерения;
ТекСтрока.Коэффициент = ВыбранноеЗначение.Коэффициент;

КонецЕсли;

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

&НаСервереБезКонтекста
Функция ПодборЭлементовНоменклатурыНаСервере(Знач Период, Знач Организация, Знач Склад, Знач СтрокаПоиска)
СписокПодбора = Новый СписокЗначений;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 20
               | Номенклатура.Ссылка,
               | Номенклатура.Наименование КАК Наименование,
               | ВЫБОР
               | КОГДА Номенклатура.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмеренияНоменклатуры.ПустаяСсылка)
               | ТОГДА 1
               | ИНАЧЕ Номенклатура.ЕдиницаИзмерения.Коэффициент
               | КОНЕЦ КАК Коэффициент,
               | ОстаткиТоваровВМестахХраненияОстатки.ВНаличииОстаток - ОстаткиТоваровВМестахХраненияОстатки.ВРезервеОстаток КАК Остаток,
               | Номенклатура.ЕдиницаИзмерения,
               | Номенклатура.ЕдиницаИзмеренияХранения
               |ИЗ
               | Справочник.Номенклатура КАК Номенклатура
               | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровВМестахХранения.Остатки(
               | &Период,
               | Организация = &Организация
               | И МестоХранения = &Склад) КАК ОстаткиТоваровВМестахХраненияОстатки
               | ПО Номенклатура.Ссылка = ОстаткиТоваровВМестахХраненияОстатки.Номенклатура
               |ГДЕ
               | Номенклатура.Наименование ПОДОБНО ""%"" + &СтрокаПоиска + ""%""
               | И ОстаткиТоваровВМестахХраненияОстатки.ВНаличииОстаток - ОстаткиТоваровВМестахХраненияОстатки.ВРезервеОстаток > 0
               |
               |УПОРЯДОЧИТЬ ПО
               | Наименование";
Запрос.УстановитьПараметр("Период", Период);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("СтрокаПоиска", СтрокаПоиска);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Коэффициент > 1 Тогда
СписокПодбора.Добавить(Новый Структура("Ссылка, ЕдиницаИзмерения, Коэффициент", Выборка.Ссылка, Выборка.ЕдиницаИзмерения, Выборка.Коэффициент),
Выборка.Наименование + " (" + Формат(Выборка.Остаток, "ЧЦ=15; ЧДЦ=3") + " " + Строка(Выборка.ЕдиницаИзмерения) + ")");

КонецЕсли;

СписокПодбора.Добавить(Новый Структура("Ссылка, ЕдиницаИзмерения, Коэффициент", Выборка.Ссылка, Выборка.ЕдиницаИзмеренияХранения, 1),
Выборка.Наименование + " (" + Формат(Выборка.Остаток, "ЧЦ=15; ЧДЦ=3") + " " + Строка(Выборка.ЕдиницаИзмеренияХранения) + ")");

КонецЦикла;

Возврат СписокПодбора;
КонецФункции

BujiMuji

Цитата: Oldman06 от 13 окт 2017, 09:51
Цитата: Golickoff от 13 окт 2017, 09:13
Если я правильно понял, https://forum-1c.ru/index.php?topic=68038.0
Это заменит представление элемента везде.
Если надо только в накладной, и я так понял при подборе, а не выборе, то как-то примерно так:

&НаКлиенте
Процедура ТоварыНоменклатураАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если СтрДлина(Текст) > 2 Тогда
МоментВремени = ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.Дата, Мин(ТекущаяДата(), КонецДня(Объект.Дата)));
ДанныеВыбора = ПодборЭлементовНоменклатурыНаСервере(МоментВремени, Объект.Организация, Объект.Склад, Текст);
КонецЕсли;
КонецПроцедуры

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

ТекСтрока = Элементы.Товары.ТекущиеДанные;
ТекСтрока.Номенклатура = ВыбранноеЗначение.Ссылка;
ТекСтрока.ЕдиницаИзмерения = ВыбранноеЗначение.ЕдиницаИзмерения;
ТекСтрока.Коэффициент = ВыбранноеЗначение.Коэффициент;

КонецЕсли;

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

&НаСервереБезКонтекста
Функция ПодборЭлементовНоменклатурыНаСервере(Знач Период, Знач Организация, Знач Склад, Знач СтрокаПоиска)
СписокПодбора = Новый СписокЗначений;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 20
               | Номенклатура.Ссылка,
               | Номенклатура.Наименование КАК Наименование,
               | ВЫБОР
               | КОГДА Номенклатура.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмеренияНоменклатуры.ПустаяСсылка)
               | ТОГДА 1
               | ИНАЧЕ Номенклатура.ЕдиницаИзмерения.Коэффициент
               | КОНЕЦ КАК Коэффициент,
               | ОстаткиТоваровВМестахХраненияОстатки.ВНаличииОстаток - ОстаткиТоваровВМестахХраненияОстатки.ВРезервеОстаток КАК Остаток,
               | Номенклатура.ЕдиницаИзмерения,
               | Номенклатура.ЕдиницаИзмеренияХранения
               |ИЗ
               | Справочник.Номенклатура КАК Номенклатура
               | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровВМестахХранения.Остатки(
               | &Период,
               | Организация = &Организация
               | И МестоХранения = &Склад) КАК ОстаткиТоваровВМестахХраненияОстатки
               | ПО Номенклатура.Ссылка = ОстаткиТоваровВМестахХраненияОстатки.Номенклатура
               |ГДЕ
               | Номенклатура.Наименование ПОДОБНО ""%"" + &СтрокаПоиска + ""%""
               | И ОстаткиТоваровВМестахХраненияОстатки.ВНаличииОстаток - ОстаткиТоваровВМестахХраненияОстатки.ВРезервеОстаток > 0
               |
               |УПОРЯДОЧИТЬ ПО
               | Наименование";
Запрос.УстановитьПараметр("Период", Период);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("СтрокаПоиска", СтрокаПоиска);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Коэффициент > 1 Тогда
СписокПодбора.Добавить(Новый Структура("Ссылка, ЕдиницаИзмерения, Коэффициент", Выборка.Ссылка, Выборка.ЕдиницаИзмерения, Выборка.Коэффициент),
Выборка.Наименование + " (" + Формат(Выборка.Остаток, "ЧЦ=15; ЧДЦ=3") + " " + Строка(Выборка.ЕдиницаИзмерения) + ")");

КонецЕсли;

СписокПодбора.Добавить(Новый Структура("Ссылка, ЕдиницаИзмерения, Коэффициент", Выборка.Ссылка, Выборка.ЕдиницаИзмеренияХранения, 1),
Выборка.Наименование + " (" + Формат(Выборка.Остаток, "ЧЦ=15; ЧДЦ=3") + " " + Строка(Выборка.ЕдиницаИзмеренияХранения) + ")");

КонецЦикла;

Возврат СписокПодбора;
КонецФункции



Спасибо!!!! получилось

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск