powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Как запрос транспонировать 1с 8.1 Ут 10.3
15 сообщений из 15, страница 1 из 1
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586577
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите есть запрос
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ТипЦен
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних

Который выводит для каждой номенклатуры столько строк сколько типов цен, а можно ли вывести типы цен в колонки? Вот так:

Товар Опт1 Опт2 Опт3
мяч 10 12 15

А не так как сейчас
Товар Цены ТипЦен
Мяч 10 опт1
Мяч 12 опт2
Мяч 15 опт3
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586700
Смотри в сторону компоновки данных, укажи в конструкторе настроек компоновки данных «Тип отчета» - таблица, и перетащи «ТипЦен» в группировку колонок.
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586795
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что он хотел не при выводе данных. А в самом запросе - при выгрузке в тз.

ps Или сейчас пойдет вопрос - как сделать это НЕ в СКД
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586813
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравсвуйте,
Спасибо за ответ, если сделать как вы советуете получается вот так см рис.:
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586823
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Программист1с,

Не в СКД я вчера сделал вот так (правда довольно геморно получилось):

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

Выборка=Справочники.ТипыЦенНоменклатуры.Выбрать();
Счетчик=1;
Поля=" ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура";
Пока Выборка.Следующий() Цикл
Поля=Поля+", ВложенныйЗапрос"+Счетчик+".Цена КАК "+Выборка.Ссылка;
Счетчик=Счетчик+1;
КонецЦикла;

ОсновнаяТаблица=" ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,{&Номенклатура}) КАК ЦеныНоменклатурыСрезПоследних ";

Соединения="";
Счетчик=1;
Пока Выборка.Следующий() Цикл
Соединения=Соединения+БазовыйТекстВложенногоЗАпроса+Счетчик+") КАК ВложенныйЗапрос"+Счетчик+" ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ВложенныйЗапрос"+Счетчик+".Номенклатура ";
Счетчик=Счетчик+1;
КонецЦикла;

УсловиеНаОсновнойЗапрос=" ГДЕ
| ЦеныНоменклатурыСрезПоследних.ТипЦен = &Ссылка1";

ТекстЗапроса=Поля+ОсновнаяТаблица+Соединения+УсловиеНаОсновнойЗапрос;
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36586917
так пойдёт?

ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних1.Номенклатура,
ЦеныНоменклатурыСрезПоследних1.Цена КАК Опт1,
0 КАК Опт2,
0 КАК Опт3
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт1) КАК ЦеныНоменклатурыСрезПоследних1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних2.Номенклатура,
0,
ЦеныНоменклатурыСрезПоследних2.Цена,
0
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт2) КАК ЦеныНоменклатурыСрезПоследних2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних3.Номенклатура,
0,
0,
ЦеныНоменклатурыСрезПоследних3.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт3) КАК ЦеныНоменклатурыСрезПоследних3
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587167
rancid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &опт1
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
КОНЕЦ КАК Опт1,
....
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних

не проще будет?
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587248
Если до сих пор не сделал в СКД - назначь цену ресурсом (Лучше использовать агрегат - Среднее(Цена)). и задай формат "ЧЦ=15; ЧДЦ=2" в оформлении. Если не нужны итоги - отключи Расположение общих итогов по горизонтали и Расположение общих итогов по вертикали.

А для выгрузки в ТЗ – "rancid" – предложил оптимальный вариант. Группировку только не забудь:

Код: plaintext
ВЫБРАТЬ\n\tНоменклатура,\n\tСУММА(ВЫБОР КОГДА ТипЦен = &Опт1 ТОГДА Цена ИНАЧЕ  0  КОНЕЦ) КАК Опт1,\n\tСУММА(ВЫБОР КОГДА ТипЦен = &Опт2 ТОГДА Цена ИНАЧЕ  0  КОНЕЦ) КАК Опт2,\n…\nИЗ\n\tРегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура))\nСГРУППИРОВАТЬ ПО Номенклатура

И куски запроса "СУММА(ВЫБОР КОГДА ТипЦен = &Опт1 ТОГДА Цена ИНАЧЕ 0 КОНЕЦ) КАК Опт1," лучше генерировать в цикле. В справочник "Типы цен номенклатуры" могут же добавить новые элементы.
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587319
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To racid
Так шахмахты какие-то получаются
Товар опт1 опт2
мяч
мяч 10
мяч 15

С объединением еще не пробовал
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587358
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бедный старый 1Сник
Спасиб ща поробую
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587384
150680, мой предыдущий пост читал? rancid и КонецЦикла не группировали результат запроса по номенклатуре. Что в первом, что во втором варианте ты увидишь:

НоменклатураОпт1Опт2Опт3Номенклатура1ЦенаНоменклатура1ЦенаНоменклатура1ЦенаНоменклатура2ЦенаНоменклатура2ЦенаНоменклатура2Цена

Внимательно посмотри предыдущий пост. Там есть доработанный текст запроса rancid.
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36587505
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бедный старый 1Сник
Ок, разбираюсь
большое спасиб
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36588443
ну естесственно ещё сгруппировать надо :)

ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
СУММА(ВложенныйЗапрос.Опт1) КАК Опт1,
СУММА(ВложенныйЗапрос.Опт2) КАК Опт2,
СУММА(ВложенныйЗапрос.Опт3) КАК Опт3
ИЗ
(ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних1.Номенклатура,
ЦеныНоменклатурыСрезПоследних1.Цена КАК Опт1,
0 КАК Опт2,
0 КАК Опт3
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт1) КАК ЦеныНоменклатурыСрезПоследних1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних2.Номенклатура,
0,
ЦеныНоменклатурыСрезПоследних2.Цена,
0
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт2) КАК ЦеныНоменклатурыСрезПоследних2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних3.Номенклатура,
0,
0,
ЦеныНоменклатурыСрезПоследних3.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = (&Номенклатура) И ТипЦен=&Опт3) КАК ЦеныНоменклатурыСрезПоследних3) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36588634
150680
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал получилось, но вот еще одна загвоздка

Как быть если значения которые необходимо вывести не числовые. Например если к это задаче еше прибавить вывод штрихкода товара, здесь не примениш Сумма

Товар Опт1 Опт2 штрихкод
мяч 10 15 123123421


ВЫБОР
КОГДА Штрихкоды.Качество = &ВыбКачество
ТОГДА Штрихкоды.Штрихкод
иначе 0
КОНЕЦ КАК ШтрихКод

Дело в том что у товара может быть несколько шк, поэтому выводится несколько строчек с одниковым товаром одна удовлетворяющая условию на штрихкод, другая пустая.
Условие
"ГДЕ
Штрихкоды.Штрихкод <> 0" ничего не дает
...
Рейтинг: 0 / 0
Как запрос транспонировать 1с 8.1 Ут 10.3
    #36588797
150682
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал вложенным запросом и соединил
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Как запрос транспонировать 1с 8.1 Ут 10.3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]