|   |   | 
| 
 | 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) че ты паришься, то что не использут, создадут по-новой. Делов то. Выпиливай.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |