Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Проверьте мою логику

v7: Проверьте мою логику
Я
   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)
 
 
   mikecool
 
1 - 31.10.16 - 23:43
запрос вроде верный, давно не брал я в руки шашек 1с++ ))
если в роуид есть дата и однозначно сортируется по роуид в порядке роста дат - то вполне себе работоспособно
   Fragster
 
2 - 31.10.16 - 23:47
(1) ну тут http://www.script-coding.com/v77tables.html#2.3. пишут, что rowid - порядковый номер в таблице. В скуле у колонки свойство identity = true и identity increment = 1. вроде должно быть возрастающей последовательностью...
   FN
 
3 - 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.

"Подчистка" заключается в следующем:
- обнаруженные неиспользуемые элементы переносятся в группу, указанную оператором;
- модифицируется наименование элемента путем добавления текстового "маркера" ;
- полное наименование (обычно помещаемое в печатные формы) - не изменяется;
- в комментарий записывается полный путь - место (группа со всей вышестоящей иерерхией вхождения), где элемент находился до того, как его переместили в "мусор".

Наличие всех "неиспользуемых" элементов в одной группе впоследствии дает определенные удобства при их обработке программно или с использованием других (универсальных) обработок.

Разработка - из разряда мелких полезняшек. Пригодится на этапе "наведения порядка" в залохмаченных базах.
   Fragster
 
5 - 01.11.16 - 08:43
(4) мусорная номенклатура - которая была создана ранее этого года и по которой не было движений (вообще)
   FIXXXL
 
6 - 01.11.16 - 08:52
(0) а Код справочника у тебя как формируется? мож с него порядок взять?
   1dvd
 
7 - 01.11.16 - 08:54
(5) а если она была создана ранее, но активно используется в этом году, то она тоже мусорная?
   Aleksey
 
8 - 01.11.16 - 08:57
(7) Не выполняется условие  "не было движений (вообще)"

А вот недеквид, т.е. который купили давно и лежит на складе, вполне у Fragster попадает под определение мусорная
   Aleksey
 
9 - 01.11.16 - 08:59
Т.е. он пропустил условие
- номенклатура, которая на данный момент отсутствует на остатках; 
оставив только второе условие
- и не было приходов номенклатуры за указанное количество дней;
   Fragster
 
10 - 01.11.16 - 09:03
(8) не попадает, так как если купили - то движения были. если купили и продали - также движения были.
а вот если создали ранее этого года, а движений не было - мусор. например при бездумной загрузке прайсов или после свертки базы
 
 Рекламное место пустует
   Aleksey
 
11 - 01.11.16 - 09:14
(10) Это называется не мусор, а неиспользуемые элементы. Это немного другое
   Aleksey
 
12 - 01.11.16 - 09:16
А мы говорим о позициях которые вышли из продаж (производитель больше не производит, мы больше не закупаем и т.п.)
Т.е. к примеру год назад мы продавали карандаши, потом отказались от этого направления, решили вернуться к продажам мебели. С точки зрения пользователя карандаши в подборе - это мусор, так как снабженцы все равно не будут возить их
   Aleksey
 
13 - 01.11.16 - 09:20
Так же "мусор" это и сезонные товара, ибо никто не будет летом заказывать незамерзающую жидкость
   Fragster
 
14 - 01.11.16 - 09:42
(12) я как-бы хз, о чем там ВЫ говорите, а я говорю о конкретных вещах.
   Fragster
 
15 - 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
тем более, что дату создания ты только в лучшем случае, определишь по ЖР и то, если её программно создавали, то записей не будет там.
   Fragster
 
22 - 01.11.16 - 10:53
(17) номенклатуры, которой не было в движениях, и которая создана в прошлом году
   Fragster
 
23 - 01.11.16 - 10:54
(20) вот такая задача. производственный цикл длинный, оно в прайсах уже появляется, а движений - нет
   Ёпрст
 
24 - 01.11.16 - 11:00
(23) дату создания номенклатуры ты никак не определишь. Только из ЖР или, спецом писать куда-либо.
   Ёпрст
 
25 - 01.11.16 - 11:00
так что, (19) в силе.
   Fragster
 
26 - 01.11.16 - 11:08
(24) rowid возрастающий и автогенерящийся?
   Ёпрст
 
27 - 01.11.16 - 11:12
(26) в дбф его вообще нет :)
   Ёпрст
 
28 - 01.11.16 - 11:13
а так да, обычный инкремент.. тупо номер записи.
   Fragster
 
29 - 01.11.16 - 11:19
(28) тогда если мы на складе не работаем задним числом, то та номенклатура, которая была впервые двинута по складу до 01.01.2016 была создана до 01.01.2016?

если мы берем максимальный rowid у такой номенклатуры - то мы максимально приближаемся к rowid номенклатуры, последней созданной до 01.01.2016?
   Aleksey
 
30 - 01.11.16 - 11:42
(29) см (5)

Ты сам себе противоречишь, то небыло движений ввобще, то были, но более года назад, но при этом ты не учитываешь остатки
   Aleksey
 
31 - 01.11.16 - 11:44
или ты тупо ищешь максимальный rowid за тот период?
   Ёпрст
 
32 - 01.11.16 - 11:47
Че ты привязался к этому rowid ? он тебе не гарантирует ничегооо.
Если уж так чешется, то возьми класс.поставщикДанныхЖурналРегистрации и ищи там дату создания твоей номенклатуры. Тоже быстро найдёт. Тем более, для разовой операции
   Злопчинский
 
33 - 01.11.16 - 12:32
эээ! вот нет в клюшках менеджера справочника... был бы - при создании - хреняк в служебное поле дату создания и все...
на скуле оно понятно - такое на всяких триггерах впилить можно...
 
 
   Fragster
 
34 - 01.11.16 - 12:39
(32) там куча номенклатуры программно создано
   Fragster
 
35 - 01.11.16 - 12:39
(30) это ты плохо читаешь. движения для того, чтобы косвенно определить дату создания.
   Злопчинский
 
36 - 01.11.16 - 12:49
(35) не, это плохая задумка.
   Fragster
 
37 - 01.11.16 - 12:50
(36) ну а как тогда?
   Ёпрст
 
38 - 01.11.16 - 12:51
(35) че ты паришься, то что не использут, создадут по-новой. Делов то. Выпиливай.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует