При работе с базами 1С часто возникают ситуации, когда нам необходимо перенести часть данных из одной базы в другую, очистить существующую базу от ненужной информации или начать вести определенный учет «с чистого листа», сохранив при этом важные настройки и пользователей. Особенно это актуально для справочников, таких как «Номенклатура», который является основой для многих учетных операций.
В этой статье мы подробно рассмотрим различные подходы к решению подобных задач, основываясь на опыте коллег и общепринятых методиках работы с 1С.
Представим, что у нас есть абсолютно новая, пустая база 1С (возможно, только что развернутая из шаблона конфигурации), и мы хотим перенести в неё только определенные справочники, например, «Номенклатуру» и связанные с ней данные, из другой, уже работающей базы. Этот метод идеально подходит, если нам не нужны старые документы, остатки или история операций.
Перед началом любых операций по переносу данных, обязательно создайте резервные копии обеих баз: как базы-источника, так и базы-приемника. Это позволит избежать потери данных в случае непредвиденных ошибок. Убедитесь, что конфигурации обеих баз идентичны или максимально близки по структуре. Если конфигурации отличаются, могут потребоваться дополнительные настройки правил конвертации или доработки.
Для однократного переноса данных в 1С часто используется универсальная обработка ВыгрузкаЗагрузкаДанныхXML (также известная как "Универсальный обмен данными в формате XML"). Эту обработку можно найти в стандартных или дополнительных обработках конфигурации, либо скачать на официальных ресурсах 1С или ИТС.
Шаги выгрузки данных из базы-источника:
ВыгрузкаЗагрузкаДанныхXML. Обычно она находится в разделе «Файл» -> «Открыть» или через меню «Все функции».Nomenclature.xml).После успешной выгрузки данных из базы-источника, мы переходим к загрузке в пустую базу-приемник.
Шаги загрузки данных:
ВыгрузкаЗагрузкаДанныхXML.Nomenclature.xml).Крайне важно понимать, что справочник «Номенклатура» часто имеет ссылки на другие справочники. Например, каждый элемент номенклатуры связан с «Единицей измерения», «Видом номенклатуры», «Ставкой НДС» и т.д. Если эти связанные справочники отсутствуют в базе-приемнике или содержат другие данные, при загрузке могут возникнуть ошибки или некорректные связи. Поэтому, при переносе номенклатуры, мы настоятельно рекомендуем одновременно переносить и все связанные справочники, которые используются вашей номенклатурой. Это обеспечит целостность и корректность данных в новой базе.
Кроме того, после переноса номенклатуры, возможно, потребуется перенести и другую сопутствующую информацию, такую как розничные цены, штрихкоды, характеристики номенклатуры. Эта информация хранится в различных регистрах сведений (например, ЦеныНоменклатуры, ШтрихкодыНоменклатуры, ЗначенияСвойствОбъектов), и её также можно выгрузить и загрузить с помощью универсальной обработки, выбрав соответствующие типы объектов.
Иногда задача стоит не в переносе в новую базу, а в "генеральной уборке" существующей. Представьте, что в базе накопилось много "мусора": старые, ненужные документы, ошибочные записи, "битые ссылки", а номенклатура была настолько некорректно ведена (например, кассирами с полными правами), что проще удалить старую и завести новую. При этом мы хотим сохранить все настройки системы, права пользователей, расположение панелей, настройки скидок и т.п., сделанные программистом.
Как и в первом варианте, первым и самым важным шагом является создание полной и актуальной резервной копии информационной базы. Это ваша страховка на случай, если что-то пойдет не так.
Прежде чем приступать к удалению, рекомендуем выполнить Тестирование и исправление информационной базы (ТИИ). Эта встроенная утилита 1С позволяет проверить целостность базы данных, найти и удалить "битые ссылки" – ссылки на несуществующие объекты. "Битые ссылки" могут быть причиной многих проблем, включая невозможность корректного удаления объектов. Запускается ТИИ в режиме "Конфигуратор" через меню "Администрирование" -> "Тестирование и исправление".
Мы рекомендуем использовать следующие опции:
После выполнения ТИИ, если были найдены и исправлены ошибки, процесс удаления данных станет более предсказуемым.
Основной объем "мусора" в базе обычно составляют документы и движения по регистрам. Чтобы подготовить базу к удалению "проблемной" номенклатуры, нам сначала нужно удалить все объекты, которые на неё ссылаются. В первую очередь это документы.
Порядок действий:
Внимание: Удаление документов – это серьезная операция, которая может занять много времени на больших базах. Будьте готовы к длительному ожиданию.
После удаления всех документов и записей регистров, которые могли ссылаться на номенклатуру, мы можем приступить к очистке самого справочника "Номенклатура".
Если некоторые элементы номенклатуры все равно не удаляются, это означает, что на них остались ссылки из других объектов (например, из регистров сведений, таких как ЦеныНоменклатуры, ШтрихкодыНоменклатуры, или из других справочников). В таком случае, нам придется либо вручную найти и удалить эти ссылки, либо использовать специализированные обработки для удаления "неиспользуемых" или "битых" элементов справочников.
После очистки старой номенклатуры у нас есть два пути:
ВыгрузкаЗагрузкаДанныхXML, как описано в Варианте 1.Важным аспектом является сохранение пользовательских настроек (прав доступа, расположения панелей) и данных о пользователях (список, роли, пароли). Эти данные хранятся не в документах, а в различных регистрах сведений и справочниках.
Мы не должны их трогать при удалении документов!
Справочники, такие как Пользователи, ГруппыДоступа, ПрофилиГруппДоступа, а также регистры сведений, такие как НастройкиПользователей, ПараметрыРаботыПользователей, не имеют прямых ссылок на номенклатуру или документы (в контексте их создания/изменения), поэтому они не будут удалены в процессе очистки документов. Все ваши настройки, пользователи и их права останутся на месте.
Если вдруг потребуется перенести только пользователей и настройки в другую базу (например, в полностью новую), это также можно сделать с помощью универсальной обработки ВыгрузкаЗагрузкаДанныхXML, выбрав соответствующие справочники и регистры сведений.
Если задача состоит в том, чтобы значительно уменьшить размер базы, убрать детализацию прошлых периодов, но при этом сохранить начальные остатки и актуальные справочники (без удаления всех документов), можно использовать свертку информационной базы. Этот метод обычно применяется, когда база становится слишком большой или медленной, и требуется "архивировать" старые данные.
Свертка базы данных – это процедура, при которой все движения по регистрам и большинство документов за определенный период (например, до 1 января текущего года) "сворачиваются" в сводные документы ввода начальных остатков на заданную дату. Исторические документы за свернутый период при этом могут быть удалены.
Хотя свертка не является прямой заменой удаления "битой" номенклатуры, она может быть частью общего процесса очистки. Если вы выполняете свертку до определенной даты, то все документы до этой даты будут удалены (или перенесены в архив), и это значительно упростит дальнейшую работу по выявлению и удалению старых, некорректных элементов номенклатуры, так как на них уже не будет ссылок из документов прошлого периода.
После свертки у вас останется база с актуальными начальными остатками и справочниками. Затем вы сможете выполнить шаги из Варианта 2 (Тестирование и исправление, удаление "проблемной" номенклатуры) с гораздо меньшим объемом данных и документов.
Инструмент для свертки базы обычно является частью типовых конфигураций 1С (часто в разделе "Администрирование" -> "Поддержка и обслуживание" -> "Свертка базы") или поставляется в виде отдельной обработки.
Таким образом, выбор метода зависит от конкретной цели. Если нужна полностью чистая база с избранными справочниками, используем универсальный обмен. Если требуется "почистить" существующую базу, сохранив настройки, то идем по пути удаления документов и корректировки справочников. В любом случае, резервная копия – это ваш лучший друг.