Имя: Пароль:
1C
1С v8
непонятки с запросом
0 cfk
 
31.10.12
18:06
HIYA.
такой вот запрос для переноса остатков 1122 счета с дополнительным соединением с простыми оборотами/остатками (сходится с ОСВ)

ВЫБРАТЬ
   ВложенныйЗапрос.Период,
   ВложенныйЗапрос.Регистратор,
   ВложенныйЗапрос.Документ,
   ВложенныйЗапрос.Организация,
   ВложенныйЗапрос.Подразделение,
   ВложенныйЗапрос.Склад,
   ВложенныйЗапрос.Счет,
   ВложенныйЗапрос.Субконто1,
   ВложенныйЗапрос.Субконто2,
   ВложенныйЗапрос.Субконто3,
   ВложенныйЗапрос.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
   ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК ОСВСуммаКонечныйОстаток,
   ВложенныйЗапрос.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
   ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОСВКоличествоКонечныйОстаток,
   НазначенияИспользования.СрокПолезногоИспользования,
   ХозрасчетныйОстаткиИОбороты.Субконто1 КАК ОСВСубконто1
ИЗ
   (ВЫБРАТЬ
       ХозрасчетныйОстаткиИОбороты.Период КАК Период,
       ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор,
       ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Регистратор) КАК Документ,
       ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
       ХозрасчетныйОстаткиИОбороты.Регистратор.ПодразделениеОрганизации КАК Подразделение,
       ХозрасчетныйОстаткиИОбороты.Регистратор.Склад КАК Склад,
       ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
       ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
       ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
       ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3,
       ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
       ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
   ИЗ
       РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, Запись, Движения, Счет В (&Счетамалоценки), , ) КАК ХозрасчетныйОстаткиИОбороты) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НазначенияИспользования КАК НазначенияИспользования
       ПО (ВЫБОР
               КОГДА ВложенныйЗапрос.Регистратор ССЫЛКА Документ.ПередачаМалоценныхАктивовВЭксплуатацию
                   ТОГДА ВложенныйЗапрос.Субконто1 = НазначенияИспользования.Владелец
               ИНАЧЕ ЛОЖЬ
           КОНЕЦ)
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, Запись, Движения, Счет В (&СЧетаМалоценки), , ) КАК ХозрасчетныйОстаткиИОбороты
       ПО ВложенныйЗапрос.Регистратор = ХозрасчетныйОстаткиИОбороты.Регистратор
           И ВложенныйЗапрос.Субконто1 = ХозрасчетныйОстаткиИОбороты.Субконто1
           И ВложенныйЗапрос.СуммаКонечныйОстаток = ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток
ИТОГИ
   СУММА(СуммаКонечныйОстаток),
   СУММА(ОСВСуммаКонечныйОстаток),
   СУММА(КоличествоКонечныйОстаток),
   СУММА(ОСВКоличествоКонечныйОстаток)
ПО
   ОБЩИЕ

1. Почему при левом соединении с таблицей назначений увеличивается итог по сравнению с простой выборкой?
2. Почему выдает итог который по факту при пересчете в EXCEL дает разрыв на миллион почти? пруфлинк http://img651.imageshack.us/img651/3513/xlsu.jpg (на картинке 16 колонка "СуммаКонечныйОстаток" 17 колонка "ОСВСуммаКонечныйОстаток") под которыми

P.S. база старая и битая, кое где в хозрасчетном ссылки на документы которые фатически пустые при открытии оказываются(без реквизитов) или показывает, что документ не проведен а проводки по нему есть.
1 zak555
 
31.10.12
18:07
зачем вложенный запрос ?
2 cfk
 
31.10.12
18:09
не суть важно. уже не помню, сто раз переделывал.
3 cfk
 
31.10.12
18:10
(1) вспомнил, я вначале суммы делал по субконто1 (номенклатура)
4 cfk
 
31.10.12
18:10
(1) для той же выверки
5 cfk
 
31.10.12
18:18
я так понимаю все молчат потому что я плохо сформулировал вопрос?
6 Wobland
 
31.10.12
18:19
(5) да вроде нормально сформулировал. вот мне лениво и ночер
7 cfk
 
31.10.12
18:45
посоны, памагите.
8 kosts
 
31.10.12
18:49
(0)
>1. Почему при левом соединении с таблицей назначений увеличивается итог по сравнению с простой выборкой?
Потому что при соединении нужно быть готовым к тому, что будут задвоения строк...

И соединение по сумме, это что, для чего?
ВложенныйЗапрос.СуммаКонечныйОстаток = ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток
9 GANR
 
31.10.12
18:59
(7) Обработка "Консоль запросов" в помощь. Разбей в ней запрос на подзапросы - и смотри.
10 cfk
 
31.10.12
19:06
(9) я в ней и писал (8) сумма лишняя согласен. но почему задваивает если левое соединение?
11 GANR
 
31.10.12
19:09
(10) Потому что у таблицы в левой части встречаются 2 записи, соответствующие условию соединения. Вот и выведи эту самую левую часть в отдельный запрос в консоли!
12 cfk
 
31.10.12
19:09
(8) и почему при автосумме в EXCEL так сильно рвет?
13 kosts
 
31.10.12
19:10
(10) Если мало полей соединения или присоединяемая таблица не уникальна по этим полям, как-то так.
14 kosts
 
31.10.12
19:11
(12) Скопируй результат своего запроса в Excel, думаю результат будет одинаковым.
15 GANR
 
31.10.12
19:13
Может так соединить?

ПО ВложенныйЗапрос.Регистратор = ХозрасчетныйОстаткиИОбороты.Регистратор
И ВложенныйЗапрос.Субконто1 = ХозрасчетныйОстаткиИОбороты.Субконто1
И ВложенныйЗапрос.Субконто2 = ХозрасчетныйОстаткиИОбороты.Субконто2
И ВложенныйЗапрос.Субконто3 = ХозрасчетныйОстаткиИОбороты.Субконто3

а это выкинь
ВложенныйЗапрос.СуммаКонечныйОстаток = ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток

не по феншую
16 cfk
 
31.10.12
19:13
(14) смотри картинку по линку. результат 1 960 831,35
это по консоли а в экселе автосумма дает 2757937,15
17 cfk
 
31.10.12
19:14
(15) согласен
18 cfk
 
31.10.12
19:17
(16) и это самая большая загадка
19 cfk
 
31.10.12
19:19
(15) с субконто 2 и 3 вообще ничего не соединяет с хозрасчетным, как ни странно
20 kosts
 
31.10.12
19:24
(16) Где-то что-то не учитываешь
21 cfk
 
31.10.12
19:25
(20) например
22 cfk
 
31.10.12
19:26
(20) если консоль итог считает 1960831,35, я выгружаю файл в эксель пересчитываю автосуммой колонку и дает 2757938,15
23 cfk
 
31.10.12
19:32
(15) как раз по сумме и количеству - самое оно соединять, иначе соединит 2шт с 1 и т.п.
24 kosts
 
31.10.12
19:39
(22) В консоли возможно дерево, а Ексель 2 раза посчитал. Или что то вроде этого.
25 GANR
 
31.10.12
19:50
(23) самое оно - предварительно во вложенных запросах СГРУППИРОВАТЬ по полям соединения
26 GANR
 
31.10.12
19:50
чтоб не было нескольких строк, удовлетворяющих условию соединения
27 GANR
 
31.10.12
19:51
с последующими задвоениями
28 cfk
 
31.10.12
21:09
никакого дерева (24)
29 kosts
 
01.11.12
06:26
(28) Попробуй сверять построчно или с нарастающей с итогом для каждой строки. И увидишь в каком месте разница, потом видно будет, что делать.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.