База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перенести файлы из справочника расширения в справочник основной конфигурации › RE: Как перенести файлы из справочника расширения в справочник основной конфигурации
Александр, привет!
Ситуация типовая при развитии конфигурации и появлении в основной конфигурации собственных объектов, которые ранее были реализованы в расширении. В вашем случае — справочник присоединённых файлов для документа «Списание запасов» появился в основной конфигурации, а в расширении остался свой аналог. Нужно перенести данные из расширения в основной справочник.
Рассмотрим алгоритм переноса с использованием возможностей БСП и стандартных механизмов 1С.
—
### Общий подход
1. **Подготовка:**
— Убедитесь, что в базе есть доступ к обоим справочникам:
— Расширение: `Справочник.СписаниеЗапасовПрмсоединенныеФайлы`
— Основная конфигурация: `Справочник.ПрисоединенныеФайлы` (или аналогичный справочник из основной конфигурации)
— Проверьте структуру реквизитов и соответствие полей, чтобы корректно перенести данные.
2. **Создание обработки переноса:**
— Создайте временную обработку (например, в виде внешней обработки или встроенной обработки в конфигурации).
— В обработке переберите все записи из справочника расширения.
— Для каждой записи создайте новую запись в справочнике основной конфигурации.
— Скопируйте все необходимые реквизиты, включая бинарные данные файлов.
3. **Особенности работы с файлами в БСП:**
— В БСП присоединённые файлы обычно хранятся в объекте `ПрисоединенныеФайлы` (например, через подсистему «Присоединенные файлы»).
— Для работы с файлами используйте стандартный механизм БСП — объекты `ПрисоединенныеФайлы.ФайлыОбъекта`.
— При переносе файлов нужно создать объекты присоединённых файлов для нового владельца (документа «Списание запасов» из основной конфигурации).
—
### Примерный код переноса (1С:Предприятие 8.x, управляемое приложение)
Процедура ПеренестиПрисоединенныеФайлыИзРасширенияВОсновнуюКонфигурацию() Экспорт
// Получаем выборку из справочника расширения
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Ссылка,
Владелец,
ИмяФайла,
ДанныеФайла,
Комментарий
ИЗ
Справочник.СписаниеЗапасовПрмсоединенныеФайлы";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Создаем новый объект присоединенного файла в основной конфигурации
НовыйФайл = Справочники.ПрисоединенныеФайлы.СоздатьЭлемент();
// Заполняем реквизиты
НовыйФайл.Владелец = Выборка.Владелец; // Документ "Списание запасов" из основной конфигурации
НовыйФайл.ИмяФайла = Выборка.ИмяФайла;
НовыйФайл.Комментарий = Выборка.Комментарий;
// Для хранения файла используем стандартный механизм БСП
НовыйФайл.Файл = Новый ФайлНаСервере;
НовыйФайл.Файл.Установить(Выборка.ДанныеФайла);
// Записываем элемент
НовыйФайл.Записать();
КонецЦикла;
Сообщить("Перенос присоединенных файлов завершен.");
КонецПроцедуры
—
### Важные моменты
— **Владелец файла:** В расширении владелец — это документ из расширения, в основной конфигурации — документ из основной конфигурации. Нужно убедиться, что ссылки на владельца корректны и соответствуют объектам основной конфигурации.
— **Данные файла:** В расширении данные файла могут храниться в реквизите типа `ХранилищеЗначения` или `БинарныеДанные`. В основном справочнике БСП обычно используется реквизит `Файл` типа `ФайлНаСервере` или `ХранилищеЗначения`. В примере выше показано, как перенести данные в `ФайлНаСервере`.
— **Права доступа:** Убедитесь, что у пользователя, запускающего перенос, есть права на чтение из расширения и запись в основной справочник.
— **Резервное копирование:** Перед переносом обязательно сделайте резервную копию базы.
—
### Альтернативный вариант — через выгрузку/загрузку данных
Если прямой программный перенос затруднён, можно:
1. Выгрузить данные из справочника расширения в XML.
2. Подготовить правила загрузки, чтобы загрузить данные в основной справочник.
3. Загрузить данные в основную конфигурацию.
Но этот способ сложнее и менее удобен, чем программный перенос.
—
### Рекомендации
— Используйте стандартные методы БСП для работы с присоединёнными файлами — это обеспечит корректность и совместимость.
— Если структура справочников сильно отличается, возможно, потребуется дополнительная обработка данных.
— После переноса протестируйте работу с файлами в документах.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1498871/ — пример подключения и работы с присоединёнными файлами через БСП.
Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.
—
Если нужна помощь с конкретным кодом или деталями — обращайтесь!