Как перенести присоединенные файлы из одной базы в другую 1с
В 1С:Предприятии нет возможности передавать объекты между базами по ссылкам. Другими словами, ссылка на объект из одной информационной базы не может быть распознана в другой информационной базе. Но это не значит, что нельзя передать данные из одной базы в другую.
Любой объект информационной базы - это структурированные данные примитивных типов (строка, число).
Таким образом, для того чтобы организовать обмен между базами, необходимо передавать структурированные данные примитивных типов. Этот процесс можно реализовать подключившись из одной базы к другой через COM-соединение или выгрузить данные из базы источника в промежуточное хранилище(например xml файл), а потом загрузить в базу приемник.
Обмен данными через COM
Если базы 1С расположены на одном компьютере или доступны по локальной сети, то значит данные можно передавать и получать по COM-соединению. Это соединение позволяет обращаться к объектам, создавать объекты, выполнять запросы к другой базе. При получении данных через COM-соединение объекты приходят в виде COM-объектов у которых значения свойств доступны через "точку".
Обмен данными через XML-файл
Из 1С данные можно выгрузить в файл любого типа. Формат-XML позволяет записывать структурированные объекты любой сложности. XML-файл является универсальным передаточным механизмом. Для реализации этого метода потребуется написать две обработки одна для выгрузки из первой базы в XML-файл, другая для загрузки из XML-файла во вторую базу. При работе через COM-соединение, обмен можно организовать с помощью одной внешней обработки. Таким образом передача через XML-файл актуальна когда нет прямого соединения между базами.
Стандартные обмены данными
Во моногих типовых конфигурациях присутствуют стандартные обмены. Например в типовых конфигурациях УТ(Управление торговлей 11) и БП(Бухгалтерия предприятия 3.0) может быть настроен стандартный обмен данными между УТ-11 и БП-3.0. В зависимости от настроек, обмен может работать как через XML-файл так и через COM-соединение.
Обработка "Универсальный обмен данными в формате XML"
Обработка выгружает и загружает данные или в XML-файл или по COM-соединению. Выгрузка и загрузка производится на основании правил обмена. Для работы обработки потребуются "Правила обмена". Создаются правила в специальной конфигурации "Конвертация данных". Для того чтобы написать правила надо хорошо разбираться не только в программировании, но и уметь пользоваться конфигурацией "Конвертация данных".
Комментарии (0)
После организации бесшовной интеграции ERP и Документооборота выяснилось. что присоединенные файлы, которые добавлены к документу на стороне ERP, в связанный документ на стороне Документооборота автоматически не переносятся. Со стороны ERP "прилетает" только печатная форма.
А эти файлы нужны для принятия решения по согласованию нашими сотрудниками.
Для решения этой задачи были внесены изменения в процедуру модуля менеджера справочника ПравилаИнтеграциис1сДокументооборотом
Сейчас это все работает на связке ERP 2.4.13.123 и ДО 2.1.27.1 , платформа 8.3.18.1208.
Ограничение по общему размеру присоединенных файлов сделано из-за ограничений веб-сервера.
В расширении программный код, который приведен в публикации
Специальные предложения
А если файл был изменен со стороны ERP, в ДО он не изменится? Создаются полные копии файлов в двух базах но связи между ними нет?
Код Вы же видите, этого нет, файлы передаются для запуска бизнес- процесса на стороне ДО с присоединенными файлами.
Возникла проблема увеличения размера базы (сужу по размеру dt) c 4-5 ГБ разрослась до 22 ГБ. Файлы в ERP хранятся в томах на диске (не в базе). Никак не могу найти причину этого, что надо почистить
тогда в чем может быть дело? рост базы связываю с включением этой доработки. Сейчас отключил, буду наблюдать
не может. объем хранимых версий объектов всего 0.07 Мб. за сутки обьем дт увеличился на 600 Мб. При загрузке выгруженной дт вылетает ошибка
по причине:
Файл не обнаружен '/tmp/v8_xPBdof_4cf.tmp'
Баг из (11) тоже пофиксил - в присоединенных файлах обнаружился мусор, немного доработал код
Если ДанныеФайла <> Неопределено Тогда
ДанныеФайла.Записать(ИмяВременногоФайла);
Иначе
Продолжить; //Файл кривой, переходим к следующему
КонецЕсли;
(17) Спасибо, уже не актуально. Придумал более удобный способ редактировать один файл и в ERP и в Документообороте
(20) Поделитесь? Тоже пытаюсь решить эту проблему в КА, не совсем устраивает вариант дублирования файлов в разных базах
(21) Кароче. В ERP делаем хранение файлов в ДО. Соответственно файлы к документу(ну или что там) добавляем через вкладку Документооборот. Теперь файл в ДО. Это значит раз. Если прикрепить теперь этот файл к объекту ДО как файл, то будет вторая копия, а это исключает совместную работу с ним. Поэтому (а файл у нас, напомню, в ДО уже) нужно добавлять связь. Это два. Файл будет на вкладке "Связи" (я просто переименовал в "Файлы", ибо пользователи такие пользователи, а ничего другого там не предполагается) и теперь и ДО и ERP смотрят на один объект. При изменении будет меняться и там и там. Вот такая схема через то самое место. 1С без работы не оставит.
Связь добавляем программно при создании объекта ДО или где нравится, в ДО для данного объекта в настройках связи нужно добавить связь с типом "Содержит ссылку на" и ссылка на "Файл".
Спасибо, чуток подогнал под свою буху, но в целом БСП та же, так что стала норм, сэкономил несколько часов работы, высплюсь хоть)))
Добрый день, коллеги!
возможно подскажите как массово указать соответствия документов из 1С БП внутренним документам в 1С ДО ?
вручную делать долго, как обработкой/ в каком месте в коде 1С можно покопать?
Добрый день. Использовали этот код. Файлы успешно передаются из ЕРП в ДО. Но столкнулись с проблемой. Если пользователи после обмена удаляют присоединенные файлы в ЕРП и добавляют новые, то в документообороте файлы не помечаются на удаление, но добавляются новые. Подскажите, как можно передавать отметку удаления файла?
Просмотры 2340
Загрузки 44
Рейтинг 17
Создание 26.02.21 08:30
Обновление 26.02.21 08:30
№ Публикации 1392047
Тип файла Расширение (cfe)
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
См. также
Как настроить правильную техподдержку (helpdesk, service desk на коленке) Промо
Эта статья будет полезна для компаний, которые оказывают техническую поддержку своим пользователям - внешним или внутренним клиентам. В статье я расскажу, как оказываем поддержку мы, как выстроили этот бизнес-процесс, что контролируем и на что обращаем внимание в работе. Вы можете использовать наш опыт при построении собственной системы поддержки или обратиться к нам за помощью за построением такой системы, будем рады помочь. В статье формируется основной набор правил, которые мы сформировали при настройке системы для себя, а так же небольшие примеры того, как мы эти правила применяем.
24.04.2019 32490 siddy 0
Расширение согласования документов (справочников) в УХ на другие объекты
Возникает частенько потребность расширить согласование УХ на другие объекты (актуально для УХ и ERP.УХ). В данной статье будет дана подробная инструкция, как это сделать быстро.
26.01.2022 612 Shining_ninja 0
МЕРАСОФТ Чек-лист - приложение для проверок по чек-листам на платформе 1С:Предприятие
Мы автоматизируем проверки по чек-листам, сокращаем время на формирование отчетов с 2-3 дней в месяц до 1 часа и помогаем компаниям уйти от бумажной работы по составлению отчетов.
16.12.2021 735 Malina_Spb 2
Как вносить изменения в новое ЭДО от 1С в БП 3? Июнь 2021, БП 3.0.93.20
Обновились на 3.0.93.20, и все мои расширения под ЭДО перестали работать. Разберем, где вообще искать код, который выводит данные электронного документа в XML, где вмешиваться в ход этого вывода?
03.06.2021 8318 fixin 26
Права доступа в 1С:Документооборот 2.1 Промо
В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.
16.09.2016 93004 vlush78 0
Исправление вывода списка процессов в 1С:Документооборот с группировкой
24.05.2021 2135 Xleo777 5
Диадок, модуль 1С - заполнение полей с дополнительной информацией
Некоторые контрагенты для настройки электронного обмена документами требуют заполнения специальных полей ИнфПолФХЖ1 и ИнфПолФХЖ2 дополнительной информацией.
21.05.2021 5154 _Vovik 11
Иной подход к схемам комплексных процессов (возможность пользователям в удобном формате видеть участников процесса до его запуска) в 1С: Документооборот
Предлагаю решение, как несложным образом переработать шаблоны комплексных процессов, чтобы пользователи могли видеть исполнителей процесса еще до запуска, а ответственные за ввод шаблонов упростили себе задачу при работе со сложными маршрутами.
30.03.2021 3981 Capitullo 2
Интеграция «1С:Управление производственным предприятием» с «1С:Документооборот» Промо
В данной статье пойдет речь о возможности интеграции 1С:Управление производственным предприятием ред. 1.3 с 1С:Документооборот КОРП и о том, что может получить предприятие от этой интеграции.
18.02.2013 66870 Vladimir_Konyrev 38
Новое в 1С:Документооборот 3.0
Под новый год фирма 1С сделала нам всем подарок – вышла ознакомительная версия долгожданного 1С:Документооборот 3.0! По традиции новая версия кардинально отличается от предшественника как в плане интерфейса, так и по “начинке”. В данной статье рассмотрим самые интересные нововведения. Приступим к обзору.
11.02.2021 7648 Koder_Line 5
Запрет повторного запуска комплексных процессов типовыми средствами в 1С: Документооборот
Реализация решения изложенного в статье, исключает ошибочный (повторный) запуск комплексного процесса в 1С: Документооборот.
09.11.2020 2511 sulig 10
Блокировка повторного запуска комплексного процесса по документу в 1С: Документооборот
Доработка в 1С: Документооборот позволяет заблокировать повторный запуск комплексного процесса по шаблону для данного документа, если процесс по этому шаблону уже запущен.
02.11.2020 1907 vlad356987 15
Ограничение выбора вариантов шаблонов запуска процессов в Документообороте 2.1
Столкнулся с проблемой, что Документооборот позволяет пользователю выбрать к запуску шаблоны процессов, которые напрямую не указаны в том виде документа, для которого производится запуск процесса.
20.07.2020 3460 Maito 8
Визуализация электронной подписи в заполняемом файле MS Word в 1С:Документооборот
Произвольное размещение визуализации электронной подписи в заполняемом документе MS Word в конфигурации 1С:Документооборот.
09.04.2020 7699 Xleo777 6
Делегирование в 1С:Документооборот
Важной составляющей при настройке прав доступа пользователей в электронный документооборот «1С:Предприятия» является механизм делегирования прав. Он применяется в случае временного отсутствия одного сотрудника (отпуск, больничный и пр.) и необходимости перенаправлять обязанности и ответственность за своевременное выполнение задач на другого сотрудника. При процессе делегирования возможна передача нескольких или всех прав.
25.02.2020 9091 Koder_Line 4
Отправка "Заявления на подключение к ЭДО ПФР" из программы "1С: Бухгалтерия предприятия, ред. 2" для СЗВ-ТД
Инструкция по отправке "Заявления на подключение к ЭДО ПФР" из программы "1С Бухгалтерия предприятия, ред. 2" для обмена сведениями об электронных трудовых книжках и отправки отчетов по форме СЗВ-ТД.
Объем присоединенных файлов достиг 75% от объема БД. Резервное копирования и разворачивание БД для разработчиков стало занимать много времени. Принято решение перенести все присоединенные файлы в тома.
Обработка написана на основе типовой обработки "Перенос файлов в тома" конфигурации УТ 11.1.10.94.
Типовая обработка переносит файлы по справочнику «Версии файлов» из регистра сведений «Хранимые файлы версий», а предлагаемая по всем справочникам присоединенных файлов из регистра сведений «Присоединенные файлы». В обработке формируется текст запроса по метаданным, содержащим "Присоединенные файлы" в наименовании и типом хранения в информационной базе. По всем присоединенным файлам двоичные данные регистра сведений "Присоединенные файлы" переносятся в том.
Версия платформы 8.3.5.1486. Сервер 1С x3 2 Linux Debian.
Для настройки хранения
С оздать общий ресурс на файловом сервере. Например \\ FILESERVER\SHARE\
В 1С настроить работу с файлами. Меню Администрирование - Н астройки работы с файлами — Включить параметр « Хранить файлы в томах на диске».
В
Создать в 1С том для хранения файлов.
Для сервера 1С под управлением Windows указать путь к общему ресурсу для хранения файлов. Для сервера под управлением Linux можно указать только локальный путь. Для этого нужно создать каталог на сервере 1С, в который будет монтироваться общий ресурс.
mkdir / mnt/files/ .
И п римонтировать к созданному каталогу общий ресурс:
mount -t cifs -o username= DOMAIN \\ USER ,password= USER_PASSWORD ,dir_mode=0777,file_mode=0777 // FILESERVER / SHARE / /mnt/ files /
Указать для тома локальный путь / mnt/files/. Теперь все файлы будут хран и т ь ся в томе на общем ресурсе
В обработке формируется текст запроса по метаданным, содержащим "ПрисоединенныеФайлы" в наименовании и типом хранения в информационной базе. По всем присоединенным файлам двоичные данные регистра сведений "Присоединенные файлы" переносятся в том.
Обработка запускалась на конфигурации УТ 11.1.10.94.
После выполнения обработки нужно выполнить shrink на MS SQL или vacuum на Postgresql. На файловой версии БД выполнить тестирование и исправление с включенным сжатием таблиц.
Обновление от 20.12.2019
Добавлена версия обработки для конфигурации УТ 11.4 где был переименован общий модуль "ФайловыеФункцииСлужебный" в "РаботаСФайламиСлужебный". И регистр для хранения присоединенных файлов "ПрисоединенныеФайлы" в "ДвоичныеДанныеФайлов".
Задача была – скопировать одну базу в другую, причем перенести список пользователей и настройки пользователей. Потому что в настройках пользователей было очень много хитроумных разукрашиваний и отборов, следовательно, повторять это руками было бы долго. Была написана обработка, которая выгружает настройки пользователей из одной базы в файлы и потом позволяет их загрузить из файлов в другую базу. Можно использовать и для переноса настроек между одними пользователями, если типовое копирование не нравится.
Обработка имеет форму:
Нужно указать каталог выгрузки, туда будут выгружены файлы XML, название файла соответствует названию пользователя. При этом недопустимые символы в имени файла удаляются.
После выгрузки можно убрать ненужные файлы и выполнить загрузку:
При загрузке если имя пользователя не нашлось, выдается предупреждение.
После копирования настройки проверил – настройки у пользователя перенеслись, форма списка заказов открывается с нужным разукрашиванием:
Если галочка " Идентифицировать пользователя по логину" не установлена, то имена файлов формируются из имени пользователя:
Если галочка " Идентифицировать пользователя по логину" установлена, то имена файлов формируются из имени входа пользователя (логина):
В базе-получателе система для каждого пользователя формирует имя файла и ищет имя файла в каталоге обмена. При этом точно так же удаляются недопустимые символы из имени файла.
При переносе переносятся данные хранилищ:
- ХранилищеВариантовОтчетов
- ХранилищеНастроекДанныхФорм
- ХранилищеОбщихНастроек
- ХранилищеПользовательскихНастроекДинамическихСписков
- ХранилищеПользовательскихНастроекОтчетов
- ХранилищеСистемныхНастроек
Было замечание, что настройки хранятся также в регистре сведений "ПользовательскиеНастройкиДоступаКОбработкам", но это уже прикладные данные БСП, их можно перенести другими обработками. Возможно, в будущем доработаю и эти неуниверсальные настройки.
История разработки
Доработки в версии 2020-11-30:
- Корректная работа в клиент-серверной версии, файлы сохраняются и считываются в каталог на клиенте
- Выгрузка настроек включена в попытку/исключение, чтобы если выгрузка ошибочна, выдавалась ошибка и ход выгрузки не прерывался
Доработки в версии 2020-02-18:
- Добавлена кнопка выбора каталога
- Добавлен режим идентификации пользователя по логину
- Учтены новые хранилища в Платформе, раньше перенос делался только по ХранилищеСистемныхНастроек
- При отборе настроек по пользователю теперь всегда используется логин, а не имя пользователя для корректной работы, раньше выгружались пустые настройки.
Версия обработки 2020-11-30. Протестировано и обновлено 30 ноября 2020 на релизе 8.3.16.1224 в конфигурации БП 3.0.82.34.
Здравствуйте всем! Стоит задача перенести справочник номенклатура из УТ в УНФ. Переношу с помощью КД. Все ясно кроме одного момента. Как перенести ОсновноеИзображение номенклатуры с помощью КД если в УТ - реквизит ОсновноеИзображение имеет тип хранилище значений а в УНФ - это справочник файлы. Может кто сталкивался подскажите будьте добры..
Тебе надо привести твой файл к типу ХранилищеЗначения.
Я не знаю, как там в УНФ, скорей всего тоже хранилище.
Перед выгрузкой изображения пишешь:
Значение = Источник.ТвойФайл.РеквизитХранилище;
Ну или как там у тебя в УНФ добраться до реквизита, который этот файл содержит.
(0) Я бы кодировал изображение в УТ в формат base64 и передавал в УНФ в параметрах объекта. При загрузке объекта в УНФ раскодировать данные и записывать в справочник файлы или что там в УНФ.
(7) 1.Сделай правило для справочника "Файлы" без источника, укажи реквизиты
2. В ПКО "ОсновноеИзображение" перед выгрузкой пиши:
Я бы делал так:
- перегнал исходное Хранилище значений в Base64 строку, которую можно безболезненно передавать как текст
- при загрузке конвертировал это строку обратно в файл
Далее надо в соответствующей подсистеме УНФ смотреть, что надо подать на вход процедуре, чтобы она закинула файл туда куда нужно и привязала его к нужному объекту (там их несколько есть).
В простейшем случае, можно самому сделать элемент справочника Файл, но это не лучший вариант, т.к. организация хранения может поменяться (хранили в конфигурации а потом решили в томах) и ваш код перестанет работать.
Лучше просмотреть экспортные процедуры подсистемы Файлы и использовать именно их после загрузки самого элемента номенклатуры.
(14) На правилах КД у меня работат все переносы (между ЗУП, УПП, УТ и БУ + самописная на БСП).
Чтобы понять как работать с КД, необходимо просмотреть всю логику работы универсальной загрузки XML (что я и сделал в свое время).
Все остальное - это гадание на галочках в правилах без понимания как все это обрабатывается изнутри.
(18) Вы не могли бы подробней описать как сделать перенос?
Я думаю это пригодится для других.
Как преобразовывать и в какую процедуру задействовать?
(19)
У меня нет под рукой УНФ, и я не помню, как именно там привязывается изображение к номенклатуре. Т.е. там именно реквизит с типом СправочникСсылка.Файлы или просто список файлов привязанных в элементу справочника Номенклатуры через владельца.
Исходя из этого будет понятно как искать этот присоединенный файл в справочнике УНФ (т.к. никакого GUIDа при выгрузке у вас нет).
Далее необходимо создать ПКО для конвертации из хранилища значений в СправочникСсылка.Файлы. В это правило добавляем параметр [Base64] и ставим галку [Получать из входящих данных].Далее перед выгрузкой пишем:
//Получение данных
Таким образом, мы получим при загрузке сам файл в виде строки.
Далее надо настроить поиск этого самого файла в справочнике Файлы.
После этого при загрузке возможны 2 варианта:
Чтобы не гадать. Я запустил бы мониторинг производительности и сделал бы обе эти операции в УНФ "руками". Протом проанализировал какие функции используются в том или ином случае.
Результат анализа написал бы в После загрузки ПКО.
Как пример вот кусок кода в ПКО для переноса УТ => РАРУС CRM (писал напарник):
(19) Обратите внимание:
- в БСП две подсистемы работы с файлами (в УНФ скорее всего тоже). Одна подразумевает версионирование, а вторая нет. Модули для добавления у них различные.
- обязательно протестируйте вариант добавление новой номенклатуры с новым файлом, т.к. в этом случае вам надо добавить элемент в справочник Файлы с владельцем (элемент спаравочника Номенклатура), который еще не записана (и фактически ссылки у вас еще нет).
Итак в ПКО Номенклатуры в обработчике После выгрузки пишу:
Вся номенклатура сначала загружена без картинок, то есть она существует в базе. При попытке загрузить её уже с картинками выскакивает ошибка при записи номенклатуры как бы объект(номенклатура) несоответвует (изменен)("операция не может быть выполнена из-за несоответствия версии") , оно ясно что он изменен в той функции из бсп, но я же в конце пишу отказ . почему все равно производится попытка записи.
Кстате для этого первого элемента на котором и выскакивает ошибка перегрузилось фото и подставилось как мне надо. Как мне обойти эту ошибку что б номенклатуру не записывало?
Почему используете обработчик ПослеВыгрузки?
Нужно использовать [ПередВыгрузкой] для формирования Base64 строки и [ПослеЗАГРУЗКИ] для добавления изображения на этапе загрузки.
(23) "оно ясно что он изменен в той функции из бсп" - не совсем понимаю зачем эта функция должна записывать номенклатуру переданную по ссылке в [ВладелецФайла].
(26) Я "Перед выгрузкой" сделал как вы говорили. И на "Перед загрузкой" получил двоичные данные все как положено.
В общем с задачей справился, благодаря Вам! Создал с помощью конвертации элементы справочника "файлы", и отделно обработкой привязал их к номенклатуре! Все получилось! Еще раз спасибо Вам большое, без Вас я б к этому решению не пришол бы сам..
(28) Меня просто смутила фраза "Итак в ПКО Номенклатуры в обработчике После выгрузки пишу:". Поэтому и спросил.
Я рад что у вас все получилось. Хороших выходных .
Читайте также: