Имя: Пароль:
1C
1С v8
Ошибка в реализации ФИФО в запросе
,
0 olya111
 
29.05.12
11:02
Реализую метод фифо в запросе:

ВЫБРАТЬ
   МойВложенныйЗапрос.СуммаПлатежа,
   МойВложенныйЗапрос.ДатаОплаты КАК ДатаОплаты,
   МойВложенныйЗапрос.ДоговорКонтрагента,
   &Оплата,    
   МойВложенныйЗапрос.Ссылка,
   МойВложенныйЗапрос.СуммаПлатежейВсего
ИЗ
   (ВЫБРАТЬ
       МойРегистр.СуммаПлатежа КАК СуммаПлатежа,
       СУММА(МойРегистр1.СуммаПлатежа) КАК СуммаПлатежейВсего,
       МойРегистр.ДатаОплаты КАК ДатаОплаты,
       МойРегистр.ДоговорКонтрагента КАК ДоговорКонтрагента,
       МойРегистр.Ссылка КАК Ссылка
   ИЗ
       МойРегистр КАК МойРегистр
           ЛЕВОЕ СОЕДИНЕНИЕ МойРегистр КАК МойРегистр1
           ПО МойРегистр.ДатаОплаты >= МойРегистр1.ДатаОплаты
   
   СГРУППИРОВАТЬ ПО
       МойРегистр.СуммаПлатежа,
       МойРегистр.ДатаОплаты,
       МойРегистр.ДоговорКонтрагента,
       МойРегистр.Ссылка) КАК МойВложенныйЗапрос

УПОРЯДОЧИТЬ ПО
   ДатаОплаты


Где МойРегистр это виртуальная таблица с полем ДатаОплаты, типа Дата и Время. Неправильно считает поле СуммаПлатежейВсего для документов у которых дата оплаты совпадает с точностью до секунды. Как исправить?
1 Господин ПЖ
 
29.05.12
11:03
никак...
2 olya111
 
29.05.12
11:06
А если брать вместо даты момент времени не поможет?
3 Господин ПЖ
 
29.05.12
11:06
если виды документов разные - нет...
4 olya111
 
29.05.12
11:09
Вообще в регистре разные документы, но даты могут совпадать только у реализаций. Дата Оплаты - это дата документа + реквизит число из договора
5 olya111
 
29.05.12
11:11
Я пыталась добавить в виртуальную таблицу поле с порядковым номером записи, чтобы потом соединять через него, но тоже не получилось т.к. по умолчанию сортировка по дате
6 Fragster
 
гуру
29.05.12
11:15
сортируй по ссылке еще
7 olya111
 
29.05.12
11:19
Как? Во временных таблицах нельзя использовать "упорядочить по"
8 Axel2009
 
29.05.12
11:21
МойРегистр КАК МойРегистр
           ЛЕВОЕ СОЕДИНЕНИЕ МойРегистр КАК МойРегистр1
           ПО МойРегистр.ДатаОплаты > МойРегистр1.ДатаОплаты
                  ИЛИ (МойРегистр.ДатаОплаты = МойРегистр1.ДатаОплаты И МойРегистр.Ссылка > МойРегистр1.Ссылка)
9 Fragster
 
гуру
29.05.12
11:21
ПО МойРегистр.ДатаОплаты > МойРегистр1.ДатаОплаты
ИЛИ (МойРегистр.ДатаОплаты = МойРегистр1.ДатаОплаты И МойРегистр.Ссылка > МойРегистр1.Ссылка)
10 olya111
 
29.05.12
11:32
Не получается так. Конструктор не дает правильно расставить скобки, получается что или - не в скобках, ну и условие не правильное. Но вообще идею я поняла, попробую как-нибудь так, спасибо!
11 Fragster
 
гуру
29.05.12
11:35
а почему фотка не заполнена?
12 olya111
 
29.05.12
11:41
Потому что не держу своих фоток на работе
13 Cube
 
29.05.12
11:42
(12) Фотка из одноклассников или контакта нас устроит)
14 olya111
 
29.05.12
11:48
Если очень интересно, вот, тут их даже несколько
http://vk.com/o.olya
только лучше бы мне с отчетом помогли (
15 Cube
 
29.05.12
11:50
(14) Ну нет, нужно именно в свой профиль вставить)) А то не у всех есть аккаунты на ВК.
16 Конфигуратор1с
 
29.05.12
11:51
(14)теперь помогу активнее))
17 olya111
 
29.05.12
14:10
Я разобралась сама. Сделала вот такое соединение и все заработало:

МойРегистр КАК МойРегистр
           ЛЕВОЕ СОЕДИНЕНИЕ МойРегистр КАК МойРегистр1
           ПО МойРегистр.ДатаОплаты >= МойРегистр1.ДатаОплаты
               И (ВЫБОР
                   КОГДА МойРегистр.ДатаОплаты = МойРегистр1.ДатаОплаты
                       ТОГДА МойРегистр.Ссылка >= МойРегистр1.Ссылка
                   ИНАЧЕ 1 = 1
               КОНЕЦ)
18 Axel2009
 
29.05.12
14:35
(17) плохо заработает
19 Axel2009
 
29.05.12
14:36
хотя такой изврат сработает..