Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как можно получить значение реквизита?          
Evgeniux Подменю пользователя
сообщение 04.11.20, 13:07
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день. Есть документ с комплектацией номенклатуры, при печати гарантийного талона из этого документа, в поле "срок гарантии" заносятся данные из константы (число 12). Срок гарантии зависит от целиСборки (реквизит документа).
ОбластьКомплектующие.Параметры.Гарантия = Константы.СрокГарантии.Получить();


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

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

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

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

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

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

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

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

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

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

        КонецЦикла;
        

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

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

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


andreydv87 Подменю пользователя
сообщение 04.11.20, 13:31
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Спасибо сказали: 24 раз
Рейтинг: 22.3

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

Evgeniux Подменю пользователя
сообщение 04.11.20, 16:17
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

andreydv87 @ Сегодня, 14:31 * ,
да, ЦельСборки это реквизит документа СборкаПК (Документ.СборкаПК).

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

ЦельСборки уже есть в запросе.

denis84 Подменю пользователя
сообщение 04.11.20, 16:58
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 134.5

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

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

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

конецесли;

volodya1122 Подменю пользователя
сообщение 05.11.20, 10:31
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

denis84 @ Вчера, 16:58 * ,

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

Evgeniux Подменю пользователя
сообщение 06.11.20, 8:48
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

volodya1122 @ Вчера, 11:31 * ,

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

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

volodya1122 Подменю пользователя
сообщение 06.11.20, 9:03
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

Цитата(Evgeniux @ 06.11.20, 8:48) *
а работает в таком виде

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


Значит несовпадение Типов. Например одно - это строка, а второе это Справочник, или Перечисление

andreydv87 Подменю пользователя
сообщение 06.11.20, 12:39
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Спасибо сказали: 24 раз
Рейтинг: 22.3

Evgeniux @ Сегодня, 9:48 * ,
Так какой тип данных у реквизита ЦельСборки?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 9:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!