Имя: Пароль:
1C
1С v8
СКД: запрос по регистру и ВТ
,
0 Вжескрыылг
 
21.09.17
08:06
Есть запрос по продажам продукции "Номенклатура", есть ВТ "ЦеныОпераций" с полями "Номенклатура, Операция, Количество, Цена", т.е. кол-во и цена операции на единицу продукции.
Запрос в СКД
ВЫБРАТЬ
    Продажи.Номенклатура КАК Номенклатура,
    Продажи.КоличествоОборот КАК Количество,
    ЦеныОпераций.Операция КАК Операция,
    ЦеныОпераций.Цена КАК ЦенаОперации,
    ЦеныОпераций.Количество * Продажи.КоличествоОборот КАК КоличествоОперации,
    ЦеныОпераций.Цена * Продажи.КоличествоОборот КАК Выручка,
    ЦеныОпераций.Цена * Продажи.КоличествоОборот КАК Наценка
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК Продажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЦеныОпераций КАК ЦеныОпераций
        ПО Продажи.Номенклатура = ЦеныОпераций.Номенклатура

В консоли все киргуду, в отчете выводит не всю номенклатуру.
1 Wirtuozzz
 
21.09.17
08:16
м.б. проблема в том, что не было продаж за этот период?
Что бы выводить портянку из всей номенклатуре, надо обратиться к справочнику, и к нему левым соединением соединять РН Продажи.
2 Вжескрыылг
 
21.09.17
08:27
(1) Продажи есть, показывает отдельный отчет. Да и в консоли все есть, но не будешь же юзерам про консоль рассказывать.
3 VladZ
 
21.09.17
08:30
(0) "выводит не всю номенклатуру." А с чего решил, что будет "вся"? И что ты понимаешь под словом "вся"? Согласно запроса выводиться будет номенклатура, которая есть в продажа и в ЦеныОпераций (см. Внутреннее соединение).
4 Вжескрыылг
 
21.09.17
08:34
(3) Делал всякое соединение. Как обычно, все равно - соединяет налево. Полное соединение делается по-другому, после СОЕДИНЕНИЕ {ВЫБРАТЬ...}
5 Вжескрыылг
 
21.09.17
08:35
Объединить тоже делал - те же яйца..
6 VladZ
 
21.09.17
08:36
(4) "Как обычно, все равно - соединяет налево" - вот тут какой-то бред. Программа делает именно то, что ты ей пишешь. Сама она не может заменить "внутреннее соединение" на "левое".
7 Rokford
 
21.09.17
08:39
Как получается ВТ "ЦеныОпераций" ?
8 Вжескрыылг
 
21.09.17
08:41
(6) короче, сделал сейчас налево - то же самое. и номенклатура  именно проданная за период, сначала специально выбранная:

ВЫБРАТЬ РАЗЛИЧНЫЕ
                Продажи.Номенклатура КАК Номенклатура
            ИЗ
                РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК Продажи
9 Вжескрыылг
 
21.09.17
08:45
(7) Есть у меня такой веселый регистр "ЗатратыНаНоменклатуру". Номенклатура состоит из заготовок, те состоят из еще заготовок и т.д. При выпусках продукции/заготовок состав комлектующих переписывается на выпущенную номенклатуру, и в конечном счете продукция состоит из маталла, краски, болтов и прочих гаек.

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

СГРУППИРОВАТЬ ПО
    РасходыНаНоменклатуру.Номенклатура,
    РасходыНаНоменклатуру.Аналитика

Аналитика - это ТМЦ, работы, статьи затрат
10 Вжескрыылг
 
21.09.17
08:47
(7) Потом
ВЫБРАТЬ
    ТаблицаОперации.Номенклатура КАК Номенклатура,
    ТаблицаОперации.Операция КАК Операция,
    СРЕДНЕЕ(ТаблицаОперации.КоличествоОпераций / ТаблицаОперации.Количество) КАК Количество,
    СРЕДНЕЕ(ТаблицаОперации.Сумма / ТаблицаОперации.КоличествоОпераций) КАК Цена
ПОМЕСТИТЬ ТаблицаЦеныОпераций
ИЗ
    ТаблицаОперации КАК ТаблицаОперации

СГРУППИРОВАТЬ ПО
    ТаблицаОперации.Номенклатура,
    ТаблицаОперации.Операция
11 Rokford
 
21.09.17
08:54
(9),(10)Я бы смотрел с помощью консоли компоновки какой получается результирующий запрос. Думаю СКД меняет запрос. Поэтому результаты в консоли запросов и в отчете - разные.
12 Вжескрыылг
 
21.09.17
08:56
(11) Я ж писал, что в консоли все есть, а в СКД даже системы выборки операций нет, выбирает от балды.
13 Вжескрыылг
 
21.09.17
08:58
(11) Сколько отчетов написал на СКД, простых и сложных, все равно чувствую, что знаю ее процентов на 50. Тут нужен гуру по СКД.
14 Rokford
 
21.09.17
08:58
Я про консоль компоновок говорю, а не про консоль запросов.
15 Rokford
 
21.09.17
08:59
Например на ИТС есть КонсольСистемыКомпоновкиДанных83.erf или в инструментах разработчика от TormozIT
16 Вжескрыылг
 
21.09.17
09:03
(15) ИТС нет, КонсольСистемыКомпоновкиДанных83 не гуглится. Кинь ссылку, а?
17 KrasnSergey
 
21.09.17
09:08
(16) инструменты разработчика скачай там в составе есть консоль компоновки я ей пользуюсь
18 Rokford
 
21.09.17
09:14
https://its.1c.ru/db/metod8dev#content:3401:hdoc:_top:консольсистемыкомпоновкиданных

Хотя мне тоже больше из инструментов разработчика нравится (правда она на обычных формах).
19 Rokford
 
21.09.17
09:16
(16) проверь почту
20 Вжескрыылг
 
21.09.17
09:23
(16), (17), (18) Скачал и так, и из письма. Работает только в толстои клиенте. блин!
21 Вжескрыылг
 
21.09.17
09:33
(19) Загрузил. Выполнил. Надо разбираться, что эта консоль может.
22 Rokford
 
21.09.17
09:48
(21) Покажи настройку отчета (выбранные поля интересуют)
23 Вжескрыылг
 
21.09.17
09:50
(0) что-то в соединении. как соединяется с ВТ "ЦеныОпераций", если там этих номенклатур несколько?
24 Rokford
 
21.09.17
09:55
Проверил. Запрос не меняется. Нужно копать в другую сторону.
25 alxxsssar
 
21.09.17
09:59
Так может дело и не в запросе. Смотри на вкладке настроек, может СКД на уже сформированную таблицу какие-то отборы накладывает или что-то в таком духе. Параметры запроса поковыряй.
26 AneJIbcuH
 
21.09.17
10:00
(0) Отборов нет?
27 LordCMEPTb
 
21.09.17
10:00
Т.е. если выполнить в консоли запросов оптимизированный запрос из макета компоновки (ну или из консоли отчета, который получился на какой-то из закладок) и исходный запрос с одинаковыми параметрами, то результат разный? При том, что по информации из (24) запросы одинаковые?
Что-то не так в исходных данных...
28 Вжескрыылг
 
21.09.17
10:38
(26) только период
29 Вжескрыылг
 
21.09.17
11:01
(27) Да, тексты одинаковые. Данные проверялись отчетом по продажам и отчетом "Затраты на номенклатуру", содержание промежуточных ВТ в консоли. Что-то в соединении.
30 LordCMEPTb
 
21.09.17
11:16
(29) Не понимаю фразу "Данные проверялись отчетом по продажам и отчетом "Затраты на номенклатуру", содержание промежуточных ВТ в консоли"

Требуется либо поставить точку останова в модуле отчета при компоновке результата, либо взять оптимизированный запрос из консоли СКД. ОПТИМИЗИРОВАННЫЙ, а не ИСХОДНЫЙ. Выполнить в консоли запросов. Затем взять исходный текст запроса и с теми же параметрами выполнить. После этого анализировать результаты.
31 write
 
21.09.17
12:12
(0) Перенеси ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -3) из параметров виртуальной талицы РегистрНакопления.РасходыНаНоменклатуру.Обороты в параметры этой же виртуальной таблицы только на вкладке "КОМПОНОВКА ДАННЫХ"
32 h-sp
 
21.09.17
12:33
(29) да, вот эту хрень ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -3)  туда не пиши. Она всё равно на нее наплюет. И вставит свою дату.
33 Вжескрыылг
 
21.09.17
13:05
(31), (32). Действительно, вместо ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, -3) вставляет что-то.
34 Вжескрыылг
 
21.09.17
14:29
(31) Спец! Взлетело!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн