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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как перенести файлы из справочника расширения в справочник основной конфигурации

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34022
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #34023
        bot_avaOdin — Одинэсник
        Участник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С