Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поле со списком
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Flamepayne
Доброго вечера всем. В документе имеется поле со списком. Как сохранить выбранное нами значение из списка, чтобы при открытии этого документа в поле со списком был не первый элемент, а сохраненный? Надеюсь, сформулировал понятно.
Ziam
Создать реквизит в документе, где будет храниться выбранное значение. Я так понимаю список динамический и заполняется при открытии?
Flamepayne
Цитата(Ziam @ 25.03.11, 22:52) необходимо зарегистрироваться для просмотра ссылки
Создать реквизит в документе, где будет храниться выбранное значение. Я так понимаю список динамический и заполняется при открытии?

совершенно верно, при открытии заполняется список.
igmig65
Инд = список.НайтиЗначение(СокрЛП(ВыбРеквизит));
Если Инд = 0 Тогда
    // нет такого в списке
    список.ТекущаяСтрока(1);
    ВыбРеквизит = список.ПолучитьЗначение(1);
Иначе
    список.ТекущаяСтрока(Инд);
КонецЕсли;
Flamepayne
Цитата(igmig65 @ 26.03.11, 0:55) необходимо зарегистрироваться для просмотра ссылки
Инд = список.НайтиЗначение(СокрЛП(ВыбРеквизит));
Если Инд = 0 Тогда
    // нет такого в списке
    список.ТекущаяСтрока(1);
    ВыбРеквизит = список.ПолучитьЗначение(1);
Иначе
    список.ТекущаяСтрока(Инд);
КонецЕсли;

все равно выводит первую строку. Вот код:
Инд = ГрузПол.НайтиЗначение(СокрЛП(Грузополучатель));
        Если Инд = 0 Тогда
        // нет такого в списке
             ГрузПол.ТекущаяСтрока(1);
             Грузополучатель = ГрузПол.ПолучитьЗначение(1);
        Иначе
               ГрузПол.ТекущаяСтрока(Инд);
        КонецЕсли;

А при закрытии:
Грузополучатель=ГрузПол.ПолучитьЗначение(ГрузПол.ТекущаяСтрока());
igmig65
Грузополучатель - это реквизит, или пременная? Какой тип?
Если выводит 1 строку, значит ненаходит что нужно, пройдитесь отладчиком и посмотрите что у вас в приоткрытии в Грузополучателе, должно быть сохраненное значение.
Цитата
А при закрытии:

ПриЗаписи()
Flamepayne
Цитата(igmig65 @ 26.03.11, 15:25) необходимо зарегистрироваться для просмотра ссылки
Грузополучатель - это реквизит, или пременная? Какой тип?
Если выводит 1 строку, значит ненаходит что нужно, пройдитесь отладчиком и посмотрите что у вас в приоткрытии в Грузополучателе, должно быть сохраненное значение.

ПриЗаписи()

грузополучатель это реквизит, числового типа
5_kopeek
Вряд ли у Вас Грузополучатель -- это значение числового типа, а Вы его сохраняете в реквизит числового типа. Если хотите сохранять в числовой реквизит, тогда сохраняйте номер строки списка.

Если Грузополучатель = 0 Тогда
        // нет такого в списке
             ГрузПол.ТекущаяСтрока(1);
             Грузополучатель = ГрузПол.ТекущаяСтрока();
        Иначе
               ГрузПол.ТекущаяСтрока(Грузополучатель);
        КонецЕсли;


А в ПриЗаписи():

Грузополучатель=ГрузПол.ТекущаяСтрока();


Или измените тип реквизита Грузополучатель на тип значений из списка ГрузПол.
Flamepayne
Я уже понял, почти также и сделал, как Вы написали.
dmiter
Цитата(Flamepayne @ 26.03.11, 7:42) необходимо зарегистрироваться для просмотра ссылки
все равно выводит первую строку. Вот код:
Инд = ГрузПол.НайтиЗначение(СокрЛП(Грузополучатель));
        Если Инд = 0 Тогда
        // нет такого в списке
             ГрузПол.ТекущаяСтрока(1);
             Грузополучатель = ГрузПол.ПолучитьЗначение(1);
        Иначе
               ГрузПол.ТекущаяСтрока(Инд);
        КонецЕсли;

А при закрытии:
Грузополучатель=ГрузПол.ПолучитьЗначение(ГрузПол.ТекущаяСтрока());

Не соответствие типов : в первой строке кода поиск идет строки, если не найден то из списка берется значение по позиции №1, если в списке тип храниміх значений не строки - то он никогда не найдет это значение
5_kopeek
dmiter, действительно, еще и СокрЛП подкралось незаметно... smile.gif
Flamepayne
Да я уже разобрался wink.gif Тему можно закрывать =)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.