8.х Ноль по умолчанию

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем kogor, 6 апр 2010.

  1. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

    Столкнулся с такой проблемой.

    Если в табличной части документа нет ни одной строки или не введено значение в поле ввода реквизита ТЧ , то в регистр накопления не записывается никакое значение этого реквизита. Далее в схеме компоновки данных я создаю Вычисляемое Поле, в выражении которого участвует как раз этот реквизит (арифметическая операция вычитания). И мне нужно его значение даже если оно нулевое. А получается, что в отчете это значение не выводится и соответственно Вычисляемое мной поле тоже.

    Я пробовал поставить "Представление нуля" в опции Формат поля ввода реквизита в ТЧ документа, а также в схеме компоновки данных, но это не помогает..

    Подскажите, как это можно исправить?
    Как задать нулевое значение реквизита, если значение не введено? Так, чтобы оно попало в регистр накопления и следовательно в отчет?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Использовать конструкцию ЕСТЬNULL() в запросе.
  3. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    А как использовать?

    Вот так поставил, но ничего не изменилось:

    Код:
    ВЫБРАТЬ
    РасходыОбороты.Период,
    РасходыОбороты.Кому,
    ЕстьNULL(СУММА(РасходыОбороты.СуммаОборот), 0) КАК СуммаОборот,
    РасходыОбороты.ЦельРасхода
    ИЗ
    РегистрНакопления.Расходы.Обороты(, , День, ) КАК РасходыОбороты
    
    СГРУППИРОВАТЬ ПО
    РасходыОбороты.Период,
    РасходыОбороты.Кому,
    РасходыОбороты.ЦельРасхода
    
    Как правильно?
  4. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    А вот так пробовали

    СУММА(ЕстьNULL(РасходыОбороты.СуммаОборот,0)) КАК СуммаОборот,
  5. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Попробовал, но тоже никаких изменений :unsure:
  6. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Решил при открытии формы создавать программно новую строку табличной части и вводить в реквизит Сумма нулевое значение:
    Код:
    Процедура ПриОткрытии()
    
    НоваяСтрока = ЭтотОбъект.Расходы.Добавить();
    НоваяСтрока.Сумма = 0;  
    
    КонецПроцедуры
    
    
    Но тоже не помогает. В отчете нет записи по этому документу. В 1С.Предприятие 8.1 (8.1.14.65) нулевое значение не считается за значение??
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Давайте разберемся.
    1. Вы не регистрируете пустую запись из таблицы значений, т.е. эта запись в регистре отсутствует.
    2. Всё же Вы хотите это значение откуда-то взять.
    Варианты:
    1. Если ТЧ не заполнена пишем одну строку со значением 0 и запрос тогда его найдёт.
    2. Если не первое тогда так. Обходим результат запроса сверяем есть ли запись в выборке, если нет добавляем.
  8. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

    В рассматриваемом мной документе есть ТЧ Расходы.

    Расходы могут отсутствовать, т.е. ни одной строки в ТЧ. При этом в отчете я обращаюсь к вирт таблице Расходы.Обороты и хочу чтобы выводился ноль.

    Выше я написал, что создал процедуру ПриОткрытии():
    Код:
    Процедура ПриОткрытии()
    
    НоваяСтрока = ЭтотОбъект.Расходы.Добавить();
    НоваяСтрока.Сумма = 0;  
    
    КонецПроцедуры
    
    Но это не помогает, в отчете по прежнему нет данных.

    Я просматривал в отладчике движения по этому документу. Нулевое значение записывается в реквизит Сумма, но в отчете запись по этому документу не отображается.
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    как вариант: сделайте ТиИ с пересчетом итогов.

    столкнулся тут, низа что не подумал бы.....
  10. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Поясните пожалуйста, что такое "ТиИ" ?? :unsure:
    По-моему дак актуальная проблема, как быть если количество товара = 0 или текущий баланс = 0. В результате получается что просто записи нет. А как считать Прибыль = Доходы - Расходы, если записи Расходы нет. То и Прибыль не подсчитывается. тоже с этим столкнулся. Может у кого-то есть идеи как быть?
  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    ТиИ - Тестирование и Исправление
  12. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Спасибо за совет, но не помогло :unsure:
  13. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Выкладывайте скрин документа, и скрины движений, будем думать :unsure:
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Опять 25 :)
    На ИТС есть статья по дополнению периодов в СКД.
    Посмотрите, как это работает и получите то, что хотели в два нажатия кнопки мышки.
  15. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    У меня нет старых дисков ИТС. На том который есть, подобной статьи нет.

    Расскажите в двух словах о чем там, раз это в два клика делается.. Думаю много кому интересно будет решение этой проблемки
  16. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Но все равно спасибо за наводку :unsure:

    Покопался в СКД, поставил дополнение периода День. В отчете действительно добавилась запись по тому документу, но поле Расхода в этой строке пустое, а мне нужно, чтобы было значение 0. Потому что я потом использую значение этого поля, например, чтобы посчитать Прибыль = Доход - Расход. А 1С не считает, я так понимаю потому что в регистре накопления этого нулевого значения просто нет.
  17. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    На новых дисках это есть :)
    Статья так и называется: Дополнение периодов в системе компоновки данных
  18. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Я скажу сейчас навскидку (сложно говорить иначе, не имея на руках базы данных, так как я знаю, что я бы проверил в первую очередь): проблема, скорее всего, в некорректно построенном запросе:

    Как я понимаю, происходит следующее: не имея никаких движений по документу запрос не просто не возвращает нулевого значения, но и не возвращает вообще ничего. Записей просто нет. Необходимо заполучить в запросе не только таблицу движений, но и таблицу документов, по которым вы хотели бы увидеть движения (и, в том числе, пресловутый ноль), затем соединить таблицы односторонним соединением (левым или правым, в зависимости от самого запроса) в пользу таблицы документов, и тогда заработает конструкция ЕстьNULL.
  19. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Если решать задачу запросом - то нужно использовать ИТОГИ Периоды ПЕРИОДАМИ(День) - на ИТС есть описание этого :)
    Если в СКД - то дополнением периода (ибо итоги в СКД делать в запросе нельзя)
  20. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Дело было в том, что доход был в одном РН, а расход в другом. Сделал ресурсы доход и расход в одном РН. Так получается, запись есть. но поле пустое. Сносно, но хотелось бы чтобы четко отображался ноль. На досуге буду наводить красоту, главное работает. Всем спасибо :unsure:

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