Имя: Пароль:
1C
1С v8
Получить значение реквизита
0 nemel09
 
21.06.19
14:13
Привет всем, помогите разобраться в чем ошибка. Задача состоит в следующем. Из обработка делаю запрос к реквизиту формы АдресДоставки и хочу проверить заполнено ли поле или нет.

[Code]
    Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    ЗаказПокупателя.АдресДоставки
        |    
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |    где
        |        заказПокупателя.номер = ""00000001440""
        |";
        РезультатЗапроса = Запрос.Выполнить();
    
                                Выборка = РезультатЗапроса.Выбрать();  
                    Если РезультатЗапроса.Пустой() Тогда
Сообщить ("Адреса нет");
Возврат Ложь;

Иначе
Сообщить ("Адрес есть");
Возврат Истина;

КонецЕсли;

[/Code]

В результате не зависимо то того заполнено ли поле или нет ответ Адрес есть.
1 lxs
 
21.06.19
14:18
плять))) пятница, ёпт)) Откуда вы повелезали такие????
2 Beduin
 
21.06.19
14:19
(1) Он Учится.
(0) Ты проверяешь наличие документа.
3 palsergeich
 
21.06.19
14:20
(2) А документ априори есть)
Тебе еще надо проверку на сам адрес
4 bootini
 
21.06.19
14:22
а у выборки есть метод Пустой()?
5 Rapelsina
 
21.06.19
14:22
Проверка на пустоту запроса должна выполняться перед Выборкой.
6 bootini
 
21.06.19
14:23
Если РезультатЗапроса.Следующий() Тогда
адрес есть
инече адреса нет
конецЕсли
7 bootini
 
21.06.19
14:26
пятница
8 lxs
 
21.06.19
14:28
(0) message(?(not isblankstring(documents.заказпокупателя.findbynumber("00000001440", current date()).адресдоставки),"адрес есть","адреса нет");
9 lxs
 
21.06.19
14:38
message(
    ?(documents.заказпокупателя.findbynumber("00000001440", current date())=undefined, "документ не найден",
        ?(not isblankstring(
                documents.заказпокупателя.findbynumber("00000001440", current date()).адресдоставки), "адрес есть", "адреса нет")));
10 nemel09
 
21.06.19
14:40
Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    ЗаказПокупателя.АдресДоставки
        |    
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |    где
        |        ЗаказПокупателя.номер = ""00000001440""
        |";
        РезультатЗапроса = Запрос.Выполнить();
                  Если РезультатЗапроса.Пустой() Тогда
                        Сообщить ("Адреса нет");
                 Иначе
                        Сообщить ("Адрес есть");

                КонецЕсли;

Не пойму при любом значении и без значения результат выводится что адрес есть
11 lxs
 
21.06.19
14:45
(10) да уж...

Заказ = Документы.ЗаказПокупателя.НайтиПоНомеру("00000001440", ТекущаяДата();
Если Не Заказ = Неопределено Тогда
    Сообщить(?(Не ПустаяСтрока(Заказ.АдресДоставки), "Адрес есть", "Адреса нет"));
КонецЕсли;
12 lxs
 
21.06.19
14:52
(10)
1. Говоря примитивным языком, запросом ты получаешь поле документа, а не его значение.
2. РезультатЗапроса.Пустой() вернёт ложь тогда, когда не будет найден документ.
3. Если ты сделаешь хотя бы так, как ниже написано, то получишь то, что хочешь:

Если РезультатЗапроса.Пустой() Тогда
    Сообщить("Документ не найден");
Иначе
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    Если ПустаяСтрока(Выборка.АдресДоставки) Тогда
        Сообщить("Адреса нет");
    Иначе
        Сообщить("Адрес есть");
    КонецЕсли;
КонецЕсли;
13 nemel09
 
21.06.19
15:05
(12) Хорошо, кажется понял смотри если я хочу сделать чтоб любой документ проверялся и напишу вот так

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


Я получу ответ Адрес есть, так как это поле документа, а не его значение. для значения отдельно надо написать проверку?
14 lxs
 
21.06.19
15:10
(13) Вот здесь Выборка.АдресДоставки ты получаешь уже само значение
15 hhhh
 
21.06.19
15:21
(13) но это будет не любой документ, а самый-самый первый в базе. Заказ от две тысячи лохматого года.
16 nemel09
 
21.06.19
15:24
(15) не я выбираю конкретный документ, и результат все равно Адрес есть, хотя его нет там.
17 hhhh
 
21.06.19
15:37
(16) конкретный это здесь

       |    где
        |        ЗаказПокупателя.номер = ""00000001440""


а в (13) неконкретный.
18 lxs
 
21.06.19
15:50
(16) ты мой код используешь?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс