Odin | База знаний 1С

Как перенести файлы...
 

Как перенести файлы из справочника расширения в справочник основной конфигурации


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

привет. В расширении создан справочник СписаниеЗапасовПрмсоединенные файлы для документа Списание запасов. После обновления релиза (Управление предприятием общепита) в основном конфигурации появился свой справочник присоединенныефайлы для данного документа. Как перенести файлы из справочника из расширения в справочник основной конфигурации? Желательно с помощью БСП.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Александр, привет!

Ситуация типовая при развитии конфигурации и появлении в основной конфигурации собственных объектов, которые ранее были реализованы в расширении. В вашем случае — справочник присоединённых файлов для документа "Списание запасов" появился в основной конфигурации, а в расширении остался свой аналог. Нужно перенести данные из расширения в основной справочник.

Рассмотрим алгоритм переноса с использованием возможностей БСП и стандартных механизмов 1С.

---

### Общий подход

1. **Подготовка:**
- Убедитесь, что в базе есть доступ к обоим справочникам:
- Расширение: `Справочник.СписаниеЗапасовПрмсоединенныеФайлы`
- Основная конфигурация: `Справочник.ПрисоединенныеФайлы` (или аналогичный справочник из основной конфигурации)
- Проверьте структуру реквизитов и соответствие полей, чтобы корректно перенести данные.

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

3. **Особенности работы с файлами в БСП:**
- В БСП присоединённые файлы обычно хранятся в объекте `ПрисоединенныеФайлы` (например, через подсистему "Присоединенные файлы").
- Для работы с файлами используйте стандартный механизм БСП — объекты `ПрисоединенныеФайлы.ФайлыОбъекта`.
- При переносе файлов нужно создать объекты присоединённых файлов для нового владельца (документа "Списание запасов" из основной конфигурации).

---

### Примерный код переноса (1С:Предприятие 8.x, управляемое приложение)

Процедура ПеренестиПрисоединенныеФайлыИзРасширенияВОсновнуюКонфигурацию() Экспорт
    // Получаем выборку из справочника расширения
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
        Ссылка,
        Владелец,
        ИмяФайла,
        ДанныеФайла,
        Комментарий
    ИЗ
        Справочник.СписаниеЗапасовПрмсоединенныеФайлы";

    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        // Создаем новый объект присоединенного файла в основной конфигурации
        НовыйФайл = Справочники.ПрисоединенныеФайлы.СоздатьЭлемент();
        
        // Заполняем реквизиты
        НовыйФайл.Владелец = Выборка.Владелец; // Документ "Списание запасов" из основной конфигурации
        НовыйФайл.ИмяФайла = Выборка.ИмяФайла;
        НовыйФайл.Комментарий = Выборка.Комментарий;
        
        // Для хранения файла используем стандартный механизм БСП
        НовыйФайл.Файл = Новый ФайлНаСервере;
        НовыйФайл.Файл.Установить(Выборка.ДанныеФайла);
        
        // Записываем элемент
        НовыйФайл.Записать();
    КонецЦикла;

    Сообщить("Перенос присоединенных файлов завершен.");
КонецПроцедуры

---

### Важные моменты

- **Владелец файла:** В расширении владелец — это документ из расширения, в основной конфигурации — документ из основной конфигурации. Нужно убедиться, что ссылки на владельца корректны и соответствуют объектам основной конфигурации.
- **Данные файла:** В расширении данные файла могут храниться в реквизите типа `ХранилищеЗначения` или `БинарныеДанные`. В основном справочнике БСП обычно используется реквизит `Файл` типа `ФайлНаСервере` или `ХранилищеЗначения`. В примере выше показано, как перенести данные в `ФайлНаСервере`.
- **Права доступа:** Убедитесь, что у пользователя, запускающего перенос, есть права на чтение из расширения и запись в основной справочник.
- **Резервное копирование:** Перед переносом обязательно сделайте резервную копию базы.

---

### Альтернативный вариант — через выгрузку/загрузку данных

Если прямой программный перенос затруднён, можно:

1. Выгрузить данные из справочника расширения в XML.
2. Подготовить правила загрузки, чтобы загрузить данные в основной справочник.
3. Загрузить данные в основную конфигурацию.

Но этот способ сложнее и менее удобен, чем программный перенос.

---

### Рекомендации

- Используйте стандартные методы БСП для работы с присоединёнными файлами — это обеспечит корректность и совместимость.
- Если структура справочников сильно отличается, возможно, потребуется дополнительная обработка данных.
- После переноса протестируйте работу с файлами в документах.

---

Рекомендую посмотреть здесь:
https://infostart.ru/public/1498871/ — пример подключения и работы с присоединёнными файлами через БСП.

Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.

---

Если нужна помощь с конкретным кодом или деталями — обращайтесь!



   
ОтветитьЦитата