Имя: Пароль:
1C
1С v8
После соединения в запросе позиций стало больше
0 tiago
 
03.03.16
16:23
Добрый день, уважаемые!

Прошу, помогите, никак не соображу:

платформа 8.2
конфа - перепиленное бюджетирование

1. Имею таблицу (ПарамТЗ) значений с колонками "ос" и "сумма". В ос - инвентарный номер, в сумме - сумма по осн. средству.

2. нужно получить ссылки на справочник ОС использую инвентарные номера из ТЗ. Знаю что ОС и Инвентарники хранятся в регистре сведений "первоначальные сведения". Т.е. получить ТЗ с колонками "инвентарный, ссылка на ос, сумма".

3. пишу такой запрос:

    Запрос     = Новый Запрос;
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос.Текст = "ВЫБРАТЬ
                   |    Таб.ос,
                   |    Таб.суммаос
                   |ПОМЕСТИТЬ ВТ_Товары
                   |ИЗ
                   |    &Данные КАК Таб
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ВТ_Товары.суммаос,
                   |    ВложенныйЗапрос.ОсновноеСредство,
                   |    ВложенныйЗапрос.ИнвентарныйНомер
                   |ИЗ
                   |    ВТ_Товары КАК ВТ_Товары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
                   |            ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ИнвентарныйНомер КАК ИнвентарныйНомер
                   |        ИЗ
                   |            РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Период, ) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних) КАК ВложенныйЗапрос
                   |        ПО ВТ_Товары.ос = ВложенныйЗапрос.ИнвентарныйНомер";

    
    Запрос.УстановитьПараметр("Данные", парамТЗ);
    Запрос.УстановитьПараметр("Период", ТекущаяДата());
    
    тзос = Запрос.Выполнить().Выгрузить();
    
4. В итоге в первоначальной ПарамТЗ было 2545 строк, а в ТЗОС стало 2565 строк, хотя я рассчитывал только присоединить ссылки на ОС...

Надеюсь доступно описал.

Как правильно написать запрос, чтобы к первоначальной ТЗ присоединить ссылки на справочник ОС ?
1 Cyberhawk
 
03.03.16
16:24
Есть несколько ОС в регистре с таким же инвентарным номером
2 Cyberhawk
 
03.03.16
16:25
Измени условие соединения, а то он тебе на каждую строку исходной таблицы с номером, например, "000001", присоединяет две и более строки второй таблицы
3 Cyberhawk
 
03.03.16
16:25
Или пустой инв. номер
4 aleks_default
 
03.03.16
16:26
ПО ВТ_Товары.ос = ВложенныйЗапрос.ИнвентарныйНомер
Че?
5 tiago
 
03.03.16
16:28
(1) Да, не исключаю, что есть такие.

(2) На что изменить условие, чтобы давал только одну позицию?


(4) В изначальной ТЗ - ОС - это инвентарный номер.
6 Cyberhawk
 
03.03.16
16:30
(5) Условие не меняй, а просто сгруппируй результирующую таблицу
7 aleks_default
 
03.03.16
16:32
а какие еще измерения в регистре
РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет
8 tiago
 
03.03.16
16:34
(7) Только "ОсновноеСредство"
9 aleks_default
 
03.03.16
16:36
А так ИнвентарныйНомер - ресурс? Это что за конфа?
10 elCust
 
03.03.16
16:36
Нажми галочку "Без повторяющихся" в конструкторе.
11 grate
 
03.03.16
16:37
(0) У тебя в системе есть дубли инвентарных номеров. Если кроме них нет исходных данных (откуда берётся таблица ПарамТЗ) для идентификации ОС - то сначала придется навести порядок в номерах.
12 grate
 
03.03.16
16:38
(11) + как вариант - один и тот же номер могли присвоить повторно (новому - взамен списанного/переданного ОС), добавь проверку на текущее состояние основного средства.
13 tiago
 
03.03.16
16:47
Ни группировка, ни "различные" не помогают(((
14 mehfk
 
03.03.16
16:55
(13) Сделай группировку по нужному полю, а к остальным примени агрегатную функцию.
15 mehfk
 
03.03.16
16:56
(0) Менеджер временных таблиц в этом случае не нужен.
16 tiago
 
03.03.16
17:12
...вылезла другая проблема...

Загружаю данные из файла xls в таблицу значений (та самая ПарамТз из (0) )

В xls - сумма по колонке отличается от суммы итого в таблице значений......
17 mehfk
 
03.03.16
17:12
выгрузи обратно и сравни
18 tiago
 
03.03.16
17:17
(17) Что выгрузить обратно?
19 mehfk
 
03.03.16
17:17
То, что загрузил.
20 tiago
 
03.03.16
17:29
(19) Да..... мне видите ли жалко было длину числа в ТЗ побольше сделать и вместо длинного загрузилось 999999,99 (ну вы поняли)....
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.