Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ)

Администрирование - Распределенная БД (УРИБ, УРБД)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

Универсальная выгрузка любых объектов 1С в текстовый файл и загрузка в любую другую базу 1С. Либо просто перенос через буфер обмена.

Переносит данные между любыми ИБ на любых конфигурациях, интерфейсах и платформах 8.2, 8.3 (в том числе в режиме совместимости с 8.1). Не требует никаких настроек.

На скриншотах пример переноса документов и справочников из ERP Такси 8.3 в БП1.6 ОФ 8.2.

При переносе данных поля, которые совпадают, заполняются, поля, которые не совпадают, игнорируются. Табличные части очищаются и переносятся заново. Существующие объекты обновляются. Новые записываются с УИДом базы-источника.

Синхронизация ссылок по УИД. Обработка ничего не проверяет, просто переносит объекты в режиме обмена данными. Движения не переносит. 

Порядок работы:

Порядок работы аналогичен типовой обработке "Выгрузка/загрузка XML"

1. Запускаем обработку в исходной базе.
2. Добавляем в ТЧ объекты, которые хотим перенести. Либо поштучно, либо запросом. Для формирования запроса можно использовать конструктор запросов. 
3. Нажимаем "Объекты -> JSON". Текст отображается в правом поле. 
4. Нажимаем "Сохранить в файл" или копируем сформированный текст в буфер обмена - Ctrl+С
5. Открываем вторую базу.
6. Нажимаем "Загрузить из файла" или вставляем текст из буфера Ctrl + V
7. Нажимаем кнопку "JSON -> Объекты"
8. Проверяем результат

Перенос в отличающиеся объекты метаданных (например документы поступления в документы реализации) стандартно не предусмотрен. Но можно нажать Ctrl+H и заменить имена объектов в тексте перед загрузкой.
Аналогично можно заменить перед загрузкой имена полей, если в справочниках двух баз отличаются имена реквизитов.

p.s.  Также можно использовать для корректировки невидимых на форме реквизитов. Выгружаем объект в текст, правим нужные реквизиты, загружаем обратно.  

Рекоммендуемый режим работы УФ Такси. Также есть дополнительная обычная форма. 

Для преобразования объектов в текст используется эта библиотека в1.2. Дополнительно она доработана для автоматического формирования перечня метаданных, обработки возникающих из-за расхождения перечня метаданных ошибок и добавлен удобный интерфейс выбора объектов и запись объектов сразу после переноса.

upd. Добавлена версия 1.2.1. Доработан управляемый интерфейс аналогично типовой обработке "Выгрузка/загрузка XML". Упрощен выбор объектов для переноса, добавлена возможность добавления объектов запросом для массовой выгрузки. С 8.3.5.1068 доступен конструктор запроса.

Проверялась на: БП3.0, БП1.6, УПП 1.3, ERP 2.0, УТ11.1, УТ10.3, Розница 2.1 - теоретически должна корректно переносить данные между любыми конфигурациями 8.2-8.3 (в том числе в режиме совместимости с 8.1).
Если на какой-то не работает, пишите в комментариях.

Также рекоммендую из других универсальных разработок: 

  1. [Расширение] Проверка ввода данных и события форм без изменения конфигурации (для БП, УТ, ЗУП, Розницы, ERP)
  2. [Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении
  3. Комплексная проверка ведения учета в УТ10, УТ11, КА, УПП, ERP - простой отчет для проверки корректности ведения учета по всем разделам учета.

Скачать файлы

Наименование Файл Версия Размер
ПереносОбъектов1С_JSON_1_2.epf (устарело)
.epf 19,77Kb
26.08.16
372
.epf 1.2.0 19,77Kb 372 Скачать
ВыгрузкаЗагрузкаJSON82_1.2.1.epf (8.2+)
.epf 26,88Kb
26.08.16
743
.epf 1.2.1 26,88Kb 743 Скачать
ВыгрузкаЗагрузкаJSON_1.2.1.epf (8.3+)
.epf 26,89Kb
26.08.16
1821
.epf 1.2.1 26,89Kb 1821 Скачать

См. также

Вознаграждение за ответ
Показать полностью
Комментарии
1. Z Lu (validat) 1 22.10.14 23:05 Сейчас в теме
Спасибо. Поработаю с обработкой, непременно напишу о результатах
2. Денис (EM-S) 28.10.14 23:48 Сейчас в теме
В рознице 2.0 8.2 не запускается. Пишет переменная не определена ЭтотОбъект. Почему?
3. Евгения Карук (ekaruk) 3192 29.10.14 09:12 Сейчас в теме
(2) EM-S, В обновленной версии возникала ошибка при запуске в режиме совместимости.
Поправила.
Можете скачать еще раз или заменить в старой "ЭтотОбъект" на "ЭтаФорма"
4. Денис (EM-S) 30.10.14 00:26 Сейчас в теме
А можете проверить эту обработку в Рознице 2.0?: Не формируется запрос на выбор всех контрагентов.
При нажатии "Объекты -> JSON" выдает "Преобразование не удалось"
5. Евгения Карук (ekaruk) 3192 30.10.14 06:42 Сейчас в теме
(4) EM-S, Версии 2.0 не нашла.
Запустила на демобазе "Розница, редакция 2.1 (2.1.4.9)" на полной поддержке.
Платформа "1С:Предприятие 8.3 (8.3.5.1119)"
Абсолютно корректно формируется запрос, выгружаются все контрагенты и загружаются обратно.

Выложите куда-нибудь на файлообменник свою копию, попробую проверить.
Или можете свою обновить до актуальной. Данные от этого не изменятся.
6. Игорь Богданов (avz_1C) 10 01.11.14 15:01 Сейчас в теме
7. Tolik (gortol) 178 11.11.14 11:20 Сейчас в теме
ВыгрузкаЗагрузкаJSON_1.2.1.epf -> к сожалению не вызвать конструктор запросов - ошибка: неизвестное имя формы: externaldataprocessor.querywizard.form
то есть выбрать скажем все значения справочника уже не могу(((

платформа 8.3.5.1146, конфа Бух3.0
8. Евгения Карук (ekaruk) 3192 11.11.14 13:25 Сейчас в теме
(7) gortol, Попробовала на 8.3.5.1248. У меня тоже проявилось в серверном варианте в толстом клиенте.
Пока не могу понять причину. Возможно, ошибка платформы, позже поправят.
Корректно работает в файловом варианте или в тонком клиенте для серверной базы.

В крайнем случае тест запроса можно вручную написать или сформировать в конфигураторе и скопировать.
9. Наталья (valya977) 5 11.12.14 21:57 Сейчас в теме
Спасибо обработка сработала на ура! Бухгалтерия предприятия, редакция 3.0 (3.0.31.14)
10. Алексей Кожанов (Kozhanov) 17.12.14 16:58 Сейчас в теме
11. pizzeed (pizzeed) 11.01.15 18:13 Сейчас в теме
Доброго времени суток.
Существует ли возможность подбора не вручную позиций справочников Номенклатура и Контрагенты?
У меня не получилось. Огромная база номенклатуры, очень неудобно выбирать каждую позицию вручную для формирования Текста JSON.
Использовал ВыгрузкаЗагрузкаJSON_1.2.1.epf
Выгружаю из УТ (10.3.27.2), 1С:Предприятие 8.2 (8.2.19.90), планирую загрузить в Комплексная автоматизация, редакция 1.1 (1.1.55.1), 1С:Предприятие 8.3 (8.3.5.1068)
12. Евгения Карук (ekaruk) 3192 12.01.15 10:50 Сейчас в теме
(11) pizzeed, Вы можете выбрать произвольным запросом данные по любому условию.
Такая возможность есть только в управляемой форме. Соответственно нужно запустить конфигурацию в управляемом режиме. Насколько я помню, УТ 10.3 вполне запускается в тонком клиенте.
13. Анатолий (zerik) 12 14.01.15 00:41 Сейчас в теме
Отличная обработка, спасибо.
Мужу респект =) я его спалил по комметриям в модуле =)
sheffchik; корум; +2 Ответить
14. Ольга Иванова (olga1512) 6 26.01.15 23:38 Сейчас в теме
Спасибо большое!!! все работает - вы молодец!!!!!
15. Наталья Медведева (masik85) 20 03.02.15 16:18 Сейчас в теме
Очень здорово придумано!! Браво! Пробовала на переносе ЗУП 8.2- УПП 8.3(обычное приложение), что было в базе все нашлось и расставилось, чего не было- появились UIN и <Объект не найден> сначала испугалась, что создались объекты, но...пронесло :)) Спасибо .
Скачала 8.2+ ,кнопки Добавить запросом и выгрузить в файл- нет.
16. Евгения Карук (ekaruk) 3192 03.02.15 16:37 Сейчас в теме
(15) masik85, В отличии от типовой выгрузки, переносятся только те объекты, которые вы добавили в список.
Если в объектах есть ссылки на отсутствующие во второй базе элементы, то они будут отображаться как "объект не найден"
17. Наталья Медведева (masik85) 20 03.02.15 16:42 Сейчас в теме
Скачала 8.2+ ,кнопки Добавить запросом и выгрузить в файл- нет.
18. Евгения Карук (ekaruk) 3192 03.02.15 16:50 Сейчас в теме
(17) masik85, Этот функционал только на управляемой форме.
Нужно запустить конфигурацию в управляемом режиме либо включить обработку в состав конфигурации и использовать управляемую форму как основную..
19. Наталья Медведева (masik85) 20 03.02.15 16:53 Сейчас в теме
20. Александр Немировский (dreamworker666) 18.02.15 19:00 Сейчас в теме
При попытке переноса 1 контрагента через управляемую форму данные выгружаются успешно из ут 11.1.7.49 но при загрузке в ут 11,1,9,70 выдает вот такое сообщение и элемент не создается


{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(93)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("Справочник.Партнеры." + ИмяФормыДляОткрытия, Новый Структура("Ключ", Объект.Партнер), );
по причине:
Объект не найден
21. Евгения Карук (ekaruk) 3192 18.02.15 21:12 Сейчас в теме
(20) dreamworker666, Это ошибка при открытии формы, а не при создании элемента. Насколько я понимаю, элемент справочника перенесся корректно и вы пытаетесь его просмотреть.
Такая ошибка возможна, если у вас установлена опция "Использовать партнеров как контрагентов" и вы перенесли только элемент справочника "Контрагенты". и пытаетесь его открыть. Для работы УТ11 обязателен перенос связанных элементов справочника "Партнеры" и "Контрагенты" одновременно. Один без другого не имеет смысла.
22. Вадим Никонов (V.Nikonov) 116 20.02.15 12:26 Сейчас в теме
Механизма рекурсии не будет? Т.е. для списка номенклатуры автоматически подключать ЕдиницыИзмерения...
23. Евгения Карук (ekaruk) 3192 20.02.15 13:06 Сейчас в теме
(22) V.Nikonov, Сейчас нету. Только то, что отобрано.
Технически добавить перенос связанных несложно.
Вопрос в том, что переносить.

Если переносить все подряд, то можно из-за одного элемента перенести пол-базы. Не факт, что пользователю это действительно нужно. Можно случайно перетереть корректные данные текущей базы данными другой базы, которые пользователь не выбирал.

Предложите варианты, как должен работать перенос связанных элементов с точки зрения логики.
Я подумаю.
Смысл в том, что должно быть универсально для любых баз без привязки к конфигурациям.
24. Виктор Лебедев (eeeio) 80 04.03.15 09:28 Сейчас в теме
Вот версия с добавленным обычным интерфейсом. Автору: могу вам отдать для размещения вверху.
Прикрепленные файлы:
ВыгрузкаЗагрузкаJSON_1.3.0.epf
PowerBoy; Iyar; +2 Ответить
25. Евгения Карук (ekaruk) 3192 04.03.15 11:09 Сейчас в теме
(24) eeeio, Спасибо.
Я так и не добралась доработать обычный режим до текущего состояния управляемой формы.
Пусть тут пока в бесплатном варианте висит, я не против.
Позже объединю с обоими вариантами.
Все равно скорее всего отдельно буду добавлять вариант под 8.3.6. На ней гораздо быстрее будет работать на встроенном JSON.

26. Виктор Лебедев (eeeio) 80 04.03.15 11:29 Сейчас в теме
(25) там также добавил сохранение текста и параметров запроса внутри сеанса работы с обработкой (т.е. после ее закрытия они не сохраняются)
34. Алекс Ю (AlexO) 119 31.03.15 16:54 Сейчас в теме
(25) ekaruk, а чем вариант УФ 8.2 отличается от УФ 8.3? Таксей? Или функционалом?
36. Евгения Карук (ekaruk) 3192 31.03.15 16:56 Сейчас в теме
(34) AlexO, Нет конструктора запросов и немного синтаксисом.
Грубо говоря, вариант для 8.2 это вариант для 8.3 из которого выкинуто все неподдерживаемое.
37. Алекс Ю (AlexO) 119 31.03.15 16:59 Сейчас в теме
(36) ekaruk, Получается, можно скачать последний вариант, и убрать неподдерживаемые функции? Мне, например, работа в 8.3 очень не нравится ))
(25) ekaruk,
На ней гораздо быстрее будет работать на встроенном JSON.
Т.е. у 8.3.6 быстрее с текстом чем у 8.3.5, вы хотите сказать? Встроенного JSON у 1С нет.
38. Евгения Карук (ekaruk) 3192 31.03.15 17:13 Сейчас в теме
(37) AlexO, Вариант для 8.2 это и есть последний с выкинутыми функциями. Можно скачать и выкинуть самостоятельно.
У 1С с 8.3.6 есть встроенная в платформу работа с JSON.
На текущий момент я ее не использую, т.е. никакой разницы в скорости нет.
Переделаю обработку на использование встроенного JSON уже в 8.3.7, когда появится полноценная сериализация объектов.
39. Алекс Ю (AlexO) 119 31.03.15 17:22 Сейчас в теме
(38) ekaruk,
У 1С с 8.3.6 есть встроенная в платформу работа с JSON.
Я вот не вижу разницы - что JSON у 1С, что работа с текстовым файлом, хотя, может быть, это только на мой непосвященный в тонкости реализации JSON в 8.3.6, взгляд.
Поэтому, ваш вариант даже предпочтительней - он понятно, что делает, и можно подстроить/отследить ход процесса.
когда появится полноценная сериализация объектов.
А чем не устраивает существующая с 8.1 сериализация?
40. Евгения Карук (ekaruk) 3192 31.03.15 18:31 Сейчас в теме
(39) AlexO, Работа со строкой очень медленная на больших объемах.
Встроенный в платформу разбор лучше.
41. Алекс Ю (AlexO) 119 01.04.15 09:14 Сейчас в теме
(40) ekaruk,
Встроенный в платформу разбор лучше.
Наверняка, если бы он был существенно лучше, вы бы использовали его ))
27. Ирина (iret) 13.03.15 22:59 Сейчас в теме
Здравствуйте! А можно дополнить эту обработку еще переносом регламентированных отчетов (статистики)?
28. Евгения Карук (ekaruk) 3192 13.03.15 23:34 Сейчас в теме
(27) iret, Не совсем поняла, что имеется в виду.
Насколько я понимаю, в большинстве конфигураций регламентированные отчеты это просто справочник.
Вы можете перенести его записи аналогично любому другому справочнику.
29. Максим Сухов (MaxS) 251 21.03.15 21:37 Сейчас в теме
Решил перенести все дополнительные обработки (из соответствующего справочника) из УТ 11.1.9.70 в УТ 11.1.2.6. 56 элементов. Выгруженный файл получился 20Мб. Загружается уже часов 20 в файловой базе на процессоре i7-3770 с HDD 10k rpm.
Вручную можно было бы перенести за час. :(
30. Гость 23.03.15 15:09 Сейчас в теме
Клиент - сервер. Платформа 8.3.5.1383, Конфигурация Бух 3.0, сервер на линухе, Ваша обработка будет работать?
31. Евгения Карук (ekaruk) 3192 23.03.15 18:10 Сейчас в теме
(30) Гость, Да, должна работать.
Ограничений по режиму работы нет.
32. Lubov Filippova (laf) 26.03.15 17:40 Сейчас в теме
Спасибо. Очень нужно было. Проверю.
33. IlyasSLVR (IlyasDesign) 31.03.15 16:47 Сейчас в теме
А планируется возможность переносить регистры сведений?
35. Евгения Карук (ekaruk) 3192 31.03.15 16:54 Сейчас в теме
(33) IlyasDesign, Была такая мысль для независимых регистров.
Пока не могу решить, что делать в случаях:
1. Разной структуры, из-за которой в другой базе получаются дубли по ключам.
2. Как их удобно отбирать пользователю (сейчас пользователь просто выбирает ссылку). Как должен выглядеть выбор записей из разных регистров не знаю.
Зависимые регистры, на мой взгляд, логичнее переносить документами и формировать заново от регистратора.
42. lap_soft (lap_soft) 25 17.04.15 06:29 Сейчас в теме
Спасибо за хорошую обработку очень пригодилась.

по необходимости была добавлена выборка объектов из журнала регистрации.

код моей обработки

&НаСервере
Процедура ВыбратьОбъектыИзЖРНаСервере(ДатаНачала,ДатаОкончания)
	отбор = новый структура("ДатаНачала,ДатаОкончания",ДатаНачала,ДатаОкончания);	
	массивСобытий =  новый массив;
	массивСобытий.Добавить("_$Data$_.New");
	массивСобытий.Добавить("_$Data$_.Post");
	массивСобытий.Добавить("_$Data$_.Unpost");
	массивСобытий.Добавить("_$Data$_.Update");
	Отбор.Вставить("Событие",массивСобытий);
	
	Список1 = новый таблицаЗначений;
	ВыгрузитьЖурналРегистрации(Список1, отбор, "Данные");
	
	Список1.Свернуть("Данные","");
	зн1=Список1.Количество();
	пока зн1>0 Цикл
		зн1=зн1-1;
		зн=Список1[зн1];
		Если не ЗначениеЗаполнено(зн.Данные) Тогда
			Список1.Удалить(зн1);
		КонецЕсли; 
	КонецЦикла; 
	Список1.Колонки.Найти("Данные").Имя="СсылкаНаОбъект";
	объект.ПереносимыеОбъекты.Загрузить(Список1);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьОбъектыИзЖР(Команда)
	
	Если 0=1 Тогда // тут нельзя полдня выбрать :(
		
		ПеременнаяТипаСтандартныйПериод = Новый СтандартныйПериод; 
		
		
		Диалог = Новый ДиалогРедактированияСтандартногоПериода(); 
		Диалог.Период = ПеременнаяТипаСтандартныйПериод; 
		Диалог.Период.Вариант=ВариантСтандартногоПериода.ПроизвольныйПериод; 
		Если Диалог.Редактировать() Тогда 
			ПеременнаяТипаСтандартныйПериод = Диалог.Период; 
			ВыбратьОбъектыИзЖРНаСервере(ПеременнаяТипаСтандартныйПериод.ДатаНачала,ПеременнаяТипаСтандартныйПериод.ДатаОкончания);
		КонецЕсли;
		
	иначеесли 1=1 тогда
		ДатаНачала=ТекущаяДата();
		ВвестиДату(ДатаНачала,"ВВедите Дату Начала",ЧастиДаты.ДатаВремя);
		
		ДатаОкончания=ТекущаяДата();
		ВвестиДату(ДатаОкончания,"ВВедите Дату Окончания",ЧастиДаты.ДатаВремя);
		Если ЗначениеЗаполнено(ДатаНачала) Тогда 
			ВыбратьОбъектыИзЖРНаСервере(ДатаНачала,ДатаОкончания);
		КонецЕсли;
		
	КонецЕсли; 
	
	
КонецПроцедуры
Показать


я думаю что в обработку можно добавить дополнительные отборы (пользователь, тип приложения, виды объектов).

Ещё хотелось бы в будущем увидеть возможность переноса документов вместе с движениями.
43. Алекс Ю (AlexO) 119 17.04.15 09:33 Сейчас в теме
(42) lap_soft, код можно (и нужно) оформлять как "код".
А хотите чем-то поделиться - так выложите прямо здесь модифицированную обработку с комментариями )
45. lap_soft (lap_soft) 25 20.04.15 04:31 Сейчас в теме
(43) Прошу прощения с оформлением постов еще не разбирался :), я сталкивался с тем что когда выкладывал доработку её не видели, поэтому решил выложить код, при том что его не много.
(44) Да смысл именно в том чтобы перенести наработку пользователей, за период. Перенос движений наверное делать так-же, что совпало по наименованиям, переносим, нет ну и ладно.
Прикрепленные файлы:
ВыгрузкаЗагрузкаJSON_1.2.1.epf
Светлый ум; AlexO; zarucheisky; burlakov_a_a; +4 Ответить
44. Евгения Карук (ekaruk) 3192 17.04.15 09:54 Сейчас в теме
(42) lap_soft, Насколько я понимаю, смысл в том, чтобы выбрать все измененные за какой-о период. В принципе мысль интересная.
По движениям не совсем понятно, что делать с отличающимися регистрами. Каша будет получаться. Подумаю еще.
46. Роман С (Dach) 93 17.06.15 11:11 Сейчас в теме
JSON рулит! Екатерина, Вы - большой молодец. А теоретически, можно переписать обычный xml-обмен по правилам на JSON? В каком направлении копать?
user616689_elsi1; cleaner_it; dj_serega; +3 Ответить
47. Евгения Карук (ekaruk) 3192 17.06.15 11:29 Сейчас в теме
(46) Dach, Можно, но логичнее это делать начиная с 8.3.7.
В этом релизе появится сериализация объектов в JSON через XDTO, полностью аналогичная имеющейся сериализации в XML.
Соответсвенно, можно использовать тот же подход, что сейчас в обычном обмене по правилам.
Начать с того, что проанализировать типовую обработку, на каких этапах выполняется запись и чтение данных в файл.
51. Алекс Ю (AlexO) 119 01.07.15 11:23 Сейчас в теме
(47) ekaruk,
сериализация объектов в JSON через XDTO
Двойная сериализация? Что за "объекты XML", "Объекты JSON"?
Сериализация одна и единственная - объекты 1С - в текстовое представление (по формату XDTO или JSON - не важно, все они XML).
но логичнее это делать начиная с 8.3.7.
Кошмар просто с релизами у 1С.
48. Сергей Галюк (dj_serega) 308 17.06.15 17:58 Сейчас в теме
Спасибо за обработку под 8.3.
Будем жать 8.3.7 и новой версии под новые возможности.

Предложения:
1. После нажатия "Объекты -> JSON" переходить на страницу "Текст JSON".
- Просто удобно :)
2. После чтения через "JSON -> Объекты" сообщения об успешной записи объекта выводить через параметр "Выводить уведомления".
- Объектов может быть много :)

А так обработка крутая! :) Спасибо.
49. adyan kekeev (macey) 01.07.15 02:36 Сейчас в теме
!!!! Скажите, пожалуйста, как отобрать с помощью конструктора запроса большое кол-во документов (напр. Поступление товаров) вместе с табличной частью в нем? У меня получается только выгрузить только шапку документов, а данные табличной части остаются не удел.
50. Евгения Карук (ekaruk) 3192 01.07.15 10:37 Сейчас в теме
(49) macey, Если мы говорим про выгрузку обработкой, то выбирать нужно только ссылки на документы. Табличные части переносятся вместе с документами.
Если вцелом про работу с запросами, то табличные части отлично выбираются наравне с обычными реквизитами. Просто переносите их в конструкторе в правое поле "Поля". Есть два варианта: либо выбирать из общей таблицы, тогда в результате запроса они будут в виде отдельных выборок, либо изначально выбирать данные именно из табличных частей как основных таблиц, тогда в результате будет обычная выборка с данными табличных частей.
53. adyan kekeev (macey) 01.07.15 19:28 Сейчас в теме
(50) ekaruk, Спасибо! Просто убрал табличную часть из Поля, прекрасно загрузилось так. Когда в документе присутствовали табличные части, программа писала Недопустимое значение.
52. Alexander Grey (alex.msk) 21 01.07.15 11:46 Сейчас в теме
Спасибо, не пришлось изобретать велосипед)
54. Константин Минаев (mKonstantin) 02.07.15 02:22 Сейчас в теме
Не знаю как выбрать справочник полностью. Подскажите пожалуйста. Нужно перенести справочники Номенклатуры и Контрагентов полностью.

P.s. В БП 8.2 при запуске обработки не конструтора запросов. Есть только поля для выбора элементов. В 8.3 УНФ есть возможность формировать запросы. Нужно из БП в УНФ.
55. Евгения Карук (ekaruk) 3192 02.07.15 02:27 Сейчас в теме
(54) mKonstantin, Конструктор запросов только в управляемом режиме.
Запустите БП 2 в управляемом режиме и выберите все данные запросом

ВЫБРАТЬ
Контрагенты.Ссылка
ИЗ
Справочник.Контрагенты КАК Контрагенты
56. Олег Дмитров (baracuda) 3 09.07.15 22:27 Сейчас в теме
В чем преимущество перед конвертацией данных?
57. Евгения Карук (ekaruk) 3192 09.07.15 22:32 Сейчас в теме
(56) baracuda, Настраивать не нужно.
Для работы с конвертацией нужен программист, который умеет ей пользоваться.
Рядовой бухгалтер не настроит. Хотя, конечно, конвертация более универсальна.
Эта обработка не требует никаких настроек.
Открыл в первой базе - выгрузил.
Открыл во второй - загрузил.
Наиболее удобно для близких по структуре конфигураций, у которых схожий набор полей.
58. Veronika Dimova (Veronika12) 12.07.15 15:35 Сейчас в теме
Я бухгалтер в небольшой организации, программиста у нас нет - поэтому часто пользуюсь обработками, опубликованные на данном сайте. Сейчас возникла необходимость перенести данные в новую базу (разные релизы). Приобрела вашу обработку, но при использовании данной обработки возникли вопросы, хотя в общем обработка неплохая. Перенесла, справочники. Но вот при переносе банковских и кассовых документов выходит сообщение: Значение не является значением объектного типа (ВалютаВзаиморасчетов). Подскажите, пжл, что мне делать, т.к. документов очень много. И еще вопрос, подскажите как пользоваться консолью. Пытаюсь, но выходит сообщение - недопустимое значение.
59. Евгения Карук (ekaruk) 3192 12.07.15 17:48 Сейчас в теме
(58) Veronika12, Обработка не зависит от данных.
Однако, возможно, в конфигурации ошибка в каком-то обработчике, для которого нужны предварительно перенесенные связанные данные.
Уточните, на каком именно этапе ошибка.
Нужен полный текст, чтобы было видно, в каком именно модуле.
Напишите в личку. Возможно, смогу что-то подсказать.
60. Евгений Ланкастер (JoeLan) 14.07.15 09:59 Сейчас в теме
Попробовал выгрузить из УТ10.3 контрагента. При загрузке в 11.1 выдал ошибку - "Справочник не многоуровневый".
(В 10.3 Контрагенты - Иерархический справочник). Как быть?
61. Евгения Карук (ekaruk) 3192 17.07.15 15:48 Сейчас в теме
(60) JoeLan, Там скорее всего проблема не в иерархии.
В УТ11 одновременно существуют Контрагенты и Партнеры. Они взаимосвязаны. Нельзя просто перенести контрагентов без партнеров.
69. Борис Балясников (bb1962) 1280 18.08.15 08:23 Сейчас в теме
(61) ekaruk, "Нельзя просто перенести контрагентов без партнеров"
Вот поэтому не надо людям голову морочить. Таких "нельзя" - тысячи.
Надо, чтобы пользователь понимал, что волшебной кнопки не существует.
Даже при переносе между идентичными конфигурациями есть существенные ограничения в силу
"связанности" объектов, а для различным конфигураций и вовсе непригодно.
Кроме различий в структуре базы данных, есть еще различия в алгоритмах (методиках).
Об этом вообще почему-то никто не думает.
Простой пример. В УПП (КА) "внутри" документа как правило нет счетов учета, хотя реквизиты такие есть. Но счета учета определяются в момент проведения и в базе не хранятся. А например в БП заполнение аналогичных реквизитов обязательно. Ну и как Вы собираетесь решать эту проблему при "универсальном, не требующем никаких настроек" переносе?
72. Евгения Карук (ekaruk) 3192 18.08.15 12:50 Сейчас в теме
(69) bb1962, Есть универсальные механизмы, типа конвертации данных, которые могут все. Но для их использования нужен квалифицированный программист. Также есть большой круг задач, кля которых настолько универсальные вещи не нужны. Достаточно более простых обработок, доступных обычным пользователям. Просто не нужно их путать.
76. Борис Балясников (bb1962) 1280 19.08.15 11:04 Сейчас в теме
(72) (73) ZLENKO, Я ничего не путаю, а вот вы запутались и не понимаете, что с помощью "инструмента для разработчика" создается "готовое решение для пользователя", которое является полноценным решением в отличие от того, что здесь представлено. Вся прелесть этого решения в том, что платить за него не надо, но скупой, как известно, платит дважды.
77. Владимир Зленко (ZLENKO) 366 21.08.15 17:10 Сейчас в теме
(76) bb1962, "что с помощью "инструмента для разработчика" создается "готовое решение для пользователя""

Странный ход мысли. Других вариантов нет ?
73. Владимир Зленко (ZLENKO) 366 18.08.15 16:48 Сейчас в теме
(69) bb1962, "Ну и как Вы собираетесь решать эту проблему при "универсальном, не требующем никаких настроек" переносе?"

Вы путаете инструмент для разработчика и готовое решение для пользователя. Разработка полезная. Ждем версию для 8.3.7 :-)
62. Simenov Vitaliy (visim) 24.07.15 12:43 Сейчас в теме
Выгружал из ЗУП 2.5 в ЗУП 3.0 ФизЛиц... В пустой базе ЗУП 3.0 не создаются элементы справочника, хотя и пишет, что созданы..справочник пустой...
Пару ошибок - пол и вид образования не совпадали названия объектов, исправил.. но так же пусто
63. Евгения Карук (ekaruk) 3192 24.07.15 19:51 Сейчас в теме
(62) visim, Если обработка выдала сообщение, что элемент записан, значит он записан.
Как именно проверяли, есть ли элементы?
Если просто через форму списка, то скорее всего какие-то фильтры включены при просмотре.
Попробуйте просто отобрать данные консолью запросов без никаких условий отбора.
.
64. Сергей Зенюков (Sanario) 19 28.07.15 10:58 Сейчас в теме
А обработка переносит только 1 вид документов или можно определенные документы за период?
65. Евгения Карук (ekaruk) 3192 28.07.15 14:31 Сейчас в теме
(64) Sanario, Любое количество и любые виды документов одновременно. Все, что добавите. Удобнее всего отбирать запросом.
66. Сергей Коцюра (CheBurator) 3407 31.07.15 02:17 Сейчас в теме
Поясните чайнику в обменах и их технологиях - чем JSON принципиально отличается от XML (иксемель именно как данные, а не те монстры, которые рожает КД)..? Или пните - где почитать для начального понимания кратко и по делу..?
Спасибо.
67. Евгения Карук (ekaruk) 3192 31.07.15 08:51 Сейчас в теме
(66) CheBurator, Грубо говоря, JSON это сжатый XML. Принципиальной разницы в структурировании данных нет. Он просто компактнее.
Почитать тут можно https://ru.wikipedia.org/wiki/JSON
68. Сергей Коцюра (CheBurator) 3407 01.08.15 20:35 Сейчас в теме
(67) угу, спсб.
по сути ничего нового. текстовые файлы, более компактные чем иксемель. По факьту если идти до лог конца, то для частных задач ни иксемель, ни джсон не нужны - вполне подойдет любой структурированный текстовый файл.
120. Алекс Ю (AlexO) 119 28.07.16 12:23 Сейчас в теме
(66)(68) CheBurator, типа, утверждается, что XML, будет быстрее читаться/писаться, а JSON, тем более - еще быстрей.
Но что-то вся проблема упирается в то, что в 1С до сих пор просто не оптимизированы функции чтения/записи из/в обычного текстового файла.
Но зато постоянно предлагаются видимость "быстрой альтернативы"...
70. Irina Мастюгина (miv) 67 18.08.15 12:25 Сейчас в теме
из 1С Бухгалт ПРОФ 8.3 в Документооборот 8 ПРОФ, редакция 2.0 (2.0.8.7) не загружаются объекты
71. Евгения Карук (ekaruk) 3192 18.08.15 12:27 Сейчас в теме
(70) miv, Какие именно объекты не загружаются?
74. Irina Мастюгина (miv) 67 19.08.15 08:52 Сейчас в теме
из 1С Бухгалт ПРОФ 8.3 в Документооборот 8 ПРОФ, редакция 2.0 (2.0.8.7) не загружаются объекты
При загрузке Контрагентов (в ДО Корреспондентов выводятся сообщения
1) не найден тип данных. СправочникСсылка.Корреспонденты
2) не найден тип данных. ПеречислениеСсылка. ЮридическоеФизическоеЛицо )
75. Евгения Карук (ekaruk) 3192 19.08.15 09:05 Сейчас в теме
(74) miv, Сообщения вида "не найден тип данных" это не ошибка. Это просто предупреждение о том, что типы данных не совпадают и эти конкретные значения загружены не будут. Думаю, проблама в том, что Вы пытаетесь загрузить данные справочника "Контрагенты" в справочник "Корреспонденты". Это разные несвязанные справочники, поэтому такое перенос не получится.
Проверьте названия справочников и их структуру. Если структура близка и отличаются наименования, то можете попробовать нажать в выгруженном файле Ctrl+H и заменить "СправочникСсылка.Корреспонденты" на "СправочникСсылка.Контрагенты"
78. Сергей Галюк (dj_serega) 308 02.09.15 15:08 Сейчас в теме
Уважаемая Евгения.
Для ускорения выгрузки в предлагаю конкатенацию строк JSON'а попробовать реализовать через:
ТекстПостроитель = Новый ЗаписьXML;
ТекстПостроитель.УстановитьСтроку();
ТекстПостроитель.ЗаписатьБезОбработки(БазоваяСтрокаПС);


Источник идеи

Спасибо.
80. Евгения Карук (ekaruk) 3192 05.09.15 09:51 Сейчас в теме
(78) dj_serega, Думаю, тут в оптимизации скорости сложения строк особого смысла нет. Основное время это получение объектов, из сериализация в источнике и разбор строки и десериализция в приемнике.
Хотя сама идея интересная.
82. Сергей Галюк (dj_serega) 308 08.09.15 16:02 Сейчас в теме
(80) ekaruk, Решил перебросить 4 документа по 4 тч и 20к строк в каждом. Итого
4 * 4 * 20к = 320к строк. В среднем по 5 колонок. Итого 1.600к ячеек. Уже минут 30 выгружает :)))
Видимо нужно "тушить" и xml'кой грузить... Ых :)
83. Евгения Карук (ekaruk) 3192 08.09.15 16:08 Сейчас в теме
(82) dj_serega, Для этой обработки многова-то.
Тут все-таки универсальность в ущерб скорости.
Хотя все равно должна перенести.
84. Сергей Галюк (dj_serega) 308 08.09.15 16:26 Сейчас в теме
(83) ekaruk, Сохранил результат в блокнот. Итого: 83,3 МБ (87 391 300 байт) :-))
Поставил на загрузку. Сейчас 16:26

Закончилась загрузка: 08.09.2015 16:53:06

{Форма.Форма.Форма(23)}: Ошибка при вызове метода контекста (JSONВОбъекты)
ОбъектОбработка.JSONВОбъекты();
по причине:
Превышен максимальный расход памяти сервера за один вызов


В БД приемнике установлен лимит :( В источнике его нет поэтому выгрузилось без ошибки.

з.ы.: Из 4х документов 2 загрузилось.
з.з.ы.: остальные загрузились без ошибки: 08.09.2015 17:08:27 (минут за 10).
79. Vova Petrov (bdsmka) 04.09.15 00:24 Сейчас в теме
Огромное спс за обработку - очень помогла...
Жаль в обычном приложении на больших объемах виснет. Нет запроса.
На УФ все прекрасно
81. Евгения Карук (ekaruk) 3192 05.09.15 09:52 Сейчас в теме
(79) bdsmka, К сожалению, на больших объемах очень долго выполняется десериализация строки текста.
Лучше переносить данные частями.
85. Юра Зенкин (jura376) 8 09.09.15 11:30 Сейчас в теме
Работает СУПЕР. Есть конечно проблемы с большим объемом данных, но имеет право на существование однозначно.
dj_serega; +1 Ответить
86. Alexey Ivanov (mrTony2030) 10.09.15 20:19 Сейчас в теме
Очень надо перенести регистры сведений, стандартная XML обработка не подходит. Как-то можно эту приспособить? Подскажите, умные люди.
87. Евгения Карук (ekaruk) 3192 11.09.15 09:15 Сейчас в теме
(86) mrTony2030, Эта обработка переносит только объектные сущности (справочники, документы, счета, ПВХ).
Возможности перенести ею регистры сейчас нет.
88. Alexey Ivanov (mrTony2030) 11.09.15 11:24 Сейчас в теме
(87) ekaruk, про объектные сущности понятно из описания, но было бы неплохо и под регистры переливку сделать, если это возможно, конечно
144. Ruslan ww (sir) 09.03.17 12:19 Сейчас в теме
(86) (87) Реализовал перенос регистров сведений для себя на основе данной обработки, для идентичных конфигураций такой способ тоже подойдет ,
суть в следующем :

1. Получаем записи регистра :

Функция ПолучитьПакетСсылокРегистраСведений(УзелОбмена,РазмерПакета,ПолноеИмяМетаданных) 
 
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1  *
	|ИЗ
	|	РегистрСведений.Изменения КАК РегистрСведенийИзменения
	|ГДЕ
	|	РегистрСведенийИзменения.Узел = &Узел";
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,"1",Формат(Число(РазмерПакета),"ЧГ="));
	Запрос.Текст = СтрЗаменить(Запрос.Текст,"РегистрСведений.",ПолноеИмяМетаданных);
	Запрос.УстановитьПараметр("Узел",УзелОбмена);
	
	
	Пакет = Запрос.Выполнить().Выгрузить();
	
	  	       	
	Возврат Пакет;
	
КонецФункции	
Показать

в моем случае я получаю изменения, в обработке запрос будет в соответствии с отборами по самому регистру.

2. Создаю структуру с измерениями, ресурсами и пр. для регистра
Функция СоздатьСтруктуруМетаданныхРегистраСведений(ПолноеИмяМетаданных,МетаданныеРегистра = Неопределено)
	
	Если МетаданныеРегистра = Неопределено Тогда
		МетаданныеРегистра = Метаданные.РегистрыСведений[СтрЗаменить(ПолноеИмяМетаданных,"РегистрСведений.","")];
	КонецЕсли;
	
	СтруктураДанных = Новый Структура;
	Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.Измерения Цикл
		СтруктураДанных.Вставить(ТекОбъектМетаданных.Имя);
	КонецЦикла;	
	
	Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.Ресурсы Цикл
		СтруктураДанных.Вставить(ТекОбъектМетаданных.Имя);
	КонецЦикла;	
	
	Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.Реквизиты Цикл
		СтруктураДанных.Вставить(ТекОбъектМетаданных.Имя);
	КонецЦикла;	
	
	Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.СтандартныеРеквизиты  Цикл
		СтруктураДанных.Вставить(ТекОбъектМетаданных.Имя);
	КонецЦикла;
	
	ФиксированнаяСтруктураДанных = Новый ФиксированнаяСтруктура(СтруктураДанных);
	
	Возврат ФиксированнаяСтруктураДанных;
	
КонецФункции	
Показать


3. Дальше все пишу в массив, все ссылочные типы переделываю в json

ВыгрузкаЗагрузкаJSON  = ОБработки.ВыгрузкаЗагрузкаJSON.Создать();
		
		МассивСсылок   = Новый Массив;
		РегистрСведений = РегистрыСведений[СтрЗаменить(ПолноеИмяМетаданных,"РегистрСведений.","")];
		НаборЗаписей    = РегистрСведений.СоздатьНаборЗаписей();
		
		МетаданныеРегистра = Метаданные.РегистрыСведений[СтрЗаменить(ПолноеИмяМетаданных,"РегистрСведений.","")];
		ФиксированнаяСтруктураДанных = СоздатьСтруктуруМетаданныхРегистраСведений(ПолноеИмяМетаданных,МетаданныеРегистра);
		
		Для Каждого ТекЗаписьРегистра Из ПакетСсылок Цикл
			
			Попытка
				
				СтруктураДанных = Новый Структура(ФиксированнаяСтруктураДанных); 
				
				НаборЗаписей.Очистить();
				
				Для Каждого ТекОбъектМетаданных Из МетаданныеРегистра.Измерения Цикл
					НаборЗаписей.Отбор[ТекОбъектМетаданных.Имя].Установить(ТекЗаписьРегистра[ТекОбъектМетаданных.Имя]);
				КонецЦикла;
				
				НаборЗаписей.Прочитать();
				Если НаборЗаписей.Количество() > 0  Тогда
					
					ЗаполнитьЗначенияСвойств(СтруктураДанных,НаборЗаписей[0]);
					
					Для Каждого ТекЭлементСтруктуры Из СтруктураДанных Цикл
						ТекТипЗнч = ТипЗнч(ТекЭлементСтруктуры.Значение);
						
						Если ТекТипЗнч <> Тип("Строка") И
							ТекТипЗнч <> Тип("Дата") И
							ТекТипЗнч <> Тип("Число") И
							ТекТипЗнч <> Тип("Булево") Тогда
							
							ВыгрузкаЗагрузкаJSON.ПереносимыеОбъекты.Очистить();
							
							НовСтрока = ВыгрузкаЗагрузкаJSON.ПереносимыеОбъекты.Добавить();
							НовСтрока.СсылкаНаОбъект = ТекЭлементСтруктуры.Значение;
							ВыгрузкаЗагрузкаJSON.ОбъектыВJSON();
							
							СтруктураДанных.Вставить(ТекЭлементСтруктуры.Ключ, ВыгрузкаЗагрузкаJSON.ТекстJSON); 
							
						КонецЕсли;	
					КонецЦикла;	
					
					МассивСсылок.Добавить(СтруктураДанных);
				КонецЕсли;
			Исключение
				Продолжить;
			КонецПопытки;
		КонецЦикла;	
		
                // для идентификации при разборе можно первым элементом вставить имя самого регистра
		//МассивСсылок.Вставить(0,ПолноеИмяМетаданных);
			      		
		ЗаписьJSON = Новый ЗаписьJSON;
		ЗаписьJSON.УстановитьСтроку();
		
		ЗаписатьJSON(ЗаписьJSON, МассивСсылок);
		СтрокаJsonОбмен = ЗаписьJSON.Закрыть();
			
		
		Возврат СтрокаJsonОбмен;
 
Показать
89. Bury Ya (Bury) 14.09.15 08:00 Сейчас в теме
Я так понимаю, что с 7.7 бух в УТП с помощью этой обработки не перенести?
работает только с 8.х?
90. Евгения Карук (ekaruk) 3192 14.09.15 08:10 Сейчас в теме
(89) Bury, Не перенести. Работает, начиная с 8.2.
121. Сергей Иванов (psa247) 05.08.16 00:02 Сейчас в теме
Выбрал все доки запросом из бухии 2.0, при нажатии "выполнить запрос"

{Форма.ВыборИзЗапроса.Форма(90)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(7589, 60)}: Неоднозначное поле "ИнвентаризацияТоваровНаСкладе.Ссылка"
ПО ОприходованиеТоваров.ИнвентаризацияТоваровНаСкладе = <<?>>ИнвентаризацияТоваровНаСкладе.Ссылка
123. Евгения Карук (ekaruk) 3192 05.08.16 12:28 Сейчас в теме
(121) psa247, Может, проблема в запросе?
В консоли запросов он корректно выполняется?
91. Гость 15.09.15 10:32 Сейчас в теме
Спасибо за обработку срабатывает на ура, но вопрос у меня такой, как можно сделать так чтобы при переносе справочника физ.лиц он хватал поле "Подробнее", и также адрес с вкладки "Конт.информация" не переносятся.
92. Евгения Карук (ekaruk) 3192 15.09.15 13:19 Сейчас в теме
(91) Voice, Зависит от конфигурации.
Если "Подробнее" это реквизит элемента справочника, то перенесется. Если что-то стороннее (подчиненный справочник, регистр), то нет.
Контактная информация должна переноситься. Возможно, отличаются виды контактной информации. Нужно еще их перенести.
Выгрузите один объект в текст и посмотрите визуально, какие поля выгрузились.
93. Андрей (AKV77) 222 22.09.15 10:36 Сейчас в теме
94. rasswet (rasswet) 80 25.11.15 08:08 Сейчас в теме
вот это специалист! респект!
95. Александр Пузаков (puzakov) 23.12.15 07:55 Сейчас в теме
Я бы крайне не советовал пользоваться подобными обработками в промышленных ИБ. Лучше всего пользоваться конвертацией данных, так хоть выгрузку/загрузку отладить можно. Да, дольше, но надёжнее. При использовании подобных "быстрых" выгрузок/загрузок вероятность возникновения ошибок в данных повышается многократно, а ошибки эти диагностировать будет сложно, результаты могут быть весьма плачевными.
Оставьте свое сообщение