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

Незнаю, как правильно сформировать вопрос.

Автор mila1231, 23 ноя 2017, 12:09

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

mila1231

Возможно кто подскажет
есть регистр сведений в нем поля
Заводской_номер
номер_приемки
контрагент
статус(принят, к выдаче)
Нужно вытащить все номера приёмки, которые готовы к выдаче.
Т.е нужно выбрать сначала все приборы которые со статусом принят и посмотреть количество приборов, потом сделать срез последних по этому же регистру и выбрать все приборы, которые к выдаче и дальше сравнить эти два списка. И вот тут я не могу понять, что нужно сделать, результат попробовать запихать в массив и дальше сделать сравнение массива или как?
заранее спсб.

ilyay

Не понятно, зачем анализировать принятые, а не просто найти те, которые к выдаче. Как их надо сравнивать?

mila1231

Цитата: ilyay от 23 ноя 2017, 12:35
Не понятно, зачем анализировать принятые, а не просто найти те, которые к выдаче. Как их надо сравнивать?
Есть документ приборы полученные, там есть общие реквизиты и табличное полу, в котором идёт перечисление приборов.При проведении идёт запись в регистр сведений.
Дальше при использовании обработки по каждому из приборов создаётся ряд документов,последний документ из этого ряда при проведении сохраняется со статусом к_выдаче, так вот нужно выбрать все номера документов из приборы полученные по которым все приборы стоят к_выдаче, т.е если получено 3 прибора и они 3 со статусом к выдаче, этот номер выбрать надо, а если получено 3 прибора, а со статусом к_выдаче2, тогда этот номер выбирать не надо.

ilyay

например, так:

запрос 1 - выбрать ссылку на прибор и его статус с использованием среза последних
запрос 2 - выбрать из табличной части документа приемки ссылку на документ, ссылку на прибор и статус - для этого соединить левым соединением к запросу 1
запрос 3 - выбрать запрос2.докссылка, количество(*) как Колво из запрос2 как запрос2 где запрос2.статус="к_выдаче" сгруппировать по докссылка
запрос 4 - выбрать запрос2.докссылка, количество(*) как Колво из запрос2 как запрос2 сгруппировать по докссылка
запрос 5 - выбрать разлччные запрос3.докссылка из запрос3 и зпарос4 где запрос3.докссылка = запрос4.докссылка и запрос3.Колво=Запрос4.Колво

mila1231

Цитата: ilyay от 23 ноя 2017, 15:40
например, так:

запрос 1 - выбрать ссылку на прибор и его статус с использованием среза последних
запрос 2 - выбрать из табличной части документа приемки ссылку на документ, ссылку на прибор и статус - для этого соединить левым соединением к запросу 1
запрос 3 - выбрать запрос2.докссылка, количество(*) как Колво из запрос2 как запрос2 где запрос2.статус="к_выдаче" сгруппировать по докссылка
запрос 4 - выбрать запрос2.докссылка, количество(*) как Колво из запрос2 как запрос2 сгруппировать по докссылка
запрос 5 - выбрать разлччные запрос3.докссылка из запрос3 и зпарос4 где запрос3.докссылка = запрос4.докссылка и запрос3.Колво=Запрос4.Колво

Спасибо, за вариант решения, но я столкнулась с проблемой на запрос5 на моменте условия (где запрос3.докссылка = запрос4.докссылка и запрос3.Колво=Запрос4.Колво). Если же ставится условие, то там сравнение с параметром, который устанавливается ниже, или нет? может я не правильно всё поняла, ниже прилагаю сам запрос...


ВЫБРАТЬ
РеестрДвиженияПрибораСрезПоследних.Статус_регистр,
РеестрДвиженияПрибораСрезПоследних.Регистратор,
РеестрДвиженияПрибораСрезПоследних.Номер_прибора_регистр
ПОМЕСТИТЬ Запрос1
ИЗ
РегистрСведений.РеестрДвиженияПрибора.СрезПоследних КАК РеестрДвиженияПрибораСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Приемка_СИ.Ссылка,
Приемка_СИ.Заводской_Номер,
Приемка_СИ.Статус_прибора,
срез_последних.Статус_регистр,
срез_последних.Регистратор,
срез_последних.Номер_прибора_регистр,
Приемка_СИ.Ссылка.статус_док
ПОМЕСТИТЬ Запрос2
ИЗ
Запрос1 КАК срез_последних
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Приемка_СИ.Приборы КАК Приемка_СИ
ПО срез_последних.Регистратор = Приемка_СИ.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Запрос2.Ссылка,
КОЛИЧЕСТВО(*) КАК Поле1
ПОМЕСТИТЬ Запрос3
ИЗ
Запрос2 КАК Запрос2
ГДЕ
Запрос2.Статус_прибора = &квыдаче

СГРУППИРОВАТЬ ПО
Запрос2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Запрос2.Ссылка,
КОЛИЧЕСТВО(*) КАК Поле1
ПОМЕСТИТЬ Запрос4
ИЗ
Запрос2 КАК Запрос2

СГРУППИРОВАТЬ ПО
Запрос2.Ссылка
;

????????????
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Запрос3.Ссылка) КАК Ссылка,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Запрос4.Ссылка) КАК Ссылка1
ИЗ
Запрос3 КАК Запрос3,
Запрос4 КАК Запрос4

ilyay

запрос2 - в соединении надо дополнительно учитывать ссылку на прибор, если у вас не более одной одинаковой ссылки на прибор в табличной части, а если прибор может встречаться несколько раз в табличной части, тогда надо еще какое-то условие уникальности.


ВЫБРАТЬ Запрос3.Ссылка
ИЗ
    Запрос3 КАК Запрос3 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Запрос4 КАК Запрос4
по запрос3.ссылка = запрос4.ссылка и запрос3.Поле1=Запрос4.Поле1



Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск