Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как можно получить значение реквизита?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Evgeniux
Добрый день. Есть документ с комплектацией номенклатуры, при печати гарантийного талона из этого документа, в поле "срок гарантии" заносятся данные из константы (число 12). Срок гарантии зависит от целиСборки (реквизит документа).
ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить();


Как можно получить значение реквизита ЦельСборки, чтобы на его основании выбирать срок гарантии?
Что-то наподобие:
Если значение реквизита ЦельСборки такое Тогда
берем данные из константы номер1
Иначе
берем данные из константы номер2

код процедуры привожу ниже

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСобранныйПКШапка = Макет.ПолучитьОбласть("СобранныйПКШапка");
    ОбластьСПК = Макет.ПолучитьОбласть("СобранныйПК1");
    ОбластьСобранныйПК = Макет.ПолучитьОбласть("СобранныйПК");
    ОбластьКомплектующиеШапка = Макет.ПолучитьОбласть("КомплектующиеШапка");
    ОбластьКомплектующие = Макет.ПолучитьОбласть("Комплектующие");
    Подвал = Макет.ПолучитьОбласть("Подвал");

    ТабДок.Очистить();

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

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

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

        ТабДок.Вывести(ОбластьСобранныйПКШапка);
        ВыборкаСобранныйПК = Выборка.СобранныйПК.Выбрать();
    

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

        КонецЦикла;
        

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

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

        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры

andreydv87
Evgeniux @ Сегодня, 14:07 необходимо зарегистрироваться для просмотра ссылки ,
ЦельСборки это реквизит чего, документа Документ.СборкаПК?
Если да, то добавьте в запрос ЦельСборки.
Если это реквизит другого документа, то ещё один запрос надо делать.
Evgeniux
andreydv87 @ Сегодня, 14:31 необходимо зарегистрироваться для просмотра ссылки ,
да, ЦельСборки это реквизит документа СборкаПК (Документ.СборкаПК).

andreydv87 @ Сегодня, 14:31 необходимо зарегистрироваться для просмотра ссылки ,
"ВЫБРАТЬ
    |    СборкаПК.Дата,
    |    СборкаПК.Номер,
    |    СборкаПК.ЦельСборки,

ЦельСборки уже есть в запросе.
denis84
Evgeniux @ Сегодня, 16:17 необходимо зарегистрироваться для просмотра ссылки ,
Цитата
ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить();

так Вы вот прописали, откуда получаете гарантию

Напишите сюда условие
Если СборкаПК.ЦельСборки = "некое значение" тогда
ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить();
Иначе

конецесли;
volodya1122
denis84 @ Вчера, 16:58 необходимо зарегистрироваться для просмотра ссылки ,

Поправка
Если Выборка.ЦельСборки = "некое значение" тогда
Evgeniux
volodya1122 @ Вчера, 11:31 необходимо зарегистрироваться для просмотра ссылки ,

спасибо, разобрался. Но в таком виде не работает
Если Выборка.ЦельСборки = "некое значение" тогда

а работает в таком виде
Если ВРег (Выборка.ЦельСборки) = ВРег("некое значение") Тогда
volodya1122
Цитата(Evgeniux @ 06.11.20, 8:48) необходимо зарегистрироваться для просмотра ссылки
а работает в таком виде

Если ВРег (Выборка.ЦельСборки) = ВРег("некое значение") Тогда


Значит несовпадение Типов. Например одно - это строка, а второе это Справочник, или Перечисление
andreydv87
Evgeniux @ Сегодня, 9:48 необходимо зарегистрироваться для просмотра ссылки ,
Так какой тип данных у реквизита ЦельСборки?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.