Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 мая 2024, 01:44

Как выбрать данные в соответствие с приоритетом

Автор Ogo, 30 сен 2010, 14:58

0 Пользователей и 1 гость просматривают эту тему.

Ogo

Здравствуйте!Подскажите,пожалуйста,как можно выбирать данные в зависимости от приоритета.Запросом из регистра сведений я получаю примерно след таблицу:
Продукция Этап Приоритет Очерёдность
Дверь Заготовка 1
Производство дверей Покраска 3 1
Заготовка 4 1
Изготвление 4 2
То есть выстраиваю в порядке приоритета в зависимости от продукции.Продукция может быть номенклатурой,родителем номенклатуры,номенклатурной группой или вообще ничего нет.Далее,я получаю данные из документа.И мне нужно,в зависимости от того,что есть в столбце продукция(сама номенклатура или родитель номенклатуры и т.д.) выбрать соответстующие этапы.И мне непонятно,как это можно сделать.Может у кого-нибудь есть похожий пример?


mohock

Весьма смутное описание...  :(
Из твоего текста видно, что ты и так выбрал все, что надо и с избытком.
Ты пишешь о каком-то документе...
К примеру, я только предполагаю, ибо ты ничего толком не описал. Ты заполняешь табличную часть продукцией.
Выбираешь в колонке номенклатура - номенклатуру и после этого должна заполнится колонка - этап.
Это вешается на событие При изменении, для колонки номенклатура.
Пишешь запрос к своему регистру с параметром - ссылкой на спрваочник номенклатуры.
Заначение параметра - значение номенклатуры в строке. Получаешь результат запроса в одну строку.
Используя метод Выбраь() получаешь значение этапа и вствляешь его в колонку этап тч документа.
....
Старайся ясно выражать свои мысли.

Ogo

Теперь у меня возник другой вопрос.Вот мой запрос:
ВЫБРАТЬ
   ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция,
   ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Этап,
   ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Очередность КАК Очередность,
   ВЫБОР
      КОГДА ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция ССЫЛКА Справочник.Номенклатура
         ТОГДА ВЫБОР
               КОГДА ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция.ЭтоГруппа
                  ТОГДА 2
               ИНАЧЕ ВЫБОР
                     КОГДА ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция = &ПустаяНоменклатура
                        ТОГДА 4
                     ИНАЧЕ 1
                  КОНЕЦ
            КОНЕЦ
      ИНАЧЕ ВЫБОР
            КОГДА ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция ССЫЛКА Справочник.НоменклатурныеГруппы
               ТОГДА ВЫБОР
                     КОГДА ЭтапыПроцессаОбработкиЗаказаНаПродукцию.Продукция = &ПустаяНоменклатурнаяГруппа
                        ТОГДА 4
                     ИНАЧЕ 3
                  КОНЕЦ
            ИНАЧЕ 4
         КОНЕЦ
   КОНЕЦ КАК Приоритет
ПОМЕСТИТЬ ВТЭтап
ИЗ
   РегистрСведений.ЭтапыПроцессаОбработкиЗаказаНаПродукцию КАК ЭтапыПроцессаОбработкиЗаказаНаПродукцию
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказПокупателяТовары.Номенклатура
ПОМЕСТИТЬ ВТНом
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
   ЗаказПокупателяТовары.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Этапы.Продукция,
   Этапы.Этап,
   Этапы.Очередность,
   Этапы.Приоритет,
   ВТНом.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТНомЭт
ИЗ
   ВТНом КАК ВТНом
      ЛЕВОЕ СОЕДИНЕНИЕ ВТЭтап КАК Этапы
      ПО (ВТНом.Номенклатура = Этапы.Продукция
            ИЛИ ВТНом.Номенклатура.Родитель=Этапы.Продукция
            ИЛИ ВТНом.Номенклатура.НоменклатурнаяГруппа = Этапы.Продукция
            ИЛИ Этапы.Продукция = НЕОПРЕДЕЛЕНО)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТНомЭт.Номенклатура,
   МИНИМУМ(ВТНомЭт.Приоритет) КАК Приоритет
ПОМЕСТИТЬ ВТМинПриор
ИЗ
   ВТНомЭт КАК ВТНомЭт

СГРУППИРОВАТЬ ПО
   ВТНомЭт.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Этапы.Продукция,
   Этапы.Этап,
   Этапы.Очередность,
   Этапы.Приоритет,
   Этапы.Номенклатура
ИЗ
   ВТМинПриор КАК МинПриор
      ЛЕВОЕ СОЕДИНЕНИЕ ВТНомЭт КАК Этапы
      ПО МинПриор.Номенклатура = Этапы.Номенклатура
         И МинПриор.Приоритет = Этапы.Приоритет
Как можно в условии
ПО (ВТНом.Номенклатура = Этапы.Продукция
            ИЛИ ВТНом.Номенклатура.Родитель=Этапы.Продукция
            ИЛИ ВТНом.Номенклатура.НоменклатурнаяГруппа = Этапы.Продукция
            ИЛИ Этапы.Продукция = НЕОПРЕДЕЛЕНО)
обратиться сразу ко всем родителям номенклатуры.Это вообще возможно сделать?
;

mohock

Цитата: Ogo от 01 окт 2010, 10:56
Теперь у меня возник другой вопрос.Вот мой запрос:
...
обратиться сразу ко всем родителям номенклатуры.Это вообще возможно сделать?
;

Да, можно. Когда используя конструктор запросов прописываешь Условия, там кроме "=" есть "В" и "В иерархии"
(извини, читать весь твой запрос духу не хватило, прочел первую и последнюю фразы)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск