7.7 Загрузка отобранных элементов справочника в СписокЗначений.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Shavminator, 30 янв 2008.

  1. TopicStarter Overlay
    Shavminator
    Offline

    Shavminator

    Регистрация:
    26 дек 2007
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте
    Кто ни будь, помогите новичку, не могу загрузить отобранных элементов справочника в СписокЗначений, т.е. элементы загружаются, но при открытии формы загружаются и не отобранные элементы.
    Даже нет никаких сообщений об ошибках.

    Такой пример есть в каждом Типовом Конфигурации, в Справочник.Контрагенты выбираются элементы
    Справочник.РасчетныеСчета.

    Написал я этот код гладя на типовые конфы. Сам бы этого не смог.

    Если можно, дайте пожалуйста комментарии в исправленном коде и в чем моя ошибка.

    вот выложыл базу, совсем маленкая.

    ну и код к нему

    Код:
    Процедура ОбновитьСписокСчетов()
    Если Выбран()=1 тогда
    Спр=СоздатьОбъект("Справочник.РасчетныеСчета");
    Спр.ИспользоватьВладельца(ТекущийЭлемент());
    Спр.ПорядокНаименований();
    Спр.ВыбратьЭлементы();
    СписокСчетов.УдалитьВсе();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.ПометкаУдаления()=0 Тогда
    СписокСчетов.ДобавитьЗначение(Спр.ТекущийЭлемент(), Спр.Наименование);
    КонецЕсли;
    КонецЦикла;    
    КонецЕсли;
    КонецПроцедуры
    
    Процедура ПриОткрытии()
    ОбновитьСписоксчетов();
    Если СписокСчетов.РазмерСписка()=0 Тогда
    Форма.КнИзменить.Доступность(0);
    Форма.КнУдалить.Доступность(0);               
    КонецЕсли;
    Если ПустоеЗначение(Форма.Параметр)=0 Тогда 
    ТР=Форма.Параметр.Наименование;
    КонецЕсли;
    Форма.ТекстПарам.Заголовок(ТР);
    КонецПроцедуры    
    
    Процедура КнопкаДобавить()
    Перем ФормаЗаписи;
    ФормаЗаписи=глВзятьКонтекст(Контекст);
    ОткрытьФормуМодально("Элемент.РасчетныеСчета",ФормаЗаписи,,,ТекущийЭлемент());     
    ОбновитьСписокСчетов();
    КонецПроцедуры
    
    

    Вложения:

  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    У тебя в конфе спр.Расчсчета не подчинен спр.Контр
  3. TopicStarter Overlay
    Shavminator
    Offline

    Shavminator

    Регистрация:
    26 дек 2007
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Спасибо, получился.

    у меня возник вопрос.
    Этот код написал глядя на код типовой конфы
    "Комплексная конфигурация "Бухгалтерия+Торговля+Склад+Зарплата+Кадры"

    там есть код в глобальном модуле, я не очень понял какую роль играет эта функция
    почему в функции глВзятьКонтекст(конт)
    а в процедуре ФормаЗаписи=глВзятьКонтекст(Контекст) а не (конт).

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

    [warn=Читайте правила!]Оформляйте код программы с помощью тега
    Код:
     [/warn]
  4. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Контекст - зарезервированное слово... а когда ты пренимаешь в функции переменную, то можешь назвать ее как хочешь, они будут присваиваться попорядку например:
    Код:
    Функция ЧЧЧ(хрень, ещехрень)
    // и тут у тебя хрень = 2, а ещехрень = 22
    КонецФункции
    
    Процедура абс()
    переменная1 = 2;
    переменная2 = 22;
    ЧЧЧ(переменная1, переменная2);
    КонецПроцедуры
    
    
    
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Код:
    Функция ЧЧЧ(хрень, ещехрень)
    // и тут у тебя хрень = 2, а ещехрень = 22
    КонецФункции
    
    Процедура абс()
    переменная1 = 2;
    переменная2 = 22;
    ЧЧЧ(переменная1, переменная2);
    КонецПроцедуры
    
    Процедура абс1()
    ЧЧЧ(2,22);
    КонецПроцедуры
    
    
    
    

    Ликбез

    Объявление переменных в заглавии функции озночает что : при обращении к функции в нее необходимо передать (в нашем случае) два параметра, которые будут доступны в теле функции под перечисленными именами (хрень, ещехрень). Передавть в функцию можно как переменные (проц. абс) так и значения (абс2). В выше упомянутом Контекст - это значение представляющее собой объект. При использовании зарез. слова "перем" можно изменять и передаваемые значения.

    Вообще правила вызова для процедур и функций во всех языках фактически одинаковые и перед началом програмирования чего нить, ДАЖЕ на уровне выше школьного их необходимо ЗНАТЬ. :unsure:
  6. TopicStarter Overlay
    Shavminator
    Offline

    Shavminator

    Регистрация:
    26 дек 2007
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    можно кое что уточнить?
    а вот, в Сообщение #3 там есть код

    ФормаЗаписи=глВзятьКонтекст(Контекст);

    вопрос:
    что за значение в данный момент содержить переменная ФормаЗаписи?
    я просто хочу понять, какую функцию исполняет глВзятьКонтекст(Контекст);
  7. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    в 1с есть такая вещь как отладчик запусти его поставь брекпоинт и смотри кто, что передает, - очень познавательно на первом этапе. :unsure:
  8. TopicStarter Overlay
    Shavminator
    Offline

    Shavminator

    Регистрация:
    26 дек 2007
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Запустил Отладчик и вот что отвечает

    ФормаЗаписи = ГрупповойКонтекст

    а в окне вычесления выражении было наименование элемента владельца

    ну, помоиму я понял для чего используется Контекст.
    Спаибо всем

Поделиться этой страницей