Универсальный инструмент для переноса данных через табличный документ (УФ)

0. json 2681 15.10.18 03:46 Сейчас в теме
Для опытных пользователей, разработчиков, администраторов, консультантов

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1534 15.10.18 10:11 Сейчас в теме
2. Anyu-n 27 07.11.18 10:35 Сейчас в теме
Добрый день, а рабтает только для идентичных конфигураций? Для переноса пару доков их БП2 в БП3 пойдет, как думаете?
3. json 07.11.18 10:40 Сейчас в теме
(2) В БП2 и БП3 структура данных разная. Этим инструментом вашу задачу скорее всего не решить.
4. user625761_elena-proxorova 30.11.18 08:18 Сейчас в теме
Добрый день. А между Промышленной безопасностью и ЗУП 3, выполнит перенос?
5. json 2681 30.11.18 08:42 Сейчас в теме
(4) Инструмент переносит данные между конфигурациями с идентичной или почти идентичной структурой данных.
Если в конфигураторе объекты называются одинаково и поля этих объектов называются одинаково и имеют одинаковый тип, то они перенесутся, в противном случае - не перенесутся или будет ошибка.
Касательно конфигурации Промышленная безопасность - сказать ничего не могу, т.к. с такой не работал
6. maikl007 91 16.01.19 11:54 Сейчас в теме
Ваша обработка не работает, зря потратил старпмани.
{ВнешняяОбработка.ПереносДанных.МодульОбъекта(218)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(10, 20)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И р.Представление <<?>>= т.Представление
7. json 2681 16.01.19 12:11 Сейчас в теме
(6)
Да, на строках неограниченной длины в регистрах падала ошибка.
Исправил. Скачайте еще раз (повторное скачивание в течение первых дней - бесплатное)
8. impron 16.01.19 21:24 Сейчас в теме
ERP 2.4.6.188 (демонстрационная база)
При попытке переноса справочника Номеклатура (нажимаем кнопку Выгрузить):
Выдает окно с сообщением: Получение элемента по индексу для значения не определено
В сообщения выводит:
{ВнешняяОбработка.ПереносДанных.МодульОбъекта(579)}: Значение не является значением объектного типа (Метаданные):[]
9. json 2681 16.01.19 21:44 Сейчас в теме
(8) Благодарю за подробное описание ошибки.
Была проблема при выгрузке реквизитов, назначенных только для группы или только для элементов.
Выложил исправленную версию
10. json 2681 16.01.19 22:33 Сейчас в теме
Выложил версию с исправлениями.
Если вы скачивали ранее и хотите получить обновленную версию - напишите мне в личку
11. impron 18.01.19 04:18 Сейчас в теме
ERP 2.4.6.188 (демонстрационная база).
На обновленной обработке заработало.
Но при переносе данных не сохранило структуру (см. приложенный файл).
Левая часть - структура в демонстрационной базе.
Правая часть - структура в базе в которую переносили номенклатуру.
Папки второго уровня переехали на первый уровень.
Прикрепленные файлы:
12. json 2681 18.01.19 08:15 Сейчас в теме
(11)
Мне не удалось повторить ошибку. Структура папок переносится корректно.

Могу предположить, что группы второго уровня ЯВНО не добавлялись в выгрузку. То есть выгружались элементы, которые находятся в этих группах. При этом когда при загрузке создавались элементы, создались и их родители. Но т.к. родители явно в выгрузке не были указаны, то они создались в корне.
В таком случае если выгрузить-загрузить только группы, то иерархия встанет на место

Если мое предположение не верно, то уточните, пожалуйста:
-версию платформы
-название справочника
-как выгружали загружали: выгрузили полностью справочник и загрузили в пустой справочник в другой базе или как-то иначе?
13. German_Tagil 20 18.02.19 05:50 Сейчас в теме
посмотрим - на обычных формах таб документ сильно выручал
14. Mx00 227 27.02.19 03:18 Сейчас в теме
Благодарю, обработка очень помогла восстановить удаленные данные, удобно что после формирования таблицы можно поправить перед загрузкой :-)
15. greywind 8 14.03.19 07:22 Сейчас в теме
Бух 3.0 (платформа 8.3.12, Релиз 3.0.67)
Ошибка:
ТИП: РегистрБухгалтерии.Хозрасчетный.Ошибка при создании данных из макета в строках с 8 по 12 : {ВнешняяОбработка.ПереносДанных.МодульОбъекта(1190)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Процедура или функция с указанным именем не определена (ЗаполнитьИзТаблицыЗначений_РегистрБухгалтерии)
16. greywind 8 14.03.19 08:26 Сейчас в теме
Ошибка срабатывает при Загрузке документа с движениями.
17. json 2681 14.03.19 08:57 Сейчас в теме
(16) Спасибо за подробное описание.
Выложил исправленную версию
34. user929348 29.06.20 19:08 Сейчас в теме
(17) Добрый день, я скачивал в марте и не протестировал сразу, мне заново качать придется?
35. user929348 29.06.20 19:12 Сейчас в теме
(17)Можете прислать функцию "ЗаполнитьИзТаблицыЗначений_РегистрБухгалтерии(ТаблицаИзМакета, ИмяРегистра)"?
18. bulas 189 17.10.19 09:24 Сейчас в теме
Отбор по организации (или по контрагенту) есть?
19. json 2681 17.10.19 09:55 Сейчас в теме
(18)
Стандартные отборы по любым реквизитам шапки. Если режим совместимости конфигурации не древний, то отборы можно накладывать и по табличным частям.
Прикрепленные файлы:
20. jack19 148 27.11.19 18:00 Сейчас в теме
1С:Предприятие 8.3 (8.3.13.1513)
Управление производственным предприятием, редакция 1.3 (1.3.122.2)
Обработка просто не открывается.
21. json 2681 27.11.19 19:09 Сейчас в теме
(20) Обработка запускается только в режиме управляемого приложения.
УФ в названии - управляемые формы.

Скорее всего запускаете УПП в режиме обычного приложения и пытаетесь открыть ее как внешнюю.

Есть два способа воспользоваться обработкой в конфигурации УПП:
1. Зайти в базу УПП в режиме управляемого приложения и открыть ее как внешнюю обработку
2. Встроить обработку в конфигурацию и не забыть включить флаг использования управляемых форм в режиме обычного приложения. После этого открыть обработку как внутреннюю
22. jack19 148 27.11.19 19:23 Сейчас в теме
(21) Извините, я в 8-ке можно сказать дилетант. Как запустить базу в режиме управляемого приложения?
23. json 2681 27.11.19 20:13 Сейчас в теме
(22) самый простой способ из конфигуратора.
В конфигураторе в верхнем меню выбрать: Отладка - Начало отладки - Тонкий клиент: начать отладку
24. jack19 148 27.11.19 20:25 Сейчас в теме
(23) Спасибо. Попробовал, запускается.
25. jack19 148 28.11.19 09:11 Сейчас в теме
(23) Прошу прощения, попробовал перенести справочник "Номенклатура" в одной базы в другую (однотипную). Получилось как-то криво, все папки (пустые) и элементы оказались в одном уровне. При выгрузке ставил в настройках глубину выгрузки = 4, при загрузке ничего не ставил. Наряду со справочником "Номенклатура" программа выгрузила ряд других справочников ("Контрагенты", "Виды номенклатуры", "Номенклатурные группы" и др.), ссылки на элементы которых, видимо были в справочнике "Номенклатура". По окончании загрузки программа выдала следующие сообщения:

ТИП: Справочник.ЕдиницыИзмерения.Ошибка при создании данных из макета в строках, начиная с 42 : {ВнешняяОбработка.ПереносДанных.МодульОбъекта(1154)}: Ошибка при вызове метода контекста (Вставить): Задано неправильное имя атрибута структуры

ТИП: Справочник.Номенклатура.Ошибка при создании данных из макета в строках, начиная с 43 621 : {ВнешняяОбработка.ПереносДанных.МодульОбъекта(1154)}: Ошибка при вызове метода контекста (Вставить): Задано неправильное имя атрибута структуры

ТИП: Справочник.ГруппыОбъектовРабот.Ошибка при создании данных из макета в строках, начиная с 89 427 : {(1)}: Поле объекта не обнаружено (ГруппыОбъектовРабот)

ТИП: Справочник.НоменклатурныеГруппы.Ошибка при создании данных из макета в строках, начиная с 89 449 : {(1)}: Поле объекта не обнаружено (ГруппыОбъектовРабот)

Что я не так сделал?
26. json 2681 28.11.19 09:54 Сейчас в теме
(25) попробуйте сделать следующее:

Перенесите группы номенаклатуры отдельно.
1. Установите отбор ЭтоГруппа = Истина,
2. уровень выгрузки = 0, затем
3. нажать кнопку Выбрать все
4. выгрузить
5. загрузить в другую базу

Потом уже грузите нужные элементы номенклатуры с уровнем = 1

Также внимательно прочитайте в публикации пункт Требования
Данные загружаются в режиме ОбменДанными.Загрузка = Истина. Это значит, что в процедурах ПередЗаписью, ПриЗаписи должны стоять отсечки, как в типовых конфигурациях, иначе некоторые объекты может не получиться записать.


Если перед записью или при записи кодом установлены запреты, проверяющие бизнес-логику, то запись может не получиться.
27. json 2681 28.11.19 10:03 Сейчас в теме
(25)
объясню, что значит уровень = 4.

Вот ты выгружаешь элемент номенклатуры - сам элемент со всеми реквизитами это уровень 0
Все ссылки, которые в нем упоминаются - это уровень 1.
Все ссылки, которые упоминаются в уровне 1 - это уровень 2
и т.д.

Вот выгружаешь ты элемент номенклатуры, который лежит в папке, которая вложена в другую папку, которая вложена в другую папку и т.д.

При уровне = 4 у тебя выгружается сам выгружаемый элемент номенклатуры, а также четыре уровня папок в которые он вложен.
Если уровень вложенности у переносимого элемента больше 4, четвертый родитель вверх от элемента будет помещен в корень.
В перегружаемом вами справочнике номенклатуры, похоже, что больше 4 уровней, поэтому часть папок оказалась в корне, потому что не переносился их родитель.

Чтобы этого избежать я написал в предыдущем сообщении что нужно сделать. А именно необходимо перенести отдельно всю иерархию папок.
А потом уже переносить элементы с настройкой уровень = 0 или 1 в зависимости от того хотим ли мы создавать ссылки, которые вложены в переносимый элемент или нет
28. jack19 148 28.11.19 10:20 Сейчас в теме
В перегружаемом вами справочнике номенклатуры, похоже, что больше 4 уровней, поэтому часть папок оказалась в корне, потому что не переносился их родитель.

Дело в том, что не часть папок оказалось в корне, а все папки и элементы оказались в корне. Но в общем понял, попробую в два этапа переносить. Не понял только про "отсечки", что это. Что касается указанных мною сообщений об ошибках, то понял, что дело в измененной конфигурации базы-источника (добавлены реквизиты), сделал аналогичные изменения в базе-приемника, посмотрим. Спасибо за то, что помогаете разобраться.
29. json 2681 28.11.19 10:29 Сейчас в теме
(28) прикладываю пример на скриншоте, как выглядит код типовых конфигурациях.

Вот в примере, если запись происходит в особом режиме, то запись выполняем без проверок (Возврат - означает что ничего не проверяем и не дозаполняем, а просто выходим из процедуры и записываем, а в обычном режиме на примере выполняются проверки и где-то при проверках может установиться Отказ=Истина или выскочить исключение)

Так вот во всех процедурах ПриЗаписи и ПередЗаписью должны стоять отсечки как в приведенном примере. То есть в самом начале каждой процедуры-обработчика должен быть такой код:

	Если ОбменДанными.Загрузка  Тогда
		Возврат;
	КонецЕсли;
Прикрепленные файлы:
30. jack19 148 28.11.19 11:58 Сейчас в теме
Да, спасибо. Еще одно уточнение. Как я понял "уровень" касается вложенных реквизитов, а не родителей? Т.е., если я буду переносить элементы с "уровень = 0", они попадут в ранее перенесенные папки? А что значит "уровень = 1"? Что будут создаваться элементы тех справочников, на которые ссылаются элементы номенклатуры?
31. json 2681 28.11.19 12:09 Сейчас в теме
(30)
Родитель - это тоже реквизит справочника номенклатуры. Если переносим с уровень=0 и родителя нет в базе, то загружаемый элемент попадет в корень. Если родитель на момент загрузки есть в базе, то загружаемый элемент будет подчиненным этому родителю.

Уровень = 1 - значит, что все ссылочные объекты, которые есть в реквизитах переносимого элемента, тоже создадутся и заполнятся как в базе источнике.
Уровень = 0 - значит, что все ссылочные объекты, которые есть в реквизитах - не будут создаваться, а если объект, на который ссылается реквизит в базе отсутствует, то в реквизите будет битая ссылка.
32. jack19 148 28.11.19 13:42 Сейчас в теме
(31) Сделал, как вы сказали - в 2 этапа. Сначала поставил Отбор: ЭтоГруппа = Истина. Перенеслись все папки. Потом поставил ЭтоГруппа = Ложь. Перенеслись все элементы, но не в папки, а в корень. Кроме того в поле "Код" элементов записывается не код, а часть наименования.
33. German_Tagil 20 28.01.20 15:18 Сейчас в теме
36. user900062 08.07.20 12:14 Сейчас в теме
Большое спасибо за обработку!
Использовал для заполнения
в справочнике Номенклатура поля Б_Идентификатор.
Пришлось действовать так:
Выгрузил справочник номенклатуры в .mxl
Прочитал этот файл из-под 1С, тут же выгрузил в .xls
Загрузил в Access, заполнил поле данными с сайта,
выгрузил в .xls снова преобразовал в .mxl
и далее Вашей обработкой загрузил в 1 С.
Таким образом заполнил 5800 наименований.
Это я описал, чтобы подойти к просьбе: сделать выгрузку и загрузку в .xls.
Обработка будет более востребована.
Оставьте свое сообщение
Вопросы с вознаграждением