|
v7: Проверьте мою логику | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
31.10.16
✎
23:35
|
Необходимо получить "мусорную" номенклатуру
решил действовать так: получить максимальный rowid из всего, что имело движения до 01.01.2016, получить всю номенклатуру, которая не имела товародвижений и rowid меньше, чем этот rowid. правильная ли логика? правильный ли запрос для 1с++ по этой логике (какую-то номенклатуру выдает)? Select -- top 100 * FROM $Справочник.Номенклатура AS Спр WHERE Спр.IsFolder = 2 and Спр.IsMark = 0 and NOT EXISTS ( Select 1 From $Регистр.ОстаткиТМЦ AS Ост WHERE $Ост.Номенклатура = Спр.id) AND Спр.Row_Id < (select Max(Спр.Row_Id) From ( Select $Ост.Номенклатура as Номенклатура, Min(_1sJourn.Date_Time_IdDoc) as Date_Time_IdDoc From $Регистр.ОстаткиТМЦ AS Ост Inner join _1sJourn on Ост.IdDoc = _1sJourn.IdDoc Group By $Ост.Номенклатура having Min(_1sJourn.Date_Time_IdDoc) < '20160101') as SubQuery inner join $Справочник.Номенклатура as Спр On SubQuery.Номенклатура = Спр.Id) |
|||
1
mikecool
31.10.16
✎
23:43
|
запрос вроде верный, давно не брал я в руки шашек 1с++ ))
если в роуид есть дата и однозначно сортируется по роуид в порядке роста дат - то вполне себе работоспособно |
|||
2
Fragster
гуру
31.10.16
✎
23:47
|
(1) ну тут http://www.script-coding.com/v77tables.html#2.3. пишут, что rowid - порядковый номер в таблице. В скуле у колонки свойство identity = true и identity increment = 1. вроде должно быть возрастающей последовательностью...
|
|||
3
FN
01.11.16
✎
01:48
|
1с не апдейтит таблицы, а только делете / инсерт.
Соответственно ровайди никак не связан с моментом создания элемента. |
|||
4
Злопчинский
01.11.16
✎
01:57
|
нифига не понял логики, ибо явно не обозначено что такое "мусорная" номенклатура.
У меня логика на мусорную номенклатуру простая: http://catalog.mista.ru/public/20766/ 1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Обработка предназначена для автоматической "подчистки" базы типовой ТиС от "неиспользуемых" элементов номенклатуры. Неиспользуемыми элементами считаются те номенклатурные позиции, которые удовлетворяют 2-ум условиям: - номенклатура, которая на данный момент отсутствует на остатках; - и не было приходов номенклатуры за указанное количество дней; Например, при указанной настройке = 90 дней и текущей дате = 29.06.2009, в "мусор" будут перемещены те позиции, последний приход которых был до 31.03.09. "Подчистка" заключается в следующем: - обнаруженные неиспользуемые элементы переносятся в группу, указанную оператором; - модифицируется наименование элемента путем добавления текстового "маркера" ; - полное наименование (обычно помещаемое в печатные формы) - не изменяется; - в комментарий записывается полный путь - место (группа со всей вышестоящей иерерхией вхождения), где элемент находился до того, как его переместили в "мусор". Наличие всех "неиспользуемых" элементов в одной группе впоследствии дает определенные удобства при их обработке программно или с использованием других (универсальных) обработок. Разработка - из разряда мелких полезняшек. Пригодится на этапе "наведения порядка" в залохмаченных базах. |
|||
5
Fragster
гуру
01.11.16
✎
08:43
|
(4) мусорная номенклатура - которая была создана ранее этого года и по которой не было движений (вообще)
|
|||
6
FIXXXL
01.11.16
✎
08:52
|
(0) а Код справочника у тебя как формируется? мож с него порядок взять?
|
|||
7
1dvd
01.11.16
✎
08:54
|
(5) а если она была создана ранее, но активно используется в этом году, то она тоже мусорная?
|
|||
8
Aleksey
01.11.16
✎
08:57
|
(7) Не выполняется условие "не было движений (вообще)"
А вот недеквид, т.е. который купили давно и лежит на складе, вполне у Fragster попадает под определение мусорная |
|||
9
Aleksey
01.11.16
✎
08:59
|
Т.е. он пропустил условие
- номенклатура, которая на данный момент отсутствует на остатках; оставив только второе условие - и не было приходов номенклатуры за указанное количество дней; |
|||
10
Fragster
гуру
01.11.16
✎
09:03
|
(8) не попадает, так как если купили - то движения были. если купили и продали - также движения были.
а вот если создали ранее этого года, а движений не было - мусор. например при бездумной загрузке прайсов или после свертки базы |
|||
11
Aleksey
01.11.16
✎
09:14
|
(10) Это называется не мусор, а неиспользуемые элементы. Это немного другое
|
|||
12
Aleksey
01.11.16
✎
09:16
|
А мы говорим о позициях которые вышли из продаж (производитель больше не производит, мы больше не закупаем и т.п.)
Т.е. к примеру год назад мы продавали карандаши, потом отказались от этого направления, решили вернуться к продажам мебели. С точки зрения пользователя карандаши в подборе - это мусор, так как снабженцы все равно не будут возить их |
|||
13
Aleksey
01.11.16
✎
09:20
|
Так же "мусор" это и сезонные товара, ибо никто не будет летом заказывать незамерзающую жидкость
|
|||
14
Fragster
гуру
01.11.16
✎
09:42
|
(12) я как-бы хз, о чем там ВЫ говорите, а я говорю о конкретных вещах.
|
|||
15
Fragster
гуру
01.11.16
✎
09:48
|
см. (5)
|
|||
16
Ёпрст
01.11.16
✎
09:49
|
(0) и нафига знать rowid ? Шр за бред (не Пит)
|
|||
17
Ёпрст
01.11.16
✎
09:52
|
Если нужно выяснить, какой номенклатуры небыло в движениях, то накой там rowid вообще впёрся ?
Там сплошной примитив на табличку ra и привет |
|||
18
пипец
01.11.16
✎
09:53
|
ровайди ваще к 1С отношения не имеет - это скулевое поле - чисто счетчик
|
|||
19
Ёпрст
01.11.16
✎
09:55
|
всего то надо
select id [Номенклатура $Справочник.Номенклатура] from $Справочник.Номенклатура where id not in (select $Рег.Номенклатура from $Регистр.ОстаткиТМЦ Рег) |
|||
20
Ёпрст
01.11.16
✎
09:55
|
и пофик, когда она там была создана, нет движений - в мусор.
|
|||
21
Ёпрст
01.11.16
✎
09:56
|
тем более, что дату создания ты только в лучшем случае, определишь по ЖР и то, если её программно создавали, то записей не будет там.
|
|||
22
Fragster
гуру
01.11.16
✎
10:53
|
(17) номенклатуры, которой не было в движениях, и которая создана в прошлом году
|
|||
23
Fragster
гуру
01.11.16
✎
10:54
|
(20) вот такая задача. производственный цикл длинный, оно в прайсах уже появляется, а движений - нет
|
|||
24
Ёпрст
01.11.16
✎
11:00
|
(23) дату создания номенклатуры ты никак не определишь. Только из ЖР или, спецом писать куда-либо.
|
|||
25
Ёпрст
01.11.16
✎
11:00
|
так что, (19) в силе.
|
|||
26
Fragster
гуру
01.11.16
✎
11:08
|
(24) rowid возрастающий и автогенерящийся?
|
|||
27
Ёпрст
01.11.16
✎
11:12
|
(26) в дбф его вообще нет :)
|
|||
28
Ёпрст
01.11.16
✎
11:13
|
а так да, обычный инкремент.. тупо номер записи.
|
|||
29
Fragster
гуру
01.11.16
✎
11:19
|
(28) тогда если мы на складе не работаем задним числом, то та номенклатура, которая была впервые двинута по складу до 01.01.2016 была создана до 01.01.2016?
если мы берем максимальный rowid у такой номенклатуры - то мы максимально приближаемся к rowid номенклатуры, последней созданной до 01.01.2016? |
|||
30
Aleksey
01.11.16
✎
11:42
|
(29) см (5)
Ты сам себе противоречишь, то небыло движений ввобще, то были, но более года назад, но при этом ты не учитываешь остатки |
|||
31
Aleksey
01.11.16
✎
11:44
|
или ты тупо ищешь максимальный rowid за тот период?
|
|||
32
Ёпрст
01.11.16
✎
11:47
|
Че ты привязался к этому rowid ? он тебе не гарантирует ничегооо.
Если уж так чешется, то возьми класс.поставщикДанныхЖурналРегистрации и ищи там дату создания твоей номенклатуры. Тоже быстро найдёт. Тем более, для разовой операции |
|||
33
Злопчинский
01.11.16
✎
12:32
|
эээ! вот нет в клюшках менеджера справочника... был бы - при создании - хреняк в служебное поле дату создания и все...
на скуле оно понятно - такое на всяких триггерах впилить можно... |
|||
34
Fragster
гуру
01.11.16
✎
12:39
|
(32) там куча номенклатуры программно создано
|
|||
35
Fragster
гуру
01.11.16
✎
12:39
|
(30) это ты плохо читаешь. движения для того, чтобы косвенно определить дату создания.
|
|||
36
Злопчинский
01.11.16
✎
12:49
|
(35) не, это плохая задумка.
|
|||
37
Fragster
гуру
01.11.16
✎
12:50
|
(36) ну а как тогда?
|
|||
38
Ёпрст
01.11.16
✎
12:51
|
(35) че ты паришься, то что не использут, создадут по-новой. Делов то. Выпиливай.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |