|
подскажите. как правильно выбрать неликвидный товар в запросе. | ☑ | ||
---|---|---|---|---|
0
zladenuw
02.08.13
✎
11:20
|
ВЫБРАТЬ
ОстаткиЗЧОстатки.Товар.Код КАК Артикул, ОстаткиЗЧОстатки.Товар.Артикул КАК КодБух, ОстаткиЗЧОстатки.Товар, СУММА(ОстаткиЗЧОстатки.УчСто1Остаток) КАК ЦенаПокупки, СУММА(ОстаткиЗЧОстатки.КвоОстаток) КАК Кво, РАЗНОСТЬДАТ(ОстаткиЗЧОстатки.Партия.Дата, &ТекДата, ГОД) КАК КоличествоЛет ИЗ РегистрНакопления.ОстаткиЗЧ.Остатки( &ТекДата, Партия.Поставщик = &Поставщик И Партия.Дата <= &Дата) КАК ОстаткиЗЧОстатки СГРУППИРОВАТЬ ПО ОстаткиЗЧОстатки.Товар, РАЗНОСТЬДАТ(ОстаткиЗЧОстатки.Партия.Дата, &ТекДата, ГОД), ОстаткиЗЧОстатки.Товар.Код, ОстаткиЗЧОстатки.Товар.Артикул |
|||
1
Капитан О
02.08.13
✎
11:21
|
СГРУППИРОВАТЬ ПО РАЗНОСТЬДАТ
планируется только в версии 8.5 |
|||
2
Капитан О
02.08.13
✎
11:22
|
(1) чо-та вру я..
|
|||
3
wPa
02.08.13
✎
11:23
|
(0) ты вступил на шаткий путь. для начала надо выяснить что же такое неликвид. формул его получения чуть больше, чем докуя и везде свои
|
|||
4
zladenuw
02.08.13
✎
11:25
|
(3) пользователь задает параметр. лет неликвида.
сделал вот так ВЫБРАТЬ ОстаткиЗЧОстаткиИОбороты.Товар, ОстаткиЗЧОстаткиИОбороты.Партия, ОстаткиЗЧОстаткиИОбороты.КвоНачальныйОстаток, ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток, ОстаткиЗЧОстаткиИОбороты.КвоОборот ИЗ РегистрНакопления.ОстаткиЗЧ.ОстаткиИОбороты( , &ТекДата, , , Партия.Поставщик = &Поставщик И Партия.Дата <= &Дата) КАК ОстаткиЗЧОстаткиИОбороты ГДЕ ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток = ОстаткиЗЧОстаткиИОбороты.КвоОборот но чую где то что то не так |
|||
5
zladenuw
02.08.13
✎
11:28
|
(4) заменил на параметр условие
Партия.Поставщик = &Поставщик И РАЗНОСТЬДАТ(Партия.Дата, &ТекДата, ГОД) >= &ЛетНелеквида) КАК ОстаткиЗЧОстаткиИОбороты |
|||
6
azernot
02.08.13
✎
11:31
|
Я бы лучше в днях делал, умноженных на 365.
Потому как разность дат между 01.01.2011 и 31.12.2012 - 1 год. |
|||
7
zladenuw
02.08.13
✎
11:33
|
(6) лучше множить или делить ?
И РАЗНОСТЬДАТ(Партия.Дата, &ТекДата, День)/365 >= &ЛетНелеквида) |
|||
8
azernot
02.08.13
✎
11:41
|
(7) Ну, ты меня понял. А вообще, я конечно не знаю, что у вас за товары, но если товар лежит больше года, то уже поздно его анализировать. Его уже дешевле просто выкинуть ибо затраты на его хранение, потенциальные банковские проценты с той суммы, которую уплатили поставщику вместо того, чтобы разместить на депозите явно уже превысили тот профит, который ожидался от реализации такого товара...
|
|||
9
zladenuw
02.08.13
✎
11:46
|
(8) автомагазин и сто. некоторые товары должны быть в остатках. такие условия у поставщика авто
|
|||
10
zladenuw
02.08.13
✎
11:47
|
вот такое чудо получилось
ВЫБРАТЬ ОстаткиЗЧОстаткиИОбороты.Товар.Код КАК Артикул, ОстаткиЗЧОстаткиИОбороты.Товар.Артикул КАК КодБух, ОстаткиЗЧОстаткиИОбороты.Товар, ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток КАК Остаток, РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ГОД) КАК КоличествоЛет ИЗ РегистрНакопления.ОстаткиЗЧ.ОстаткиИОбороты( , &ТекДата, , , ВЫБОР КОГДА &Поставщик <> ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка) ТОГДА Партия.Поставщик = &Поставщик ИНАЧЕ ИСТИНА КОНЕЦ И РАЗНОСТЬДАТ(Партия.Дата, &ТекДата, ДЕНЬ) / 365 >= &ЛетНелеквида И ВЫБОР КОГДА &ФильтрТовар <> ЗНАЧЕНИЕ(Справочник.Запчасти.ПустаяСсылка) ТОГДА Товар В ИЕРАРХИИ (&ФильтрТовар) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ОстаткиЗЧОстаткиИОбороты ГДЕ ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток = ОстаткиЗЧОстаткиИОбороты.КвоОборот |
|||
11
zladenuw
02.08.13
✎
11:47
|
(10) стоит ли ставить параметр на дату начала периода ?
|
|||
12
azernot
02.08.13
✎
11:48
|
(9) Тем более нет смысла анализировать такие неликвиды. Явно нужно "очищать" данные от минимального запаса по условиям поставщиков авто.
|
|||
13
azernot
02.08.13
✎
11:49
|
(10) Скажи, для чего это условие:
ГДЕ ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток = ОстаткиЗЧОстаткиИОбороты.КвоОборот Т.е. если из 1000 штук хотя бы одну продали, всё, это не неликвид? |
|||
14
zladenuw
02.08.13
✎
11:52
|
(13) наоборот. если не было движений.
|
|||
15
azernot
02.08.13
✎
11:54
|
(14) А если было, то всё, ликвид?
|
|||
16
zladenuw
02.08.13
✎
11:57
|
(15) до этого дойдем.
пока надо вывести товар которые вообще не продавался. а по поводу если была продажа. то в процентном соотношение проверять как тут http://infostart.ru/public/16281/ только там в цикле проверка. а я ее в запросе сделаю по параметру. который укажет пользователь |
|||
17
azernot
02.08.13
✎
12:00
|
(16) А не лучше тогда и анализировать продажи товаров соединяя их с остатками? Где не было продаж - там и неликвд? А то мало ли какие движения могли быть... со склада на склад перекинули.
|
|||
18
zladenuw
02.08.13
✎
12:02
|
(17) да не могу так. нету такого регистра :(. самопал а не конфа.
|
|||
19
azernot
02.08.13
✎
12:04
|
(18) Не верю, что в этой конфе нельзя отдельно выдернуть продажи. Любая конфа торговой организации позволяет сделать это. А если нет - то в первую очередь надо делать это, а потом уже неликвиды (особенно таким образом) рассматривать. Из каких соображений товары-то заказываются/пополняются, если продаж никто не знает?
|
|||
20
zladenuw
02.08.13
✎
12:11
|
(19) продажи знают.
вот такое чудо получает НомерВалюты = 1 + ЭлементыФормы.ВыбВалюта.СписокВыбора.Индекс(ЭлементыФормы.ВыбВалюта.списокВыбора.НайтиПоЗначению(ЭлементыФормы.ВыбВалюта.Значение)); ТбЗнТипЗч.Очистить(); ТекстФильтра = " ГДЕ (ВнД = &ВидДвижЗЧ) И (Период Между &Дата1 И &Дата2) "; ТекстФильтра = ТекстФильтра + ?(ВыбЗЧ.Количество() > 0, " И (Товар "+ ?(ТипФильтраЗЧ = "Все_Кроме"," НЕ ","") + " В ИЕРАРХИИ (&ВыбЗЧ))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбСклад.Количество() > 0, " И (Склад "+ ?(ТипФильтраСклад = "Все_Кроме"," НЕ ","") + " В (&ВыбСклад))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбПокупатель.Количество() > 0, " И (Покупатель "+ ?(ТипФильтраПокупатель = "Все_Кроме"," НЕ ","") + " В ИЕРАРХИИ (&ВыбПокупатель))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбПартия.Количество() > 0, " И (Партия "+ ?(ТипФильтраПартия = "Все_Кроме"," НЕ ","") + " В (&ВыбПартия))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбПоставщик.Количество() > 0, " И (Партия.Поставщик "+ ?(ТипФильтраПоставщик = "Все_Кроме"," НЕ ","") + " В ИЕРАРХИИ (&ВыбПоставщик))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбФирма.Количество() > 0, " И (Фирма "+ ?(ТипФильтраФирма = "Все_Кроме"," НЕ ","") + " В ИЕРАРХИИ (&ВыбФирма))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбСотрудник.Количество() > 0, " И (Сотрудник "+ ?(ТипФильтраСотрудник = "Все_Кроме"," НЕ ","") + " В ИЕРАРХИИ (&ВыбСотрудник))", ""); ТекстФильтра = ТекстФильтра + ?(ВыбСтеллаж.Пустая() = 0, " И (Стеллаж = &ВыбСтеллаж) ", ""); ТекстФильтра = ТекстФильтра + ?(ВыбПроект.Пустая() = 0, " И (Партия.Проект = &ВыбПроект) ", ""); ТекстФильтра = ТекстФильтра + ?(ВыбКласс.Пустая() = 0, " И (Товар.НоменклатураКасса = &ВыбКласс) ", ""); ТекстФильтра = ТекстФильтра + ?(ВыбТипЦены.Пустая() = 0, " И (ТипЦены = &ВыбТипЦены) ", ""); ТекстФильтра = ТекстФильтра + ?(ВыбКатегория.Пустая() = 0, " И (Категория = &ВыбКатегория) ", ""); ТекстФильтра = ТекстФильтра + ?(ВыбТипЗЧ.Количество() > 0, " И (Товар.ТипЗЧ в (&ВыбТипЗЧ)) ", ""); Если (Фл_ОтделПродаж = 1) И (Фл_СТО = 0) Тогда ТекстФильтра = ТекстФильтра + " И ((Регистратор ССЫЛКА Документ.РасходнаяЗЧ ) ИЛИ (Регистратор ССЫЛКА Документ.АктНаш))"; ИначеЕсли (Фл_ОтделПродаж = 0) И (Фл_СТО = 1) Тогда ТекстФильтра = ТекстФильтра + " И (Регистратор ССЫЛКА Документ.ЗаявкаТО )"; КонецЕсли; Если (ФлТовар = 1) И (ФлУслуги = 0) Тогда ТекстФильтра = ТекстФильтра + " И (Товар.ВидЗЧ в (&ВидТовар)) "; ИначеЕсли (ФлТовар = 0) И (ФлУслуги = 1) Тогда ТекстФильтра = ТекстФильтра + " И (Товар.ВидЗЧ = &ВидУслуга ) "; КонецЕсли; ТекстФильтра = ТекстФильтра + ?(ФильтрВидОплаты.Пустая(), " " , " И (Регистратор.ВидОплаты = &ВидОплаты) "); Если флТолькоМинус = 1 Тогда ТекстФильтра = ТекстФильтра + " И (Профит" + НомерВалюты + " < 0) "; КонецЕсли; ТУп = " "; Если Фл_ПрофитВозр = 1 Тогда ТУп = " Упорядочить По Профит Возр " КонецЕсли; Если Фл_ПрофитУбыв = 1 Тогда ТУп = " Упорядочить По Профит Убыв " КонецЕсли; ТЧисло = " "; Если ЧислоСтрок > 0 Тогда ТЧисло = " Первые " + ЧислоСтрок; КонецЕсли; ГлобСуммаОтклонения = 0; Макет = ПолучитьМакет("МакетПродажаЗЧ"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ " + ТЧисло + ?(ФлПериод = 1, " Период,"," ") + " | Товар, | Товар.Код как Код, | Товар.ВидЗЧ как ВидЗЧ, | Товар.ТипЗЧ как ТипЗЧ, | Товар.НоменклатураКасса как НоменклатураКласса, | Склад, | Партия, | ТипЦены, | Стеллаж, | Регистратор как Документ, | Регистратор.Авто как Авто, | Категория, | Период, | Покупатель, | Покупатель.ТипЦены Как КатегорияКлиента, | Сотрудник, | Фирма, | Партия.ПризнакУчета как ПризнакУчета, | КонтрактПродажа, | Страна, | Партия.Поставщик как Поставщик, | Партия.Проект как Проект, | Регистратор.ВидОплаты как ВидОплаты, | Кво, | УчСто" + НомерВалюты + " как УчСто, | Оборот" + НомерВалюты + " как Оборот, | Профит" + НомерВалюты + " как Профит, | Скидка" + НомерВалюты + " как Скидка | ИЗ РегистрНакопления.ОстаткиЗЧ" + ТекстФильтра + Туп + " | ИТОГИ Сумма(Кво), Сумма(УчСто), Сумма(Оборот), Сумма(Профит), Сумма(Скидка) ПО Общие, "; ТекстГр = ""; Для Каждого стр из ТабГр Цикл ТекстГр = ТекстГр + " " + стр.Ключ + ?(Стр.Группа = Истина," ИЕРАРХИЯ,",","); КонецЦикла; ТекстГр = ЛЕВ(ТекстГр, СтрДлина(ТекстГр) - 1); Запрос.Текст = Запрос.Текст + ТекстГр + " АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ВидДвижЗЧ", Перечисления.ВидыДвижЗЧ.Продажа); Запрос.УстановитьПараметр("Дата1", НачалоДня(Дата1)); Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2)); Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад); Запрос.УстановитьПараметр("ВыбЗЧ", ВыбЗЧ); Запрос.УстановитьПараметр("ВыбПокупатель", ВыбПокупатель); Запрос.УстановитьПараметр("ВыбПартия", ВыбПартия); Запрос.УстановитьПараметр("ВыбПоставщик", ВыбПоставщик); Запрос.УстановитьПараметр("ВыбФирма", ВыбФирма); Запрос.УстановитьПараметр("ВыбСотрудник", ВыбСотрудник); Запрос.УстановитьПараметр("ВидОплаты", ФильтрВидОплаты); Запрос.УстановитьПараметр("ВыбСтеллаж", ВыбСтеллаж); Запрос.УстановитьПараметр("ВыбПроект", ВыбПроект); Запрос.УстановитьПараметр("ВыбКласс", ВыбКласс); Запрос.УстановитьПараметр("ВыбТипЦены", ВыбТипЦены); Запрос.УстановитьПараметр("ВыбКатегория", ВыбКатегория); СпЗнПарам = Новый СписокЗначений; СпЗнПарам.Добавить(Перечисления.ВидЗЧ.Запчасть); СпЗнПарам.Добавить(Перечисления.ВидЗЧ.Аксессуар); Запрос.УстановитьПараметр("ВидТовар", СпЗнПарам); Запрос.УстановитьПараметр("ВидУслуга", Перечисления.ВидЗЧ.Услуга); Запрос.УстановитьПараметр("ВыбТипЗЧ", ВыбТипЗЧ); Рез = Запрос.Выполнить(); |
|||
21
zladenuw
02.08.13
✎
12:12
|
(19) просто нет времени ломать то что работает. по немного исправляю. а сейчас горят другие задачи.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |