Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов).
Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций.
Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ.
При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
(96) при использовании вашей обработки велик риск машинально влепить ошибку в данные. Я сам для себя когда-то подобные "быстрые выгрузки" изобретал. Их использование совершенно не оправдало себя. И вот, спустя несколько лет, перенеся туеву хучу данных между самыми различными конфигурациями, лучше чем КД я так для себя ничего и не нашел.
(97) Всякому овощу свое время. Где КД2, где КД3, где свои обработки.Я сталкивался с ситуацией, когда загрузки через КД шли раз в 50 дольше или валились на файле 100Мб. А файлы были и 10+ Гиг...
Пробую обработкой выгрузить справочник Контрагентов из БГУ 1 в БГУ 2 (конфигурации в части справочников почти идентичны)
В обычном режиме нет конструктора, запускаю БГУ 1 в управляемом - выгружаю справочник ОС, далее при загрузке только группы загружаются, за эллементах ошибка.
Придётся через КД писать, но автору спасибо за труды всё-равно
При выгрузке Справочника "Номенклатура" выдает сообщение:
{ВнешняяОбработка.ВыгрузкаЗагрузкаJSON.МодульОбъекта(356)}: Ошибка при вызове метода контекста (XMLЗначение)
Значение = XMLЗначение(Тип(ОбъектСтруктура.TYPE),ОбъектСтруктура.UID);
по причине:
Ошибка преобразования данных XML
Хотя например Контрагенты почти все перенеслись, и в конце обработки вышло такое же сообщение
Подскажите, что я делаю не так. Ошибка на скрине, не могу выбрать запросом ни один справочник.
1С:Предприятие 8.3 (8.3.6.2390)
Управление торговлей, редакция 11.2 (11.2.2.106)
Версия обработки 1.2.1
Здравствуйте , помогите пожалуйста разобраться как пользоваться обработкой начинающему
Мне нужно перенести из одной ИБ в другую ИБ контактную информацию по всем контрагентам , т.к в этой ИБ этой информации нет (не заносили) Как нужно мне действовать? Сформировать запрос, параметры его, выполнить его, и перенести все адреса , телефоны и т.д. в другую ИБ?
У меня не получается
С уважением kermet
(107) kermet, В БП 3.0 контактная информация о контрагентах содержится в самих записях справочника контрагентов.
Соответсвенно, нужно просто перенести контрагентов. Отдельно ничего из справочников переносить не нужно.
Разве что виды контактной информации, если они отличаются в 2х базах.
(109) wrangel87, Зависит от того, чем структуры документов отличаются. Если похожи, то подойдет.
Если обе конгфигурации на 8.3, то пробовать последнюю, иначе версию для 8.2.
Но вообще она больше для разового быстрого переноса. Часть реквизитом скорее всего недозаполнятся.
Если для постоянного использования, то лучше написать один раз правила переноса для типового обмена.
(112) zels, Управляемые формы отлично работают в любых конфигурациях. Достаточно запустить конфигурацию в управляемом режиме. Насколько я знаю, любые актуальные конфигурации поддерживают возможность запуска в управляемом режиме, даже если основной режим работы обычный. Либо можно просто встроить обработку в конфигурацию.
Не вижу смысла дублировать функционал на устаревший формат форм.
(113) zels, Не помню точно. Возможно, запятая тоже экранируется.
(114) разумеется Вы сами решаете на каких формах и как реализовать функционал.
К примеру я опубликовал обработку на обычных формах Формирование html-файла по конфигурации, а потом добавил управляемую. И хотя в приведенных картинках остались обычные формы, в описании я упомянул про возможность работы с управляемыми формами и функционал там абсолютно такой же.
У Вас же возможность работы с обычными формами отмечена в заголовке и, естественно, предполагаешь полный функционал. Фраза "проверялась на 10.3" подкрепляет это предположение. Скачиваешь и - облом. Я бы вообще убрал ОФ из заголовка, а в тексте отметил возможность работы с ним в урезанном режиме. Имхо, так было бы правильней.
Со мной приключился такой казус - когда-то я ее скачал, посмотрел. Сейчас встала задача по обмену с БГУ (а у меня большинство клиентов УТ и БГУ работают с конфигурациями на обычных формах), я открыл обработку и не увидел там запросов (а ведь были, помню). Решил, что это устаревшая версия и снова скачал. И только тут разобрался в чем дело.
Обработка интересная и я бы ее скачал в любом случае, а так получилось, как в анекдоте: "ложечки нашлись, а осадочек остался..."
(114) насчет запятой.
Онлайн просмотрщик Json online ее пропускает и показывает правильно, а Altova XMLSpy 2016 ругается и вообще не показывает файл в виде таблицы. XMLSpy, имхо, лучший инструмент для просмотра больших XML, json и т.п. файлов: такого мощного и удобного табличного режима показа файла я нигде больше не видел.
В вики запятой нет в перечне экранируемых символов. Да и по смыслу - зачем, если мы обрабатываем текстовое поле? Запятая внутри текста не лучше и не хуже таких символов, как: ?!.:;[}+- и т.п.
P.S. Я ступил насчет показа "Код,Наименование" в банковских счетах - там так заполнено наименование...
Еще обна непонятная вещь. Выгружаю справочник контрагенты из БП30, а файл не проходит проверку из-за реквизита "банковский счет".
Ссылка на него выгружается как "Наименование": "40703810245000100337\, ОМСКОЕ ОТДЕЛЕНИЕ N 8634 ОАО \"СБЕРБАНК РОССИИ\""
И тут две вещи вызывают вопросы:
1. запятая между номером счета и наименованием экранируется: " \,", а вроде как не должна.
2. непонятно, почему ссылка на банковский счет представляется как номерсчета+наименование. Не найду в конфигурации, где задано такое представление. Ну нету в банковских счетах функции "ОбработкаПолученияПредставления".
117.
Vladimir_Konyrev
22530.06.16 11:25 Сейчас в теме
Обработка хорошая, помогла! Спасибо! Однако было бы здорово выгружать и сопутствующие объекты, пришлось всех их перечислять. Благо их оказалось не много.
Не представляю пользы без выгрузки объектов по ссылкам. Нужно перенести документы за месяц - придется добавлять для всех ссылочных реквизитов значения отдельно, это не удобно.
{Форма.ВыборИзЗапроса.Форма(118)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
НовыйЭлемент.ПутьКДанным = "РезультатЗапроса." + Колонка.Имя;
по причине:
Недопустимое значение
(124) xten, Да, в обработке есть возможность выбора любых данных произвольным запросом.
(125) xten, Есть в планах перевод на платформенную сериализацию для 8.3.7 и выше и более удобный интерфейс.
А какие еще данные хотелось бы переносить?
(129) diocon, на обычных формах нет конструктора, но Вам ничего не мешает допилить свой, я сделал, но смысла особо мало так как для больших данных примерно 4000 элементов текст json даже скопировать сложно. для единичных элементов работает на УРА!Спасибо !
добрый день
платформа 8.3.9.1818, бухгалтерия базовая 3.0.43.198 - при попытке запуска из меню "файл - открыть" - пишет "нарушение прав доступа (хотя пользователь - администратор системы и полные права), а при попытке подключить через дополнительные обработки пишет "не удается подключить, возможно обработка не предназначена для данной конфигурации". как вылечить? (перенос планируется в унф последнего релиза)
135.
user616689_elsi1
10.01.17 13:08 Сейчас в теме
Привет! не могу понять как пользоваться добавить запросом, не получается его создать((
если переношу справочник номенклатуры поштучно, то переносится, но без вида номенкатуры.
Главный вопрос у меня, переношу документ инветаризации товаров, переносит только количество и сумму, а саму номенклатуру в документе не переносит пишет объект не найден, конечно объекта нет в базе, его надо с документом перенести. Можете помочь? что я делаю не так?
(135) Нужно дополнительно перенести номенклатуру, отобрав ее вручную или запросом.
Можете просто доотобрать номенклатуру запросом вида "Выбрать Товары.Номенклатура КАК Ссылка из Документ.Инвентаризация.Товары КАК Товары ГДЕ Товары.Ссылка = &МойДокумент"
Ну и вид номенклатуры тоже перенести отдельно. Думаю, он один, так что его можно выбрать при переносе вручную.
137.
user616689_elsi1
10.01.17 14:49 Сейчас в теме
(136)да получилось, сначала номенклатуру, потом документ с этой номенклатурой.
Не поняла как пользоваться "добавить запросом"( номенклатуры очень много, ручками просто не реально, подробнее можете объяснить или может скрины есть
(139) Оксана, судя по картинке Вы перенесли только документ.
Необходимо еще перенести используемую в нем номенклатуру.
Записала небольшой видеопример по переносу номенклатуры, используемой в отдельном документе https://youtu.be/OAr_M2SfgyE
142.
user616689_elsi1
16.01.17 17:46 Сейчас в теме
(141)
Спасибо, все работает, сегодня столкнулась с проблемой, что большие (246 позиций) документы не "тащит" с ценой (лько кол-во), на тестовой уменьшила количество до 100 наименований, все легло, на рабочей базе так и "колбасит", завтра на свежих бэкапиках попробую.
Хорошая штука, но пришлось немного допилить:
1. Сделал загрузку файлов и JSON->объекты в обычном приложении, т.к. если запускать в тонком клиенте, то при записи объектов могут возникать ошибки (если используются процедуры обычного клиента).
2. Сделал возможность транзакции и вывода через 100 объектов, т.к. при загрузке десятков тысяч объектов вывод каждого тормозит.
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJsonОбмен);
МассивСсылок = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// если мы записали имя объекта метаданных в массив, то тут его получаем
//ПолноеИмяМетаданных = МассивСсылок[0];
РегистрСведений = РегистрыСведений[СтрЗаменить(ПолноеИмяМетаданных,"РегистрСведений.","")];
МетаданныеРегистра = Метаданные.РегистрыСведений[СтрЗаменить(ПолноеИмяМетаданных,"РегистрСведений.","")];
ВыгрузкаЗагрузкаJSON = ОБработки.ВыгрузкаЗагрузкаJSON.Создать();
Сч = 0;
Для К = 1 По МассивСсылок.Количество() - 1 Цикл
НаборЗаписей = РегистрСведений.СоздатьНаборЗаписей();
СтруктураДанных = МассивСсылок[К];
Для Каждого ТекЭлементСтруктуры Из СтруктураДанных Цикл
ВыгрузкаЗагрузкаJSON.ПереносимыеОбъекты.Очистить();
ТекТипЗнч = ТипЗнч(ТекЭлементСтруктуры.Значение);
Если ТекТипЗнч = Тип("Строка") И Лев(ТекЭлементСтруктуры.Значение,1) = "[" Тогда
ВыгрузкаЗагрузкаJSON.ТекстJSON = ТекЭлементСтруктуры.Значение;
Попытка
ВыгрузкаЗагрузкаJSON.JSONВОбъекты();
Исключение
//ЗаписьЖурналаРегистрации("ЗагрузитьДанныеHTTPОтветаИзМассива",УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
КонецПопытки;
Если ВыгрузкаЗагрузкаJSON.ПереносимыеОбъекты.Количество() > 0 Тогда
СтруктураДанных.Вставить(ТекЭлементСтруктуры.Ключ,ВыгрузкаЗагрузкаJSON.ПереносимыеОбъекты[0].СсылкаНаОбъект);
КонецЕсли;
КонецЕсли;
КонецЦикла;
// обработали структуру , переходим к загрузке
Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.Измерения Цикл
НаборЗаписей.Отбор[ТекОбъектМетаданных.Имя].Установить(СтруктураДанных[ТекОбъектМетаданных.Имя],Истина);
КонецЦикла;
НоваяЗапись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись,СтруктураДанных);
Попытка
НаборЗаписей.Записать();
МассивЗагруженныхОбъектов.Добавить(НаборЗаписей);
Сч = Сч + 1;
Исключение
КонецПопытки;
Спасибо за обработку. Успешно перенес данные из БП3.0 в УПП1.3
Из пожеланий хотелось бы уже в базе приемнике по загруженному списке объектов открывать "Универсальный подбор и обработка объектов" чтобы сразу же править ссылки на объект не найден.
Еще раз спасибо!!! очень помогло
(150) В обработке есть возможность использования произвольного запроса с любыми условиями.
Не вижу пока особого смысла усложнять интерфейс разными вариантами.
При подключении обработки для 8.3 выдается:Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
У меня : 1С:Предприятие 8.3 (8.3.9.2233),Бухгалтерия предприятия, редакция 3.0 (3.0.51.21)
В чем может быть проблема?
странно, но факт
перегружал ранее и все было хорошо - возможно просмотрел и просто все объекты были в наличии для заполнения документа
но тут начал перегружать между 2 базами - одинаковыми, релизы немного отличаются
так контрагент и банковский счет в документе не перенесся - 1С:Бухгалтерия Универсал, редакция 3.0 (3.0.49.27)
Спасибо, переработал под свои нужды, очень сэкономило время!!! Я переделал выгрузку из запроса в ТЗ на форму и уже от туда сериализирую любые значения! Спасибо большое!
ВОПРОС! в конф УТ 10,3 нет кнопки "добавить запросом". В БП 3,0 есть! Это с интерфейсом связано? И что теперь делать? Я не могу руками выбирать контрагентов и документы. Мне из УТ в БП надо переносить документы и справочники за период. Классический вопрос: "Что делать?"
(161) Возможность добавления запросом есть только на управляемой форме. Вы можете запустить УТ10 в управляемм режиме, чтобы использовать более функциональную управляемую форму.
(163)
Платформа: 1С:Предприятие 8.3 (8.3.10.2561)
Конфигурация: "Управление торговлей", редакция 10.3 (10.3.43.2) (http://v8.1c.ru/trade/) Copyright (С) ООО "1C-Софт", 2003-2017. Все права защищены
(http://www.1c.ru) Режим: Файловый (без сжатия)
Приложение: Толстый клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Версия 8.2
Ошибки:
--------------------------------------------------------------------------------
20.09.2017 11:36:40
Ошибка инициализации модуля: ОбщийМодуль.ПолныеПрава.Модуль
по причине:
{ОбщийМодуль.ПолныеПрава.Модуль(96,44)}: Процедура или функция с указанным именем не определена (глЗначениеПеременной)
Запрос.УстановитьПараметр("Пользователь", <<?>>глЗначениеПеременной("глТекущийПользователь"));
Так я понимаю, посмотрев видео пример, что я буду отбирать документы и справочники до "ишачьей пасхи", при том мне надо предварительно пойти на курсы программистов ((((((((((((
При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
Возможно ли (малой кровью) организовать перегрузку Номенклатуры из УТ11 в БП 3 (в составе документов) если в УТ номенклатура с характеристиками (они подчинены номенклатуре и уникальны) т.е. возможно ли характеристику в УТ сопоставить с номенклатурой в БП, и при создании новых элементов номенклатуры в БП, через владельца характеристики "добраться" до Наименования/Артикула самой номенклатуры в УТ. ( в двух словах - нужно сделать регулярную выгрузку из УТ 11.4 в БП 3.0, но в УТ есть характеристики и желательно, что бы в БП для каждой характеристики была своя номенклатура - ищу варианты как это сделать быстро)
Спасибо автору, периодически пользовался, все переносилось.
Недавно переносил документы ЗУП- Начисление оценочных обязательств. Получившийся текст JSON сохранял в файл. При загрузке в копию базы заметил такой баг: если в табличной части (Расчет обязательств и резервов по отпускам) в первой строке заполнены значениями не все колонки, тогда эта колонка переносится пустая, хотя в файле выгрузки значения есть. Если перед выгрузкой исходный документ отсортируешь так, чтобы по первой строке все значения были заполнены, - тогда все хорошо. Рассказал все подробно с надеждой на исправление.:)
Добавил кнопку "Добавить из ссылки..." на первую вкладку, которая может добавить объект по его ссылке.
Очень часть бывает так, что надо выгрузить из рабочей базы конкретный документ, который сейчас открыт на экране. Для этого копируем его ссылку, вставляем в обработку выгрузки/загрузки и выгружаем в json. Никаких установок типов, поисков по номерам документов и ожидания динамических списков, в которых могут стоять ненужные отборы.
Прикреплю доработанную обработку здесь, если Евгения не против.
Скачала, просто нужно было очень быстро. Жаль потраченных денег. Практически ничего не работает, в запросе в параметрах группа не вызывается, даже если делать ввод нужных руками, то ничего не переносит
Тестировалась в 1С УПП. После выбора объекта выгрузки и установки отборов при нажатии на Выгрузить выдает ошибку. Поле объекта не обнаружено (ИмяПредопределенныхДанных)
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(2141)}: Структура.Вставить("ИмяПредопределенныхДанных", ЗначениеСсылки["ИмяПредопределенныхДанных"]);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1691)}: СтруктураСсылки = ПодготовитьСтруктуруСсылки(СсылкаНаОбъект);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1797)}: ВыгрузитьСсылку(ЗначениеРеквизита,,МассивОбъектов,,ИсточникСсылки,ИмяРеквизитаИсточника);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1727)}: СтруктураРеквизита = ПодготовитьСтруктуруРеквизита(ВозможныйСсылочныйТип.Значение.ЗначениеПоля,
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1695)}: ДополнитьСтруктуруРеквизитами(СтруктураСсылки,
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(837)}: ВыгрузитьСсылку(Выборка.Ссылка, СтруктураДанных, МассивОбъектов,СтруктураТабличныхЧастей,,,НастройкиСериализации);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(766)}: ВыгрузитьДанныеПоСтроке(СтрокаДанных,МассивОбъектов, НастройкиСериализации);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(732)}: ВыгрузитьДанные(МассивОбъектов,НастройкиСериализации);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.Форма.Форма.Форма(281)}: Результат = ОбъектСервер.ВыгрузитьНаСервере(ТолькоПересчет);
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.Форма.Форма.Форма(162)}: Резул
Пытаюсь сделать выгрузку справочника Контрагенты запросом. Конструктором выбираю только нужные поля, без партнеров, таблиц с контактной информацией и прочими, но в текст они все равно попадают. Что я делаю не так?
Конфигурация ЕРП 2,4.