[ОТВЕТИТЬ]
16.10.2008 05:11
Vovantus
 
Определяю тему. В течении определённого интервала времени, по некоторым артикулам, нет товародвижения. На остатках по всем МХ - 0. Полагаю, нужно как-то блокировать такие карточки, т.к. они участвуют в выгрузках и рассчётах. Вопрос, как?
У нас версия СМ 1.0.24.3.8. Штатными средствами можно отобрать нулевые остатки. Также, вроде как, можно посмотреть за нужный период времени отсутствие товародвижения и зделать выборку в разрезе этих условий. Далее, через обработку карточек, можно поменять статус карточки. Но фишка в том, что нельзя этого зделать для всех МХ! Этот факт сводит на нет решение вопроса штатными средствами. Возможно, в новых версиях нужный функционал присутствует?
Либо писать запрос. Может уже есть готовое решение у кого-нить?
16.10.2008 08:19
Dim
 
не понятно почему нельзя исключить карточки для всех МХ... исключаешь карточки через обработку, почтовик их подхватывает и рассылает по всем базам.
16.10.2008 08:31
akonev
 
я так понимаю, что "нельзя" относится к выбору нулевых остатков по всем МХ враз.

что-то мне подсказывает, что надо выбирать запросом активные карточки, для которых остатки по всем МХ нулевые.
потом для каждого артикула из этой выборки проверять, попадалась ли она в спецификациях документов товародвижения за последние N месяцев. если нет - исключать.
работать буит медленно, но и надо оно раз в месяц, не чаще.

вот что-то подобное уже кто-то делал или будем тут вместе сочинять?
16.10.2008 08:37
Vovantus
 
Цитата:
Dim не понятно почему нельзя исключить карточки для всех МХ... исключаешь карточки через обработку, почтовик их подхватывает и рассылает по всем базам.
Фишка в том, что фильтр отбирает карточки для каждого МХ отдельно. Нет там в списке пункта "ВСЕ". Т.е. отбираем, условно, для первого МХ карточки с нулевым остатком и без движения за какой-то период. Меняем статус. А если на втором МХ есть на остатках товар по этим артикулам? После полной прогрузки касс, его просто не продадут
З.Ы. Забыл сказать, у нас нет ЦО.
16.10.2008 08:44
akonev
 
Цитата:
Vovantus З.Ы. Забыл сказать, у нас нет ЦО.
на самом деле, ты забыл сказать, что у тебя одна база, в ней все МХ и работают с ней по терминалке.
но для данной задачи это непринципиально абсолютно
16.10.2008 08:59
bob
 
Можно и штатными средствами поиграть. Отбираешь нужные карточки по одному месту хранения. Закидываешь их в ассортимент. Далее, уже по ассортименту анализируешь остатки по другому месту хранения. И так далее по всем местам хранения.
16.10.2008 09:17
Vovantus
 
Цитата:
bob Можно и штатными средствами поиграть. Отбираешь нужные карточки по одному месту хранения. Закидываешь их в ассортимент. Далее, уже по ассортименту анализируешь остатки по другому месту хранения. И так далее по всем местам хранения.
Что-то я не въехал нифига в эту мысль Ну отбирём мы для каждого МХ артикулы с нулевым количеством, ну запихаем их в ассортимент. А дальше-то что? Из получившегося ассортимента как выбрать только те карточки, у которых на остатках 0? Или я саму мысль не понял?
16.10.2008 09:28
akonev
 
накладываешь свой фильтр по одному МХ.
Цитата:
...для первого МХ карточки с нулевым остатком и без движения за какой-то период...
пихаешь все в ассортимент.
накладываешь на ассортимент тот же самый фильтр, но уже по второму МХ... выборка подрезается...
и так по всем МХ
16.10.2008 09:53
Vovantus
 
Похоже, я столкнулся с ещё одной логикой СМ, которая мне не понятна Выбираю верхний узел классификатора товаров "Все". Кликаю "Задать фильтр". Выбираю вкладку "Склад". Далее, выбираю "Центральный склад". В полях "от" и "до" 0 запихать не получается, видимо по умолчания 0 стоит. Ставлю крыжик "меньше или равны минимуму", клацаю "применить". Получаю ~300 артикулов всего. Филня какая-то! У меня на ЦС вообще нет ни чего, товар только при оприходывании туда попадает, потом его сразу на другие МХ отписывают. Следовательно должны отобраться вообще все артикулы, но их почему-то нет, почему?
16.10.2008 10:23
akonev
 
я так подозреваю, что у тебя просто минимумы не заполнены :)
поставь 0.001 вместо 0 в "до"
16.10.2008 11:27
Mihon
 
У нас в этом случае сначала по карточке запрещаем прием, потом дается задание по всем магазинам ликвидировать остаток по товару, а уж затем устанавливаем статус "исключена".
17.10.2008 07:35
Vovantus
 
Цитата:
Andrew_Konev накладываешь свой фильтр по одному МХ.
пихаешь все в ассортимент.
накладываешь на ассортимент тот же самый фильтр, но уже по второму МХ... выборка подрезается...
и так по всем МХ
Нифига не понял Отбираю нулевые остатки по первому МХ. Запихиваю карточки в ассортимент. Далее, выбираю ассортимент, и по нему применяю тот же фильтр, но для следующего МХ. Ассортимент урезается ещё. Теперь то что получилось снова запихиваем в ассортимент, но уже в другой? Честно посидел потупил, но не въехал в эту схему
17.10.2008 07:58
twix
 
да, именно так.
в итоге, в ассортименте останутся только те карточки, на которых нет остатков ни по одному месту хранения.
17.10.2008 08:04
Vovantus
 
Цитата:
twix да, именно так.
в итоге, в ассортименте останутся только те карточки, на которых нет остатков ни по одному месту хранения.
.. а вот и не правда! Если, условно, для первого МХ всего 100 позиций с нулевыми остатками, а для второго их 200, то после того как мы по первому МХ зделаем выборку, запихаем карточки в ассортимент и применим по нему фильтр для второго МХ, то фиг мы получим 300 позиций, их будет 200.
З.Ы. Или так и должно быть? Что-то я запутался совсем
17.10.2008 08:32
twix
 
ну... тебе же надо отобрать карточки, на которых нет остатков НИ ПО ОДНОМУ МХ. т.е. если у тебя по второму МХ 200 карточек с нулевым остатком, а по первому - всего 100, значит часть из двух сотен тебе не нужна. потому что отстаки там все-таки имеются

а 300 карточек ты и не получишь, потому что из них минимум в двух сотнях будут остатки по какому-нибудь МХ
17.10.2008 08:34
Dim
 
отбираешь карточки по МХ1 и запихиваешь их в ассортимент. Переключаешься в созданный ассортимент, применяешь по нему фильтр по НЕнулевым остаткам по МХ2, исключаешь отобранные карточки из ассортимента. применяешь фильтр по НЕнулевым остаткам по МХ3, исключаешь и т.д. В результате в ассортименте останутся карточки, по которым нет остатков по всем МХ.
17.10.2008 09:30
Vovantus
 
Цитата:
Dim отбираешь карточки по МХ1 и запихиваешь их в ассортимент. Переключаешься в созданный ассортимент, применяешь по нему фильтр по НЕнулевым остаткам по МХ2, исключаешь отобранные карточки из ассортимента. применяешь фильтр по НЕнулевым остаткам по МХ3, исключаешь и т.д. В результате в ассортименте останутся карточки, по которым нет остатков по всем МХ.
Мысль ясна, спасибо. Буду пробовать.
17.10.2008 10:47
Vovantus
 
Итак, вот что у меня получилось. Из ~22 000 активных артикулов, с нулевыми остатками и без движения за текущий год оказалось ~15 000 карточек. Это почти 70 % от общего количества! *139 Блокировать их пока не буду, т.к. есть ещё несколько вопросов.
Для потомков подробно распишу схему, по которой происходит выборка.
Сразу оговорюсь, пишу в разрезе версии СМ 1.0.24.3.8, для схемы с одной базой, для первого МХ и для товара с единицей измерения "Штука": (На рабочей базе сам, пока, не испытывал)

Открываем "карточки"
Выбираем верхний узел клиссификатора товаров "Все"
Жмём "Задать фильтр"
На вкладке "общие", в поле "Статус", ставим крыжик "Активная"
Жмём "Применить"
Далее, клацаем "Обработать"
Напротив надписи "Карточки" выбираем "все отобранные"
Жамкаем "В ассортимент" (само собой, он должен присутствовать)
"Добавить"
Далее, выбираем узел ассортимента
"Задать фильтр" (не забываем очистить предыдущий)
Вкладка "Склад"
Выбираем первое МХ
В поле "от" ставим 0,100 и жмём применить
Выделяем то, что отобралось
"Обработать" - "Все выделенные (хххххххххх)" -"Из ассортимента" - "Изъять"
Повторяем эту процедуру для всех МХ.

Таким образом, мы исключили из выборки все артикулы, у которых на остатках что-то есть. Но не забываем, что бывают и пересорты, поэтому нужно убрать из выборки все артикулы, у которых на остатках меньше 0:

"Задать фильтр" (не забываем очистить предыдущий)
Вкладка "Склад"
Выбираем первое МХ
В поле "до" ставим -0,100 и жмём применить
Выделяем то, что отобралось
"Обработать" - "Все выделенные (хххххххххх)" -"Из ассортимента" - "Изъять"
Повторяем эту процедуру для всех МХ.

Всё, теперь наша выбока содержит только нулевые артикулы по всем МХ. Приступаем к анализу товародвижения:

"Задать фильтр" (не забываем очистить предыдущий)
Выбираем вкладку "Аналитика"
Устанавливаем нужный интервал времени, например, за последний год
"В количестве от" ставим 1 - "Применить"
Выделяем то, что отобралось
"Обработать" - "Все выделенные (хххххххххх)" -"Из ассортимента" - "Изъять"

Всё! Теперь у нас есть нужная выборка артикулов, у которых на остатках 0 и которые не участвовали в товародвижении за определённый интервал времени. Можно блокировать карточки:

Выбираем значительно поредевший ассортимент
"Обработать" - "Все отобранные" - "изменение карточки"
Ставим крыжик "Статус" - выбираем из списка "исключена" - жмём "Изменить".

Вроде всё. Единственное, не уверен, что выборка товародвижения включает в себя и накладные на перемещение, хотя по логике - должна учитывать.
Пишите, что можно добавить или что нужно исправить.
17.10.2008 11:26
twix
 
стоп!
неправильно используешь фильтр по остаткам

при выборе карточек надо выбирать"до" -0,01, иначе отберутся карточки и с нулевым остатком.
(можно, конечно, просто поставить галочку "не равны нулю")

и исключаются карточки не через фильтр, а через "обработать"
17.10.2008 11:35
Vovantus
 
Цитата:
twix стоп!
неправильно используешь фильтр по остаткам
при выборе карточек надо выбирать"до" -0,01, иначе отберутся карточки и с нулевым остатком.
(можно, конечно, просто поставить галочку "не равны нулю")
Так точно, забыл поставить -0,1 в поле "до", спасибо, исправил Кстати, в нашей версии нет такого "не равны нулю"
Цитата:
twix и исключаются карточки не через фильтр, а через "обработать"
А я как написал?
17.10.2008 11:38
Dim
 
Цитата:
Vovantus Так точно, забыл поставить -0,1 в поле "до", спасибо, исправил Кстати, в нашей версии нет такого "не равны нулю"

А я как написал?
Цитата:
"Задать фильтр" (не забываем очистить предыдущий)
На вкладке "общие", в поле "Статус", ставим крыжик "Исключена" - "Применить".
Вот так....
17.10.2008 11:47
Vovantus
 
Цитата:
Dim Вот так....
Упс, простите, сейчас исправлю. Я просто сначало всё проделал, а уже потом начал писать как именно..
17.10.2008 13:47
deucel
 
Код:
SELECT c.article || ' ' || 0
  FROM smcard c
 WHERE c.article NOT IN (
          SELECT DISTINCT g.article
                     FROM smgoods g
                    WHERE g.quantity != 0
          UNION ALL
          SELECT DISTINCT s.article
                     FROM smspec s
                    WHERE (s.doctype, s.docid) IN (SELECT d.doctype, d.ID
                                                     FROM smdocuments d
                                                    WHERE d.doctype IN ('CS', 'CR', 'WI', 'WO', 'IW') AND d.createdat BETWEEN TRUNC (SYSDATE - 90, 'MON') AND SYSDATE)
                      AND s.article IN (SELECT DISTINCT g.article
                                                   FROM smgoods g
                                                  WHERE g.quantity = 0));

В архиве скрипт для создания файла terminal.dat.
Его нужно скопировать в папку СМ .\Data,
потом можно отобрать все артикулы в карточках через файл терминала.
Вложения
Тип файла: zip terminal.zip (804 байт, 92 просмотров)
17.10.2008 14:01
akonev
 
только еще надо бы статус документов учесть в запросе.
18.10.2008 04:50
Vovantus
 
Продолжаем тему. Потанцевали мы с бубном, так или иначе зделали выборку по артикулам и блокировали соответствующие карточки. Что мы в итоге поимели приятного? На примитивном уровне, вижу только одну пользу - полные выгрузки на кассы будут меньше весить. Собственно, таблички на кассе тоже будут меньше и работать касса должна шустрее, теоритически. Ещё такой вопрос. Если карточка блокирована, но стоит крыжик "грузить в кассу", она попадёт на кассу в процессе полной выгрузки вместе с привязанными к ней ШК?
И какие ещё есть плюсы от процедуры блокирования неактивных карточек?
18.10.2008 05:39
Vovantus
 
Цитата:
Полезная штуковина, с её помощью сильно упрощается отбор и блокировака артикулов с нулевыми остатками и без движения. Спасибо
Но тем не менее, я зделал выборку карточек стандартными средствами и сравнил с тем, что выдала программа товарища baggio. Оказалось, что через стандартную выборку не анализируются продажи, что в принципе логично, ведь нет в фильтре условия на расход. Что лучше, каждый выбирает, конечно, сам. Но на мой взгляд, продажи в фильтр отбора добавлять не нужно. Ведь если на всех МХ на остатках 0, если приходов за последний год небыло, то карточки блокировать нужно обязательно. Иначе, по разным причинам могут начать продавать в минуса, что не есть хорошо.
18.10.2008 10:07
baggio
 
есть много внутренних\своеобразных артикулов ...
аля сотовая связь... которую забыли завести как услугу... поэтому чтобы подстраховаться.... кроме того есть уценочные артикулы... кроме того есть наборы... а также товары которые привезли вчера вынесли в зал начали торговать а оприходывали в понедельник... нюансов много... поэтому решил что продажа является товародвижением
19.10.2008 06:12
Vovantus
 
Так какие есть полезности от перевода неактивных карточек в исключённый статус, кроме уменьшения объёма поной выгрузки?
19.10.2008 15:53
baggio
 
Можно запреть их редактирование... тем кому не надо...


Опции темы


Часовой пояс GMT +3, время: 21:54.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.