Ограничение списка выбора номенклатуры по группе\виду номенклатуры

1. user591603_neterpenie 24.11.16 13:21 Сейчас в теме
Добрый день, 1С 8.3, УФ, серверная база.

Есть некий документ с реквизитом типа СправочникСссылка.Номенклатура.

В самом справочнике 2 группы :ГруппаА и ГруппаБ.

Хочу, чтобы при получении формы выбора справочника выводились только записи справочника по критерию ГруппаА.

Порылся в сети, нашел такое решение:

Процедура НоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)

          
//Отключим стандартный выбор, так как делаем свой
СтандартнаяОбработка = Ложь;
                           
//Получаем форму и привязываем ее к Владельцу - Элемент
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);
             
//Установим отбор по Родителю справочника
ФормаВыбора.ЭлементыФормы.СправочникСписок.Родитель = Справочники.Номенклатура.НайтиПоКоду("123456");
           
 //Откроем выбор
 ФормаВыбора.ОткрытьМодально();
           
КонецПроцедуры
Показать


Но в УФ не работает.

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

Как переделать этот код, чтобы работал на серверной базе в УФ?))

Заранее спасибо!
По теме из базы знаний
Найденные решения
9. S.V.Y 17 24.11.16 17:07 Сейчас в теме
Внимательно смотри - ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);
kat89; lostcay; Ryo3000; +3 Ответить
13. user591603_neterpenie 24.11.16 17:54 Сейчас в теме
все, понял где затупил.))

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

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

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

&НаСервереБезКонтекста
Функция ПродукцияНоменклатураНачалоВыбораНаСервере()
    
    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    П=Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Родитель",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;
        
КонецФункции
Показать
lostcay; Ryo3000; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. корум 288 24.11.16 13:50 Сейчас в теме
(1)
Как переделать этот код, чтобы работал на серверной базе в УФ?))

Ознакомься
3. zamichnik 24.11.16 14:49 Сейчас в теме
(2) - очень правильный совет. Автору вопроса - твой вариант из примера под номером 7.
4. user591603_neterpenie 24.11.16 15:28 Сейчас в теме
(3)

да, я уже сделал, спасибо за помощь.)
6. klom 24.11.16 16:15 Сейчас в теме
(2) Спасибо, понятно и наглядно. Чем копаться в синтакс-помощнике, все в одном месте.
5. user591603_neterpenie 24.11.16 16:05 Сейчас в теме
но, не работает.(

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

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

&НаСервере
Функция ПродукцияНоменклатураНачалоВыбораНаСервере()
	
	Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
	
	П=Новый Структура;
	Отбор = Новый Структура;
	
	Отбор.Вставить("Владелец",Группа);
	П.Вставить("Отбор", Отбор);
	Возврат П;
		
КонецФункции
Показать
7. S.V.Y 17 24.11.16 16:41 Сейчас в теме
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);

Так попробуй, у меня похожий код отрабатывает.
8. user591603_neterpenie 24.11.16 16:55 Сейчас в теме
(7)

чуть поменял код, все равно ноль на массу

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

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

&НаСервере
Функция ПродукцияНоменклатураНачалоВыбораНаСервере()
    
    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    
    П=Новый Структура;
    Отбор = Новый Структура;
    
    Отбор.Вставить("Группа",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;
        
КонецФункции
Показать
10. annapam1983 24.11.16 17:14 Сейчас в теме
(8) И что пишет?
А выведен в форме выбора
в таблице такой элемент "Группа"
11. user591603_neterpenie 24.11.16 17:18 Сейчас в теме
(10)
Ничего не пишет, просто открывает форму выбора без отбора.)
9. S.V.Y 17 24.11.16 17:07 Сейчас в теме
Внимательно смотри - ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);
kat89; lostcay; Ryo3000; +3 Ответить
12. user591603_neterpenie 24.11.16 17:36 Сейчас в теме
(9)
&НаКлиенте
Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

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

&НаСервере
Функция ПродукцияНоменклатураНачалоВыбораНаСервере()
    
    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    П=Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Группа",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;
        
КонецФункции
Показать


поправил, начало писать: Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Поле не найдено "Группа"
14. ImHunter 315 25.11.16 07:48 Сейчас в теме
(12)
Насчет кода
Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672")

Я бы это сделал в событии формы ПриСозданииНаСервере и хранил в реквизите формы. Чтобы лишние разу не ходить на сервер.

Насчет установки отбора. Тут зависит от вложенности элементов справочника. Если внутри группы - только элементы (без вложенной иерархичности), то, думаю, сработает такой отбор:
Отбор.Вставить("Родитель",Группа);

Если же в группе есть вложенная иерархичность, то нужно дописывать форму выбора.
13. user591603_neterpenie 24.11.16 17:54 Сейчас в теме
все, понял где затупил.))

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

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

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

&НаСервереБезКонтекста
Функция ПродукцияНоменклатураНачалоВыбораНаСервере()
    
    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    П=Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Родитель",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;
        
КонецФункции
Показать
lostcay; Ryo3000; +2 Ответить
15. Fox-trot 158 25.11.16 08:01 Сейчас в теме
все эти старания курам на смех если воспользоваться поиском по строке и при записи нет вышесказанного ограничения
тогда для кого все эти приседания?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот