Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Интерактивный ввод родителя номенклатуры

Интерактивный ввод родителя номенклатуры
Я
   SkAt
 
16.10.18 - 11:09
Доброго времени суток! Создаю элемент справочника "Номенклатура" программно. Реквизиты все тоже заполняю программно. Но, по просьбе заказчика, ввод родителя (выбор группы справочника для создаваемой номенклатуры) должен быть интерактивным, т.е. при создании запрашивать в какую группу расположить. Как это реализовать? Конф. БП 3.0. Например, что сделать в процедуре ВыбратьГруппу():

&НаСервере
Процедура СоздатьНоменклатуру()
  НоваяН = Справочники.Номенклатура.СоздатьЭлемент();
  //Заполняю реквизиты программно

  НоваяН.Родитель = ВыбратьГруппу();
  НоваяН.Записать();
КонецПроцедуры

Заранее спасибо!
 
 
   Cool_Profi
 
1 - 16.10.18 - 11:10
Выбирай на клиенте, потом беги на сервер и создавай
   SkAt
 
2 - 16.10.18 - 11:12
(1) Хорошо, как на клиенте правильно открыть форму выбора? Чтобы вернулось значение? Я понимаю, в этот пример нужно сразу передать выбранное значение группы, но как на клиенте предложить выбор? Хоть наметку какую-нибудь
   DrWatson
 
3 - 16.10.18 - 11:17
А не подойдёт просто расположить поле выбора номенклатуры на твоей форме? Нужно прям форму выбора открывать?
   Автосервис
 
4 - 16.10.18 - 11:18
Всегда вводил через "ВвестиЗначение" или "ПоказатьВводЗначения". Но использовал только для чисел, строк и дат. В синтаксис-помощнике не описано ограничение типов. Можешь через эти команды попробовать .
   Автосервис
 
5 - 16.10.18 - 11:19
(4) Хотя нет, от элементов там же отбор не установить))
   catena
 
6 - 16.10.18 - 11:25
(5)В обработке после ввода проверять на группу и, если нет, возвращать на ввод))
   SkAt
 
7 - 16.10.18 - 11:29
(5) (6)  ПоказатьВводЗначений() не позволяет выбрать группу, он сразу выводит ошибку, что надо выбрать элемент. Это уже проверено.
(3) нет, номенклатура создается программно. Её откуда выбирать? Нужна какая-либо форма выбора, где пользователь укажет группу и номенклатура будет создана.
   catena
 
8 - 16.10.18 - 11:34
(7)Номенклатура программно создается же откуда-то. У этого "где-то" форма есть же. Там заранее и выбрать группу.
ОткрытьФорму() может абсолютно все, любые типы, отборы и цветуечки.
   DrWatson
 
9 - 16.10.18 - 11:36
(7) Ну, эта программа же откуда-то запускается, с какой-то формы. Вот в ней и расположить поле выбора группы где пользователю нужно создать ... в общем catena уже написал.
   DrWatson
 
10 - 16.10.18 - 12:03
Ладно, держи

&НаКлиенте
Процедура СоздатьНоменклатуруНаКлиенте(Команда)
    
    ПараметрыФормы = Новый Структура("ТекущаяСтрока", ЭтотОбъект.ПапкаНоменклатуры);
    
    ОповещениеВыбора = Новый ОписаниеОповещения("ВыборГруппыЗавершение", ЭтотОбъект);
    
    ОткрытьФорму("Справочник.уэкОбработчикиТочекМаршрута.ФормаВыбораГруппы", ПараметрыФормы, ЭтотОбъект,,,, ОповещениеВыбора, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    
КонецПроцедуры

&НаКлиенте
Процедура ВыборГруппыЗавершение(Результат, ДополнительныеПараметры) Экспорт

    Если НЕ ЗначениеЗаполнено(Результат) Тогда
        //Пользователь ничего не выбрал

        Возврат;
    КонецЕсли;
    
    //Мы знаем нашу группу, можно продолжать

    ЭтотОбъект.ПапкаНоменклатуры = Результат;
    СоздатьНоменклатуруНаСервере(Результат);

КонецПроцедуры
 
 Рекламное место пустует
   SkAt
 
11 - 16.10.18 - 13:17
(10) Да! То что доктор прописал! Благодарю!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует