|
Сравнение двух реквизитов в запросе, как ? | ☑ | ||
---|---|---|---|---|
0
never_be
26.07.13
✎
11:27
|
Мне надо в запросе выбрать документы у которых 2 реквизита одинаковые, в конструкторе запроса так сделать не получается, как ?
|
|||
1
Капитан О
26.07.13
✎
11:27
|
руками
|
|||
2
Cube
26.07.13
✎
11:27
|
(0) Ты не поверишь... Просто поставь "равно"...
|
|||
3
Капитан О
26.07.13
✎
11:27
|
(2) он не знает про галку произвольное
|
|||
4
Jonny_Khomich
26.07.13
✎
11:28
|
типа связь двух таблиц?
|
|||
5
never_be
26.07.13
✎
11:37
|
(3) Знаю но ругается
Условие в запросе: Регистратор.СуммаДокумента = Регистратор.СуммаДокументаРасчета Посылает лесом. |
|||
6
Капитан О
26.07.13
✎
11:38
|
(5) и правильно делает. послушай его и сделай правильно
|
|||
7
Лефмихалыч
модератор
26.07.13
✎
11:42
|
ВЫБРАТЬ
Ссылка ИЗ Документ.Документ1 ГДЕ Реквизит1 = Реквизит2 |
|||
8
Maxus43
26.07.13
✎
11:47
|
(5) запрос в студию
|
|||
9
never_be
26.07.13
✎
11:54
|
(7) У меня чуть не так.
(8) "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.СчетДт = &СчетДт | И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | И Хозрасчетный.Регистратор.СуммаДокумента = Хозрасчетный.Регистратор.СуммаДокументаРасчета | |УПОРЯДОЧИТЬ ПО | Сумма" Регистратор у меня всегда 1 и тот же тип докуметов, теперь надо выбрать только с одинаковыми реквизитами. |
|||
10
Maxus43
26.07.13
✎
11:55
|
(9) И Выразить(Хозрасчетный.Регистратор Как Документ.ТвойДок).СуммаДокумента
|
|||
11
Капитан О
26.07.13
✎
11:56
|
(9) марш читать про виртуальные таблицы
|
|||
12
never_be
26.07.13
✎
11:57
|
(10) Это где писать ? :) И не вижу сравнения (сори я нуп еще в 1с),
|
|||
13
Maxus43
26.07.13
✎
12:00
|
| И Хозрасчетный.Регистратор Ссылка Документ.ТвойДок
| И Выразить(Хозрасчетный.Регистратор Как Документ.ТвойДок).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документ.ТвойДок).СуммаДокументаРасчета |
|||
14
never_be
26.07.13
✎
12:09
|
(13) Что-то не получается, мне отбирать конкретные типы документов не надо, они там всегда одного типа.
|
|||
15
never_be
26.07.13
✎
12:09
|
В И Выразить(Хозрасчетный.Регистратор Как дальше не знаю что писать правильно.
|
|||
16
Maxus43
26.07.13
✎
12:10
|
(14) они одного, а поле РЕГИСТРАТОР составного. Что не получается?
|
|||
17
Fragster
модератор
26.07.13
✎
12:10
|
(11) зачем тут виртуальные таблицы?
|
|||
18
Maxus43
26.07.13
✎
12:11
|
(17) ну период не помешало бы загнать туда, + периодичность Регистратор
|
|||
19
Fragster
модератор
26.07.13
✎
12:11
|
(9) без учета (13) что не работает?
|
|||
20
Капитан О
26.07.13
✎
12:12
|
(17) для оборотов
|
|||
21
never_be
26.07.13
✎
12:12
|
Вот что написал, и не работает(думаю и не должно :) )
Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.СчетДт = &СчетДт | И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | И Хозрасчетный.Регистратор Ссылка Документы.ПлатежноеПоручениеИсходящее | И Выразить(Хозрасчетный.Регистратор Как Документы.ПлатежноеПоручениеИсходящее).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документы.ПлатежноеПоручениеИсходящее).СуммаДокументаРасчета |УПОРЯДОЧИТЬ ПО | Сумма"; |
|||
22
Fragster
модератор
26.07.13
✎
12:12
|
(18) ну и зачем? лучше отбор по Регистратор Ссылка в (8) добавить
|
|||
23
exwill
26.07.13
✎
12:12
|
(15) Раз уж ты так мучаешься, сделай через ВТ или вложенный запрос.
|
|||
24
Fragster
модератор
26.07.13
✎
12:12
|
Регистратор Ссылка Документ.ДидДокумента
|
|||
25
Fragster
модератор
26.07.13
✎
12:13
|
(21) должно работать
|
|||
26
Maxus43
26.07.13
✎
12:13
|
(21) Текст ошибки не учили писать?
и я вроде писал что не ДокументЫ.док, а Документ.док |
|||
27
exwill
26.07.13
✎
12:13
|
(21) ДокуменТ вместо ДокументЫ
|
|||
28
Fragster
модератор
26.07.13
✎
12:13
|
(26)(27) глазастые :) а я не заметил
|
|||
29
Maxus43
26.07.13
✎
12:14
|
Сгруппировать добавить надо бы, у дока может быть 500 проводок. зачем дубли?
|
|||
30
Fragster
модератор
26.07.13
✎
12:15
|
(29) а если в одной проводке равно, а в другой - нет?
|
|||
31
Maxus43
26.07.13
✎
12:15
|
(30) Группировка этому не помешает. А если в обоих равно - то будет 2 записи в результате, а оно не надо вроде
|
|||
32
never_be
26.07.13
✎
12:16
|
(26) {(13, 175)}: Поле не найдено "СуммаДокументаРасчета"
И Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее)<<?>>.СуммаДокументаРасчета Запрос такой: Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.СчетДт = &СчетДт | И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | И Хозрасчетный.Регистратор Ссылка Документ.ПлатежноеПоручениеИсходящее | И Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокументаРасчета |УПОРЯДОЧИТЬ ПО | Сумма"; |
|||
33
Maxus43
26.07.13
✎
12:18
|
(32) Нет этого реквизита в документе
|
|||
34
never_be
26.07.13
✎
12:19
|
(33) Хм, проверил, таки была ошибка в названии, поменял, и все равно ругается.
|
|||
35
Maxus43
26.07.13
✎
12:19
|
(34) таки не врёт ошибка. Нет такого реквизита у такого документа
|
|||
36
never_be
26.07.13
✎
12:21
|
(35) Точно не врет, реквизит лежит в табличном поле в документе, на форме просто не видно этого.
|
|||
37
Maxus43
26.07.13
✎
12:22
|
(36) ты по форме реквизиты искал? марш в конфигуратор, на закладку Данные в документе
|
|||
38
Галахад
гуру
26.07.13
✎
12:22
|
(36) В табличной части?
|
|||
39
never_be
26.07.13
✎
12:25
|
(38) Угу, есть такая табличная часть Реквизиты платежа, в нем оно и лежит, хотя на форме оно в обычном окошке ввода числа.
|
|||
40
exwill
26.07.13
✎
12:26
|
(39) Оно там не лежит.
|
|||
41
exwill
26.07.13
✎
12:28
|
+(40) Не верно утверждать: "ОНО там лежит".
Верно: "ОНИ там лежат". Чувствуешь разницу? |
|||
42
never_be
26.07.13
✎
12:30
|
Епт, ничего не понимаю, меня типовые конфы просто вгоняют в ступор. Гляньте на картинку плиз - http://i.piccy.info/i7/0b0eba3b1e227768e5ca092a026caa01/4-66-268/8099969/2013_07_26_11_27_55_am.png
Выделенным красным окошка присвоен один и тот-же реквизит !! Но когда я сохраняют документ значения в них сохраняются разными О_о |
|||
43
exwill
26.07.13
✎
12:34
|
(42) Переключись на "списком" и все поймешь.
|
|||
44
1Сергей
26.07.13
✎
12:36
|
(42) что ты форму смотришь? ты смотри в дереве конфигурации
|
|||
45
never_be
26.07.13
✎
12:40
|
(43) (44) Ребята все равно не доганяю, вот еще картинка - http://i.piccy.info/i7/607820a0b22dbd009f035f92807781b2/4-66-268/27135431/2013_07_26_11_36_30_am.png
На обоих окошках в поле данные один и тот же реквизит, причем когда нажимаю выбрать и в дереве одно и тоже ДокументОбъект. СуммаДокумента |
|||
46
1Сергей
26.07.13
✎
13:11
|
(45) Разницу между реквизитом объекта и реквизитом формы ощущаешь?
|
|||
47
never_be
26.07.13
✎
13:16
|
(46) Ощущая но только в контексте упр форм, тут в поле данные у меня выбран один и тот же реквизит из общего списка реквизитов и понять чем они отличаются я не могу.
|
|||
48
1Сергей
26.07.13
✎
13:17
|
(47) если в обычных формах не ощущаешь, то бегом читать литературу
|
|||
49
Галахад
гуру
26.07.13
✎
13:19
|
Гм. Я тоже вижу один и тот же реквизит.
P.S. Может в событии "ПриИзменении" чего-то происходит? |
|||
50
never_be
26.07.13
✎
13:21
|
(48) Тыкните плиз носом куда посмотреть, на что нажать чтоб увидеть откуда берется вторая сумма, я как ни смотрю для меня это один и тот же реквизит и в поле данные у обоих полей выбран один и тот же реквизит с одного места, корня ДокументОбъект.
(49)Процедура СуммаДокументаРасчетыПриИзменении() и Процедура СуммаДокументаПриИзменении() |
|||
51
never_be
26.07.13
✎
13:23
|
Если подвести к окошку в сплывающем пишет для первого СуммаДокумента(СуммаДокумента), для второго СуммаДокументаРасчеты(СуммаДокумента)
|
|||
52
Галахад
гуру
26.07.13
✎
13:25
|
(50) И чего там, в этих процедурах?
|
|||
53
1Сергей
26.07.13
✎
13:27
|
(51) в табличной части есть СуммаДокумента?
|
|||
54
never_be
26.07.13
✎
13:29
|
(52) Вроде ничего особенного:
Процедура СуммаДокументаРасчетыПриИзменении(Элемент) СтрокаПлатеж.СуммаПлатежа=СуммаДокумента; УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж); РассчитатьПропорциональныйНДС(); Если СтрокаПлатеж.СуммаВзаиморасчетов = 0 Тогда РассчитатьСуммуВзаиморасчетов(); Иначе РассчитатьКурсВзаиморасчетов(); КонецЕсли; СформироватьНазначениеПлатежа(); КонецПроцедуры И Если ИнвертироватьСуммы Тогда РассчитатьСуммуПлатежа(); Если СтрокаПлатеж.КурсВзаиморасчетовПлан>0 Тогда РассчитатьСуммуПлатежаПлан(); КонецЕсли; Иначе Если РасшифровкаПлатежа.Количество()=1 Тогда СтрокаПлатеж.СуммаПлатежа=СуммаДокумента; Если ЕстьРасчетыСКонтрагентами ИЛИ ЕстьРасчетыПоКредитам Тогда УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж); РассчитатьПропорциональныйНДС(); Если СтрокаПлатеж.СуммаВзаиморасчетов=0 Тогда РассчитатьСуммуВзаиморасчетов(); Иначе РассчитатьКурсВзаиморасчетов(); КонецЕсли; ИначеЕсли ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеДенежныхСредствПодотчетнику Тогда Если СтрокаПлатеж.СуммаВзаиморасчетов = 0 Тогда РассчитатьСуммуВзаиморасчетов(); Иначе РассчитатьКурсВзаиморасчетов(); КонецЕсли; Иначе СтрокаПлатеж.СуммаВзаиморасчетов=СтрокаПлатеж.СуммаПлатежа; Если ЗначениеЗаполнено(СтрокаПлатеж.ДокументПланированияПлатежа) Тогда СтрокаПлатеж.СуммаПлатежаПлан=СтрокаПлатеж.СуммаПлатежа; КонецЕсли; КонецЕсли; СформироватьНазначениеПлатежа(); КонецЕсли; КонецЕсли; |
|||
55
never_be
26.07.13
✎
13:30
|
Вижу что лежит оно в табличной части РасшифровкаПлатежа, но как оно выводиться тогда в окошки на форме если привязан для них только 1 реквизит.
|
|||
56
never_be
26.07.13
✎
13:31
|
(53) Нету.
|
|||
57
never_be
26.07.13
✎
13:32
|
(53) Есть СуммаПлатежа.
|
|||
58
never_be
26.07.13
✎
13:34
|
Понял что для певого окошка данные лежат в реквизите СуммаДокумента, а в втором в табличной части РасшифровкаПлатежа.СуммаПлатежа, но как оно попадает в второе окошко понять не могу.
|
|||
59
Jonny_Khomich
26.07.13
✎
13:35
|
(58) с регистра данные берутся
|
|||
60
never_be
26.07.13
✎
13:40
|
(59) Все равно не вижу каким образом, в общем пусть это будет для меня загадкой, не понимаю нафига так мутно писать, или это признак супер крутого программиста когда никто не понимает его код и как оно работает.
(37) Подскажите еще как сравнивать с значением из первой строки табличной части (выбран всегда 1 документ расчетов)? |
|||
61
Галахад
гуру
26.07.13
✎
13:46
|
(60) Сгруппировать
Сумма(СуммаПлатежа) Макс(СуммаДокумента) |
|||
62
never_be
26.07.13
✎
13:57
|
(61) А в моем запросе ? Мне получается надо сравнивать СуммаДокумента с первой строкой РасшифровкаПлатежа, вот запрос:
Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.СчетДт = &СчетДт | И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | И Хозрасчетный.Регистратор Ссылка Документ.ПлатежноеПоручениеИсходящее | И Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокументаРасчеты |УПОРЯДОЧИТЬ ПО | Сумма"; Вместо СуммаДокументаРасчеты - РасшифровкаПлатежа[1].СуммаПлатежа ? |
|||
63
kinno
26.07.13
✎
14:02
|
Что за конфигурация ?
|
|||
64
never_be
26.07.13
✎
14:05
|
(63) УТП 1.2
|
|||
65
never_be
26.07.13
✎
14:06
|
пробую так ругается:
Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.Регистратор, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.СчетДт = &СчетДт | И Хозрасчетный.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | И Хозрасчетный.Регистратор Ссылка Документ.ПлатежноеПоручениеИсходящее | И Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).СуммаДокумента = Выразить(Хозрасчетный.Регистратор Как Документ.ПлатежноеПоручениеИсходящее).РасшифровкаПлатежа[0].СуммаПлатежа; |УПОРЯДОЧИТЬ ПО | Сумма"; |
|||
66
kinno
26.07.13
✎
14:06
|
Возьми консоль запросов.
1) Получи запросом требуемые тебе документы без использования регистра бухгалтерии 2) Помести во временную таблицу 3) Выбери движения из регистра бухгалтерии, с отбором по документам которые ранее были помещены во временную таблицу Есть сильное подозрение, что можно вообще оптимизировать этот запрос, если напишешь что хочешь с помощью его получить. |
|||
67
never_be
26.07.13
✎
14:11
|
(66) Блин да задача плевая ведь, я так думал до того как взялся, дело совсем не в регистре, если брать просто документы от этого ничего не измениться, не хочу заморачиваться с временными таблицами я там вообще потеряюсь, надо просто сравнить 2 реквизита в одном документе. Уже все получилось но поменялись обстоятельства и сравнивать надо реквизит с реквизитом из строки табличной части.
|
|||
68
viktor_vv
26.07.13
✎
14:17
|
(58) Вот так они туда попадают.
Если (ЕстьРасчетыСКонтрагентами ИЛИ ЕстьРасчетыПоКредитам) И (НЕ Список) Тогда ЭлементыФормы.СуммаДокумента.Данные = "ЭлементыФормы.РасшифровкаПлатежа.ТекущиеДанные.СуммаВзаиморасчетов"; То естьдля элемента формы меняется связь с данными. |
|||
69
hhhh
26.07.13
✎
14:18
|
(67) ну, присоединяй табличную часть туда в запрос
|
|||
70
never_be
26.07.13
✎
14:24
|
(69) Пишет нельзя обращаться к таблице через поле составного типа
|
|||
71
Галахад
гуру
26.07.13
✎
14:30
|
Дальше сам.
ВЫБРАТЬ МойДок.Ссылка, СУММА(МойДок.СуммаПлатежа) КАК СуммаПлатежа, МАКСИМУМ(МойДок.Ссылка.СуммаДокумента) КАК СуммаДокумента ИЗ Документ.ЛяЛяЛя.РасшифровкаПлатежа КАК МойДок СГРУППИРОВАТЬ ПО МойДок.Ссылка |
|||
72
kinno
26.07.13
✎
14:47
|
(71) И добавим сразу отбор
ВЫБРАТЬ МойДок.Ссылка, СУММА(МойДок.СуммаПлатежа) КАК СуммаПлатежа, МАКСИМУМ(МойДок.Ссылка.СуммаДокумента) КАК СуммаДокумента ИЗ Документ.ЛяЛяЛя.РасшифровкаПлатежа КАК МойДок СГРУППИРОВАТЬ ПО МойДок.Ссылка ИМЕЮЩИЕ СУММА(МойДок.СуммаПлатежа) = МАКСИМУМ(МойДок.Ссылка.СуммаДокумента) |
|||
73
never_be
26.07.13
✎
14:49
|
(71) (72) СПАСИБО !
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |