Имя: Пароль:
1C
1С v8
Как получить значение реквизита документа из модуля менеджера (УФ 8.2)
, ,
0 maslov_ilya
 
17.12.14
16:32
Здравствуйте, ув. Гуру 1С

Есть документ - "Реализация товаров"
Есть реквизит этого документа - "МетодСортировки", тип строка, на форме документа пользователь выбирает одно из двух-трех возможных значений этого поля.
В модуле менеджера - описана Процедура Печать(ТабДок, Ссылка)

Необходимо в этой процедуре в переменную, допустим, "ДанныеСортировки" получить значение выбранное пользователем на форме.

Подскажите пожалуйста, как это сделать?

Через точку я так понял нельзя обращаться в модуле менеджера.
Пробую запросом, но видимо не корректно делаю.


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


Подозреваю, что все таки надо как то передавать параметр в процедуру, но как я не пробовал у меня не получается.

Покажи пожалуйста, как правильно сделать?

Спасибо!
1 EugeniaK
 
17.12.14
16:43
Ссылка.МетодСортировки
2 maslov_ilya
 
17.12.14
16:53
(1) Вы имеете ввиду вот так получить значение реквизита?

ДанныеСортировки = Ссылка.МетодСортировки;

Если так, то тут ошибка: Поле объекта не обнаружено (МетодСортировки)
3 a_alenkin
 
17.12.14
17:10
Подозреваю что это не реквизит документа а реквизит формы
4 maslov_ilya
 
17.12.14
17:17
(3) Сейчас еще раз проверил, удалил, создал заново. Реквизит документа.
Сделал поиск ссылок на объект и вот что выдало:

Объект "Документ.РеализацияТоваров.Реквизит.МетодСортировки" использован в:
Документ.РеализацияТоваров.Форма.ФормаДокумента.Форма
5 Mankubus
 
17.12.14
17:20
(2) а "Ссылка" это точно ссылка на документ?
6 maslov_ilya
 
17.12.14
17:24
Вот процедура:

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

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    ОбластьИтог = Макет.ПолучитьОбласть("Всего");
    ТабДок.Очистить();

    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        ТабДок.Вывести(ОбластьЗаголовок);

        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());

        ТабДок.Вывести(ОбластьТоварыШапка);
        ВыборкаТовары = Выборка.Товары.Выбрать();
        СуммаИтог=0;
        Пока ВыборкаТовары.Следующий() Цикл
            ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
            ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
            СуммаИтог = СуммаИтог + ВыборкаТовары.Сумма;
        КонецЦикла;

        ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
        ТабДок.Вывести(ОбластьИтог);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    
КонецПроцедуры


Вообще, во время отладки если вычислить значение "ссылка" выдает тип = массив
7 maslov_ilya
 
17.12.14
17:25
Уважаемые, пожалуйста, кому не сложно загрузите базу мою, посмотрите, как решить проблему эту.
Хочу двигаться дальше в изучении а уже 2 дня никак не решу эту задачу
https://yadi.sk/d/jjctgAL_dSbEj
8 DefMB
 
17.12.14
17:27
Посмотри какой тип имеет ссылка в отладчике. Не массив?
9 maslov_ilya
 
17.12.14
17:28
(8) Вообще, во время отладки если вычислить значение "ссылка" выдает тип = массив
10 DefMB
 
17.12.14
17:30
Значит Ссылка[0].МетодСортировки
11 DefMB
 
17.12.14
17:31
У тебя команда для печати списка наверное
12 maslov_ilya
 
17.12.14
17:34
(10) БОЖЕ! СПАСИБО! НАКОНЕЦ ТО! Милый человек! Скинь счет КИВИ что ли, по возможности отблагодарю)
13 DefMB
 
17.12.14
17:37
да не за что, удачи )
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс