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

Записать выбранное из списка значение в реквизит

Автор JohnDoe144, 06 июн 2016, 16:18

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

JohnDoe144

Цитата: Rasty от 06 июн 2016, 17:26
код

Код - первоначальный. Прошу Вас, исправьте непосредственно в нем.

Процедура СтранаПроизводстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СписокСтран = ПолучитьСписокСтран(Объект.Производитель);
    Элементы.СтранаПроизводства.СписокВыбора.ЗагрузитьЗначения(СписокСтран);
КонецПроцедуры

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

Rasty

Цитата: JohnDoe144 от 06 июн 2016, 17:32Процедура СтранаПроизводстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СписокСтран = ПолучитьСписокСтран(Объект.Производитель);
Для каждого страна из списокстран цикл
    Элементы.СтранаПроизводства.СписокВыбора.Добвить(страна,страна) ;
конеццикла
КонецПроцедуры

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


книгу радченко читайте
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Вставил Ваш исправленный код.
Теперь при выборе элемента из списка:
1. Значение также не сохраняется в реквизите
2. Список выбора "растет" пропорционально количеству найденных в запросе стран. Т.е. один раз нажал на список - 2 страны, второй раз - уже 4, еще раз - 8 и т.д.

Rasty

я же говорил вам что надо при открытии формы делать, вы как мой клиент один, ему говоришь, что надо делать он делает по своему и говорит что не работает, логика....
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Я никак не могу понять, почему:
1. Список формируется нормально, однако 2. При выборе значения из списка, оно не остается в реквизите. Т.е. поле остается незаполненным??

Rasty




Добавлено: 06 июн 2016, 18:04


страна не имеет тип Строка, он у вас с типом ссылка, выбирайте наименование в запросе и еще раз ЧИТАЙТЕ РАДЧЕНКО!!!!!!!!!!!!!!!!!!!
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Ок, спасибо... ушел читать Радченко
Добавлено: 06 июн 2016, 18:46


Простите, это снова я...

Вопрос: Почему не работает даже такой код?

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

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

Т.е. СписокВыбора формируется, но значение не запоминается??

Тём

Цитата: JohnDoe144 от 06 июн 2016, 16:18
    Добрый день, прошу подсказать, что не так сделал и как поправить, чтобы заработало "как надо".

Исходные данные:
1. Самописная конфигурация
2. Реквизит на форме с типом "Строка"

Необходимо:
1. Сформировать список выбора из значений из справочника
2. Записать выбранное значение из списка выбора в реквизит

Что сделано:
Процедура СтранаПроизводстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СписокСтран = ПолучитьСписокСтран(Объект.Производитель);
    Элементы.СтранаПроизводства.СписокВыбора.ЗагрузитьЗначения(СписокСтран);
КонецПроцедуры

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

Как работает сейчас:
Список формирует, но после выбора значения поле остается пустым.

Заранее благодарю за оперативный и продуктивный ответ.


Попробуйте изменить запрос. Вы получаете элементы справочника, а реквизит строка. Другой вариант: измените тип реквизита.
Запрос.Текст =  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                   |   ЗаводыИзготовители.СтранаПроисхождения.Представление
                   |ИЗ
                   |   Справочник.ЗаводыИзготовители КАК ЗаводыИзготовители
                   |ГДЕ
                   |   ЗаводыИзготовители.Владелец = &Владелец";

cska-fanat-kz

а вы не СписокВыбора у элемента формируйте, а параметр события "ДанныеВыбора".
открою тайну - это тоже список значений )

"<ДанныеВыбора>

Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр <СтандартнаяОбработка> должен быть установлен в Ложь. "
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

JohnDoe144

Что-то все-таки не то... Давайте разберемся...
Я уже кучу всего перепробовал, ничего не помогает. Уже и изменил тип реквизита
1. 1с - 8.3
2. СтранаПроизводства - тип реквизита СправочникСсылка.Страны
3. Новый код:
&НаКлиенте
Процедура СтранаПроизводстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   ДанныеВыбора = Новый СписокЗначений();
   ДанныеВыбора.ЗагрузитьЗначения(ПолучитьСписокСтран(Объект.Производитель));
   СтандартнаяОбработка = Ложь;
   
КонецПроцедуры

4. Из Функции "ПолучитьСписокСтран" получаю Массив и загружаю значения из него в ДанныеВыбора
5. ДанныеВыбора - следующие (см. скриншот во вложении).
6. Может быть дело в том, что "Представление" - пусто? А как добавить Представление для каждого Значения?

Добавлено: 07 июн 2016, 13:50


Всё, разобрался.
Всем спасибо. :)

Все оказывается работало. Просто при открытии формы из-за того, что для поля установлен режим выбора из списка, сохраненное в реквизите значение не отображалось (хоть и наличествовало).

Теги:

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

Рейтинг@Mail.ru

Поиск