Имя: Пароль:
1C
1С v8
проверка результата запроса на пустую ячейку
,
0 SerGo-116
 
12.08.15
18:38
Добрый вечер!
Обхожу в цикле результат запроса, и необходимо проверить одну ячейку результата запроса на пустоту, пробовал уже все что знал и Пустая() и Null и "" ничего не получается.

Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    СчетОтПоставщикаТовары.Наименование,
        |    СчетОтПоставщикаТовары.Номенклатура,
        |    СчетОтПоставщикаТовары.Количество,
        |    СчетОтПоставщикаТовары.ПрайсоваяЦенаБезНДС,
        |    СчетОтПоставщикаТовары.ЗакупочнаяЦенаБезНДС,
        |    СчетОтПоставщикаТовары.СрокПоставки,
        |    СчетОтПоставщикаТовары.Вес,
        |    СчетОтПоставщикаТовары.Объем,
        |    СчетОтПоставщикаТовары.Аналог,
        |    СчетОтПоставщикаТовары.СтоимостьТранспортировкиЗаЕд,
        |    СчетОтПоставщикаТовары.Ссылка.Поставщик,
        |    СчетОтПоставщикаТовары.Ссылка.НомерСчетаОтПоставщика,
        |    СчетОтПоставщикаТовары.Ссылка.ДатаСчетаОтПоставщика,
        |    СчетОтПоставщикаТовары.Ссылка.СрокАктуальностиСчета,
        |    СчетОтПоставщикаТовары.Примечание
        |ИЗ
        |    Документ.СчетОтПоставщика.Товары КАК СчетОтПоставщикаТовары
        |ГДЕ
        |    СчетОтПоставщикаТовары.Ссылка.Проведен
        |    И СчетОтПоставщикаТовары.Ссылка.Валюта = &Валюта
        |    И СчетОтПоставщикаТовары.Ссылка.Основание.Основание.Основание.Основание = &Заявка";
        
        Запрос.УстановитьПараметр("Валюта", Валюта);
        Запрос.УстановитьПараметр("Заявка", Заявка);
        РезультатЗапроса = Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        НовДок = Документы.КоммерческоеПредложение.СоздатьДокумент();
        НовДок.Дата = ТекущаяДата();
        НовДок.Валюта = Валюта;
        НовДок.Клиент = Заявка.Клиент;
        НовДок.КонтактноеЛицоКлиента  = Заявка.КонтактноеЛицоКлиента;
        НовДок.Организация = Заявка.Организация;
        НовДок.Основание = Заявка;
        НовДок.Ответственный = ПараметрыСеанса.ТекущийПользователь;
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            НовСтр = НовДок.Товары.Добавить();
            НовСтр.Наименование = ВыборкаДетальныеЗаписи.Наименование;
            НовСтр.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            НовСтр.Количество = ВыборкаДетальныеЗаписи.Количество;
            НовСтр.ПрайсоваяЦенаБезНДС = ВыборкаДетальныеЗаписи.ПрайсоваяЦенаБезНДС;
            НовСтр.ЗакупочнаяЦенаБезНДС = ВыборкаДетальныеЗаписи.ЗакупочнаяЦенаБезНДС;
            НовСтр.СрокПоставки = ВыборкаДетальныеЗаписи.СрокПоставки;
            НовСтр.Вес = ВыборкаДетальныеЗаписи.Вес;
            НовСтр.Объем = ВыборкаДетальныеЗаписи.Объем;
            НовСтр.ДоставкаРасходы = ВыборкаДетальныеЗаписи.СтоимостьТранспортировкиЗаЕд;
            НовСтр.Аналог = ВыборкаДетальныеЗаписи.Аналог;
            НовСтр.Поставщик = ВыборкаДетальныеЗаписи.Поставщик;
            НовСтр.Основание = ВыборкаДетальныеЗаписи.НомерСчетаОтПоставщика + " от " + Формат(ВыборкаДетальныеЗаписи.ДатаСчетаОтПоставщика,"ДФ=dd.MM.yyyy");
            Если Не ВыборкаДетальныеЗаписи.Примечание = """" Тогда
                Если Не ЗначениеЗаполнено(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                ИначеЕсли ЗначениеЗаполнено(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = НовДок.ПримечаниеКТовару + Символы.ПС + ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                КонецЕсли;
            КонецЕсли;
            Если Не ЗначениеЗаполнено(НовДок.РекомендуемыйСрокАктуальности) Тогда
                НовДок.РекомендуемыйСрокАктуальности = ВыборкаДетальныеЗаписи.СрокАктуальностиСчета;
            КонецЕсли;
            Если НовДок.РекомендуемыйСрокАктуальности > ВыборкаДетальныеЗаписи.СрокАктуальностиСчета Тогда
                НовДок.РекомендуемыйСрокАктуальности = ВыборкаДетальныеЗаписи.СрокАктуальностиСчета;            
            КонецЕсли;
        КонецЦикла;
1 SerGo-116
 
12.08.15
18:39
вот именно тот отрезок кода

Если Не ВыборкаДетальныеЗаписи.Примечание = """" Тогда
                Если Не ЗначениеЗаполнено(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                ИначеЕсли ЗначениеЗаполнено(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = НовДок.ПримечаниеКТовару + Символы.ПС + ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                КонецЕсли;
            КонецЕсли;
2 Defender aka LINN
 
12.08.15
18:49
Процедур, которые проверяют заполненность аргумента в СП значится ровно две - для строк и для всего остального.
3 SerGo-116
 
12.08.15
18:53
(2) Что нужно использовать в данном случае. Уже пробовал Неопределенно и ПустаяСтрока()
4 Pavlov_vu
 
12.08.15
18:57
(1) совсем не бережешь кавычки :)
5 SerGo-116
 
12.08.15
18:59
(4) Есть такое :), но проблема не в них...
6 Рэйв
 
12.08.15
19:02
>> СчетОтПоставщикаТовары.Ссылка.Основание.Основание.Основание.Основание ....

(0)Ты слишком рано на мисту пришел. Подучиться надо еще...
7 SerGo-116
 
12.08.15
19:08
(6) Мы мои труды оцениваем, или все такое что-то путное скажите касаемо проблемы с которой столкнулся...
По-поводу Основание... - базу пишу для себя в кратчайший срок поэтому и пишу простым способ а не по учебнику.
С тем, что учиться надо абсолютно согласен, учиться надо всегда...
8 Михаил Козлов
 
12.08.15
19:28
(7) В отладчике не пробовали посмотреть что в выборке?
9 SerGo-116
 
12.08.15
19:31
(8) В выборке ничего просто пусто...
А можно ли в цикле анализировать выборку на Истину/Ложь Булево?

Вот пример кода, никогда с этим не сталкивался

Если ВыборкаДетальныеЗаписи.ЕстьПримечание = Истина Тогда
                Если Не ПустаяСтрока(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                ИначеЕсли ПустаяСтрока(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = НовДок.ПримечаниеКТовару + Символы.ПС + ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                КонецЕсли;
            КонецЕсли;
10 Михаил Козлов
 
12.08.15
19:38
(9) Если выборка пустая, значит нет нужных документов:
ГДЕ СчетОтПоставщикаТовары.Ссылка.Проведен И СчетОтПоставщикаТовары.Ссылка.Валюта = &Валюта И СчетОтПоставщикаТовары.Ссылка.Основание.Основание.Основание.Основание = &Заявка
Не понял, что понимается под проверкой выборки на истину/ложь?
В выборке значения полей, которые Вы указали в запросе.
11 Defender aka LINN
 
12.08.15
19:42
(3) Неопределено, как нам символизирует наличие отсутствия скобок - не совсем процедура. Я бы даже сказал - вообще не процедура.
12 Рэйв
 
12.08.15
19:45
(11)Вот ты на 100 как минимум постов себе сделал задел:-)
13 Рэйв
 
12.08.15
19:46
(11)>>вообще не процедура.

Ржунемогу:-)
14 Рэйв
 
12.08.15
19:47
Молодец:-)
15 Рэйв
 
12.08.15
19:49
:-)))
16 SerGo-116
 
12.08.15
19:51
(10) Имеется ввиду
Если ВыборкаДетальныеЗаписи.ЕстьПримечание = Истина Тогда

ЕстьПримечание - реквизит табличной части документа (Булево), могу ли я его цикле проанализировать на Истину/Ложь
17 Рэйв
 
12.08.15
19:53
Вобщем извините:-) Дефендеру +100 к карме:-)
Я ушел и не мешаю
18 SerGo-116
 
12.08.15
19:57
(11) Наличие/отсутствие скобок никак не символизирует.
Если Вы про эти скобки - ПустаяСтрока(), то имеется ввиду

Если Не ПустаяСтрока(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                ИначеЕсли ПустаяСтрока(НовДок.ПримечаниеКТовару) Тогда
                    НовДок.ПримечаниеКТовару = НовДок.ПримечаниеКТовару + Символы.ПС + ВыборкаДетальныеЗаписи.Номенклатура + " - " + ВыборкаДетальныеЗаписи.Примечание;
                КонецЕсли;
19 Sanek_GAL
 
12.08.15
22:55
(16) если в "ВыборкаДетальныеЗаписи.ЕстьПримечание" булево - то можно:
Если ВыборкаДетальныеЗаписи.ЕстьПримечание Тогда
...
КонецЕсли
сравнение с истина или ложь в условии ставить не надо - для ЛОЖЬ ставь отрицание НЕ в условии и все
20 MSOliver
 
12.08.15
23:07
(0) ЗначениеЗаполнено(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение для проверки.
Возвращаемое значение:

Тип: Булево.
Для значений типа Булево всегда возвращается Истина.
Для значений типа Строка возвращается Истина, если в строке есть непробельные символы.
Для массивов и коллекций возвращается Истина, если в них есть хотя бы 1 элемент.
Для Неопределено и Null всегда возвращается Ложь.
Описание:

Функция проверяет, отличается ли переданное значение от значения по умолчанию того же типа.
Не работает с мутабельными значениями. При передаче мутабельного значения функция вызывает исключение.
21 MSOliver
 
12.08.15
23:15
(2) да как бы больше...

ЭтоАдресВременногоХранилища(<Адрес>)
Параметры:

<Адрес> (обязательный)

Тип: Строка.
Адрес файла во временном хранилище, который необходимо проверить.
Возвращаемое значение:

Тип: Булево.

Описание:

Проверяет, является ли переданный адрес адресом файла во временном хранилище.