7.7 "ПустоеЗначение" тупой впрос восьмерочника [РЕШЕНО]

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем banditxx, 17 апр 2017.

  1. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!!!

    По поиску не нашел аналогичное:

    Есть код:

    Если ПустоеЗначение (Док.Партия.ГТД) = 1 Тогда
    Иначе
    СчетXML.УстановитьАтрибут ("ГТД", Док.Партия.ГТД);
    КонецЕсли;

    По синтакс помошнику значение неопределенно тоже будет равно 1.

    НО! У меня ГТД не во всех документах. И конгда его нет, условие не работает. сваливается в Иначе.

    Как это исключить? Какая еще есть проверка. Подскажите пожалуйста!!!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.929
    Симпатии:
    472
    Баллы:
    104
    Док.Партия.Выбран() определит выбрана ли партия. Если я вас правильно понял.
  3. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    471
    Симпатии:
    82
    Баллы:
    54
    Здравствуйте.
    Ваш код проверяет, заполнено ли Док.Партия.ГТД. Если заполнено (0), то устанавливается атрибут, если не заполнено (1), то ничего не происходит. Скажите, что нужно получить, и мы подскажем, как это будет выглядеть.
  4. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Прошу прощения пропал. Да мне нужно проверить есть ли в Документе ГТД. Все верно если он есть то его нужно выгрузить в XML

    НО! Я проверяю по F9 он пустой. Но условие если возвращает 0 .соответственно запись атрибута вываливается.

    Я из ситуации вышел:

    Пишу значение в переменную, перевожу в строку и проверяю строку пустая или нет. Работает.....


    Но на будущее интересно почему ПустоеЗначение() не работает?
  5. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    10
    Баллы:
    29
    Если ПустоеЗначение() = 0 Тогда
    УстановитьАтрибут
    Иначе
    Сообщить ("ГТД пусто");
    КонецЕсли;
    Т.е. получается если ГТД заполнено, то УстанавливаетАтрибут.
  6. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    471
    Симпатии:
    82
    Баллы:
    54
    Мне приходилось с таким сталкиваться. Пустые значения справочников в семерке возвращают <>, по-моему. Посмотрите в отладчике.
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.929
    Симпатии:
    472
    Баллы:
    104
    Если элемент ВЫБРАН то пустое значение = 0. Что касается <> это просто так отображается представление элемента. Ни какого сравнения в данном случае делать нельзя. Ибо получатся разные типы данных (<> при любом раскладе 1с воспримет как строку)
  8. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.318
    Симпатии:
    85
    Баллы:
    54
    Доброго
    Код:
    ПредставлениеГТД = СокрЛП(Док.Партия.ГТД); // преобразование к строке, NULL, Неопределено, ПусатаяСсылка преобразуются в пустую строку 
    Если ПредставлениеГТД = "" Тогда
        //
    Иначе
        СчетXML.УстановитьАтрибут ("ГТД", ПредставлениеГТД); // конечно если атрибут передается как строка, а не имеет боле сложный тип
    КонецЕсли;
    
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.929
    Симпатии:
    472
    Баллы:
    104
    Нафига сложности? Когда ПустоеЗначение непосредственно в условии сделает то же самое, без приведение к типу.
    Единственное что - проверить на наличие ссылки на справочник Партия через Выбран() иначе вывалится в ошибку (пр преобразовании тоже вывалится)
  10. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    В = Док.ПартияГДТ;
    Строка (В);
    Если ПустаяСтрока(В) = 1 Тогда
    Иначе
    СчетXML.УстановитьАтрибут ("ГТД", Док.Партия.ГТД);
    КонецЕсли;


    Сори что пропал, времени не было написать. Я решил проблему кодом выше .все корректно отработало.

    Момент почему ПустоеЗначение() так и не сработало верно, я так и не понял.......
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.929
    Симпатии:
    472
    Баллы:
    104
    ПустоеЗначение сработало бы в случае только пустой строки.

    Т.е ПустоеЗначение(СокрЛП(Док.ПартияГДТ))=1
    а
    ПустоеЗначение(Док.ПартияГДТ)=0, т.к. ПартияГТД это реквизит и он не пустой.

    ПустаяСтрока же игнорирует пробелы.. Поэтому и сработало
  12. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Понял, спасибо.
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.929
    Симпатии:
    472
    Баллы:
    104

Поделиться этой страницей