|
v7: Помогите написать запрос | ☑ | ||
---|---|---|---|---|
0
ketonija
11.05.13
✎
22:38
|
У справочника Номенклатура есть подчиненный справочник "Поставщики" в котором прописываются реквизиты типа "Контрагент","НазваниеПоставщика","АртикулПоставщика" и т.п. Нужно сделать выборку товаров из документов, например "РасходнаяНакладная" за указанный период, получив в строке группировки такие колонки: Номенклатура, НазваниеПоставщика, Количество. Поставщик (реквизит "Контрагент" в справочнике "Поставщики" задается конкретный, если для товара такого поставщика в справочнике "Поставщики" нет, то в поле "НазваниеПоставщика" ничего не выводится). Количество есть сумма всех количеств по расходным накладным для каждого товара. Интуитивно догадываюсь что надо делать встроенный запрос по справочнику "Поставщики" и задавать связь результата с запросом по расходным накладным через реквизит "номенклатура", но как это сделать в 7-ке не знаю.
|
|||
1
lals
12.05.13
✎
00:02
|
Группировка (1) Номенклатура
Группировка (2) Поставщик "пустые" поставщики будут сгрупированы по данной номенклатуре в одну строку, "непустые" будут соответственно отображены |
|||
2
lals
12.05.13
✎
00:04
|
+(1) Но если в накладной он явно не указан, а в подчиненном справочнике для каждой номенклатуры может быть несколько поставщиков то не взлетит
|
|||
3
ketonija
12.05.13
✎
00:57
|
В расходной накладной поставщик не указан, в подчиненном справочнике для номенклатуры несколько разных поставщиков. Я пока додумался только до такого варианта:
ВыбНачПериода = НачГода(ДатаДок); ВыбКонПериода = ДатаДок; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Товар = Документ.РасходнаяНакладная.Товар.ТекущийЭлемент, Справочник.Поставщик.Владелец.ТекущийЭлемент; |Количество = Документ.РасходнаяНакладная.Количество; |Поставщик = Справочник.Поставщик.ТекущийЭлемент; |Функция КоличествоСумма = Сумма(Количество); |Группировка Товар упорядочить по Товар.Наименование без групп; |Группировка Поставщик упорядочить по Поставщик.Контрагент, Поставщик.Цена, Поставщик.Артикул без групп; |"//}}ЗАПРОС ; УдалитьСтроки(); Пока Запрос.Группировка(1) = 1 Цикл Первая = 1; Пока Запрос.Группировка(2) = 1 Цикл Если Первая = 1 Тогда КоличествоЗаказа = Запрос.КоличествоСумма; Первая = 0; КонецЕсли; Если ПустоеЗначение(Запрос.ЗначениеУпорядочивания(2,1)) = 1 Тогда Продолжить; КонецЕсли; Если (Запрос.ЗначениеУпорядочивания(2,1) = Контрагент) И (КоличествоЗаказа > 0) Тогда НоваяСтрока(); Поставщик = Запрос.Поставщик; Товар = Запрос.Товар; ЦенаСНДС = Запрос.ЗначениеУпорядочивания(2,2); Количество = КоличествоЗаказа; КонецЕсли; КонецЦикла; КонецЦикла; Возможно есть другой, более простой способ решения, но этот вариант хоть и с извращением, но вроде работает. |
|||
4
Cthulhu
12.05.13
✎
01:27
|
это не только в 7-ке - "не знаю".
это - "не знаю" как оно вообще должно выглядеть. и даже не солько "не знаю", сколько "думать не умею". |
|||
5
m-serg74
12.05.13
✎
02:28
|
(3) т.е. правильность с точки зрения учета не важна, главное чтобы все заполнено было пох чем?
|
|||
6
ketonija
12.05.13
✎
04:22
|
(5), мне нужно на 7-ке написать запрос аналогичный запросу на 8-ке, который приведу ниже
ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, ВложенныйЗапрос.Ссылка КАК Поставщик, ВложенныйЗапрос.Цена ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Поставщики.Ссылка КАК Ссылка, Поставщики.Цена КАК Цена, Поставщики.Владелец КАК Владелец ИЗ Справочник.Поставщик КАК Поставщики ГДЕ Поставщики.Контрагент = &Контрагент) КАК ВложенныйЗапрос ПО РеализацияТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Владелец ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Номенклатура, ВложенныйЗапрос.Ссылка, ВложенныйЗапрос.Цена УПОРЯДОЧИТЬ ПО РеализацияТоваровУслугТовары.Номенклатура.Наименование Вроде все должно быть ясно: нужен перебор в цикле номенклатуры с итоговым количеством по документам и расшифровками по цене и другим атрибутам, что хранятся в подчиненном справочнике "поставщик". Код из (3) дает эту информацию не одной строкой, а несколькими, поэтому результат нужно собирать из разных строк. Я хочу получить результат одной строкой, как в 8-ке. |
|||
7
m-serg74
12.05.13
✎
08:52
|
(6) в 8 ке это как в Вашем запросе прокатит? если у номенклатуры несколько поставщиков?
|
|||
8
ketonija
12.05.13
✎
09:57
|
(7) конечно, прежде чем постить запрос я проверил его работу в консоли запросов. Отражается информация только по тому поставщику, который задан через параметры запроса.
|
|||
9
zak555
12.05.13
✎
10:00
|
(6) зачем вложенный запрос ?
|
|||
10
zak555
12.05.13
✎
10:02
|
(3) что за конфа ?
|
|||
11
ArthurGlobus
12.05.13
✎
18:42
|
Здравствуйте!
Помогите пожалуйста с написанием запроса. Дана таблица с 3-мя физическими лицами и вариантом оплаты в каждом месяце. С помощью языка запросов T-SQL или 1С (по желанию), написать запрос, возвращающий следующие данные(оплаты три раза подряд по каждому физическому лицу): |
|||
12
ketonija
13.05.13
✎
18:13
|
(11), 3 раза подряд - это 3 месяца подряд? Результат нужен в таком виде?
Январь Иванов 1000 Январь Петров 1000 Январь Сидоров 1000 Февраль Иванов 1100 Февраль Петров 1100 Февраль Сидоров 1100 Март Иванов 1200 Март Петров 1200 Март Сидоров 1200 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |