Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

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

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №1
 
30.09.2010 15:18

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

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
30.09.2010 15:25

Напрашивается "Левое соединение", но конец описание какой-то путаный. Вот например искомая продукция Дверь и что должно получиться? Какие этапы ей соответствуют? По каким признакам определять, что этот этап нужен?

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №3
 
30.09.2010 15:36

Допустим,в номенклатуре документа указана дверь.Тогда я смотрю в регистр сведений,в котором этапы изготовления двери выстроены по приоритету.То есть,если номенклатура Дверь есть в регистре тогда беру соответствующие этапы.Но её может там не быть.Может быть родитель этой номенклатуры,там уже другие этапы,беру их.Ещё вариант,что это не справочник Номенклатура,а справочник НоменклатурныеГруппы или же в регистре вообще ничего этого нет,тогда уже беру этапы соответствующие пустым полям,но это в последнюю очередь.Непонятно,как выбирать именно те этапы,которые нужны.

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №4
 
30.09.2010 15:38

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

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №5
 
30.09.2010 17:12

"Скажите все-таки, какой результат должен получиться, если искомая продукция Дверь, а вашим запросом вы получили таблицу 1-го поста? Если должна получиться только одна запись: "Дверь Заготовка 1", тогда поместите результат вашего запроса во внутреннюю таблицу, а следующим запросом выберите Минимум и сравняйте по нему:<br>Запрос1=Новый Запрос;<br>Запрос1.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;<br>Запрос1.Текст="ВЫБРАТЬ<br>//Ваши поля (из того самого запроса)<br>|Поместить ВТТабл<br>|ИЗ<br>| РегистрСведений.ЭтапыПроцессаОбработкиЗаказаНаПродукцию КАК ЭтапыПроцессаОбработкиЗаказаНаПродукцию<br>|;<br>|Выбрать<br>| Этапы.Продукция,<br>| Этапы.Этап,<br>| Этапы.Очередность<br>|Из ВТТабл Как Этапы<br>|Где<br>| Этапы.Продукция В (&Продукция) И <br>| Этапы.Приоритет = (Выбрать Минимум (Приоритет) ИЗ ВТТабл Где Продукция В (&Продукция))<br>|Сгруппировать по<br>| Этапы.Продукция,<br>| Этапы.Этап,<br>| Этапы.Очередность<br>|";<br>МасПрод = Новый Массив;<br>МасПрод.Добавить (Дверь);<br>МасПрод.Добавить (Дверь.Родитель);<br>МасПрод.Добавить (ПустаяСсылка());<br>Запрос1.УстановитьПараметр ("Продукция", МасПрод);<br>Запрос1.Выполнить().Выгрузить().ВыбратьСтроку("""");<br><br>В общем попробуйте сначала на одном элементе используя консоль запросов. Когда получите нужный результат, тогда перейдете на склейку со строками документа."

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №6
 
30.09.2010 17:29

В данном случае,так как Дверь есть в выборке из регистра,получается,что нужно выбрать этап Заготовка.

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №7
 
30.09.2010 17:49

Вы не подскажете,почему если поставить в моём запросе минимум перед кострукцией с выбором,в резельтате не будут отбираться записи с минимальным приоритетом?

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №8
 
30.09.2010 18:00

"Тогда запрос должен сработать.<br>А с документом примерно так должно получиться (сокращенно):<br>Выбрать Номенклатура Как Ном <br>Поместить ВТНом <br>из Документ <br>Где Ссылка = &Ссылка;<br>//Тут ваш запрос <br>Выбрать ...<br>Поместить ВТЭтапы ....<br>;<br>Выбрать //Склеиваем Продукцию из документа с Этапами - таблица сильно вырастет<br> Ном, Этапы.*<br>Поместить ВТНомЭт<br>Из ВТНом<br>Левое Соединение ВТЭтапы как Этапы<br> По Ном = Этапы.Продукция ИЛИ Ном.Родитель = Этапы.Продукция ИЛИ Этапы.Продукция = &ПустаяСсылка<br>;<br>Выбрать //НАходим минимальный приоритет по каждой Продукции из документа<br> Ном, Минимум (Приоритет) Как Приоритет<br>Поместить ВТМинПриор<br>Из ВТНомЭт<br>СГРуппировать по Ном<br> ;<br>Выбрать //Наконец выбираем из склейки только то что нам надо<br> Этапы.*<br>Из ВТМинПриор как МинПриор<br>Левое соединение ВТНОмЭт Как Этапы<br> По МинПриор.Ном = Этапы.Ном И МинПриор.Приоритет = Этапы.Приоритет<br><br><br>Что-то типа того - экспериментируйте."

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №9
 
30.09.2010 18:03

Если бы у вас была таблица типа:<br>Дверь Заготовка 1 1<br>Дверь Заготовка 3 2<br><br>Тогда Минимум дал бы результат:<br>Дверь Заготовка 1 1<br><br>Минимум ищется только среди равных по группировке полей.

Lucky3
читатель
офлайн
Дата регистрации: 30.09.2010
Сообщений: 78
Пост №10
 
30.09.2010 18:04

А в запросе можно как-нибудь рекурсивно вычислить всех родителей номенклатуры документа?

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация