|
v7: Запрос | ☑ | ||
---|---|---|---|---|
0
ВежливаяТварь
22.03.13
✎
13:06
|
Добрый день. Работаю в основном на 8.2, но возникла необходимость написать одну обработку на 1с 7. Столкнулся с некоторыми проблемами при создании запроса. Мне необходимо вытянуть данные о продажах за период в разрезе номенклатуры. Конфа "Тороговля и склад для украины".
Пробую так Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса=" |Период с Дата1 по Дата2; |Фирма =Регистр.ПартииТоваров.Фирма; |Товар =Регистр.ПартииТоваров.Товар; |Покупатель =Регистр.ПартииТоваров.Контрагент, |Оборот = Регистр.ПартииТоваров.Оборот; |КодОперации = Регистр.ПартииТоваров.КодОперации; |Документ=Регистр.ПартииТоваров.ПрихДокумент; |Условие (Фирма=ПолучитьПустоеЗначение(""Справочник.Фирмы"")); |Условие (Товар в СписокТоваров); |Условие (Покупатель в СписокКонтрагентов); |"; Выдает это: Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {C:\DOCUMENTS AND SETTINGS\KRUCHEK\РАБОЧИЙ СТОЛ\ВЫГРУЗКА РУТА ОБЪЕДИНЕННАЯ (SPOT 2D).ERT(490)}: <<?>> Оборот = Регистр.ПартииТоваров.Оборот; Запрос[6] : Неверно заданный путь 'Оборот' Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {C:\DOCUMENTS AND SETTINGS\KRUCHEK\РАБОЧИЙ СТОЛ\ВЫГРУЗКА РУТА ОБЪЕДИНЕННАЯ (SPOT 2D).ERT(490)}: <<?>> Документ=Регистр.ПартииТоваров.ПрихДокумент; Запрос[8] : Неизвестая ошибка 'Документ' |
|||
1
dusn
22.03.13
✎
13:08
|
Документ - предопредленное имя, нельзя использовать
регистры уже не помню, там есть такое измерение? |
|||
2
ВежливаяТварь
22.03.13
✎
13:12
|
Есть я проверял. А как же мне узнать какой документ сделал запись в регистре. Или лучше банальным перебором документов?
|
|||
3
dusn
22.03.13
✎
13:14
|
(2) назвать переменную не Документ, а, допустим, ПрихДок
Либо сделать группировку по Документу Регистр оборотный или остаточный? Запрос конструктором создан? |
|||
4
ВежливаяТварь
22.03.13
✎
13:17
|
(3) Нет запрос сам делал по примеру других запросов, регистр остатки
|
|||
5
Ёпрст
22.03.13
✎
13:22
|
(0)
// |Покупатель =Регистр.ПартииТоваров.Контрагент, |Покупатель =Регистр.ПартииТоваров.Контрагент; |
|||
6
Srg
22.03.13
✎
13:23
|
Переименуй Документ и Оборот
Например в Док и Обор |
|||
7
ВежливаяТварь
22.03.13
✎
13:31
|
(6) не помогло, сейчас попробую сделать через конструктор.
|
|||
8
ВежливаяТварь
22.03.13
✎
13:37
|
| Период с Дата1 по Дата2;
|Обрабатывать НеПомеченныеНаУдаление; |Фирма = Регистр.ПартииТоваров.Фирма; |Товар = Регистр.ПартииТоваров.Товар; |Контрагент = Регистр.ПартииТоваров.Контрагент; |ПрихДокумент = Регистр.ПартииТоваров.ПрихДокумент; |Стоимость = Регистр.ПартииТоваров.Стоимость; |ПродСтоимость = Регистр.ПартииТоваров.ПродСтоимость; |НДС = Регистр.ПартииТоваров.НДС; |Оборот = Регистр.ПартииТоваров.Оборот; |КодОперации = Регистр.ПартииТоваров.КодОперации; |ТекущийДокумент = Регистр.ПартииТоваров.ТекущийДокумент; |Условие(Фирма=ГлПустаяФирма); |Условие(Товар в СписокТоваров);";Сделал вот так, но ничего возвращает одну строку с нулями |
|||
9
Ёпрст
22.03.13
✎
13:37
|
(7) см. (5) + переименуй переменную Документ в тексте запроса + добавь функции, иначе выборка всегда пустой будет
|
|||
10
Ёпрст
22.03.13
✎
13:37
|
(8) нет функций в тексте запроса
|
|||
11
ВежливаяТварь
22.03.13
✎
13:37
|
(9) Любую функцию? Это такой баг?
|
|||
12
Ёпрст
22.03.13
✎
13:40
|
(11) да не любую, а нужную - для остаткового регистра это
Приход/Расход/НачОст/КонОст для оборотного - Сумма |
|||
13
ВежливаяТварь
22.03.13
✎
13:44
|
(12) Сделал так
|Период с Дата1 по Дата2; |Фирма = Регистр.ПартииТоваров.Фирма; |Товар = Регистр.ПартииТоваров.Товар; |Контрагент = Регистр.ПартииТоваров.Контрагент; |ПрихДокумент = Регистр.ПартииТоваров.ПрихДокумент; |Стоимость = Регистр.ПартииТоваров.Стоимость; |НДС = Регистр.ПартииТоваров.НДС; |ПродСтоимость = Регистр.ПартииТоваров.ПродСтоимость; |Оборот = Регистр.ПартииТоваров.Оборот; |КодОперации = Регистр.ПартииТоваров.КодОперации; |Функция СтоимостьКонОст = КонОст(Стоимость);"; Выводит одну строку но заполненную, не ту функцию поставил? |
|||
14
Ёпрст
22.03.13
✎
13:45
|
(13) А ты чего от запроса получить то хочешь в итоге ?
Если че, КонОст - это получение конечного остатка на дату |
|||
15
ВежливаяТварь
22.03.13
✎
13:45
|
(14)Мне нужны все продажи за период. Мне тогда нужен расход?
|
|||
16
Ёпрст
22.03.13
✎
13:47
|
(15) ну как минимум, взять нужно другой регистр для этого - Продажи.
и у него функция Сумма влепить, ну или готовый отчет посмотреть в типовой - АнализПродаж. |
|||
17
ВежливаяТварь
22.03.13
✎
13:47
|
(14) Или если это регистр остатков обороты из него не получить?
|
|||
18
viktor_vv
22.03.13
✎
13:47
|
(15) Расход с условием на КодОперации, а то в расходе и списания могут быть.
|
|||
19
Ёпрст
22.03.13
✎
13:48
|
А в партиях, у тебя расход будут делать не только документы продажи, но и перемещения/списания и т.д.. Оно тебе надо ?
|
|||
20
viktor_vv
22.03.13
✎
13:48
|
(18)+ Ну и таки да, лучше (16).
|
|||
21
Ёпрст
22.03.13
✎
13:48
|
(17) получить, если с умом подойти.. :)
|
|||
22
Ёпрст
22.03.13
✎
13:49
|
+ не факт, что в партиях у тебя есть продажная стоимость (в типовых её конечно лепят, в реквизит регистра, а чего у тебя за конфа - хз)
|
|||
23
ВежливаяТварь
22.03.13
✎
13:49
|
(16) Посмотрел, регистра продажи у меня нет.
|
|||
24
ВежливаяТварь
22.03.13
✎
13:50
|
Может легче перебором документов?
|
|||
25
sapphire
22.03.13
✎
13:51
|
(0) regprint.ert
|
|||
26
ВежливаяТварь
22.03.13
✎
14:16
|
Вот так заработало Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса=" |Период с Дата1 по Дата2; |Фирма =Регистр.ПартииТоваров.Фирма; |Товар =Регистр.ПартииТоваров.Товар; |Докум =Регистр.ПартииТоваров.ТекущийДокумент; |Покупатель =Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент, |"; Если Флаг=1 Тогда ТекстЗапроса=ТекстЗапроса+" |Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладнаяШ.Контрагент, |"; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" |Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяРозничная.Контрагент, |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент, |Регистр.ПартииТоваров.ТекущийДокумент.ПродажаРеализатора.Контрагент, |Регистр.ПартииТоваров.ТекущийДокумент.ЧекКА.ЭККА, |Регистр.ПартииТоваров.ТекущийДокумент.ОтчетКА.ЭККА; |ОстатокТовара = Регистр.ПартииТоваров.ОстатокТовара; |Оборот = Регистр.ПартииТоваров.Оборот; |КодОперации = Регистр.ПартииТоваров.КодОперации; |Группировка Товар Без групп; |Группировка Докум; |Функция Расход = Расход(ОстатокТовара) когда(КодОперации В КодыОперацийПродажи); |Функция ОборотТовара = Сумма(Оборот) когда(КодОперации В КодыОперацийПродажи); |Условие (Фирма=глПустаяФирма); |Условие (Товар в СписокТоваров); |Условие (Покупатель в СписокКонтрагентов); |"; Всем огромное спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |