|
v7: Неправильно объединяет поля в запросе. | ☑ | ||
---|---|---|---|---|
0
Pr0gLamer
13.03.12
✎
19:55
|
Типовая дописанная конфа "ТиС". Отчёт продажи. Необходимо выдать авторов документов и сами документы.
Существует документ "Скидка". У него есть реквизит шапки "ДокументОснование" с типом "Документ.РасходнаяНакладная". При построении отчёта нужно выдавать не автора документа "Скидка",а автора документа "РН",на основании которой он введён. Всё прекрасно работает,если автор описывается таким образом: Авт = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; Если же я хочу выдать авторов еще по расходным накладным, то мне нужно объединить поля в запросе.Я делаю так: Авт = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор; При этом мне выдаёт вместо авторов расходных накладных авторов документов "Скидка".До этого всё работало как часы. Помогите разобраться пожалуйста. |
|||
1
Pr0gLamer
13.03.12
✎
20:12
|
неправильно написал
Авт = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; Хочу допонить: авторов РН выдаёт правильно,но если документ "Скидка",то выдаёт его автора,вместо автора основания |
|||
2
miki
13.03.12
✎
20:15
|
ты бы группировки-то показал, а лучше весь запрос...
|
|||
3
Pr0gLamer
14.03.12
✎
11:17
|
ОбрабатыватьДокументы Все;
ПЕРИОД С Дата1 По Дата2; Филиал=Регистр.ПартииТоваров.Филиал; Фирма=Регистр.ПартииТоваров.Фирма; Товар=Регистр.ПартииТоваров.Товар; Направление = Регистр.ПартииТоваров.ТекущийДокумент.ВводОстатковТоваров.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ГТД.Направление, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Направление, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Направление, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Направление, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Направление; Покупатель=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяРозничная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПродажаРеализатора.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ЧекКА.ЭККА, Регистр.ПартииТоваров.ТекущийДокумент.ОтчетКА.ЭККА, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Контрагент; Склад=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Склад, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Склад, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяРозничная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ЧекКА.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ОтчетКА.Склад, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Склад; Авт = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; Вработе=Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Вработе,Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Вработе; Условие (Вработе<>1); Поставщик=Регистр.ПартииТоваров.Поставщик; Поставка=Регистр.ПартииТоваров.Поставка; ПрихДокумент=Регистр.ПартииТоваров.ПрихДокумент; ТекДок=Регистр.ПартииТоваров.ТекущийДокумент; ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара; НДС=Регистр.ПартииТоваров.НДС; НДСрасхода=Регистр.ПартииТоваров.НДСрасхода; Оборот=Регистр.ПартииТоваров.ОборотГривня; Прибыль=Регистр.ПартииТоваров.ПрибыльГривня; КодОперации=Регистр.ПартииТоваров.КодОперации; Группировка Авт Без групп; Группировка Документ ; Функция РасхОстатокТовара=Расход(ОстатокТовара); Функция ПрихОстатокТовара=Приход(ОстатокТовара); Функция ОборотТовара=Сумма(Оборот); Функция ПрибыльТовара=Сумма(Прибыль); Функция ПрихНДС=Приход(НДС); Функция РасхНДС=Расход(НДС); Функция НДСрасходаТовара=Сумма(НДСрасхода); Условие (Фирма=ВыбФирма); Условие (КодОперации В КодыОперацийПродажи); Условие (Филиал в СписокФилиалов); |
|||
4
ЧеловекДуши
14.03.12
✎
11:18
|
Запрос в Топку!!!!
Автора в Дворники :) Автор, ты хоть в конструкторе запрос сделай ;) |
|||
5
ЧеловекДуши
14.03.12
✎
11:19
|
+ Нафига вот это, "ОбрабатыватьДокументы Все;", при работе с регистрами?
|
|||
6
Pr0gLamer
14.03.12
✎
11:25
|
как обычно.желчи много,по делу ничего."ОбрабатыватьДокументы Все;" действительно не нужно,но на работоспособность никак не влияет
|
|||
7
Морозов Александр
14.03.12
✎
11:36
|
чет не понятно... а чего в других документах авторов нету? и если не везде автор в запросе указывается зачем тогда группировка по нему?
|
|||
8
Pr0gLamer
14.03.12
✎
11:45
|
запрос создаётся динамически в т.ч. и группировки.В других документах тоже есть автора,я закомментировал эти строки в отладочных целях.Запрос возвращает результат: все документы за период с их авторами,но вот в документе "Скидка" светит не автора того документа,на основании которого он введён,а самого автора скидки. Если убрать строку
Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор то выдаются все документы за период, а авторов показывает только по документам "Скидка",причём правильно,т.е. авторов док-в,на основании которых скидка введена |
|||
9
miki
14.03.12
✎
12:05
|
у тебя "Документ " - группировка вложенная в группировку "Авт". Сотвественно, внутри второй группировки автор будет постоянным.
|
|||
10
Ork
14.03.12
✎
12:09
|
(0) Вместо :
Авт = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор; АторСкидки = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; АвторРасходной = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная; При разборе : Автор = Запрос.АвторСкидки + Запрос.АвторРасходной. ЗЫ. Начитались, пАнимашь за объединение... |
|||
11
ЧеловекДуши
14.03.12
✎
12:09
|
У партии товара разве нет измерения "Склад"? (ну допустим нет его там)
Нахрена его из документов вытаскивать, через регистр. Так же если ты так любишь документы, то делай напрямую по документно :) |
|||
12
Pr0gLamer
14.03.12
✎
12:17
|
(11) Сей запрос не я придумал,конфа была написана до меня.И измерение склад есть,не знаю чем руководствовались
(10) Буду пробовать,как вы советуете,спасибо |
|||
13
Pr0gLamer
14.03.12
✎
12:30
|
Авт = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор;
АвторСкидки = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; Группировка Авт Без групп; Группировка Документ ; Точно так же выдаёт документ "Скидка" и его автора,а не автора Расходной,хотя,как я понимаю,должно выдавать исключительно авторов Расходных |
|||
14
Voronve
14.03.12
✎
12:32
|
(13) "....Скидка.ДокументОснование" имеет тип документа неопределенного вида ? Тогда фильтровать только при обходе результатов запроса.
|
|||
15
Pr0gLamer
14.03.12
✎
12:33
|
(14) изначально было неопределённого вида,я поставил РасходнуюНакладную,ничего не изменилось
|
|||
16
Voronve
14.03.12
✎
12:34
|
+(14) Либо попробуй добавить переменную в запрос вида переменную "ВидДокОсн = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование;" и условие по "ВидДокОсн.Вид() = ""РасходнаяНакладная"")
|
|||
17
Pr0gLamer
14.03.12
✎
12:53
|
ПЕРИОД С Дата1 По Дата2;
Филиал=Регистр.ПартииТоваров.Филиал; Фирма=Регистр.ПартииТоваров.Фирма; Товар=Регистр.ПартииТоваров.Товар; Авт = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор; АвтСкидки = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование.Автор; ВидДокОсн = Регистр.ПартииТоваров.ТекущийДокумент.Скидка.ДокументОснование; Вработе=Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Вработе,Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Вработе; Условие (Вработе<>1); Поставщик=Регистр.ПартииТоваров.Поставщик; Поставка=Регистр.ПартииТоваров.Поставка; ПрихДокумент=Регистр.ПартииТоваров.ПрихДокумент; ТекДок=Регистр.ПартииТоваров.ТекущийДокумент; ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара; НДС=Регистр.ПартииТоваров.НДС; НДСрасхода=Регистр.ПартииТоваров.НДСрасхода; Оборот=Регистр.ПартииТоваров.ОборотГривня; Прибыль=Регистр.ПартииТоваров.ПрибыльГривня; КодОперации=Регистр.ПартииТоваров.КодОперации; Группировка Авт Без групп; Группировка Документ ; Функция РасхОстатокТовара=Расход(ОстатокТовара); Функция ПрихОстатокТовара=Приход(ОстатокТовара); Функция ОборотТовара=Сумма(Оборот); Функция ПрибыльТовара=Сумма(Прибыль); Функция ПрихНДС=Приход(НДС); Функция РасхНДС=Расход(НДС); Функция НДСрасходаТовара=Сумма(НДСрасхода); Условие (Фирма=ВыбФирма); Условие (КодОперации В КодыОперацийПродажи); Условие (ВидДокОсн.Вид() = "РасходнаяНакладная"); Условие (Филиал в СписокФилиалов); ничего не изменилось, всё равно отдаёт фамилии авторов "Скидок" |
|||
18
Voronve
14.03.12
✎
12:59
|
(17) Это "Условие (КодОперации В КодыОперацийПродажи);" попробуй выкинуть и посмотри что получиться.
|
|||
19
Pr0gLamer
14.03.12
✎
13:04
|
(18) ничего не изменилось
это может быть какой-то особенностью построения запросов либо функционирования программы? |
|||
20
miki
14.03.12
✎
13:08
|
(19)это только может быть собенностью конкретного кодера...
У тебя даже не осталось группировки с автором из скидок. Покажи как присваивашь переменные при выводе. |
|||
21
Pr0gLamer
14.03.12
✎
13:22
|
(20) Если сделать группировку по АвтСкидки - выдаёт авторов РасходныхНакладных,как и требовалось,но вместе с ними в выдачу попадают и все остальные документы,но уже без авторов.
в процессе отладки результат выполнения запроса я выгружаю в таблицу значений,потом использую тз.ВыбратьСтроку(); или мне нужно делать 2 группировки: 1)по авторам Расходных 2)По авторам Скидок ? |
|||
22
miki
14.03.12
✎
13:23
|
Покажи как присваивашь переменные при выводе
|
|||
23
Pr0gLamer
14.03.12
✎
13:35
|
Не понимаю сути вопроса.Я смотрю результат запроса по таблице значений
|
|||
24
DimRom
14.03.12
✎
15:53
|
Попробуй две группировки
1)по авторам Расходных и 2)По авторам Скидок |
|||
25
ЧеловекДуши
14.03.12
✎
15:57
|
(23)Бросай ты это дело делать все в одном запросе.
1С-ный запросы криво себя ведут в твоем случае (0) Лучше выполнить простой запрос, получить нужные данные. А затем в цикле присваивать нужные значения. |
|||
26
ЧеловекДуши
14.03.12
✎
15:58
|
+ Т.е. конструкцию, типа
Направление = Регистр.ПартииТоваров.ТекущийДокумент.ВводОстатковТоваров.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ГТД.Направление, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Направление, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Направление, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Направление, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Направление, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Направление; Покупатель=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяРозничная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПродажаРеализатора.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ЧекКА.ЭККА, Регистр.ПартииТоваров.ТекущийДокумент.ОтчетКА.ЭККА, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Контрагент; Склад=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказ.Склад, Регистр.ПартииТоваров.ТекущийДокумент.НарядЗаказГидр.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ГТДГидр.Склад, Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяРозничная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ЧекКА.Склад, Регистр.ПартииТоваров.ТекущийДокумент.ОтчетКА.Склад, Регистр.ПартииТоваров.ТекущийДокумент.Скидка.Склад; Получить в каком либо цикле, при выводе результата. |
|||
27
DimRom
14.03.12
✎
16:03
|
как вариант: выкинь Авторов совсем из запроса. Оставь одну Группировку по Документу. Обойди запрос и там уже смотри кто автор и записывай в ТЗ
|
|||
28
Pr0gLamer
14.03.12
✎
17:37
|
У меня динамически с помощью галочек,кнопочек,списка значений и рекурсии формируются группировки и даже задаётся их порядок. Чтобы изменить структуру придётся переписывать всё полностью.Может быть есть возможность связать поля таблиц в запросе по - другому?
|
|||
29
DimRom
14.03.12
✎
17:50
|
Нельзя ли после выполнения запроса обойти результаты и там получить авторов в зависимости от вида документа?
|
|||
30
Pr0gLamer
14.03.12
✎
17:55
|
Скорее всего так и буду делать - либо ставить доп. условие,либо сначала строить запрос по всем документам,кроме скидки,а потом уже по скидке.Всем спасибо,хоть в чём была проблема я так и не понял...
|
|||
31
Ёпрст
14.03.12
✎
18:12
|
(28) использовать прямой запрос или реструктуризировать регистр и добавить в него реквизит - автор. который и иметь потом в запросе просто и без мегатормозов, как сей час
|
|||
32
Pr0gLamer
15.03.12
✎
11:00
|
=(
Придётся всё перепроводить |
|||
33
Ёпрст
15.03.12
✎
11:59
|
(32) достаточно апдейтить 1 табличку движений без перепровода. Это от силы пару минут.
|
|||
34
Pr0gLamer
15.03.12
✎
12:34
|
Это напрямую в SQL лезть или как?
|
|||
35
Pr0gLamer
15.03.12
✎
14:16
|
Если да то пример в студию пожалуйста
|
|||
36
Ёпрст
15.03.12
✎
14:53
|
Update
Рег SET $Рег.Имяреквизита = НужноеЗначениеОткудаУгодноНапримерИзШапкиДокумента FROM $Регистр.НужныйВидРегистра as Рег |
|||
37
Pr0gLamer
15.03.12
✎
15:34
|
Спасибо,будем колупать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |