Открыли документ Счет, в поле Контрагент набираете первую букву & поиск осуществляется, набираете вторую (третью) букву и список становится пустым - это слетел индекс полнотекстового поиска, его нужно обновить:
- Главное меню - Все функции - Стандартные - Управление полнотекстовым поиском
Если Пункт меню Все функции недоступен, то включить его можно в меню Сервис - Параметры - Показывать Все функции
или такой вариант:
Меню - Администрирование - Поддержка и обслуживание - Регламентные операции - Полнотекстовый поиск данных - Настроить - Очистить индекс - Обновить индекс
Очень часто менеджеры дублируют информацию в справочниках и время от времени их приходится чистить.
Но как удалить только те элементы справочника, которые не используются в документах?
Следующий пример кода поможет это сделать(в примере обрабатывается 4 справочника: Сотрудники, ФизЛица, Договора и Контрагенты) Скачать: Обработка для УТ 10:
Обработка "Универсальные подбор и обработка объектов" предназначена для поиска объектов в справочниках и документах по произвольному условию и дальнейшей обработки найденных объектов.
Для подбора объектов необходимо в поле выбора "Объект поиска"] выбрать искомый объект, задать необходимые условия поиска в табличном поле на закладке "Отбор по значениям реквизитов" и нажать кнопку "Найти объекты". Кнопка "Найти объекты" так же доступка на закладке "Найденные объекты".
Для поиска по строке во всех строковых полях объекта необходимо ввести искомую строку в поле ввода "Строка поиска" на закладке "Отбор по значениям реквизитов" и нажать кнопку "Найти объекты" (клавиша F9). При этом будут учтены и все условия, заданные в табличном поле.
Результат поиска выводится в табличное поле, расположенное на закладке "Найденные объекты". При двойном щелчке мыши или нажатии Enter в строке табличного поля открывается форма редактирования выбранного объекта. Для включения объекта в обработку необходимо включить флажок в соответствующей строке.
Для подробной настройки выводимой информации (настройка выводимых полей, порядок вывода) можно использовать форму настроек вывода, которая вызывается нажатием на кнопку "Настройки" на закладках "Отбор по значениям реквизитов" или "Найденные объекты".
Для обработки объектов необходимо перейти на закладку "Обработки".
В дереве "Доступные обработки" на первом уровне отображаются все доступные обработки. При двойном щелчке мыши или нажатии Enter на первом уровне дерева доступных обработок открывается форма новой настройки обработки с возможностью сохранения текущей настройки (кнопка "Сохранить настройку") и непосредственного выполнения обработки (кнопка "Выполнить"). Настройки обработок отображаются на втором уровне дерева доступных обработок. При добавлении новой строки создается новая настройка обработки, которую в дальнейшем можно изменять, удалять, копировать и выбирать для выполения. Сохранение и добавление настроек возможно только для обработок, в которых предусмотрена и необходима пользовательская настройка.
В табличном поле "Выбранные обработки" отображаются настройки доступных обработок, участвующие в групповой обработке объектов. Заполнение списка осуществляется выбором настройки в дереве доступных обработок и нажатаем кнопки "Добавить настройку в выбранные обработки". Для добавления обработки, не предусматривающей пользовательских натроек, необходимо при добавлении выбирать непосредственно обработку. При двойном щелчке мыши или нажатии Enter в строке табличного поля выбранных обработок открывается форма редактирования настройки обработки с возможностью сохранения текущей настройки (кнопка "Сохранить настройку") и непосредственного выполнения обработки (кнопка "Выполнить"). Групповая обработка объектов выполняется нажатием кнопки "Выполнить" панели "Выбранные обработки". Для включения настройки в групповую обработку необходимо включить флажок в соответствующей строке.
Сохранении и восстановление настроек обработок осуществляется нажатием кнопок "Сохранить настройки в файл" (Ctrl+S) и "Загрузить настройки из файла" (Ctrl+L) командной панели "Доступные обработки". При этом открывается диалог выбора файла для сохранения или восстановления настройки. Данная возможность позволяет переносить настройки обработок между различными конфигурациями баз данных между различными пользователями.
Доступные обработки:
* Произвольный алгоритм
* Установка реквизитов
* Перенумерация объектов
* Пометить на удаление
* Удалить
* Провести документы
* Отменить проведение документов
Вопросы и ответы по обработке: Как с помощью обработки установить реквизит "НаименованиеПолное" равным реквизиту наименование краткое?
Через произвольный алгоритм.
Когда объект был удален непосредственно, то все ссылки на него в справочниках, в документах, в регистрах стали битыми и отображаются следующим образом:<Объект не найден> (16:bca8000c6efdd52111d8eaba7c9706eb)
Битая ссылка не является пустой. Т.е. метод Пустая() возвращает Ложь. Определить, что ссылка битая можно так:
И последний вариант для проверки в запросах: ГДЕ Объект.РеквизитОбъекта ЕСТЬ NULL И Не Объект=&ПустаяСсылкаОбъекта
Ниже дана программа для удаления записей регистров, у которых регистратор - битая ссылка, т.е. не существует в базе.
Введение
Многие из Вас, наверное, сталкивались с такой проблемой как, удаление элементов в справочниках, а значит, знают, какую кучу проблем это приносит. Я видал много способов восстановления порушенного справочника. Все их можно свести к следующему:
Заводится новый элемент справочника, аналогичный удаленному элементу, а потом он заносится во все документы, вместо удаленного элемента. Дальше все различается только способом занесения элемента в документы. Кто все исправляет в руки, кто пишет обработку - все зависит от опыта и квалификации исполнителя. После чего, необходимо перепровести все измененные документы. В общем, долгая и нудная работа, не всегда дающая 100% результат правильного восстановления. Есть, правда, один быстрый способ, основанный на формате DBF, точнее методах работы с ним.
Вот об этом мы и поговорим. Итак, что нам для этого надо. Иметь голову, наполненную мозгами, умелые ручки, знания основ перевода чисел из одной системы счисления в другую и любой редактор DBF файлов. Я, к примеру, использую winDBFview фирмы "Гэндальф".
Часть 1. Нам повезло.
С начала, собственно, о формате DBF и методах работы с ним. Думаю, рассказывать обо всем формате нет смысла, это тема отдельной статьи, поэтому расскажем о нем вкратце, для понимания тех действий, которые необходимо совершить.
Итак, что такое DBF формат и с чем его едят. Файл DBF можно разделить на две части: заголовок и, собственно, набор данных. В заголовке находится вся служебная информация, показывающая из каких полей состоит запись, типы этих полей, размер данных в полях, количество записей, размер записи, и откуда в файле начинаются записи, но это сейчас ни к чему. В наборе данных находятся, собственно, записи данных. В начале каждой записи стоит специальный байт - признак удаления. То есть когда вы говорите программе удалить запись, она ее фактический не удаляет, а ставит в первый байт записи метку о том, что данная запись удалена.
Отсюда следует, что если найти запись соответствующую удаленному элементу и сбросить признак удаления, переиндексировать базу, то можно обнаружить что, правильно удаленный
элемент будет восстановлен не только в справочнике, но всех документах.
Для тех, кто не знает что почем, показываю на примере:
Рабочая конфигурация ТиС, удалили элемент справочника товаров.
Запускаем winDBFview и выбираем Файл - Открыть. В появившемся окне диалога находим папку, в которую установлена база и открываем там файл. А какой? Вот ведь вопрос: как узнать? Да просто. Запускаем какую-нибудь оболочку, переходим в папку с базой и находим файл"1Cv7.DD". Открываем его для просмотра и находим там следующую строчку - "Справочник Номенклатура" - в нашем случае, у вас, вместо "Номенклатура" ставим название порушенного справочника (как он называется в конфигураторе) . И видим приблизительно следующее (см. рис. 1). То, что у меня выделено под надписью "Name" и есть искомое нами имя файла. Открываем его в редакторе DBF файлов, и смотрим. В поле CODE содержится код элемента справочника, а в поле DESCR наименование элемента. Как будете искать - уже дело техники и возможностей редактора. Найдя нужный элемент, сбрасываем байт пометки на удаления и сохраняем сделанные изменения.
Часть 2. Нам не повезло.
Но может быть, что вы не смогли быстро приехать к месту событий (всякое в жизни бывает). Приступили к восстановлению элемента. Запустили редактор. И начали искать и не нашли удаленный элемент. Куда он делся? Опять вернемся к формату DBF, и посмотрим, что происходит при добавлении новой записи. С начала программа ищет помеченные на удаление записи и если не находит, то добавляет новую запись. А если находит, вы правы, пишет вместо нее. И что делать, неужто опять все в руки?
Внимательно смотрим листинг файла "1Cv7.DD". Видите перед полем CODE поля ID и PARENTID. Для чего они нужны. Из описания поля (см. рис. 1), следует, что это какой-то идентификатор объекта. Оказывается 1С все равно, на тот код, что вы указали в справочнике элементов. Сама для себя она каждому объекту присваивает свой код. Значит, если мы узнаем этот код, то сможем создать запись полный аналог удаленной. Хм.... А как узнать этот код?
Есть много способов. Я, надеюсь, предлагаю вам самый простой. Итак, начнем.
Запускаем 1С. Лезем в Сервис - Монитор пользователей - Журнал регистрации. В появившемся диалоге делаем отбор: "во всем журнале, отбор по признаку удаление элемента справочника", жмем "ОК".
И смотрим журнал (см. рис. 2). Видите, там, где написано "Номенклатура 2258 04 ....", это и есть удаленный элемент справочника, его нам и надо восстановить. Сверху присутствует
строка: "<Объект не найден>(36201/)", 36201 - это и есть ID объекта. Создаем в справочнике новый элемент - полный аналог удаленному элементу. Выходим из 1С. Запускаем редактор, находим созданный нами элемент и поле ID ставим найденный. Внимательный читатель может сразу заметить существенное различие между соседними записями. Вот сейчас мы и переведем найденный идентификатор к нужному виду.
Перевод из одной системы счисления в другую, подробно изучается в школах и институтах, поэтому на этом останавливаться не будем. Изучив весь справочник, замечаем, что в идентификатор состоит из цифр и заглавных букв латинского алфавита. То есть может содержать все цифры от "0" до "9", и буквы от "A" до "Z". Значит, используется тридцати шестеричная система счисления 10 цифр плюс 26 букв. Приступим:
* 36201 делим на 36, получаем 1005 в остатке 21;
* 1005 делим на 36, получаем 27 в остатке 33;
В конце имеем три числа: 27, 33, 21. Заменяем их соответствующими значениями из приведенной ниже таблицы и получаем ID объекта RXL. Записываем его вместо ID созданного нами элемента. Номер можно получить средствами самой 1С использую функцию _IdToStr() и наоборот получит десятичное число из его тридцати шестеричного представления _StrToId().
Запускаем 1С, индексируем базу и смотрим, что имеем (см. рис. 3)
Что и требовалось получить. Пользуйтесь.