Имя: Пароль:
1C
 
Товары закупаемые вместе (чаще всего)
0 Silverspam
 
20.05.09
11:50
Добрый день!
Подскажите неопытному новичку следующий вопрос.

Требуется в расходной накладной (документ продажа товара) сделать что то навроде как в интернет-магазине. Тоесть смысл в том, что при выборе товара одного показывались бы товары которые наиболее с ним часто покупают (привмер: товар-велосипед, покупают с ним -насос, крыло, велокомпьютер)...

Как я понимаю запрос нужно делать к регистру сведений продажи.обороты но только вот как я не пытался ничего у меня невышло...
Может кто набросает примерно как он должен выглядеть, а я уж дальше помозгую это дело. Заранее спасибо за помощь.
1 rs_trade
 
20.05.09
11:52
(0) У Радченко в книге как раз по моему такой пример описан. Посмотри.
2 Нуф-Нуф
 
20.05.09
11:52
конфига какая студент
3 rs_trade
 
20.05.09
11:53
+(1) Анализ данных надо юзать
4 Silverspam
 
20.05.09
11:54
У радченко там анализ данных в виде отчета формируется на всю документы. А мне нужно в конкретном документе так же по всем анализировать, но чтобы и представление данных было тут же например в табличном поле
5 Господин ПЖ
 
20.05.09
11:55
в книжках пишут что для такого пользуют АнализДанных с типом АнализДанныхПоискАссоциаций
6 Господин ПЖ
 
20.05.09
11:55
в "Проф. разработке"
7 Нуф-Нуф
 
20.05.09
11:55
запросом получить таблицу документов в которых есть этот товар, потом запрос к регистру продажи с группировкой по номенклатуре и с фильтром по предыдущей таблице и допустим первые 10
8 Silverspam
 
20.05.09
11:56
Да перелопатил я уже литературу всю. Самое интересное что програмист 1с на работе (не буду называть фирму) тоже не может придумать ничего (а может нехочет, но тут уже другой вопрос тогда).
9 Silverspam
 
20.05.09
11:58
Нуф-Нуф да вот этот вариант я думал, но как допустим быть если товара в списке два? И можно если нетрудно пример привести обоих запросов...
10 rs_trade
 
20.05.09
12:02
(9) Завести ресурс какой нить для хранения сопутствующего товара (подч. спр, рег. свед). И заполнять его товарами по результатам работы анализа данных. В подборе добавить возможность выбирать подчиненные эл-ты, по владельцу. Как то так, может быть...
11 Silverspam
 
20.05.09
12:04
Это если товар подчинен. А если допустим нужна выборка не из комплектующих?
Тоесть вместе с роликами покупают шахматы допустим ))).
12 Нуф-Нуф
 
20.05.09
12:15
чиста из любопытства наваял запрос для УТ. пользуйся :)


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

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 10
   ПродажиОбороты.Номенклатура,
   СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &ДатаНачала,
           &ДатаОкончания,
           Регистратор,
           ДокументПродажи В
               (ВЫБРАТЬ
                   ТабДок.Регистратор
               ИЗ
                   таблицаДокументов КАК ТабДок)) КАК ПродажиОбороты
ГДЕ
   ПродажиОбороты.Номенклатура <> &Номенклатура

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

УПОРЯДОЧИТЬ ПО
   КоличествоОборот УБЫВ
13 rs_trade
 
20.05.09
12:15
(11) Причем тут комплектующие. Еще раз, Хранишь где нибудь связку БазовыйТовар - СопутствующийТовар

велосипед - насос
велосипед - крыло
велосипед - велокомпьютер

Данные периодически формируешь на основе результата работа Анализа данных.

В накладной кнопка Сопутствующий товар, нажимаешь у тебя для выбранной номенклатуры список товара вываливается
14 Нуф-Нуф
 
20.05.09
12:18
+(12) этот анализ делается по отчету ккм (т.е. получишь товары купленные не в одном чеке, а в одном дне), так как в УТ чеки не хранятся. если хочешь в разрезе чеков, сделай доп регистр накопления продажиПоЧекам и сделай измерение Чек
15 Нуф-Нуф
 
20.05.09
12:20
покритикуйте мой вариант
16 Нуф-Нуф
 
20.05.09
12:20
: )
17 LegO
 
20.05.09
12:21
А.П. Габец, Д.И. Гончаров
1С:Предприятие 8.0 Простые примеры разработки


i Как получить данные о товарах продаваемых вместе?
Анализ = Новый АнализДанных;

// Выбранный тип анализа как раз и указывает на то, что ищем
// "совместно продаваемые" товары.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи,
|    ПродажиКомпанииОбороты.Номенклатура
|ИЗ
|    РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
|    ДокументПродажи";

Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);

// Получить продажи за указанный период.
// Выбрана периодичность по Регистратору, т.к. необходимо получить
// данные о совместных продажах в рамках одной покупки.
Анализ.ИсточникДанных = Запрос.Выполнить();

// Выполнить анализ в соответствии с указанным источником.
РезультатАнализа = Анализ.Выполнить();

// Для вывода результата анализа воспользуемся построителем
// отчета анализа данных.
Построитель = Новый ПостроительОтчетаАнализаДанных();
Построитель.Макет = Неопределено;
Построитель.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
ТабДок = Новый ТабличныйДокумент;

Построитель.Вывести(РезультатАнализа, ТабДок);
ТабДок.Показать();
18 LegO
 
20.05.09
12:21
i Как порекомендовать сопутствующие товары?
Анализ = Новый АнализДанных;

// Найти ассоциации.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи,
|    ПродажиКомпанииОбороты.Номенклатура
|ИЗ
|    РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
|    ДокументПродажи";

// Ассоциации ищем подокументно, это определяется поведением
// объекта "АнализДанных" "по умолчанию" при выборе
// периодичности виртуальной таблицы Регистратор
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);

Анализ.ИсточникДанных = Запрос.Выполнить();
РезультатАнализа = Анализ.Выполнить();

// Исходя из полученного анализа создать прогноз.
МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();

// ТЗ- таблица значений, содержащая данные о том,
// какие номенклатурные позиции вошли в "текущую" покупку.
МодельПрогноза.ИсточникДанных = ТЗ;

// ТП - элемент управления "Табличное поле" связанный через
// свойство "Данные" с реквизитом формы "ТП" (тип ТаблицаЗначений)
ТП = МодельПрогноза.Выполнить();
ЭлементыФормы.ТП.СоздатьКолонки();
19 Ненавижу 1С
 
гуру
20.05.09
12:22
(15) имхо, чаще это не больше по объему покупок, а по числу покупок
20 Ногаминебить
 
20.05.09
12:25
(15) КоличествоОборот не совсем то, что надо наверное. Это не наиболее часто покупаемый вместе товар будет, а просто тот, которого больше всего продается.
21 Ногаминебить
 
20.05.09
12:25
Опа. Уже написали. :)
22 Нуф-Нуф
 
20.05.09
12:25
хм... щас подумаю...
23 Silverspam
 
20.05.09
12:26
Ух ты отошел на 20 минут а тут стока всего наваяли уже... Пойду разгеру все :) Разложу по полочкм в голве и в конфигураторе попробую наваять. Если что напишу сюда )
24 Нуф-Нуф
 
20.05.09
12:33
чет не сообразил как количество суммировать сразу во втором запросе, вынес в третий:


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

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Регистратор
;

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 10
   таблицаТоваров.Номенклатура,
   СУММА(таблицаТоваров.Кол) КАК Количество
ИЗ
   ТаблицаТОваров КАК таблицаТоваров

СГРУППИРОВАТЬ ПО
   таблицаТоваров.Номенклатура

УПОРЯДОЧИТЬ ПО
   Количество УБЫВ
25 Нуф-Нуф
 
20.05.09
12:35
ыыыыы. затупил. (24) не смотрите (хотя вариант тоже рабочий). вот правильно:

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

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 10
   ПродажиОбороты.Номенклатура,
   КОЛИЧЕСТВО(ПродажиОбороты.Номенклатура) КАК КоличествоПокупок
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &ДатаНачала,
           &ДатаОкончания,
           Регистратор,
           ДокументПродажи В
               (ВЫБРАТЬ
                   ТабДок.Регистратор
               ИЗ
                   таблицаДокументов КАК ТабДок)) КАК ПродажиОбороты
ГДЕ
   ПродажиОбороты.Номенклатура <> &Номенклатура

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

УПОРЯДОЧИТЬ ПО
   КоличествоПокупок УБЫВ
26 Нуф-Нуф
 
20.05.09
12:42
ну как?
27 Нуф-Нуф
 
20.05.09
12:45
я крут?
28 Silverspam
 
20.05.09
12:56
вечером скажу ))) Но пока что попробовал под свою базу подвести оишбок навыдавало. подправлю под себя скажу как работает. Пока что уехал. Спасибо тебе земляк :)
29 sf
 
20.05.09
13:11
(25) может скорее:
КОЛИЧЕСТВО(ПродажиОбороты.ДокументПродажи) КАК КоличествоПокупок ?
30 Silverspam
 
20.05.09
20:59
Нуф-Нуф а ты можешь свою аську оставить? Или мне стукнуть...