|
Помощь с запросом | ☑ | ||
---|---|---|---|---|
0
VadimBahteev
01.02.13
✎
08:39
|
обрый день! Существует такая проблема. Конфигурация: 1С:Бухгалтерия сельскохозяйственного предприятия Редакция 1.6 (1.6.24.7). Создан внешний отчет, в котором отображаются продажи за период. Нужно добавить отдельно колонку с остатками на складе. Исходный запроc:
ВЫБРАТЬ ОборотыПродаж.Контрагент, ВЫБОР КОГДА ОборотыПродаж.ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ОборотыПродаж.ДокументПродажи.Склад ИНАЧЕ NULL КОНЕЦ КАК Склад, ОборотыПродаж.Номенклатура, ОборотыПродаж.КоличествоОборот КАК Количество, ОборотыПродаж.СтоимостьОборот КАК СтоимостьПродаж, ОборотыПродаж.СебестоимостьОборот ПОМЕСТИТЬ втПродажи ИЗ РегистрНакопления.схПродажи.Обороты( , , , ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг И Организация = &Организация) КАК ОборотыПродаж ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПродажи.Контрагент, втПродажи.Номенклатура, втПродажи.Количество, втПродажи.СтоимостьПродаж, втПродажи.СебестоимостьОборот КАК Себестоимость ИЗ втПродажи КАК втПродажи ГДЕ втПродажи.Склад = &Склад Как не пытался добавлять регистр Бухгалтерии.Остатки, не получается, вернее все получилось только вот он проставляет Остатки каждому контрагенту, а это не верно. И потом когда отчет формируется в СКД он Сумму по ресурсу КонечныйОстаток. не вычислит. Может кто разберется в чем дело!. Вот мой запрос: ВЫБРАТЬ ОборотыПродаж.Контрагент, ВЫБОР КОГДА ОборотыПродаж.ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ОборотыПродаж.ДокументПродажи.Склад ИНАЧЕ NULL КОНЕЦ КАК Склад, ОборотыПродаж.Номенклатура, ОборотыПродаж.КоличествоОборот КАК Количество, ОборотыПродаж.СтоимостьОборот КАК СтоимостьПродаж, ОборотыПродаж.СебестоимостьОборот, ХозрасчетныйОстатки.КоличествоОстаток ИЗ РегистрНакопления.схПродажи.Обороты( , , , ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг И Организация = &Организация) КАК ОборотыПродаж ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки ПО ОборотыПродаж.Номенклатура.Наименование = ХозрасчетныйОстатки.Субконто1.Наименование ГДЕ ОборотыПродаж.Организация = &Организация И ОборотыПродаж.ДокументПродажи.Склад = &Склад И ХозрасчетныйОстатки.Субконто3 = &Склад |
|||
1
cw014
01.02.13
✎
08:40
|
(0) А накуя поместить?
|
|||
2
cw014
01.02.13
✎
08:41
|
(0) И обязательно остатки по регистру бухгалтерии смотреть? Регистра накопления нету что ли?
|
|||
3
Галахад
гуру
01.02.13
✎
08:41
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ЛЕВОЕ СОЕДИНЕНИЕ |
|||
4
Catseye
01.02.13
✎
09:09
|
1.Для начала надо бы определиться со счетом(счетами), по которому(-ым) ты собираешься остатки брать
2.В соединении указать не только номенклатуру, но и склад 3.Убрал бы сравнение по наименованию -вдруг у тебя две и больше номенклатуры имеют одинаковое наименование, но разные артикулы, цены, остатки, ни разу не были проданы - и что тогда за цифры у тебя отчет покажет? Сравниваем только ссылки 3.Также заранее убедится, что порядок субконто "Номенклатура" и "Склады" имеют именно такой как ты указал: Субконто1 и Субконто2. Я бы подстраховался и задал в запросе порядок, на случай если например на одном из счетов где хранится номенклатура "Склад" является "Субконто2", а на другом "Субконто3". Сделал бы так в параметрах к запросу : ПорядокСубконто = Новый Массив(); ПорядокСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); ПорядокСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); Запрос.УстановитьПараметр("ПорядокСубконто", ПорядокСубконто); В этом случае субконто "номенклатура" будет равна "Субконто1", а "Склады" равна "Субконто2" |ВНУТРЕННЕЕ СОЕДИНЕНИЕ |РегистрБухгалтерии.Хозрасчетный.Остатки( | &ДатаКон, | Счет В ИЕРАРХИИ (&СчетаДт), | &ПорядокСубконто, | Субконто2 = (&Склад)) КАК Хозрасчетный.Остатки | ПО ОборотыПродаж.Номенклатура = ХозрасчетныйОстатки.Субконто1 | И ОборотыПродаж.Склад= ХозрасчетныйОстатки.Субконто2 |
|||
5
Catseye
01.02.13
✎
09:18
|
4. Убери нафиг конструкцию
ВЫБОР КОГДА ОборотыПродаж.ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ОборотыПродаж.ДокументПродажи.Склад ИНАЧЕ NULL КОНЕЦ КАК Склад, Если тебе нужно чтобы в отчете были обороты только по той номенклатуре, что была отгружена документами "РеализацияТоваровУслуг", то ты это уже сделал в параметрах к таблице регистра, где указал: "ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг" Походу запрос к регистру продаж должен быть таким: |ВЫБРАТЬ | ОборотыПродаж.Контрагент, | ОборотыПродаж.Склад КАК Склад, | ОборотыПродаж.Номенклатура, | ОборотыПродаж.КоличествоОборот КАК Количество, | ОборотыПродаж.СтоимостьОборот КАК СтоимостьПродаж, | ОборотыПродаж.СебестоимостьОборот |ПОМЕСТИТЬ втПродажи |ИЗ | РегистрНакопления.схПродажи.Обороты(&ДатаНач ,&ДатаКон, , , | | ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг | И Склад = &Склад | И Организация = &Организация) КАК ОборотыПродаж |; |
|||
6
VadimBahteev
01.02.13
✎
09:23
|
Дак в том то и дело что с регистром продаж проблем то нет, как к нему остатки прилепить, что бы они в отчете показывались по номенклатуре, а не в разрезе контрагентов, СКД когда отчет строит он суммирует их по каждой строчке и получаются не верная сумма.
|
|||
7
VadimBahteev
01.02.13
✎
09:25
|
Регистра накопления нет в том то и проблема(1)
|
|||
8
Catseye
01.02.13
✎
09:29
|
в (4) я же вроде показал как прицепить
|
|||
9
pessok
01.02.13
✎
09:32
|
(8) почему внутренним то? левым, наверное?
|
|||
10
VadimBahteev
01.02.13
✎
09:34
|
блин запутался я уже, напиши полностью запрос если не сложно
|
|||
11
zippygrill
01.02.13
✎
09:40
|
(5) внимательно смотрим что находится в реквизите ОборотыПродаж.ДокументПродажи, если хотите отфильтровать по типу документа то для этого существует РЕГИСТРАТОР! ДокументПродажи это совсем другое!
|
|||
12
Catseye
01.02.13
✎
09:56
|
(9)Та да, но условия задачи четко ТС не описал
(11) зачем регистратор? Он нужен если только в условии к отчету нужна детализация до движений по документу. А если данные нужны за период - то нафига? (10) Класс:)) мне бы так работать - кинул тему и Миста пашет:)) //ЛЕВОЕ или ВНУТРЕННЕ СОЕДИНЕНИЕ выбери сам, от условий задачи ПорядокСубконто = Новый Массив(); ПорядокСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); ПорядокСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); Запрос.УстановитьПараметр("ПорядокСубконто", ПорядокСубконто); Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("ДатаКон", ДатаКон); СчетаДт = новый СписокЗначений; СчетаДт.Добавить(ПланыСЧетов.Хозрасчетный.ТоварыНаСкладах); // если, речь о товарах для продажи с 41 счета Запрос.УстановитьПараметр("СчетаДт", СчетаДт); |ВЫБРАТЬ | ОборотыПродаж.Контрагент, | ОборотыПродаж.Склад КАК Склад, | ОборотыПродаж.Номенклатура, | ОборотыПродаж.КоличествоОборот КАК Количество, | ОборотыПродаж.СтоимостьОборот КАК СтоимостьПродаж, | ОборотыПродаж.СебестоимостьОборот |ПОМЕСТИТЬ втПродажи |ИЗ | РегистрНакопления.схПродажи.Обороты(&ДатаНач ,&ДатаКон, , , | | ДокументПродажи ССЫЛКА Документ.РеализацияТоваровУслуг | И Склад = &Склад | И Организация = &Организация) КАК ОборотыПродаж |ЛЕВОЕСОЕДИНЕНИЕ |РегистрБухгалтерии.Хозрасчетный.Остатки( | &ДатаКон, | Счет В ИЕРАРХИИ (&СчетаДт), | &ПорядокСубконто, | Субконто2 = (&Склад)) КАК Хозрасчетный.Остатки | ПО ОборотыПродаж.Номенклатура = ХозрасчетныйОстатки.Субконто1 | И ОборотыПродаж.Склад= ХозрасчетныйОстатки.Субконто2 |; //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | втПродажи.Контрагент, | втПродажи.Номенклатура, | втПродажи.Количество, | втПродажи.СтоимостьПродаж, | втПродажи.СебестоимостьОборот КАК Себестоимость |ИЗ | втПродажи КАК втПродажи Как то так - не проверял, т.к у меня нет твоей структуры метаданных |
|||
13
zippygrill
01.02.13
✎
10:00
|
(12) ставь у ВТ периодичность Авто, но еще раз говорю ДокументПродажи это не РЕГИСТРАТОР!
|
|||
14
VadimBahteev
01.02.13
✎
10:14
|
Вообщем спасибо всем огромное за помощь, но решения как не было так и нет. Или я не понимаю, вот мой запрос:
ВЫБРАТЬ схПродажиОбороты.Номенклатура КАК Номенклатура, схПродажиОбороты.Контрагент, СУММА(схПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(схПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ РегистрНакопления.схПродажи.Обороты(&Дата1, &Дата2, , ) КАК схПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата2, , , ) КАК ХозрасчетныйОстатки ПО схПродажиОбороты.Номенклатура.Наименование = ХозрасчетныйОстатки.Субконто1.Наименование ГДЕ схПродажиОбороты.Организация = &Организация И схПродажиОбороты.ДокументПродажи.Склад = &Склад И ХозрасчетныйОстатки.Субконто3 = &Склад СГРУППИРОВАТЬ ПО схПродажиОбороты.Номенклатура, ХозрасчетныйОстатки.КоличествоОстаток, схПродажиОбороты.Контрагент УПОРЯДОЧИТЬ ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ Он Отличается только параметрами счета, изначально вопрос был в другом, как написать такой же запрос что бы он остатки проставлял в результате только номенклатуре а не каждой строке продажи. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |