|
v7: Выбор номенклатуры запросом (2 одинаковые) | ☑ | ||
---|---|---|---|---|
0
Масянька
30.11.12
✎
10:05
|
Доброе утро!
Запросом выбирается номенклатура из док-ов Реализация. "//{{ЗАПРОС |Период с ДатаНачала по ДатаОкончания; |ДокПродажи = Регистр.ПартииНаличие.ТекущийДокумент; |КО = Регистр.ПартииНаличие.КодОперации; |Номенклатура = Регистр.ПартииНаличие.Номенклатура; |ПродСт = Регистр.ПартииНаличие.ПродСтоимость; |Себест = Регистр.ПартииНаличие.СуммаУпр; |КолВо = Регистр.ПартииНаличие.Количество; |ДокПартия = Регистр.ПартииНаличие.Партия.ПриходныйДокумент; |Группировка ДокПродажи; |Группировка Номенклатура Упорядочить По Номенклатура.Код без групп; |Группировка ДокПартия; |Функция ВсегоПродСт = Сумма(ПродСт); |Функция ВсегоСебест = Сумма(Себест); |Функция Разница = Сумма(ПродСт - Себест); |Условие((КО = КодОперацииРеализация) ИЛИ (КО = КодОперацииРозница)); |Условие(Номенклатура.ВидНоменклатуры <> ВидНоменклатурыУслуги);"; Такой косяк: в док-те 2 строки с одинаковой номенклатурой, но разным количество и ценой. Выводим только последнюю (кол-во и цена). Чувствую, что где-то в запросе косякнула. Заранее спасибо. |
|||
1
dk
30.11.12
✎
10:07
|
Добавь группировку по строкедокумента
|
|||
2
Ёпрст
30.11.12
✎
10:07
|
как бэ записи в регистре никакого отношения к строкам документа не имеют, если че..
|
|||
3
Ёпрст
30.11.12
✎
10:08
|
А с партиями - так и подавно.
|
|||
4
Касандер72
30.11.12
✎
10:24
|
(0) по ходу у тебя отнюдь не одинаковая номенклатура, а две аналогичные записи в справочнике номенклатуры - тады бухеров ногами за баян, пометку на удаление и ручками доки правим - это быстрее чем разовую "исправлялку" писать - хотя вещь и полезная
|
|||
5
Масянька
30.11.12
✎
10:29
|
Свертки выборки - нет.
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Заголовок"); Таб.ВывестиСекцию("Шапка"); мНомерСтроки = 6; НачПовт = Таб.ВысотаСекции("Заголовок"); КонПовт = Таб.ВысотаСекции("Заголовок") + Таб.ВысотаСекции("Шапка"); Таб.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт); Если ВыводитьВсе = 1 Тогда Пока Запрос.Группировка("ДокПродажи") = 1 Цикл ПечДокумент = глНазваниеДокументаВЖурнале(Запрос.ДокПродажи); ПечНомерДок = глУдалениеВедущихНулей(Запрос.ДокПродажи.НомерДок); ПечДатаДок = Запрос.ДокПродажи.ДатаДок; ПечКонтрагент = Запрос.ДокПродажи.Контрагент; ВыручкаПоДокументу = Запрос.ВсегоПродСт; СебестоимостьПоДокументу = Запрос.ВсегоСебест; УбытокПоДокументу = ВыручкаПоДокументу - СебестоимостьПоДокументу; ПроцентПоДокументу = (ВыручкаПоДокументу * 100 / СебестоимостьПоДокументу) - 100; Таб.ВывестиСекцию("Документ"); мНомерСтроки = мНомерСтроки + 1; Пока Запрос.Группировка("Номенклатура") = 1 Цикл Пока Запрос.Группировка("ДокПартия") = 1 Цикл ПечТовар = Запрос.Номенклатура.Наименование; ПечКод = Сред(Запрос.Номенклатура.Код, 5); Выручка = Запрос.ПродСт; Себестоимость = Запрос.Себест; Убыток = Запрос.Разница; Количество = Запрос.КолВо; Процент = (Выручка * 100 / Себестоимость) - 100; ПечДокПартия = глНазваниеДокументаВЖурнале(Запрос.ДокПартия); ПечНомерДокПартия = глУдалениеВедущихНулей(Запрос.ДокПартия.НомерДок); ПечДатаДокПартия = Запрос.ДокПартия.ДатаДок; ПечКонтрагентПартия = Запрос.ДокПартия.Контрагент; Таб.ВывестиСекцию("Номенклатура"); Если (Убыток <= 0) Тогда мОбласть = "R" + Строка(мНомерСтроки) + "C6:R" + Строка(мНомерСтроки) + "C6"; мКрасим = Таб.Область(мОбласть); мКрасим.Полужирный(1); мКрасим.ЦветТекста(255,0,0); КонецЕсли; мНомерСтроки = мНомерСтроки + 1; КонецЦикла; КонецЦикла; КонецЦикла; Иначе Пока Запрос.Группировка("ДокПродажи") = 1 Цикл Выводим = 0; ПечДокумент = глНазваниеДокументаВЖурнале(Запрос.ДокПродажи); ПечНомерДок = глУдалениеВедущихНулей(Запрос.ДокПродажи.НомерДок); ПечДатаДок = Запрос.ДокПродажи.ДатаДок; ПечКонтрагент = Запрос.ДокПродажи.Контрагент; ВыручкаПоДокументу = Запрос.ВсегоПродСт; СебестоимостьПоДокументу = Запрос.ВсегоСебест; УбытокПоДокументу = ВыручкаПоДокументу - СебестоимостьПоДокументу; Пока Запрос.Группировка("Номенклатура") = 1 Цикл Пока Запрос.Группировка("ДокПартия") = 1 Цикл ПечТовар = Запрос.Номенклатура.Наименование; ПечКод = Сред(Запрос.Номенклатура.Код, 5); Выручка = Запрос.ПродСт; Себестоимость = Запрос.Себест; Убыток = Запрос.Разница; ПечДокПартия = глНазваниеДокументаВЖурнале(Запрос.ДокПартия); ПечНомерДокПартия = глУдалениеВедущихНулей(Запрос.ДокПартия.НомерДок); ПечДатаДокПартия = Запрос.ДокПартия.ДатаДок; ПечКонтрагентПартия = Запрос.ДокПартия.Контрагент; Если (Запрос.Разница <= 0) Тогда Выводим = Выводим + 1; Если (Выводим = 1) Тогда Таб.ВывестиСекцию("Документ"); мНомерСтроки = мНомерСтроки + 1; КонецЕсли; Таб.ВывестиСекцию("Номенклатура"); мОбласть = "R" + Строка(мНомерСтроки) + "C6:R" + Строка(мНомерСтроки) + "C6"; мКрасим = Таб.Область(мОбласть); мКрасим.Полужирный(1); мКрасим.ЦветТекста(255,0,0); мНомерСтроки = мНомерСтроки + 1; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; ВсегоВыручка = Запрос.ВсегоПродСт; ВсегоСебестоимость = Запрос.ВсегоСебест; ВсегоУбыток = ВсегоВыручка - ВсегоСебестоимость; ВсегоПроцент = (ВсегоВыручка * 100 / ВсегоСебестоимость) - 100; (4) Нет - код одинаковый. |
|||
6
Масянька
30.11.12
✎
10:30
|
(1) Получилось - спасибо!
|
|||
7
Ёпрст
30.11.12
✎
10:55
|
(6) врешь ведь.
Какая еще строка документа при обращении к записям регистров ? |
|||
8
Касандер72
30.11.12
✎
11:00
|
(7) стопудово врет - ибо пятницо)))
|
|||
9
Масянька
30.11.12
✎
11:13
|
Мужики! Да вы чё! Говорю же, работает. Я чувствовала, что в запросе дело.
|
|||
10
Ёпрст
30.11.12
✎
11:14
|
(9) ну покажи текст запроса что ли
|
|||
11
Масянька
30.11.12
✎
11:19
|
ТекстЗапроса =
"//{{ЗАПРОС |Период с ДатаНачала по ДатаОкончания; |ДокПродажи = Регистр.ПартииНаличие.ТекущийДокумент; |КО = Регистр.ПартииНаличие.КодОперации; |Номенклатура = Регистр.ПартииНаличие.Номенклатура; |ПродСт = Регистр.ПартииНаличие.ПродСтоимость; |Себест = Регистр.ПартииНаличие.СуммаУпр; |КолВо = Регистр.ПартииНаличие.Количество; |ДокПартия = Регистр.ПартииНаличие.Партия.ПриходныйДокумент; |Группировка ДокПродажи; |Группировка Номенклатура Упорядочить По Номенклатура.Код без групп; |Группировка СтрокаДокумента; |Группировка ДокПартия; |Функция ВсегоПродСт = Сумма(ПродСт); |Функция ВсегоСебест = Сумма(Себест); |Функция Разница = Сумма(ПродСт - Себест); |Условие((КО = КодОперацииРеализация) ИЛИ (КО = КодОперацииРозница)); |Условие(Номенклатура.ВидНоменклатуры <> ВидНоменклатурыУслуги);"; |
|||
12
1Сергей
30.11.12
✎
11:28
|
(10) в регистрах есть привязка к номеру строки, если о ней позаботится заранее
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |