Имя: Пароль:
1C
 
УПП как грамотно почистить (переместить) неиспользуемые элементы справочника?
0 Shur1cIT
 
05.02.15
17:10
Пошел в лоб , запрос к регистру партии товаров на складах бух упр. за 3 года  да бы узнать живые позиции в номенклатуре
в результате запрос почти повесил базу, rphost уже на 13 гигов раздулся. вопрос как наиболее быстро и безболезненно переместить не используемые позиции справочника в другую папку?
1 John83
 
05.02.15
17:19
запросом "похвастаешься"?
2 ДенисЧ
 
05.02.15
17:31
ПереместитьЭлементы(Откуда, Куда, Перечисления.МетодПеремещения.Быстро, Перечисления.СтепеньБОлезненности.Нулевая)
3 Shur1cIT
 
05.02.15
17:33
"ВЫБРАТЬ
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход
                  |ПОМЕСТИТЬ ТабНоменклатура
                  |ИЗ
                  |    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачПериод, &КонПериод, , , ) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
                  |ИЗ
                  |    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериод, &КонПериод, , , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    НоменклатураСправочника.Ссылка
                  |ИЗ
                  |    Справочник.Номенклатура КАК НоменклатураСправочника
                  |        ПОЛНОЕ СОЕДИНЕНИЕ ТабНоменклатура КАК ТабНоменклатура
                  |        ПО (НоменклатураСправочника.ЭтоГруппа = ЛОЖЬ)
                  |            И (НоменклатураСправочника.Ссылка В
                  |                (ВЫБРАТЬ
                  |                    ТабНоменклатура.Номенклатура
                  |                ИЗ
                  |                    ТабНоменклатура КАК ТабНоменклатура))";
4 Shur1cIT
 
05.02.15
17:37
не суть важно не больная поправка связанная с "НЕ"


"ВЫБРАТЬ
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
                  |    ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход
                  |ПОМЕСТИТЬ ТабНоменклатура
                  |ИЗ
                  |    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачПериод, &КонПериод, День, , ) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты
                  |
                  |ОБЪЕДИНИТЬ ВСЕ
                  |
                  |ВЫБРАТЬ
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
                  |    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
                  |ИЗ
                  |    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериод, &КонПериод, День, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    НоменклатураСправочника.Ссылка
                  |ИЗ
                  |    Справочник.Номенклатура КАК НоменклатураСправочника
                  |        ПОЛНОЕ СОЕДИНЕНИЕ ТабНоменклатура КАК ТабНоменклатура
                  |        ПО (НоменклатураСправочника.ЭтоГруппа = ЛОЖЬ)
                  |            И (НЕ НоменклатураСправочника.Ссылка В
                  |                    (ВЫБРАТЬ
                  |                        ТабНоменклатура.Номенклатура
                  |                    ИЗ
                  |                        ТабНоменклатура КАК ТабНоменклатура))";
5 Shur1cIT
 
05.02.15
17:42
какие варианты оптимизации возможны?
6 Lama12
 
05.02.15
17:43
(0) Я б пошел другим путем.
Когда никого в базе нет.

Помечаем весь справочник на удаление.
Ищем ссылки на помеченные элементы.
Делаем удаление средствами платформы.
Снимаем пометки с оставшихся элементов.

Все тоже самое можно запрограммировать и без пометки на удаление. Поиск ссылок, есть стандартная команда.
7 Shur1cIT
 
05.02.15
17:45
(6) Удалять не надо, надо перемещать в другую группу например "Не используемые" если данная номенклатура не использовалась последние 3 года
8 Lama12
 
05.02.15
17:46
(7) Сорри, не вчитался.
9 John83
 
05.02.15
17:47
(4) кабздец..
как тебе только базу доверили?..
нафига соединение? нафига остаткиИОбороты читаешь? нафига периодичность поставил?
нет желания различные выбрать?
10 John83
 
05.02.15
17:48
PS видать база зависла от того, что жить ей пока хочется - вот и решила схорониться
11 Shur1cIT
 
05.02.15
17:50
(9) вариант остаток тащиться уже 3 года и по нему не было не каких движений? периодичность потом установил.
12 John83
 
05.02.15
17:52
(11) еще есть такая ВТ, как обороты
и нафига тебе в запросе данные по количеству?
13 Lama12
 
05.02.15
17:52
Не претендую на оптимальность, но в лоб, я бы сделал так.


ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.Ссылка В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ПартииТоваровНаСкладах.Номенклатура
                ИЗ
                    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
                ГДЕ
                    ПартииТоваровНаСкладах.Период МЕЖДУ &Период1 И &Период2)
    И НЕ Номенклатура.ЭтоГруппа
14 mehfk
 
05.02.15
17:53
ВЫБРАТЬ
    ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.Номенклатура, ПартииТоваровНаСкладахОстатки.Номенклатура) КАК Номенклатура
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&НачДата, &КонДата, , ) КАК ПартииТоваровНаСкладахОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&КонДата, ) КАК ПартииТоваровНаСкладахОстатки
        ПО (ПартииТоваровНаСкладахОстатки.Номенклатура = ПартииТоваровНаСкладахОбороты.Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СпрН.Ссылка
ИЗ
    Справочник.Номенклатура КАК СпрН
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Номенклатура КАК ВТ_Номенклатура
        ПО СпрН.Ссылка = ВТ_Номенклатура.Номенклатура
ГДЕ
    НЕ СпрН.ЭтоГруппа
    И ВТ_Номенклатура.Номенклатура ЕСТЬ NULL
15 Shur1cIT
 
05.02.15
17:53
(13) ПартииТоваровНаСкладах только движения, а если там остаток 5 летний тащиться который не двигался последние 3 года?
16 John83
 
05.02.15
17:55
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВЗ.Номенклатура
ПОМЕСТИТЬ ТабНоменклатура
ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Номенклатура КАК Номенклатура
    ИЗ
        РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Обороты(&НачПериод, &КонПериод, , ) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        ПартииТоваровНаСкладахОбороты.Номенклатура
    ИЗ
        РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&НачПериод, &КонПериод, , ) КАК ПартииТоваровНаСкладахОбороты) КАК ВЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НоменклатураСправочника.Ссылка
ИЗ
    Справочник.Номенклатура КАК НоменклатураСправочника
ГДЕ
    НЕ НоменклатураСправочника.Ссылка В
                (ВЫБРАТЬ
                    Т.Номенклатура
                ИЗ
                    ТабНоменклатура КАК Т)
17 John83
 
05.02.15
17:55
(15) ну так возьми с самого начала периода - от этого база точно не загнется, как от твоего первоначального запроса
18 Господин ПЖ
 
05.02.15
18:00
(0) писец... я бы тоже умер
19 Shur1cIT
 
05.02.15
18:00
ок спасибо изучаю
20 Shur1cIT
 
05.02.15
18:04
Запрос почти моментом отработал, вопрос
почему мой вариант так долго?
21 Гёдза
 
05.02.15
18:08
выбрать из номенклатра где ссылка не в (номенклатура из регистра за период который ты считаешь актуальным)
22 Shur1cIT
 
05.02.15
18:10
неужели ОстаткиИОбороты настолько тормозят???
23 Господин ПЖ
 
05.02.15
18:11
(20) у тебя декартово произведение
24 ShoGUN
 
05.02.15
18:12
Откуда у людей такая необъяснимая тяга к полным соединениям без понимания их сути?
25 Maniac
 
05.02.15
18:15
в скайп стукнись. Бесплатно передам.

Марафет номенклатуры - групповое исправление номенклатуры УТ10/УТ11

Обработка переноса неиспользуемой номенклатуры

Часто стоит задача:
Длинная база, в справочнике много позиций. Многие позиции давно исчезли из товарооборота, больше не продаются и нет на остатках.
Данная номенклатура мешает пользователям работать во многих случаях - например подбор номенклатуры, какие то отчеты и тому подобное.
Стоит задача, что-то сделать с этой номенклатурой. Главное ее еще надо правильно определить. Ведь например среди этих позиций могут быть новые, которые только только завели или загрузили из прайса.

Решение:
Нами была специально разработана обработка, которая по разным условиям определяет номенклатуру, которая не используется и эту номенклатуру можно перенести в Специальную папку.

Используется три критерия получения номенклатуры

1) За указанный период не было продаж
2) По товару нет текущих остатков
3) Проверка регистрации цен контрагентов - дата последней регистрации меньше чем начало указанного периода. Например если вы загрузили недавно прайс, мог появится новый товар, с которым будет идти работа.

Почему именно папку. Так как по номенклатуре были документы и она участвовала в товарообороте удалить ее не получится. Она есть исторически в данных.
Это только при свертке базы возможно.
Второе. Помечать на удаление тоже не советую, мало что даст, но когда вы будете удалять реально какие то объекты без ссылок, эта номенклатура будет тормозить обработку удаления помеченных объектов.
http://subsystems.ru/catalog/program=586/
26 Shur1cIT
 
05.02.15
18:18
(23) (24) проблема с полным соединением? все элементы принадлежат множеству? но почему? (25) спасибо у меня упп задачу уже выполнил на 99%
27 Господин ПЖ
 
05.02.15
18:20
>проблема с полным соединением?

а почему нет?

10 000(копейки)*10 000(копейки)= 100 000 000 строк
28 Maniac
 
05.02.15
18:21
Никаких проблем с сосединениями в 1С нет.
Не несите бред.
29 Господин ПЖ
 
05.02.15
18:21
и все это в едином порыве волокется на клиент...
30 Shur1cIT
 
05.02.15
18:21
(27) да кстати некогда в суть не вникал, везде обычно достаточно примитивно про соединения пишут...
31 Maniac
 
05.02.15
18:22
У автора банальная проблема - берет 3 года. по остаточному регистру с оборотами.

Пересчет итогов видимо никогда в жизни не запускал. в базе бардак.
По партиям вообще запросы лучше не тсроить - там минусов может быть навалом, которые могут тащить годами итоги.
32 Maniac
 
05.02.15
18:24
Все очень просто.

Запрос по регистру продаж (оборотный). а остатки текущие по региструк остатки по складам.
сразу с условиями. количество в продажа = 0. по остаткам тоже о.
Все

Ну или какие хотите там.
33 ShoGUN
 
05.02.15
18:40
(30) Почитай пособие по SQL.
34 ShoGUN
 
05.02.15
18:42
(31)(32) Фантазируй, не останавливайся. Ну где уж там запрос из (0) попытаться разобрать и понять, что (23).
35 yavasya
 
05.02.15
21:55
добавить реквизит в номенклатуру "архивная"
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс