1с 7 удалить номенклатуру
Подскажите какие есть идеи, как можно за короткое время удалить много элементов одного справочника в 1С 7.7.
Стандартно - перебором каждого элемента, занимает много времени.
Справочник включен в конфигурацию, поэтому доступ к нему через
объект XBase и использование метода ОчиститьФайл() - не приносит результатов.
Заранее спасибо за ответ.
(2) Да, файловая версия.
(1) Сейчас это так и реализовано, но это все таки варварский метод.
(6) Пробовал. Такой метод используется в обработке загрузки на диске итс. Результат незначительный. Все равно ждешь до 15 минут.
(7) Я только рад этому научиться, но может помимо транзакции существуют какие-нибудь альтернативные методы работы?
(12) Сейчас этот метод используется, точнее аналогичный, я просто копирую с заменой чистую дбф с индексом в каталог базы.
Но такие пляски приводят либо к вылету 1С либо к бесполезности такого копирования, файл остается заполненным.
Т.е. после выполнения такой процедуры туда нужно еще лезть и смотреть что справочник действительно пустой.
Тебе же сказали - по 100-500 штук делай, конкретный размер подбирается опытным путём, замеряя интервал между транзакциями. (Внезапно подумал, что это может зависеть от структуры dbf).
(22) ну дык, я и пытаюсь намекнуть, может не надо это делать?
тем более что "акие пляски приводят либо к вылету 1С " (цы)(16)
(0) По несколько раз в день что ли удаляешь? Сколько элементов удаляется? К чему такая спешка? Ночью удалить не спеша никак?
(24+) . а если ни на один элемент справочника нет ссылок, зачем он вообще в конфигурации? Может, не трубы, а всю систему грохнуть?
(19) На текущем кол-ве элементов в справочнике, 8163 шт:
- метод 17 дает результат 7,1 секунды.
- метод без разбивания транзакции 8,4 секунды.
Сейчас загоню в справочник больше элементов, отпишусь о результатах. )))
Потому что лично мне непонятно - что за справочник такой, который надо регулярно (насколько я понял) и быстро очищать полностью?
Дело может осложниться еще и тем, что не вся информация из справочника может храниться в единственной DBFке, например, периодические реквизиты - совсем в другой файле, грохать который нельзя.
Может оказаться, что лучше держать эту инфу, например, не в справочнике, а во внешнем DBF, а для работы считывать его в список значений. Тогда быстрое удаление будет делаться в две строки кода: очистил СЗ, очистил DBF.
если надо удалить все (и наплевать на ссылочную целостность) - грохни табличку справочника, если по условию - delete + where
Ошибочно документ или запись справочника, которая больше не нужна, можно удалить. Удаление записей в программе 1С происходит в два этапа:
Пометка объектов на удаление, которые надо удалить.
Второй этап:
Манипуляции с пометкой объекта в окне Удаление помеченных объектов никак не влияет на пометку на удаление в журналах и справочниках.
Проводки операции, помеченной на удаление выключаются, проводки документа – удаляются. При снятии пометки на удаление проводки автоматически не восстанавливаются.
Для восстановления проводок операции выбрать команду меню-> ДЕЙСТВИЯ-> Включить проводки, для проводок документа необходимо открыть документ и заново провести.
Удаление помеченных объектов без монопольного режима.
Если 1С не запущена в монопольном режиме, штатными средствами удаления воспользоваться не получится - 1С будет выдана ошибка «Для выполнения данной операции запустите программу в монопольном режиме!»
Как удалить помеченные объекты без монопольного режима?
В ситуации, когда нет возможности запустить 1С в монопольном режиме, но нужно провести удаление помеченных объектов, поможет обработка «Удаление», которую можно у нас скачать: удаление без монопольного доступа (автор Александр Шацкий, доработана мной: существенно повышена скорость работы).
Запустить обработку можно в режиме «Предприятие» командой меню файл – открыть.
Интерфейс аналогичен стандартной обработке. Если Вы не хотите получения ошибки «Объект не найден» вместо заполненного реквизита - удаляйте только с контролем ссылок, не используя пометку «Удалять все» / «Удалить ссылки».
Почему не удалось удалить некоторые объекты?
Теперь почему некоторые объекты невозможно удалить из базы 1С? Просто в базе 1С есть ссылки на эти объекты. Где-то в справочниках, документах, движениях этот объект указан и поэтому система не может его удалить. Такие ситуации исправляются вручную и тут нужно хорошее знание конфигурации 1С.
Все элементы, где используется удаляемый объект отображаются в списке "Ссылки на удаляемый объект". Если возможно удалить все ссылки на удаляемый объект - возможно будет удалить и сам объект. Если же принудительно удалить объект, то на месте ссылок на него появится системная строка "< Объект не найден >", борьба с которой - тема для отдельной статьи.
Другие материалы по теме:
Нас находят: как удалить помеченные объекты в 1с 7 7, удаление помеченных объектов в 1с 7 7, 1с 7 7 удаление помеченных объектов, как удалить проводку в 1с 7 7, как в 1с 7 7 удалить помеченные на удаление, как удалить помеченные на удаление в 1с 7 7, 1с 7 7 как удалить документы помеченные на удаление, как удалить помеченные на удаление документы в 1с 7 7, как в 1с 7 7 удалить помеченные на удаление документы, удаление помеченных объектов 1с 7 7
Универсальная обработка для платформы 1С:7.7 Обработка позволяет непосредственно удалить элемент (элемент справочника, документ) без контроля ссылочной целостности. Полезна при необходимости срочно удалить ОДНОЗНАЧНО "не нужный" элемент в разделенном режиме работы. Использовать на свой страх и риск.
Универсальная обработка для платформы 1С:7.7
Обработка позволяет непосредственно удалить элемент (элемент справочника, документ) без контроля ссылочной целостности.
Полезна при необходимости срочно удалить ОДНОЗНАЧНО "не нужный" элемент в разделенном режиме работы.
Использовать на свой страх и риск.
Специальные предложения
сп за обработку)))) оч помогла! пока не знаю какие глюки могут появиться,
но на сейчас она прямо жизнь мне облегчела!)
Добрый день.
Небольшой комментарий: в обработке используется метод Удалить(1) - т.е. непосредственное удаление объекта из БД.
Рассмотрим пример: удаляется элемент справочника, но он уже был использован в документах.
Таким образом, после непосредственного удаления элемента справочника, в документах, где был использован этот элемент будет "красоваться" надпись - .
Что делать чтобы этого избежать:
1. Нужно найти ссылки на удаляемый объект либо штатными средствами 1С (операции\поиск ссылок на объекты), либо прямо из обработки (кнопка "Найти ссылки"). Если ссылок нет, то можно смело удалять. А если есть, то см след пункт.
2. Используя универсальную обработку "Замена значений" - REPLVAL.ert (найти можно на диске ИТС или поиском в интернете) "перекинуть" все ссылки удаляемого объекта на другой элемент справочника и только потом удалять элемент, который вы хотели изначально удалить.
В таком случае никаких глюков вы не словите.
P.S. данная обработка писалась исключительно для себя для решения локальной задачи и не претендует на истину в последней инстанции. Уверен на 100% что можно написать лучше и красивее, но в своей практике мне ее хватает и периодически я ее использую.
Всем удачи и успехов в работе:)
скажите пожалста, а какие глюки могут появиться?Допустим если сотрудник в январе этого года работал, а в феврале выяснилось что он в этой базее вообще не нужен был, и не удаляется потому что на него заведены документы, если я его этой обработкой удалю как это отразится на документах прошлого периода где он был внесен?
(3)испортите все документы предыдущего периода, где фигурировал сотрудник, пустыми ссылками на несуществующий элемент справочника.
Сами документы перепроводится не будут.
Часто пользователи 1С встречаются с проблемой неактуальности той или иной номенклатуры, обычно её помечают на удаление и забывают о ней, так как она не участвует в дальнейшей работе. Но что делать если база номенклатуры составляет тысячи или десятки тысяч позиций. В этом случае пометкой на удаление не обойтись и появляется необходимость полного удаления позиций.
Для удаления номенклатуры заходим в раздел «НСИ и администрирование» далее «Номенклатура»
попадаем в раздел, где отражена вся номенклатура
следующим этапом необходимо пометить на удаление те позиции, которые необходимо удалить, для этого на выбранной номенклатуре нажимаем правой кнопкой мыши и выбираем пункт «Пометить на удаление»
после этого у выбранной номенклатуры появиться крестик, который и говорит о том, что данная позиция помечена на удаление
На текущем этапе мы лишь поставили пометку, для полного удаления нам необходимо проделать следующие действия. Для начала необходимо пройти в пункт меню «НСИ и администрирование» далее нажать кнопку «Поддержка и обслуживание»
далее нажать на «Удаление помеченных объектов»
в появившемся окне выбрать способ удаления, это может быть как автоматическое удаление или выборочное, в нашем случае мы выберем автоматическое удаление.
нажать кнопку далее, после непродолжительного времени появиться окно, где будут показаны позиции на удаление
и нажать кнопку «Удалить»
Помните что, после процесса удаления в правом окне появятся документы, на основании которых была введена данная позиция, вам необходимо либо так же пометить данные документы на удаление либо зайти в сам документ и удалить там данную позицию, только после этого позиция удалиться.
После всего вышеописанного, позиция помеченная на удаление исчезнет безвозвратно.
В наше случае, на конечно информационном окне, написано что удалено 3 объекта, это связано с тем, что для полноценного удаления мы удалили так же два документа «Оприходование излишков» и «Установка цен номенклатуры».
Внимание. Непосредственное удаление справочника ведет к нарушению целостности данных. Например если удалить Контрагента по которому были сделаны документы, то в этих документах будет пустая ссылка.
Поэтому - лучше на удаляемые объекты ставить пометку на удаление, а непосредственное удаление делать встроенной функцией:
в 1С 7.7 или 8.1 - Меню-Операции - Удаление помеченных объектов.
в 1С 8.2 - Меню - Все функции. - Стандартные - Удаление помеченных объектов.
Код 1C v 8.2 УП
Код 1C v 8.х
Похожие FAQ
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; Выбор запросом элементов справочника и Загрузка в Документ 0
Запрос = СоздатьОбъект(" Запрос" ); ТекстЗапроса = " // Вывести все помеченные на удаление элементы справочника 0
Запрос=новый Запрос; Запрос.Текст=" |ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ПометкаУдаления = ИСТИНА |" ; Результат = Запрос.Выполнить(); Результат = Результат.Выбрать(); Пока Ре Как найти существующие ссылки на объекты? 6
Для 8.х НайтиПоСсылкам (FindDataByRef) Синтаксис: НайтиПоСсылкам ( Список ссылок ) Параметры: Список ссылок Обязательный Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти. Возвращаемое значение Как удалить Файл, Каталог? 0
Функция Удаляет указанные файлы. УдалитьФайлы( Путь , Маска ) Параметры: Путь (обязательный) Тип: Строка. Путь к удаляемым файлам. Маска (необязательный) Тип: Строка. Маска для выбора удаляемых файлов. В строке маски допускается использо Посмотреть все результаты поиска похожих
Еще в этой же категории
Создание и запись нового элемента справочника 14
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Поиск элемента, найти элемент справочника 5
НаКлиенте Процедура ПоКнопкеНайти(Команда) // Вставить содержимое обработчика. Сообщить(НайтиКонтрагента(" 000000001" )); КонецПроцедуры НаСервере Функция НайтиКонтрагента(КодКонтрагента) Перем КонрагентДляПоиска, СсылкаНайденногоКонрагента Периодические реквизиты справочника, только 1С v7 2
Чтение и запись периодических реквизитов. Установка даты выборки периодических реквизитов для всего справочника. //так мы узнаем, какая была у сотрудника //категория на определенную дату Катег = СпрСотр.Категория.Получить(НекаяДата); //так мы ус Посмотреть все в категории Справочники
Читайте также: