новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Требуется обработка для 1с 7.7, реализующая очистки номенклатуры от старых элементов

    • #1
    • 13.05.2014 16:09
    0
    Требуется обработка для 1с 7.7, реализующая очистки номенклатуры от старых элементов  Подробнее>>
    • #2
    • 13.05.2014 16:10
    0
    Что вы подразумеваете под такой очисткой???
    • #3
    • 13.05.2014 16:13
    0
    Пометьте все элементы справочника "Номенклатура" на удаление.
    Запустите процедуру удаления помеченных объектов.
    Те объекты - которые система позволит удалить - удалятся.
    После этой операции отмените пометку на удаление всех элементов справочника "Номенклатура".

    Перед этой операцией - сделайте копию базы.
    • #4
    • 13.05.2014 16:14
    • Отредактировано: 13.05.2014 16:14:25
    0
    Скорпион
    Что вы подразумеваете под такой очисткой???

    Думаю ,ситуацию,когда номенклатура не используется с какой то определенной даты.А как тогда со старыми документами?
    • #5
    • 13.05.2014 16:16
    0
    Имеется база интернет-магазина компьютерного, все позиции разбиты по группам. Все группы разделили на 3 категории по "дате устаревания":
    1 - позиции без "срока давности"
    2 - позиции актуальные не старше 2х лет
    3 - не старше года.

    в Справочнике Связи, есть реквизит ДатаСоздания, который отвечает за дату добавления позиции у поставщиков, нужно вот по минимуму из этих дат(у разных поставщиков могут отличаться даты добавления), перебрать всю номенклататуру и удалить старое, есть некоторые наработки
    • #6
    • 13.05.2014 16:17
    0
    Удалятся все элементы справочника Номенклатура - для которых нет ссылок на другие объекты - к примеру - на документы.
    А так просто элементы справочника удалять нельзя. Потом могут возникнуть проблемы целостности базы.
    • #7
    • 13.05.2014 16:21
    0
    Что-то подобное должно получиться
    Процедура Сформировать()
    
       Запрос = СоздатьОбъект("Запрос");
    
       ТекстЗапроса =
       "//{{ЗАПРОС(Сформировать)
       |Номенклатура= Справочник.Связи.Владелец;
       |ДатаСоздания = Справочник.Связи.ДатаСоздания;
       |Группировка Номенклатура;
       |Условие(ДатаСоздания<ВыбДатаСоздания);
       |Без Итогов;
       |";
       Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
          Возврат;
        КонецЕсли;
       Спр = СоздатьОбъект("Справочник.Номенклатура");
       Пока Запрос.Группировка()=1 Цикл
            Если Спр.НайтиЭлемент(Запрос.Номенклатура)=1 Тогда
                Если Спр.ПринадлежитьГруппе(выбРодитель)=1 Тогда 
                  Спр.Удалить();
                КонецЕсли;
            КонецЕсли;
       КонецЦикла;
    КонецПроцедуры
    • #8
    • 13.05.2014 16:26
    0
    Суть проблемы в том, что номенклатура выгружается на сайт и тянет за собой кучу позиций, которые не то что не интересны, а многие сняты с производства уже
    • #9
    • 13.05.2014 16:29
    0
    Да тут и городить нечего, если номенклатура участвовала в движении, то она никогда не удалится... Можно удалить без контроля, но полетят все ссылки!!!!! Не страдайте ерундой, такое может захотеть только идиот.
    • #10
    • 13.05.2014 16:38
    0
    Согласен с предыдущем комментом.
    У Вас 3 варианта сейчас на выбор:
    1. Сделать свертку базы на определенную дату, а затем удалить все объекты, которые МОЖНО УДАЛИТЬ.
    2. Просто удалить все объекты, которые МОЖНО УДАЛИТЬ.
    3. (для камикадзе, который не дорожит данными в базе) Удалить все элементы справочника по Вашему условию БЕЗ КОНТРОЛЯ ссылочности. В итоге получите кучу битых ссылок в базе (это при учете, что по товару были движения!)
    • #11
    • 13.05.2014 16:42
    0
    koka123
    Суть проблемы в том, что номенклатура выгружается на сайт и тянет за собой кучу позиций


    Поставить фильтр на выгрузку. (Как вариант)
    • #12
    • 13.05.2014 16:42
    0
    Можно же пометить элементы на удаление и пройтись стандартной обработкой с контролем целостности
    • #13
    • 13.05.2014 16:43
    • Отредактировано: 13.05.2014 16:46:26
    0
    а создать реквизит справочника номенклатуры ВыгружаемыйНаСайт и по нему выгружать, не?
    • #14
    • 13.05.2014 16:52
    0
    Свертка базы была на конец декабря 13 года, так что позиций мало будет, а реквизит "невыгружать" есть, его тоже можно пройти циклом и пометить
    • #15
    • 13.05.2014 17:13
    0
    koka123
    Суть проблемы в том, что номенклатура выгружается на сайт и тянет за собой кучу позиций, которые не то что не интересны, а многие сняты с производства уже


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

    P.S. Упс, подсказочка получилась :)
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться