Имя: Пароль:
1C
1С v8
Обращение к табличным частям в запросе
0 twstx2n
 
12.02.20
23:59
Пытаюсь наваять внешний отчет в 1С УНФ.

Есть два запроса:

ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Сумма
ИЗ
    РегистрНакопления.Запасы КАК Запасы
ГДЕ
    Запасы.Номенклатура = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Код = "20.01"


СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета


;

ВЫБРАТЬ
    Спецификации.Состав.Номенклатура.СчетУчетаЗатрат КАК СчетУчетаЗатрат,
    СУММА(Спецификации.Состав.Количество * 1000) КАК Себестоимость

ИЗ
    Справочник.Спецификации КАК Спецификации
ГДЕ
    Спецификации.Владелец.Ссылка = &Параметр
    И
    Спецификации.Состав.Номенклатура.СчетУчетаЗатрат.Код = "20.01"
СГРУППИРОВАТЬ ПО
    Спецификации.Состав.Номенклатура.СчетУчетаЗатрат

Но при попытке сделать полное соединение ругается на то, что нельзя использовать в запросе обращение к табличным частям.
Поле соединения - Запасы.КоррСчетУчета и Спецификации.Состав.Номенклатура.СчетУчетаЗатрат

Подскажите, куда рыть.
1 palsergeich
 
13.02.20
00:13
(0) Соединяй с ТЧ явно
2 palsergeich
 
13.02.20
00:14
(1) Тч документа с таблицей документа имелось ввиду.
3 palsergeich
 
13.02.20
00:15
(2) Физически на уровне СУБД это разные таблицы связанные через поле Ссылка
4 palsergeich
 
13.02.20
00:16
(3) А согласованность организовывается на уровне платформы
5 twstx2n
 
13.02.20
01:13
(1) загуглил. Получилось что то такое

ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Факт,
    СУММА(Спецификации.Количество * 1000) КАК Себестоимость
ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК Спецификации
ПО
    Запасы.КоррСчетУчета = Спецификации.Номенклатура.СчетУчетаЗатрат
    
ГДЕ
    Запасы.Номенклатура = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Наименование = "Списание плитного материала"

СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета

Но по ходу в этом варианте он взял суммы со всех заказов и спецификаций. А вот как вычленить конкретный, что передаётся через &параметр я что то не могу догнать.
6 Chameleon1980
 
13.02.20
04:53
(5)что и советовалось в 1
7 catena
 
13.02.20
07:04
(5)Добавить соединение по номенклатуре?
8 Kigo_Kigo
 
13.02.20
08:09
запрос на тч документа, далее сам
        |    ПоступлениеТоваровУслуг.ФактДатаПоступления,
        |    ПоступлениеТоваровУслуг.Товары.(
        |        Ссылка,
        |        НомерСтроки,
        |        ЕдиницаИзмерения,
        |        ЕдиницаИзмерения.Наименование,
        |        КоличествоМест,
        |        Количество,
        |        ЕдиницаИзмеренияМест,
        |        Коэффициент,
        |        Номенклатура,
        |        СтавкаНДС,
        |        Сумма,
        |        СуммаНДС,
        |        Цена,
        |        СчетУчетаБУ,
        |        СерияНоменклатуры,
        |        ХарактеристикаНоменклатуры,
        |        Заказ,
        |        СчетУчетаНДС,
        |        СчетУчетаНУ,
        |        ОтражениеВУСН,
        |        Склад,
        |        ПриходныйОрдер,
        |        ЗаказПоставщику,
        |        КлючСвязи,
        |        ЕдиницаИзмеренияХранение,
        |        КоличествоХранение,
        |        Подразделение,
        |        Номенклатура.КодБП2,
        |        Номенклатура.Наименование,
        |        Номенклатура.НаименованиеПолное,
        |        Номенклатура.ВидНоменклатуры.Наименование,
        |        СтавкаНДС.Порядок,
        |        ПРЕДСТАВЛЕНИЕССЫЛКИ(СтавкаНДС.Ссылка) КАК ПредставлениеСтавкиНДС,        
        |        ХарактеристикаНоменклатуры.Наименование,
        |        Заказ КАК Заказ1,
        |        Заказ.Номер,
        |        Заказ.Дата,
        |        ЗаказПоставщику.Номер,
        |        ЗаказПоставщику.Дата
        |    ),
        |    ПоступлениеТоваровУслуг.Услуги.(
        |        Ссылка,
        |        НомерСтроки,
        |        Количество,
        |        Содержание,
        |        Заказ,
        |        Номенклатура,
        |        СтавкаНДС,
        |        Сумма,
        |        СуммаНДС,
        |        Цена,
        |        НоменклатурнаяГруппа,
        |        Подразделение,
        |        ПодразделениеОрганизации,
        |        СтатьяЗатрат,
        |        СчетЗатрат,
        |        Субконто1,
        |        Субконто2,
        |        Субконто3,
        |        СчетЗатратНУ,
        |        СубконтоНУ1,
        |        СубконтоНУ2,
        |        СубконтоНУ3,
        |        СчетУчетаНДС,
        |        Продукция,
        |        ХарактеристикаПродукции,
        |        СерияПродукции,
        |        ОбъектСтроительства,
        |        ОтражениеВУСН,
        |        Проект,
        |        ЗаказПоставщику,
        |        СпособРаспределенияЗатратНаВыпуск,
        |        СпособСтроительства,
        |        Номенклатура.Наименование,
        |        СтавкаНДС.Порядок,    
        |        ПРЕДСТАВЛЕНИЕССЫЛКИ(СтавкаНДС.Ссылка) КАК ПредставлениеСтавкиНДС,
        |        Номенклатура.КодБП2
        |    ),
        |    ПоступлениеТоваровУслуг.Оборудование.(
        |        Ссылка,
        |        НомерСтроки,
        |        ЕдиницаИзмерения,
        |        ЕдиницаИзмерения.Наименование,
        |        КоличествоМест,
        |        Количество,
        |        ЕдиницаИзмеренияМест,
        |        Коэффициент,
        |        Номенклатура,
        |        СтавкаНДС,
        |        Сумма,
        |        СуммаНДС,
        |        Цена,
        |        СчетУчетаБУ,
        |        СерияНоменклатуры,
        |        ХарактеристикаНоменклатуры,
        |        СчетУчетаНДС,
        |        СчетУчетаНУ,
        |        Склад,
        |        ПриходныйОрдер,
        |        ЗаказПоставщику,
        |        Номенклатура.КодБП2,
        |        Номенклатура.Наименование,
        |        Номенклатура.НаименованиеПолное,
        |        Номенклатура.ВидНоменклатуры.Наименование,
        |        СтавкаНДС.Порядок,
        |        ПРЕДСТАВЛЕНИЕССЫЛКИ(СтавкаНДС.Ссылка) КАК ПредставлениеСтавкиНДС,        
        |        ХарактеристикаНоменклатуры.Наименование,
        |        ЗаказПоставщику.Номер,
        |        ЗаказПоставщику.Дата
        |    )
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ";
9 twstx2n
 
13.02.20
08:25
(7) попытался сделать так:

ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Факт,
    СУММА(Спецификации.Количество * 1000) КАК Себестоимость
ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК Спецификации
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации КАК Спецификация
ПО
    Запасы.КоррСчетУчета = Спецификации.Номенклатура.СчетУчетаЗатрат
    И Спецификация.Владелец.Ссылка = Запасы.Номенклатура

ГДЕ
    Запасы.Номенклатура = &Параметр
    И Спецификация.Владелец.Ссылка = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Наименование = "Списание плитного материала"

СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета

Пишет что там где ГДЕ ожидается имя таблицы.
10 catena
 
13.02.20
08:27
ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Факт,
    СУММА(Спецификации.Количество * 1000) КАК Себестоимость
ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК Спецификации
ПО
    Запасы.КоррСчетУчета = Спецификации.Номенклатура.СчетУчетаЗатрат
    И Спецификация.Ссылка.Владелец = Запасы.Номенклатура

ГДЕ
    Запасы.Номенклатура = &Параметр
    И Спецификация.Владелец.Ссылка = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Наименование = "Списание плитного материала"

СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета
11 twstx2n
 
13.02.20
08:35
(10) там есть нюанс -
ГДЕ
    Запасы.Номенклатура = &Параметр
    И Спецификация.Владелец.Ссылка = &Параметр
т.к. Справочник.Спецификации.Состав КАК Спецификации (а Спецификация в прошлом запросе это было Справочник.Спецификации - то есть документ до табличной части) то подставил  И Справочник.Спецификация.Владелец.Ссылка = &Параметр
Пишет что поле не найдено.
12 Simod
 
13.02.20
08:48
Я так понимаю, что отбор по наименованию или коду счета никого не удивляет..
13 Simod
 
13.02.20
08:49
(11) У справочника "Спецификации" вообще есть Владелец?
14 catena
 
13.02.20
08:54
(11)Ниче не понял, но очень интересно. Что такое "документ до табличной части"? Откройте конструктор запросов, там будут только те поля, которые есть, раз руками путаетесь.
15 catena
 
13.02.20
08:55
(12)А Владелец.Ссылка? Он в своих-то словах путается, если еще и по несколько проблем разом решать, то совсем швах будет.
16 twstx2n
 
13.02.20
09:04
В стартовом сообщении приведены два запроса, которые работают и дают результат. Но мне нужно их объеденить, чтобы было три поля. Оба из первого запроса и себестоимость из второго

Владелец у спецификаций есть - справочник номенклатура. Владелец.Ссылка это наименование номенклатуры.
17 ДенисЧ
 
13.02.20
09:09
(16) А ты их объединил?
18 ДенисЧ
 
13.02.20
09:09
Есличо (с) вот этот кусок запроса из (9)
"ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК Спецификации
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации КАК Спецификация
ПО
    Запасы.КоррСчетУчета = Спецификации.Номенклатура.СчетУчетаЗатрат
    И Спецификация.Владелец.Ссылка = Запасы.Номенклатура"

Некорректен.
19 catena
 
13.02.20
09:11
(16) Владелец.Ссылка - это во-первых не наименование, а во вторых лишнее обращение. Просто Владелец будет полезнее.
20 twstx2n
 
13.02.20
09:11
(14) (17) просто если тупо соединить оба запроса из первого поста, то возникает ошибка что нельзя в соединении использовать запросы из табличных частей

Пытаюсь хоть как то обойти - не получается

Точнее урок что получилось (запрос в пятом сообщении) но в итоге получаю общую сумму по всем номенклатурам

(18) то что он некорректный мне сама 1с пишет
21 ДенисЧ
 
13.02.20
09:13
(20) А не надо тупо объединять. Надо объединять умно, учитывая синтаксис языка запросов.
А ты это не учитываешь
22 welwel
 
13.02.20
09:13
(0) попробуйте сформулировать задачу (текст запроса) на обычном русском языке - это прояснит как саму задачу, так и конкретизирует элементы задачи для однозначного толкования
23 ДенисЧ
 
13.02.20
09:14
ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Факт,
    СУММА(Спецификации.Количество * 1000) КАК Себестоимость
ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК Спецификации
ПО
    Запасы.КоррСчетУчета = Спецификации.Номенклатура.СчетУчетаЗатрат
    И Спецификация.Ссылка.Владелец = Запасы.Номенклатура

ГДЕ
    Запасы.Номенклатура = &Параметр
    И Спецификация.Ссылка.Владелец = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Наименование = "Списание плитного материала" // За это нужно давать 5 лет строгого расстрела

СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета
24 catena
 
13.02.20
09:18
(20)У тч есть ссылка на сам объект, прикинь))) Иди от обратного, соединяй с ТЧ.
25 twstx2n
 
13.02.20
09:27
(22) конфигурация 1С УНФ (управление нашей фирмой). Задача - мне нужно сопоставить сумму списаний материалов из документа "Распределение затрат" и сумму по номенклатуре из справочника "Спецификация", который подчинен справочнику "Номенклатура". У каждой единицы номенклатуры есть Счет затрат (т.е. списали - и в регистр накопления "Запасы" передано, что по данному счету плюс такая то сумма)

По первому запросу - есть регистр накопления "Запасы", куда заносится информация из документа "Распределение затрат" (поэтому регистратор указан). В этом запросе я получаю информацию о том, сколько суммарно списано номенклатуры по указанному счету по номенклатуре, которая передается ссылкой.

По второму запросу - я из Спецификации получаю информацию о том, сколько было заложено денег по данному счету списания.
26 twstx2n
 
13.02.20
09:29
(23) проблема в том, что Спецификация нигде не объявлена. Спецификации это ТЧ справочника. А вот как грамотно в запросе объявить, что Спецификация это сам справочник (а не его ТЧ) я не знаю.
27 vicof
 
13.02.20
09:30
Спецификация.Ссылка это сам справочник
28 catena
 
13.02.20
09:31
(26)Да исправь ты там псевдоним, все копируют не глядя, блин
29 catena
 
13.02.20
09:32
ВЫБРАТЬ
    Запасы.КоррСчетУчета КАК КоррСчетУчета,
    СУММА(Запасы.Сумма) КАК Факт,
    СУММА(СПЕЦИФИКАЦИИБИЛНЕВАЖНООТКУДА.Количество * 1000) КАК Себестоимость
ИЗ
    РегистрНакопления.Запасы КАК Запасы
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СПЕЦИФИКАЦИИБИЛНЕВАЖНООТКУДА
ПО
    Запасы.КоррСчетУчета = СПЕЦИФИКАЦИИБИЛНЕВАЖНООТКУДА.Номенклатура.СчетУчетаЗатрат
    И СПЕЦИФИКАЦИИБИЛНЕВАЖНООТКУДА.Ссылка.Владелец = Запасы.Номенклатура

ГДЕ
    Запасы.Номенклатура = &Параметр
    И СПЕЦИФИКАЦИИБИЛНЕВАЖНООТКУДА.Ссылка.Владелец = &Параметр
    И Запасы.Регистратор ССЫЛКА Документ.РаспределениеЗатрат
    И Запасы.КоррСчетУчета.Наименование = "Списание плитного материала"// За это нужно давать 5 лет строгого расстрела


СГРУППИРОВАТЬ ПО
    Запасы.КоррСчетУчета
30 twstx2n
 
13.02.20
09:53
(29) блин, весь гемор шёл из-за слова "Спецификация" при изначальной попытке соединить.
Заменил Вашей "Абракадаброй" :) (да хоть любой другой) - работает.

Огромное спасибо!

Касательно 5 лет строгача - я не волшебник, я только учусь :) А если серьёзно - я бухгалтер, а программист, которого нанимали сказал что выполнить такое сведение нереально. Но блин, отчёт то мне нужен с этими данными, иначе летаю по документам как заяц по полю и когда в день нужно летать раз 30 по разным спецификациям - ни разу не приколько. Поэтому писал "как вижу". Да, с точки зрения нормального программиста - может и заслуживаю расстрела, но для меня главное увидеть итоговый результат. И теперь хоть в одном документе всё вижу.
31 ДенисЧ
 
13.02.20
09:55
(30) "я бухгалтер, а программист" - Незнание закона не избавляет от ответственности.
"программист, которого нанимали сказал что выполнить такое сведение нереально" - зачем вы называете школьника-выпускника 6го класса ЦПШ "программистом"? Неужели только за то, что он умеет включать компьютер?
32 twstx2n
 
13.02.20
10:23
(31) я воздержусь от обсуждения программиста - не я его нанимал, только переписывался/созванивался. Обидно только, что полтора месяца он мурыжил: то обещал сделать, то начал разбираться и наши пожелания выходят за пределы возможностей конфигурации.
ЗЫ - строчку со счётом у себя вообще убрал, как выяснилось в итоговом варианте всё кошерно и без неё.
33 catena
 
13.02.20
10:55
(32)Теперь можете смело идти к тому, кто нанимал и обоснованно говорить, что эта особь некомпетентна.