gifts2017

Прайс-лист в две колонки на СКД, для УТ 11.0, с описанием запроса

Опубликовал Юрий Зайцев (Yury1001) в раздел Обработки - Ценообразование, прайсы

Пример отчета на СКД: Номенклатура, Цена в две колонки. Отчет простой, без особого оформления и больше предназначен как урок для начинающих по работе с запросами на тему «Как разбить результат в запросе на несколько колонок для вывода через СКД», с описанием принципа действии.
// Набор данных Запрос состоит из нескольких временных таблиц.
// В первой «ВТ_Ном» Выбираем товары по фильтру и число 1

ВЫБРАТЬ
                Номенклатура.Ссылка,
                1 КАК Ном
ПОМЕСТИТЬ ВТ_Ном
ИЗ
                Справочник.Номенклатура КАК Номенклатура
ГДЕ
                (НЕ Номенклатура.ЭтоГруппа)
{ГДЕ
                Номенклатура.Ссылка.*}
;
 
// Во второй «ВТ_НомПП» получим номер по порядку: соединим каждый элемент первой
// таблицы со всеми элементами этой же таблицы, которые при сортировке будут равны или
// выше элемента, а число 1 просуммируем.
 
ВЫБРАТЬ
                ВТ_Ном.Ссылка,
                СУММА(ВТ_Ном.Ном) КАК НомПП
ПОМЕСТИТЬ ВТ_НомПП
ИЗ
                ВТ_Ном КАК ВТ_Ном
                               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Ном КАК ВТ_Ном1
                               ПО ВТ_Ном.Ссылка.Наименование >= ВТ_Ном1.Ссылка.Наименование
 
СГРУППИРОВАТЬ ПО
                ВТ_Ном.Ссылка
;
 
// Дальше «ВТ_Индекс» хитрость номер один: делим номер по порядку на удвоенное число
// строк на странице и отнимаем целую часть этого же деления, функция ВЫРАЗИТЬ в этом
// случае округляет частное по математическим правилам.
// Результат формулы колеблется от -0,5 до +0,499 назовём его ПлюсМинус, (см. Рис.1 Синус Хэ)
 
ВЫБРАТЬ
                ВТ_НомПП.Ссылка,
                ВТ_НомПП.НомПП КАК НомПП,
                (ВТ_НомПП.НомПП - 1) / (&СтрокНаСтранице * 2) - (ВЫРАЗИТЬ((ВТ_НомПП.НомПП - 1) / (&СтрокНаСтранице * 2) КАК ЧИСЛО(10, 0))) КАК ПлюсМинус
ПОМЕСТИТЬ ВТ_Индекс
ИЗ
                ВТ_НомПП КАК ВТ_НомПП
;
 
// А теперь всем строкам, у которых ПлюсМинус >= 0 (первая колонка каждой страница)
// присоединим строку с номером на СтрокНаСтранице больше, (см. Рис.2 Результат)
 
ВЫБРАТЬ
                ВТ_Индекс.НомПП КАК НомПП1,
                ВТ_Индекс.Ссылка КАК Номенклатура1,
                ЦеныНоменклатурыСрезПоследних.Цена КАК Цена1,
                ВТ_Индекс1.НомПП КАК НомПП2,
                ВТ_Индекс1.Ссылка КАК Номенклатура2,
                ЦеныНоменклатурыСрезПоследних1.Цена КАК Цена2
ИЗ
                ВТ_Индекс КАК ВТ_Индекс
                               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Индекс КАК ВТ_Индекс1
                                               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦены)}) КАК ЦеныНоменклатурыСрезПоследних1
                                               ПО ВТ_Индекс1.Ссылка = ЦеныНоменклатурыСрезПоследних1.Номенклатура
                               ПО (ВТ_Индекс.НомПП + &СтрокНаСтранице = ВТ_Индекс1.НомПП)
                               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦены)}) КАК ЦеныНоменклатурыСрезПоследних
                               ПО ВТ_Индекс.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
                ВТ_Индекс.ПлюсМинус >= 0
 
УПОРЯДОЧИТЬ ПО
                НомПП1

 

Остаётся занести этот запрос в набор данных схемы компоновки, ну там настроить всё – отборы, оформления и т.п. Отсечку страниц, заголовок и всякие там штуки описывать не буду, смотрите в модуле отчета ПриКомпоновкеРезультата, файл без пароля.

Особенности этого варианта: только один тип цен и только Равно, но обязательно; количество строк подбирается пользователем; длинные наименования обрезаются; нет иерархии.

Вариант с остатками

Поменялся последний запрос в пакете: собственно просто соединение с регистром остатков для каждой из колонок.

ВЫБРАТЬ
 ВТ_Индекс.НомПП КАК НомПП1,
 ВТ_Индекс.Ссылка КАК Номенклатура1,
 ЦеныНоменклатурыСрезПоследних.Цена КАК Цена1,
 ВТ_Индекс1.НомПП КАК НомПП2,
 ВТ_Индекс1.Ссылка КАК Номенклатура2,
 ЦеныНоменклатурыСрезПоследних1.Цена КАК Цена2,
 ТоварыНаСкладахОстатки.ВНаличииОстаток,
 ТоварыНаСкладахОстатки1.ВНаличииОстаток КАК ВНаличииОстаток1
ИЗ
 ВТ_Индекс КАК ВТ_Индекс
  ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Индекс КАК ВТ_Индекс1
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦены)}) КАК ЦеныНоменклатурыСрезПоследних1
   ПО ВТ_Индекс1.Ссылка = ЦеныНоменклатурыСрезПоследних1.Номенклатура
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад)}) КАК ТоварыНаСкладахОстатки1
   ПО ВТ_Индекс1.Ссылка = ТоварыНаСкладахОстатки1.Номенклатура
  ПО (ВТ_Индекс.НомПП + &СтрокНаСтранице = ВТ_Индекс1.НомПП)
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦены)}) КАК ЦеныНоменклатурыСрезПоследних
  ПО ВТ_Индекс.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад)}) КАК ТоварыНаСкладахОстатки
  ПО ВТ_Индекс.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
ГДЕ
 ВТ_Индекс.ПлюсМинус >= 0
УПОРЯДОЧИТЬ ПО
 НомПП1

Скачать файлы

Наименование Файл Версия Размер
СОстаткомПрайсВ2колонки 120
.erf 8,20Kb
10.06.15
120
.erf 8,20Kb Скачать
ПрайсЛистВДвеКолонкиСКД 73
.erf 7,97Kb
10.06.15
73
.erf 7,97Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон (anton.fly7) 06.12.11 23:13
2. Юрий Зайцев (Yury1001) 06.12.11 23:38
Спасибо, поддержка для меня сейчас важна - мои перые шаги на InfoStart.
3. Владимир Клименко (KliMich) 07.12.11 04:03
Спасибо! В 2 колонки всегда было актуально (особенно при большой номенклатуре)!

А вот в работе сталкивался с такими проблемами:
1. Если номенклатура имеет длинное название, то во избежание "потери конца" должна выводиться "с переносом". Что приводит к изменению высоты строки... И в итоге "сформированный" лист может не вписаться в страницу.
2. А Руководство требуют прайс с учётом иерархии.

Поэтому пожелания:
1. Делить на две колонки не в запросе, а при заполнении печатной формы, используя функцию ПроверитьВывод() для программного анализа заполненности и перевода страницы.
2. Сделать вывод прайса с группами. Название групп/подгрупп выводить сразу на две колонки. А саму номенклатуру выводить слева-направо-сверху-вниз до следующей группы/подгруппы (а не так: "сначала заполняем левую колонку, а потом в правую")

P.S. Может посчитаете, что это ни к чему, но у меня руководство требовало, чтобы прайс имел "надлежащий и презентабельный" вид и формировался автоматически (без доработок) поэтому и вставали такие проблемы...
4. koroleva_ann_ (taste) 07.12.11 07:32
пожелание: хотелось бы прайс чтоб выводился с текущими остатками по складу)) если можно))
5. Светлана Жидковская (svs_atm) 07.12.11 08:08
Как быстро формируется прайс при большой номенклатуре?
6. Юрий Зайцев (Yury1001) 07.12.11 10:48
KliMich (3)
Если «руководство требует» наверно лучше обратиться к специалистам (франчайзи там всякие) и выполнить работы со всей ответственностью.
«Делить на две колонки не в запросе» - это конечно можно и я уже реализовывал на 7.7 http://infostart.ru/public/100627/
, однако задумка этой статьи именно урок по работе с запросами.

koroleva_ann_ (4)
«с текущими остатками по складу» - Можно, легко как в моей статье
http://infostart.ru/public/100565/
Постараюсь выбрать время и обновить.

svs_atm (5)
«Как быстро формируется» - 5000-6000 может и пару минут – это нормально.
7. Юрий Зайцев (Yury1001) 07.12.11 11:00
Да, и ещё, хотел поблагодарить alexk-is за статью ФИФО в Запросе (с пояснениями для начинающих),
которая и вдохновила меня на эту работу, СПАСИБО!
8. Eugeneer (Eugeneer) 07.12.11 11:58
Не вижу плюсов в данном решении. Именно из за таких прайсов потом клиенты парятся и не могут понять что им делать чтобы их легко загружать в базу из экселя.
9. Ийон Тихий (cool.vlad4) 07.12.11 12:01
(8) а нафига парится, чтобы кому то легко было загружать в базу из экселя? я вижу плюсы...их уже 11...
10. Eugeneer (Eugeneer) 07.12.11 12:05
(9) и каких же? Сейчас все пользуются на 99 процентов электронными прайсами. трудно себе представить фирму которая бы большие прайсы (для мелких прайсов как то трудно себе представить надобновсть все в дву колонки) печатала на бумаге.
Все все отправляют в электролнном виде. А если и лежит прайсик где то в бумажном виде то больше 5 листов я никогда не видел.
Да и то у большинства прайсов очень большое количество дополнительной информации бывает. По 10 колонок (свойства и т.д. и т.п.)

cool.vlad4 пишет:

(8) а нафига парится, чтобы кому то легко было загружать в базу из экселя? я вижу плюсы...их уже 11...


Как это нафига? Сейчас практически все торговые компании обрабатывают прайсы через загрузку. Никто не сидит и по бумаге не карандашом не тыкает.
11. Сергей Ожерельев (Поручик) 07.12.11 12:05
(8) Прайс тут как пример применения принципа действия.
12. Ийон Тихий (cool.vlad4) 07.12.11 12:08
(10) здесь прайс чисто для показа как разбивать в СКД на несколько колонок...
ЗЫ почему нафига? потому, что если кто-то отправляет кому-то прайс, то не себе а клиенту, а почему он должен заботится о том как клиент будет грузить в базу...если даже и будет, то проще и лучше отправлять в более фиксированном формате чем прайс
13. Юрий Зайцев (Yury1001) 07.12.11 12:10
Прайс тут как пример применения принципа действия.

Да, да - вот про это как раз все и забыли, гы :)))))
14. Taras Варварич (itar59) 07.12.11 12:29
А нельзя ли еще пару тройку уроков?
У Вас прекрасный стиль изложения -- доступно и просто.
15. Юрий Зайцев (Yury1001) 07.12.11 12:31
(14)
Будут обязательно!
Срок 5-7 дней.
16. Andrusha (Andrusha1) 07.12.11 18:16
Спасибо, очень познавательная статья.
17. Taras Варварич (itar59) 07.12.11 18:44
koroleva_ann_ пишет:

пожелание: хотелось бы прайс чтоб выводился с текущими остатками по складу)) если можно))
(4) koroleva_ann_,

ну нельзя же от учебной статьи требовать всего и сразу.
18. Юрий Зайцев (Yury1001) 07.12.11 19:19
(17)
та это ж пустяки - я уже сделал.
вот (3) это крутой заказ, пожалуй пропущу.

Заодно столкнулся со стенкой: не могу разместить два варианта в отчете – их не видно у пользователя, даже основного нет. В яндексе пишут – изучай Библиотеку стандартных подсистем, но что то руки опустились…
Чё ж всё так сложно то?
19. Сергей Ожерельев (Поручик) 08.12.11 07:36
(18) В УТ 11 и Рознице 2 с вариантами внешних отчетов сложно, в связи с использованием в конфигурации хранилища вариантов.
20. olga pt (pt_olga) 09.12.11 19:17
да, для Прайса нам это не пригодится, но в принципе необходимость экономной по листам печати есть.
Спасибо автору!
21. Юрий Зайцев (Yury1001) 09.12.11 20:13
(20)
Конечно: можно и остатки ТМЦ свернуть и долги клиентов
22. denis leonov (curys) 13.12.11 14:25
24. Miffka (mikhailv) 15.12.11 17:35
Юрий! Если есть одинаковые названия у номенклатуры, то вместо
Ном_ПП
1
2
3

будет
Ном_ПП
3
3
3

Предлагаю такой вариант решения проблемы:

// получаем нумерацию внутри одинаковых наименований
ВЫБРАТЬ
Таб1.Ссылка,
СУММА(Таб1.Номер) - 1 КАК Добавка
ПОМЕСТИТЬ ОдинаковыеНаим
ИЗ
ВТ_Ном КАК Таб1
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Ном КАК Таб2
ПО Таб1.Ссылка >= Таб2.Ссылка
И Таб1.Наименование = Таб2.Наименование

СГРУППИРОВАТЬ ПО
Таб1.Ссылка

ИМЕЮЩИЕ
СУММА(Таб1.НомерПП) - 1 > 0
;

// корректируем Ном_ПП
ВЫБРАТЬ
Таб1.Ссылка,
Таб1.НомПП - ЕСТЬNULL(Таб2.Добавка, 0) КАК Ном_ПП
ПОМЕСТИТЬ ВТ_НомПП_2
ИЗ
ВТ_НомПП КАК Таб1
ЛЕВОЕ СОЕДИНЕНИЕ ОдинаковыеНаим КАК Таб2
ПО Таб1.Ссылка = Таб2.Ссылка
Yury1001; +1 Ответить
25. Иван (Sairys) 19.12.11 17:43
Одно время замарачивался с прайсом на СКД, запнулся на том что не мог вывести фото номенклатуры. Но правда покопался потом и решил свою проблему
26. Thang Tran (thang_madi) 03.01.12 10:12
Неплохая статья, спасибо автору!
27. 1CProfessional (Paul_Nevada) 06.01.12 00:42
Спасибо за "ориентировку".
28. Maksim Titov (Maks_Payn) 10.01.12 11:07
Спасибо! Интересный отчет!
29. Валя Гужбина (GVALA) 21.02.12 09:39
Скажите на на 1С 8.2 Бухгалтерия работать будет?
31. Юрий Зайцев (Yury1001) 21.02.12 10:19
(29) Принцип работать будет, а обработка нет – это ж управляемая форма, бухгалтерии такой пока нету.
32. антон кривец (akril19811) 09.03.12 20:26
Я когда то работал торговым и у нас прайс был в две колонки, это реально экономило затраты на бумагу, хотя тогда чужие затраты меня особо не беспокоили, а теперь своя фирма и хотелось бы уменьшить затраты до минимума. Было обрадовался когда увидел эту обработку, но не тут то было у меня ред.10,3 может кто подскажет как под мою подстроить?
33. Сергей Данильченко (Danilchenkos) 26.03.12 17:18
Спасибо! Очень полезная штука!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа