Имя: Пароль:
1C
1С v8
С помощью запроса получить элементы табличной части документа-регистратора
0 Frikker
 
24.04.17
14:06
Собственно вопрос в теме: Как с помощью запроса получить элементы табличной части документа-регистратора из вирт. таблицы регистра Бухгалтерии?
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Счет,
    ХозрасчетныйОстаткиИОбороты.Подразделение,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.ПериодСекунда,
    ХозрасчетныйОстаткиИОбороты.Регистратор,
    АвансовыйОтчетТовары.Номенклатура
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Авто, , , , ) КАК ХозрасчетныйОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = АвансовыйОтчетТовары.Ссылка
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Счет.Ссылка В ИЕРАРХИИ(&Счет)

АвансовыйОтчетТовары - искомая Таб.Часть документа АвансовыйОтчет. При выгрузке результат - NULL. В чем косяк?
1 PCcomCat
 
24.04.17
14:14
1.  РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(Счет В ИЕРАРХИИ(&Счет), , Авто, , , , ) КАК ХозрасчетныйОстаткиИОбороты
2 PCcomCat
 
24.04.17
14:15
через несколько запятых...
3 Frikker
 
24.04.17
14:21
(2) Чем это может помочь в моем случае?Запрос выполняется с тем же результатом
4 Dmitrii
 
гуру
24.04.17
14:23
(0) Косяка нет.
Запрос написан корректно (не считая замечания в (1) и еще пары мелких моментов).
Просто, по всей видимости, в базе нет записей удовлетворяющих условиям соединения и отбора.
5 Frikker
 
24.04.17
14:30
(4) Если я правильно понял, то у меня тогда не должны заполняться и остальные строки, но у меня со стороны регистра все данные заполняются. а вот со стороны ТЧ - NULL. С каким измерением/реквизитом/ресурсом возможно связать ТЧ, чтобы получить нужные мне значения?
6 Dmitrii
 
гуру
24.04.17
14:31
Кстати. А в чем смысл запроса?
Предположим в качестве значения параметра Счет будет передан счет 10.01.
И есть авансовый отчет, по которому закупались одновременно и материалы на 10.01 и товары на 41-й счет.
Что будет в результате запроса? - И то и другое. А соответствует ли это ожиданиям заказчика?
7 Dmitrii
 
гуру
24.04.17
14:32
(5) читай внимательно (4): "в базе нет записей удовлетворяющих условиям СОЕДИНЕНИЯ и отбора"

то есть записи в регистре есть, а в ТЧ документа - нет.
8 catena
 
24.04.17
14:32
(5)Странная логика. Просто у ваш регистратор не является авансовым отчетом, либо у него не заполнена выбранная ТЧ. Связь организована правильно.
9 catena
 
24.04.17
14:33
Кстати, надеюсь, вы понимаете, что если в выбранной ТЧ будет несколько строк, все данные регистра продублируются на каждую строку?
10 Dmitrii
 
гуру
24.04.17
14:35
+ к (7): есть записи, в регистре по счету &Счет, но регистраторами этих записей является либо не авансовые отчеты, либо авансовые отчеты с пустой табличной частью Товары.
11 Dmitrii
 
гуру
24.04.17
14:37
(5) >> Если я правильно понял, то у меня тогда не должны заполняться и остальные строки

Это было бы верно для ВНУТРЕННЕГО соединения, а не для ЛЕВОГО.
12 Frikker
 
24.04.17
14:41
(6) у меня задача: построить отчет с помощью СКД по опр. счету
Авансовый отчет - один из документов-регистраторов. по остальным документам похожая ситуация.
(10) Вы оказались правы. По другому документу проверил в консоли запросов - значения появились. Но тогда немного другой вопрос: Как мне связать несколько наборов данных с идентичными запросами (отличаются только ТЧ)?
13 catena
 
24.04.17
14:45
(12)Объединить все табличные части в отдельную таблицу и ее уже связывать...
14 Frikker
 
24.04.17
14:51
(13) Подскажи пожалуйста, как примерно это сделать?
15 catena
 
24.04.17
14:55
(14)
Выбрать номенклатура, ссылка поместить тзТабличныеЧасти из Документ.АвансовыйОтчет.Товары
Объединить все
Выбрать номенклатура, ссылка из Документ.ПоступлениеТоваровУслуг.Товары
Объединить все
Выбрать номенклатура, ссылка из Документ.ОприходованиеТовара.Товары
.....
16 polosov
 
24.04.17
14:58
(0) Опиши задачу.

Работа с ТЧ документов обычно говорит о не правильной реализации ТЗ.
17 Frikker
 
24.04.17
15:01
(16) построить отчет с помощью СКД по опр. счету. из ТЧ необходимо вытащить номенклатуру, т.к. нигде этого больше нет. все остальное уже сделано и проблем не вызвало
18 polosov
 
24.04.17
15:04
(17) " т.к. нигде этого больше нет." -
тут ты скорее всего ошибаешься.

Что за отчет? Что должен показать?
19 Frikker
 
24.04.17
15:08
(18) Показать все проводки по опр. счету, Вывести в виде списка в порядке: Счет-Подразделение-Субконто1-Субконто2-Регистратор-Номенклатура.
Коротко: Создать подобие Оборотно-сальдовой ведомости из БП 2.0 по определенному счету
20 Dmitrii
 
гуру
24.04.17
15:08
(17) Запрос из (0) решает твою задачу неверно.
21 polosov
 
24.04.17
15:15
(19) У тебя академический интерес или практическая задача?
Просто реально ты описываешь ОСВ по счету. А она как бы есть во всех бухгалтерских конф-ях.
22 Frikker
 
24.04.17
15:23
(21) Поступил заказ на внешний отчет. А заказчик всегда прав, потому приходится делать.
23 polosov
 
24.04.17
15:24
(22) Берешь ОСВ по счету, тыкаешь правой, потом "Сохранить как внешнюю обработку, отчет..."
24 Frikker
 
24.04.17
15:25
(23) а что делать с номенклатурой-то? в ОСВ ее нету
25 polosov
 
24.04.17
15:30
(24) Она есть как аналитика счетов, у которых есть субконто "Номенклатура".
Ты либо не можешь объяснить клиенту, что можно вывести в ОСВ. Либо клиент хочет странного.
26 Frikker
 
24.04.17
15:42
Решилась моя проблема.
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Счет,
    ХозрасчетныйОстаткиИОбороты.Подразделение,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.ПериодСекунда,
    ХозрасчетныйОстаткиИОбороты.Регистратор,
    ВЫБОР
        КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.АвансовыйОтчет
            ТОГДА АвансовыйОтчетТовары.Номенклатура
        КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ПоступлениеТоваровУслугУслуги.Номенклатура
        КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ТребованиеНакладная
            ТОГДА ТребованиеНакладнаяМатериалы.Номенклатура
    КОНЕЦ КАК Номенклатура
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Авто, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = ТребованиеНакладнаяМатериалы.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = АвансовыйОтчетТовары.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = ПоступлениеТоваровУслугУслуги.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = ПоступлениеТоваровУслугТовары.Ссылка

Вот все что требовалось
27 polosov
 
24.04.17
15:55
(26) Как этот трэш учитывает ручные корректировки движений документа и операции введенные вручную?
28 catena
 
25.04.17
06:46
(26)Еще раз напоминаю, что при наличии в ТЧ нескольких строк, все данные регистра, включая суммы, будут дублироваться...