8.х Вывод остатков на начало и конец дня

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

  1. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Доброе время суток.
    Столкнулась вот с какой проблемой, мне нужно сделать отчет, в котором будет остаток на начало дня и остаток на конец дня..
    Написала запрос который должен выводить остаток на начало дня, но он не работает, ошибка в дате...((
    подскажите пожалуйста как это правильно реализовать?
    Заранее благодарю!
  2. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Что в ДатаН при передаче в запрос находится? И какая ошибка вообще? и если нужен остаток на начало и конец, то почему бы сразу не использовать ОстаткиИОбороты?
  3. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    ДатаН это реквизит с типом Дата. А ошибка заключается в том что данные просто не выводяться, если я указываю еще ДатаК, то сумма появляться,но неправильная(((мне нужен именно остаток на начало дня, а у меня появляться сумма на конец, я незнаю как вывести сумму именно на начало дня
  4. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    solnce, вроде же ASh сказал, что для получения остатков на начало и на конец дня нужно использовать ВТ ОстаткиИОбороты.
    Это раз.

    А зачем в вашем запросе СГРУППИРОВАТЬ ПО РеализованныеТоварыОстатки.КоличествоОстаток и РеализованныеТоварыОстатки.ВыручкаОстаток? Что группируем?
  5. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    в общем реализованные товары тут использовать нельзя.....думала откуда можно остатки взять..решила из регистра накопления Продажи...но проблема в том что там нет Продажи.ОстаткииОбороты, есть только Продажи.Обороты....сразу возникает вопрос как получить остатки на начало дня?((
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Какая конфигурация? И остатки чего вообще Вам нужно получить?
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Solnce, а параметр ДатаН пробовали делать в виде границы?
  8. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    1. Держите Вашь запрос
    Код:
    Функция ПолучитьРезультатЗапроса_Запрос1()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТоварыОрганизацийОстатки.Организация,
    |    ТоварыОрганизацийОстатки.Комиссионер,
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
    |    ТоварыОрганизацийОстатки.Качество,
    |    ТоварыОрганизацийОстатки.Склад,
    |    СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК ОстатокНаНачалоДня,
    |    NULL КАК ОстатокНаКонецДня
    |ИЗ
    |    РегистрНакопления.ТоварыОрганизаций.Остатки(&НачалоДня, ) КАК ТоварыОрганизацийОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыОрганизацийОстатки.Организация,
    |    ТоварыОрганизацийОстатки.Склад,
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    |    ТоварыОрганизацийОстатки.Комиссионер,
    |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
    |    ТоварыОрганизацийОстатки.Качество
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТоварыОрганизацийОстатки.Организация,
    |    ТоварыОрганизацийОстатки.Комиссионер,
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
    |    ТоварыОрганизацийОстатки.Качество,
    |    ТоварыОрганизацийОстатки.Склад,
    |    NULL,
    |    ТоварыОрганизацийОстатки.КоличествоОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецДня, ) КАК ТоварыОрганизацийОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыОрганизацийОстатки.Организация,
    |    ТоварыОрганизацийОстатки.Склад,
    |    ТоварыОрганизацийОстатки.Номенклатура,
    |    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    |    ТоварыОрганизацийОстатки.Комиссионер,
    |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
    |    ТоварыОрганизацийОстатки.Качество,
    |    ТоварыОрганизацийОстатки.КоличествоОстаток";
    //Параметры запроса
    Запрос.УстановитьПараметр("КонецДня",КонецДня);// Дата
    Запрос.УстановитьПараметр("НачалоДня",НачалоДня);// Дата
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать().Выгрузить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_Запрос1
    
    
    
    А вот Вам и результат
    Посмотреть вложение 2800

    К каждой номенклатуре в результате содержится по 2 записи, 1 запись, на остаток на начала дня, 2 запись, остаток на конец дня.
    Если запись только одна - значит товар продан весь, или товар за текущий день только поступил

    2. Вариант покрасивее :unsure:

    А этот запрос будет выполняться намного медленнее, но более корректно выведет Вам нужный результат

    Код:
    Функция ПолучитьРезультатЗапроса_Запрос1()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.Организация, ТоварыОрганизацииОстаткиНаКонецДня.Организация) КАК Организация,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.Комиссионер, ТоварыОрганизацииОстаткиНаКонецДня.Комиссионер) КАК Комиссионер,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.Номенклатура, ТоварыОрганизацииОстаткиНаКонецДня.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.ХарактеристикаНоменклатуры, ТоварыОрганизацииОстаткиНаКонецДня.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.СерияНоменклатуры, ТоварыОрганизацииОстаткиНаКонецДня.СерияНоменклатуры) КАК СерияНоменклатуры,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.Качество, ТоварыОрганизацииОстаткиНаКонецДня.Качество) КАК Качество,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.Склад, ТоварыОрганизацииОстаткиНаКонецДня.Склад) КАК Склад,
    |    ЕСТЬNULL(ТоварыОрганизацийОстаткиНаНачалоДня.КоличествоОстаток, 0) КАК ОстатокНаНачалоДня,
    |    ЕСТЬNULL(ТоварыОрганизацииОстаткиНаКонецДня.КоличествоОстаток, 0) КАК ОстатокНаКонецДня
    |ИЗ
    |    РегистрНакопления.ТоварыОрганизаций.Остатки(&НачалоДня, ) КАК ТоварыОрганизацийОстаткиНаНачалоДня
    |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ТоварыОрганизацийОстатки.Организация КАК Организация,
    |            ТоварыОрганизацийОстатки.Комиссионер КАК Комиссионер,
    |            ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    |            ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |            ТоварыОрганизацийОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
    |            ТоварыОрганизацийОстатки.Качество КАК Качество,
    |            ТоварыОрганизацийОстатки.Склад КАК Склад,
    |            ТоварыОрганизацийОстатки.КоличествоОстаток КАК КоличествоОстаток
    |        ИЗ
    |            РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецДня, ) КАК ТоварыОрганизацийОстатки) КАК ТоварыОрганизацииОстаткиНаКонецДня
    |        ПО ТоварыОрганизацийОстаткиНаНачалоДня.Организация = ТоварыОрганизацииОстаткиНаКонецДня.Организация
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.Комиссионер = ТоварыОрганизацииОстаткиНаКонецДня.Комиссионер
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.Номенклатура = ТоварыОрганизацииОстаткиНаКонецДня.Номенклатура
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.ХарактеристикаНоменклатуры = ТоварыОрганизацииОстаткиНаКонецДня.ХарактеристикаНоменклатуры
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.СерияНоменклатуры = ТоварыОрганизацииОстаткиНаКонецДня.СерияНоменклатуры
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.Качество = ТоварыОрганизацииОстаткиНаКонецДня.Качество
    |            И ТоварыОрганизацийОстаткиНаНачалоДня.Склад = ТоварыОрганизацииОстаткиНаКонецДня.Склад";
    //Параметры запроса
    Запрос.УстановитьПараметр("КонецДня",КонецДня);// Дата
    Запрос.УстановитьПараметр("НачалоДня",НачалоДня);// Дата
    Результат = Запрос.Выполнить().Выгрузить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_Запрос1
    
    
    Посмотреть вложение 2801

    Удачи

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      55,8 КБ
      Просмотров:
      124
    • 1.JPG
      1.JPG
      Размер файла:
      89,1 КБ
      Просмотров:
      115
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Если в день, на который снимается отчет, были движухи в 23:59:59, то эти движухи в отчет не попадут, т.е. остатки снимутся на момент времени, равный началу момента 23:59:59.
    Чтобы попали движухи и за период между 23:59:59 и началом 00:00:00 следующего дня, нужно использовать границу, с видом "включая".
  10. TopicStarter Overlay
    solnce
    Offline

    solnce Опытный в 1С

    Регистрация:
    16 июл 2009
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Спасибо Вам ОГРОМНОЕ!!!!!! Очень выручили!!!а вот про границу не разу не слышала...как то не сталкивалась, но спасибо за совет, обязательно посмотрю

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