8.х Вывод значения, пока не появилось то же значение с пометкой

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

  1. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток.
    Столкнулся с проблемным запросом .Как всегда думал, что он простой.... а нееет.

    В общем ситуация следующая:
    Идет сварка. Стыки записываются в регистр сведений.
    Если стык не годный, он так же записывается в журнал и может ремонтироваться несколько раз, пока не станет годным.

    Как в запросе получить не годные стыки, которые еще не стали годными?

    Код:
    Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    Сварка.СтыкНом,
            |    Сварка.СпособСварки,
            |    Сварка.ТрубаНом2,
            |    Сварка.ТрубаНом1,
            |    Сварка.ИсточникИнф1,
            |    Сварка.ИсточникИнф2,
            |    Сварка.ИсточникИнф1.Материал КАК Материал1,
            |    Сварка.ИсточникИнф2.Материал КАК Материал2,
            |    ДвижениеСтыковОстатки.ПКОстаток КАК ПКОстаток
            |ИЗ
            |    РегистрСведений.Сварка КАК Сварка
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Сварка КАК Сварка1
            |        ПО Сварка.СтыкНом = Сварка1.СтыкНом
            |            И Сварка.СпособСварки = Сварка1.СпособСварки
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвижениеСтыков.Остатки КАК ДвижениеСтыковОстатки
            |        ПО Сварка.СтыкНом = ДвижениеСтыковОстатки.СтыкНом
            |            И Сварка.СпособСварки = ДвижениеСтыковОстатки.СпособСварки
            |ГДЕ
            |    Сварка1.Состояние = &Состояние
            |   И Сварка1.Состояние ЕСТЬ NULL
            |УПОРЯДОЧИТЬ ПО
            |    ПКОстаток";
    
        ГодныйСтык = Перечисления.СваркаСостояние.Годен;   
        Запрос.УстановитьПараметр("Состояние", ГодныйСтык);
    
        Результат = Запрос.Выполнить().Выбрать();
    Каким образом можно написать в разделе ГДЕ код типа "строка, которая имеет значение ГОДЕН - не существует"?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Это два взаимоисключающих условия.

    Присвайивайте стыкам разные состояния: Годный, Не годный.

    Запросом получайте все с состоянием "не годный".
  3. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Если сделаю запрос стыков с состоянием "не годный", то выйдут негодные даже если тот же стык записан годным.
    Стык 252-610 - не годный 21.06.2016
    Стык 252-610 - не годный 23.06.2016
    Стык 252-610 - годный 26.06.2016

    Если в таблице появился стык 252-610 - годный, то выводить не годные не нужно.
    Соответственно, если годного стыка 252-610 нет, то стык выводится
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Если РС периодический, то СрезПоследних на дату даст актуальное состояние стыка.
    GreenSH нравится это.
  5. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Таблицу перевел в секундную периодичность. Но выдает негодные стыки, даже если в таблице присутствует этот же годный стык
    Код:
    "ВЫБРАТЬ
            |    Сварка.СтыкНом,
            |    Сварка.СпособСварки,
            |    Сварка.ТрубаНом2,
            |    Сварка.ТрубаНом1,
            |    Сварка.ИсточникИнф1,
            |    Сварка.ИсточникИнф2,
            |    Сварка.ИсточникИнф1.Материал КАК Материал1,
            |    Сварка.ИсточникИнф2.Материал КАК Материал2,
            |    ДвижениеСтыковОстатки.ПКОстаток КАК ПКОстаток
            |ИЗ
            |    РегистрСведений.Сварка КАК Сварка
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Сварка.СрезПоследних КАК Сварка1
            |        ПО Сварка.СтыкНом = Сварка1.СтыкНом
            |            И Сварка.СпособСварки = Сварка1.СпособСварки
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвижениеСтыков.Остатки КАК ДвижениеСтыковОстатки
            |        ПО Сварка.СтыкНом = ДвижениеСтыковОстатки.СтыкНом
            |            И Сварка.СпособСварки = ДвижениеСтыковОстатки.СпособСварки
            |ГДЕ
            |    Сварка1.Состояние = &НеГодный И Сварка1.Состояние = Сварка.Состояние
            |УПОРЯДОЧИТЬ ПО
            |    ПКОстаток";
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    У вас изменение состояния может в течении секунды поменятся?

    Используте виртуальную таблицу СрезПоследних с указанием даты среза данных.
  7. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Может в пределах часа поменяться.
  8. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Кое-как добил ее без периодичности
    Код:
    "ВЫБРАТЬ
            |    Сварка.СтыкНом,
            |    Сварка.СпособСварки
            |ПОМЕСТИТЬ ВТ_СваркаГодная
            |ИЗ
            |    РегистрСведений.Сварка КАК Сварка
            |ГДЕ
            |    Сварка.Состояние = &Годный
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ РАЗЛИЧНЫЕ
            |    Сварка.ТрубаНом1,
            |    Сварка.ТрубаНом2,
            |    Сварка.СпособСварки,
            |    Сварка.СтыкНом,
            |    Сварка.Состояние,
            |    Сварка.ИсточникИнф1,
            |    Сварка.ИсточникИнф2,
            |    Сварка.ИсточникИнф1.Материал КАК Материал1,
            |    Сварка.ИсточникИнф2.Материал КАК Материал2,
            |    ДвижениеСтыковОстатки.ПКОстаток КАК ПКОстаток
            |ИЗ
            |    РегистрСведений.Сварка КАК Сварка
            |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СваркаГодная КАК ВТ_СваркаГодная
            |        ПО Сварка.СтыкНом = ВТ_СваркаГодная.СтыкНом
            |            И Сварка.СпособСварки = ВТ_СваркаГодная.СпособСварки
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвижениеСтыков.Остатки КАК ДвижениеСтыковОстатки
            |        ПО Сварка.СтыкНом = ДвижениеСтыковОстатки.СтыкНом
            |            И Сварка.СпособСварки = ДвижениеСтыковОстатки.СпособСварки
            |ГДЕ
            |    Сварка.Состояние = &НеГодный
            |    И ВТ_СваркаГодная.СтыкНом ЕСТЬ NULL
            |
            |УПОРЯДОЧИТЬ ПО
            |    ПКОстаток";

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