|
Выбор значения и запись его в объект | ☑ | ||
---|---|---|---|---|
0
falselight
21.03.18
✎
15:42
|
Подскажите пожалуйста, как лучше и правильнее организовать выбор
в форму? Запросом получаю массив. Загружаю его в список значения. Потом организую выбор через ВыбратьЭлемент. Но ругается "использование модальных окон в данном режиме запрещено!" Как правильнее организовать форму выбора? М = ЗначенияСвойстОбъектовВыборНаСервере(ВыбраннаяСтрока.Владелец); ДляДиалогаВыбора.ЗагрузитьЗначения(М); КодБитрикса = ДляДиалогаВыбора.ВыбратьЭлемент("ВЫБЕРИТЕ НЕОБХОДИМЫЙ КОД БИТРИКСА"); Если КодБитрикса <> Неопределено Тогда УстановитьКодБитриксаНаСервере(КодБитрикса, ВыбраннаяСтрока.Владелец); КонецЕсли; |
|||
1
falselight
21.03.18
✎
15:58
|
Например у обработки создаю ФормуВыбора.
Обработка внешняя. На ней список значений. Как в коде его заполнить? |
|||
2
hhhh
21.03.18
✎
16:03
|
(0) там чего-то правой кнопкой мыши нажимаете Рефакторинг. И пункт убрать асинхронные вызовы. И оно вам само отредактирует
|
|||
3
falselight
21.03.18
✎
16:09
|
(2) ЭТО О ЧЕМ ПРОСТИТЕ?
|
|||
4
falselight
21.03.18
✎
16:09
|
(3+) Я так понял нужно, делат ьне так как я.....
|
|||
5
FIXXXL
21.03.18
✎
16:26
|
(0) у поля есть СписокВыбора, заполни его своим массивом, хоть ПриСозданииНаСервере
у реквизита поставь галку РежимВыбораИзСписка дальше "оно само" |
|||
6
falselight
21.03.18
✎
16:28
|
(5)
// &НаСервере Функция ЗначенияСвойстОбъектовВыборНаСервере(Владелец) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Б_Идентификатор КАК Б_Идентификатор, | 1 КАК Поле1 |ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Владелец); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); РезультатЗапроса.Свернуть("Б_Идентификатор","Поле1"); Возврат РезультатЗапроса.ВыгрузитьКолонку("Б_Идентификатор"); КонецФункции // &НаКлиенте Процедура ЗначенияСвойстОбъектовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) //Ответ = Вопрос("Ручной ввод - Да, или выбор из списка - Нет.", РежимДиалогаВопрос.ДаНет); //Если Ответ = Код КодБитрикса = 0; Если Поле.Имя = "ЗначенияСвойстОбъектовБ_Идентификатор" Тогда ДляДиалогаВыбора = Новый СписокЗначений; СтандартнаяОбработка = Ложь; М = ЗначенияСвойстОбъектовВыборНаСервере(ВыбраннаяСтрока.Владелец); ДляДиалогаВыбора.ЗагрузитьЗначения(М); КодБитрикса = ДляДиалогаВыбора.ВыбратьЭлемент("ВЫБЕРИТЕ НЕОБХОДИМЫЙ КОД БИТРИКСА"); Если КодБитрикса <> Неопределено Тогда УстановитьКодБитриксаНаСервере(КодБитрикса.Значение, ВыбраннаяСтрока.Владелец); КонецЕсли; КонецЕсли; КонецПроцедуры // &НаСервере Процедура УстановитьКодБитриксаНаСервере(КодБитрикса, Владелец) ВладелецОбъект = Владелец.ПолучитьОбъект(); ВладелецОбъект.Б_Идентификатор = КодБитрикса; ВладелецОбъект.Записать(); КонецПроцедуры // |
|||
7
falselight
21.03.18
✎
16:31
|
(5) Получается, как сделал я нет.
ЗначенияСвойстОбъектов - это динамический список на форме. |
|||
8
FIXXXL
21.03.18
✎
16:31
|
(6) прочитай еще раз (5)
твой код, кроме получения списка(массива) допустимых значений - не нужен |
|||
9
FIXXXL
21.03.18
✎
16:32
|
(7) при чем тут дин.список? что надо то?
|
|||
10
falselight
21.03.18
✎
16:39
|
(9) Ок. Общая постановка. Что нужно известно.
На форме лежит динамический список. На одной колонке производится щелчек. Срабатывает процедура выбор ЗначенияСвойстОбъектовВыбор И в этот момент производится запрос, и полученный результат нужно вывести пользователю для выбора, или дать ему возможность ввести одно значение, не выбирая его из списка. Я так понимаю что нужно сделать свою форму выбора. Но как открыть свою форму выбора во внешней обработке? Открыть её, с возможностью предоставления ввода либо произвольного значения. Либо выбор из предоставленного списка????? Подскажите если можно? Может пример есть, в инете или у вас. |
|||
11
FIXXXL
21.03.18
✎
17:20
|
(10) ПоказатьВводЗначения почитай
|
|||
12
falselight
21.03.18
✎
17:24
|
Один вопрос
// &НаКлиенте Процедура ЗначенияСвойстОбъектовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ПараметрыФормы = Новый Структура(); ОткрытьФормуМодально(ПолучитьПолноеИмяФормы("ФормаВыбора"), ПараметрыФормы, ЭтаФорма); &НаКлиенте Функция ПолучитьПолноеИмяФормы(ИмяФормы) СимволТочка = "."; ПозицияТочки = СтрДлина(ЭтаФорма.ИмяФормы); Пока Сред(ЭтаФорма.ИмяФормы, ПозицияТочки, 1) <> СимволТочка Цикл ПозицияТочки = ПозицияТочки - 1; КонецЦикла; // Возврат Лев(ЭтаФорма.ИмяФормы, ПозицияТочки) + ИмяФормы; КонецФункции Отрабатывает и выдает "использование модальных окон в данном режиме запрещено!" Что нужно сделать????? |
|||
13
falselight
21.03.18
✎
17:26
|
(12+) Что бы сообщение не выходило?!
|
|||
14
Evgenchik
21.03.18
✎
17:30
|
забудь про модальные окна
|
|||
15
Evgenchik
21.03.18
✎
17:32
|
ОткрытьФорму("ИмяФормы", СтруктураПараметров, ЭтаФорма,,,,Новый ОписаниеОповещения("ИмяПроцедурыПослеФормы", ЭтотОбъект, ПараметрКакойТо),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
А ниже экспортную процедуру ИмяПроцедурыПослеФормы |
|||
16
falselight
21.03.18
✎
17:35
|
(15) Примеры копирую, нахожу.
А что будет в этой процедуре? Нужно при нажатии на поле в динамическом списке на форме, открыть форму обработки внешней. Она откроется со списком и с полем ввода. Либо по выбору значения из списка, либо по вводу значения в поле, потом передать это значение в код и обработать, обновив его в базе. |
|||
17
falselight
21.03.18
✎
17:37
|
(15) сложный у вас код ругается на СтруктураПараметров и ПараметрКакойТо.
|
|||
18
falselight
21.03.18
✎
17:42
|
(15) Как можно по вашему сделать (10) если можно, пожалуйста.
|
|||
20
igorPetrov
22.03.18
✎
04:18
|
(18) Ты когда читать научишься?
|
|||
21
falselight
22.03.18
✎
06:54
|
В ОСНОВНОЙ ФОРМЕ:
// &НаСервере Функция ЗначенияСвойстОбъектовВыборНаСервере(Владелец) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Б_Идентификатор КАК Б_Идентификатор, | 1 КАК Поле1 |ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Владелец); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); РезультатЗапроса.Свернуть("Б_Идентификатор","Поле1"); Возврат РезультатЗапроса.ВыгрузитьКолонку("Б_Идентификатор"); КонецФункции // &НаКлиенте Процедура ЗначенияСвойстОбъектовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Поле.Имя = "ЗначенияСвойстОбъектовБ_Идентификатор" Тогда СтандартнаяОбработка = Ложь; МассивКодовБитрикса = ЗначенияСвойстОбъектовВыборНаСервере(ВыбраннаяСтрока.Владелец); СтруктураПараметров = Новый Структура("МассивКодовБитрикса", МассивКодовБитрикса); ОткрытьФорму(ПолучитьПолноеИмяФормы("ФормаВыбора"), СтруктураПараметров, ЭтаФорма,,,,Новый ОписаниеОповещения("УстановитьКодБитриксаНаСервере", ЭтотОбъект, ВыбраннаяСтрока.Владелец),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецЕсли; КонецПроцедуры // &НаСервере Процедура УстановитьКодБитриксаНаСервере(КодБитрикса, Владелец) Экспорт ВладелецОбъект = Владелец.ПолучитьОбъект(); ВладелецОбъект.Б_Идентификатор = КодБитрикса; ВладелецОбъект.Записать(); КонецПроцедуры // &НаКлиенте Функция ПолучитьПолноеИмяФормы(ИмяФормы) СимволТочка = "."; ПозицияТочки = СтрДлина(ЭтаФорма.ИмяФормы); Пока Сред(ЭтаФорма.ИмяФормы, ПозицияТочки, 1) <> СимволТочка Цикл ПозицияТочки = ПозицияТочки - 1; КонецЦикла; // Возврат Лев(ЭтаФорма.ИмяФормы, ПозицияТочки) + ИмяФормы; КонецФункции // |
|||
22
falselight
22.03.18
✎
06:55
|
В ФОРМЕ ВЫБОРА:
// &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("МассивКодовБитрикса") Тогда КодыБитрикса.ЗагрузитьЗначения(Параметры.МассивКодовБитрикса); КонецЕсли; КонецПроцедуры // &НаКлиенте Процедура КодыБитриксаЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ОповеститьОВыборе("b7"); КонецПроцедуры // |
|||
23
igorPetrov
22.03.18
✎
06:56
|
Хватит скакать по разным темам )))
|
|||
24
falselight
22.03.18
✎
06:57
|
Тут проблема. В списке значения не получены.
Так как их нет в базе. Делаю ввод первого значения в коде что бы посмотреть b7. По коду оно записывается. Но потом нигде не выбирается. Это я не понял как решить!!!!! Нужно сделать редактор кода Б_Идентификатор &НаСервере Процедура УстановитьКодБитриксаНаСервере(КодБитрикса, Владелец) Экспорт ВладелецОбъект = Владелец.ПолучитьОбъект(); ВладелецОбъект.Б_Идентификатор = КодБитрикса; ВладелецОбъект.Записать(); КонецПроцедуры // |
|||
25
falselight
22.03.18
✎
06:57
|
(23) Спросили я отвечаю.
В одной задаче может быть несколько тем. |
|||
26
igorPetrov
22.03.18
✎
06:58
|
(25) Ага, двадцать восемь создай, что бы не ошибиться.
|
|||
27
Evgenchik
22.03.18
✎
08:43
|
ты определись, с чем тебе помочь.
по (10) используй ПоказатьВыборИзСписка |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |