gifts2017

Перенос документов между идентичными конфигурациями для платформы не ниже 8.2.18.82

Опубликовал Vyacheslav Khristolyubov (XSlava) в раздел Обмен - Перенос данных из 1C8 в 1C8

Обработка выполняет перенос документов между идентичными конфигурациями на платформе не ниже 8.2.18.82. Тестирование выполнялось для конфигурации "Бухгалтерия предприятия версия 2.0.49.15"

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

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

Наименование Файл Версия Размер
Перенос между идентичными конфигурациями 788
.epf 31,14Kb
09.08.13
788
.epf 5 31,14Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Павел Питеев (paulpit) 30.07.13 00:30
Обработка переносит измененные документы?
А чем не устроила универасльная обработка с ИТС-а?
2. Vyacheslav Khristolyubov (XSlava) 30.07.13 07:50
Этой обработке все равно изменен или не изменен документ, т.к. в качестве основного правила обмена используется сама структура конфигурации (метаданные). Почему не с ИТС, искать, затем разбираться и проверять, тоже самое по времени, что и написать. Скорее всего для типовой обработки нужны еще и правила.
Надеюсь, что ответил на ваши вопросы.
3. Анатолий Быков (awbyk) 01.08.13 11:14
Попробовал перенос для БГУ из редакции 1.0.14.2 в редакцию 1.0.20.6

Пришлось слегка подправить модуль формы:
- Организации изменил на Учреждения;
- Обошел попыткой, исключением, поскольку в редакции 1.0.14.2 нет константы.ЗаголовокСистемы строку
ЭтаФорма.Заголовок = ЭтаФорма.Заголовок + " " + константы.ЗаголовокСистемы.Получить();
- Список видов документов отсортировал по представлению.

В принципе удобнее, чем универсальный перенос.
4. r r (Жискар) 05.08.13 12:39
Запускал в «Зарплата и кадры бюджетного учреждения, редакция 1.0 (1.0.60.3)» ,
«Бухгалтерия предприятия, редакция 2.0 (2.0.49.11)».
Платформа 1С:Предприятие 8.2 (8.2.18.109).
Получал сообщение «Обработка завершена».
Ни одной записи в результат не перенесено.
Может что-то ещё надо установить, чтобы обработка работала?
5. Vyacheslav Khristolyubov (XSlava) 05.08.13 14:36
На закладке "Настройки переноса" нужно выбрать вид документа, затем нажать кнопку "Заполнить", за указанный период будет заполнена таблица переносимых документов. Затем переносить.
6. r r (Жискар) 05.08.13 15:16
Брал один вид документа "Начисление зарплаты" по одной организации и за период с февраля по апрель.
Вибиралось штук 5. Нажал выполнить. Обработка завершена.
Перенесено 0 документов. Все гладко, только результата нет.
7. Vyacheslav Khristolyubov (XSlava) 05.08.13 15:28
Значит при переносе есть ошибки, их можно посмотреть создав файл отладки.
8. r r (Жискар) 05.08.13 16:13
Файл отладки не создается вообще, даже пустой. Машина домашняя, доступно всё.
9. Vyacheslav Khristolyubov (XSlava) 05.08.13 16:44
Странно. "Начисление зарплаты" говорите. Посмотрю.
10. Александр Журавлев (apostal86) 08.08.13 13:45
(2) XSlava, Стандартную ИТС-кую проверять не нужно, с ней все ОК, работает во всех идентичных конфигурациях. Для типовой правила не нужны. То что у Вас выложено практически то же самое, что и в обработке с ИТС. Какое у Вашей обработки принципиальное отличие?
11. Vyacheslav Khristolyubov (XSlava) 08.08.13 14:15
Видимо отличается формой.
12. r r (Жискар) 08.08.13 15:27
apostal86. Извиняюсь за серость. Стандартная ИТС-кая это ВыгрузкаЗагрузкаДанныхXML82.epf
или что-то другое?
13. Vyacheslav Khristolyubov (XSlava) 08.08.13 15:43
Я не знаю, никогда не пользовался. Возникла необходимость, написал свою.
14. Slater_7 (Slater_7) 09.08.13 09:35
Таже ерудна что и у Жискар. Говорит что Завершено, но ничего не переносит и отладка не создаётся. Конфа - Бухгалтерия для Казахстана(2.0.11.8) 1С:Предприятие 8.2 (8.2.18.102). Где копать хотябы - есть идеи?
15. Vyacheslav Khristolyubov (XSlava) 09.08.13 13:41
16. r r (Жискар) 09.08.13 15:32
(15) XSlava, Все прекрасно работает. Спасибо.
Началась новая жизнь.
17. Vyacheslav Khristolyubov (XSlava) 09.08.13 15:35
(16) Жискар, Хорошо. Пишите, если будут идеи по улучшению.
18. Irina (hawl) 12.08.13 13:05
Спасибо большое, всё работает хорошо.
19. Ильсияр Левченко (ilsijar) 23.09.13 10:38
Не очень универсален, но доработать для себя можно.Спасибо,сэкономила время.
20. Света Серебряная (silver-747) 17.10.13 19:58
Спасибо. выручила обработка.
21. Владимир Самойлов (Felix1) 10.11.13 21:14
Выдает ошибку "
{ВнешняяОбработка.ПереносМеждуИдентичнымиКонфигурациями.МодульОбъекта(46)}: Ошибка при вызове метода контекста (Записать)
о.Записать();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.16.368): Не удалось записать "Счет на оплату покупателю ДПб00000365 от 23.08.2013 16:23:45"!
"
22. Владимир Самойлов (Felix1) 10.11.13 21:16
не понимаю в чем проблема ? переношу документы за 4 кв 2013 г, в базе приемнике установил дату запрета редактирования по 30.09.2013 ? вопрос причем тут счет от23.08.2013
23. Vyacheslav Khristolyubov (XSlava) 11.11.13 08:42
Скорее всего в каком нибудь переносимом документе есть ссылка на данный счет, вот он его и переносит.
24. Владимир Самойлов (Felix1) 11.11.13 08:57
А что с этим делать ???, если я сниму дату запрета редактирования, то у меня поедет прошлый период ?
25. Vyacheslav Khristolyubov (XSlava) 11.11.13 10:04
(24) Felix1, Один из вариантов очистить ссылку на данный документ в переносимом документе. Решение данной проблемы зависит от задач которые вы решаете.
26. Владимир Самойлов (Felix1) 11.11.13 11:21
хорошо , а как мне найти тот самый документ,
на который ссылается на счет ???
27. Vyacheslav Khristolyubov (XSlava) 11.11.13 11:40
(26) Felix1, Написать запрос, затем обработку.
28. Владимир Самойлов (Felix1) 11.11.13 11:46
(27) XSlava, А для бухгалтера, есть вариант по проще ???
29. Vyacheslav Khristolyubov (XSlava) 11.11.13 12:01
30. Владимир Самойлов (Felix1) 11.11.13 12:39
(29) XSlava, Тогда у меня оборотно-сальдовая ведомость не изменится ??? и вообще все показатели ???
31. Vyacheslav Khristolyubov (XSlava) 11.11.13 12:50
(30) Felix1, Сделайте резервную копию, проверьте сначала на копии. У вас очень серьезные вопросы, для ответа на которые нужно знать гораздо больше о ваших задачах, чем выпи пишете.
32. Alexander (likan) 27.11.13 08:52
(26)а найти счет и посмотреть подчиненные документы, религия не позволяет?
33. Владимир Самойлов (Felix1) 27.11.13 12:47
(32) likan, 1.Вопрос уже решен стандартной обработкой с ИТС
2. Если есть конкретные предложения, или желаете помочь, пишите по делу, религия тут не причем.
34. imarok imarok (imarok) 30.11.13 15:22
при выполнение обработки в ут 10.3.15.9 ошибка
{Обработка.ПереносМеждуИдентичнымиКонфигурациями.МодульОбъекта(139)}: Ошибка при вызове метода контекста (СоздатьЭлемент)
ОЭлемент = Открытие.Справочники[ВидСпр].СоздатьЭлемент();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.18.109): {Справочник.Номенклатура.МодульОбъекта(122,33)}: Переменная не определена (РаботаСТорговымОборудованием)
35. imarok imarok (imarok) 30.11.13 15:34
Разобрался, прошу прощения
36. Таньзеля Гатаулина (tanselja) 30.11.13 16:04
Вроде и стандартная хорошо работает.
37. Yalo (yalo) 03.12.13 09:42
А в чем отличие от стандартной обработки? Использую ее, переносит все необходимые документы и справочники и т.д.
38. Аркадий Фирсов (Natuhai) 20.01.14 18:39
Спасибо. Пригодилась обработка. Бухи потерли полтора десятка документов с табличной частью этак в 3000 строк ... Перенес им из бекапа.
39. Alister (Alister) 23.01.14 15:33
Спасибо за работу, все что нужно перенесла.
40. Тимур Хусаинов (if56.ru) 19.02.14 14:52
Есть ошибка.
Если не устанавливать флаг Перезаписывать документы, то таб части документов , перенесенных ранее , задваиваются. Ошибка в функции ПолучитьДокумент(ТекДок)

Кусок кода:

Если ФлПерезаписыватьДоки и не ЭтоНовый тогда
инфа("Документ уже переносился!!! Изменяем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);
//Очистим табличные части
Для каждого ТЧ из Открытие.Метаданные.Документы[ВидДока].ТабличныеЧасти цикл
ДокБух[ТЧ.Имя].Очистить();
КонецЦикла;
ИначеЕсли не ФлПерезаписыватьДоки и не ЭтоНовый тогда // Все равно пишем
инфа("Документ уже переносился!!! Пропускаем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);
//////////////////////////////////////// надо бы Возврат Неопределено;

Иначе
инфа("Создаем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);
КонецЕсли;
Возврат ДокБух;
КонецКуска
41. arjuna (arjuna) 26.03.14 00:43
(40) if56.ru,
Есть ошибка.
Если не устанавливать флаг Перезаписывать документы, то таб части документов , перенесенных ранее , задваиваются. Ошибка в функции ПолучитьДокумент(ТекДок)

У меня упорно задваивает все документы. Уже всю голову сломал, не видет он УникальныйИдентификатор в удаленной базе.
42. Светлана (sps02) 14.08.14 15:21
Извините, если вопрос глупый(( Могу ли я перенести документы из одинаковых конфигураций, но если это разные контрагенты?
Спасибо заранее
43. Светлана (sps02) 14.08.14 17:39
Закачала, но выдает такую ошибку. подскажите как решить: Не смог записать элемент справочника Номенклатура Набор для кофе "Бернадот 0000" 110 мл на 6перс.12пред {ВнешняяОбработка.ПереносМеждуИдентичнымиКонфигурациями.МодульОбъекта(405)}: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.2.19.90): Ошибка при выполнении обработчика - 'ПередЗаписью'
Заранее спасибо
44. Светлана (sps02) 15.08.14 11:40
Скажите, пожалуйста почему номенклатура не загружается?
45. Макас (makas) 08.10.14 18:15
Обработка в 1С:Предприятие 8.2 (8.2.19.106) "Управление торговлей", редакция 10.3 (10.3.29.1) пишет сообщение "База данных не открыта !!!"

В чем может быть моя ошибка?

46. Vyacheslav Khristolyubov (XSlava) 09.10.14 08:01
В чем угодно. Нет доступа к каталогу или еще чего.
47. Светлана Пехотина (SvetlanaP) 27.02.15 12:57
Спасибо за обработку! С ней намного легче работать. Сначала все время появлялось сообщение "База данных не открыта!!!", но потом все получилось. У меня все переносится идеально.
48. Вячеслав Пузанов (Evrey.biysk) 11.03.15 06:33
Одна из причин почему база данных не открыта, пробелы в логине или пароле
Если таковые имеются то
v8=Новый COMОбъект("v8"+Прием+".COMConnector");
Состояние("Подключение к базе");
строкаЗапуска="";
Если ФлБазаНаСервере тогда
строкаЗапуска = "Srvr="""+ СокрЛП(ф.Сервер) + """;"+"Ref="""+СокрЛП(ф.ИмяБазы)+ """;Usr=" + СокрЛП(ф.ИмяПользователя) + ";Pwd=" + СокрЛП(ф.Пароль);
иначе
строкаЗапуска = "File="""+ СокрЛП(ф.Каталог) + """;Usr=" + СокрЛП(ф.ИмяПользователя) + ";Pwd=" + СокрЛП(ф.Пароль);
Если не ЗначениеЗаполнено(ф.ИмяПользователя) тогда
строкаЗапуска = "File="""+ СокрЛП(ф.Каталог) + """";
КонецЕсли;
конецесли;

Сообщить(строкаЗапуска);
Попытка
Открытие = V8.Connect(строкаЗапуска);
Состояние("Подключились");
Исключение
Предупреждение("База данных не открыта!!!");
Возврат Ложь;
КонецПопытки;
Возврат Истина;

Надо заменить следующим:

v8=Новый COMОбъект("v8"+Прием+".COMConnector");
Состояние("Подключение к базе");
строкаЗапуска="";
Если ФлБазаНаСервере тогда
строкаЗапуска = "Srvr="""+ СокрЛП(ф.Сервер) + """;"+"Ref="""+СокрЛП(ф.ИмяБазы)+ """;Usr=""" + СокрЛП(ф.ИмяПользователя) + """;Pwd=""" + СокрЛП(ф.Пароль)+"""";
иначе
строкаЗапуска = "File="""+ СокрЛП(ф.Каталог) + """;Usr=""" + СокрЛП(ф.ИмяПользователя) + """;Pwd=""" + СокрЛП(ф.Пароль)+"""";
Если не ЗначениеЗаполнено(ф.ИмяПользователя) тогда
строкаЗапуска = "File="""+ СокрЛП(ф.Каталог) + """";
КонецЕсли;
конецесли;

Сообщить(строкаЗапуска);
Попытка
Открытие = V8.Connect(строкаЗапуска);
Состояние("Подключились");
Исключение
Предупреждение("База данных не открыта!!!");
Возврат Ложь;
КонецПопытки;
Возврат Истина;
49. Вадик Лавин (LavinVadik) 22.10.15 23:35
на 8.3 тоже работает
маленько код надо тока поправить

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



//v8=Новый COMОбъект("v8"+Прием+".COMConnector");
v8=Новый COMObject("V83.COMConnector");
или добавить в список выбора "Прием"


и не предусмотрено если в базе приемники такой документ уже есть и он помечен на удаление то документ не проводится, вот пример
надо добавить
Если ДокБух.ПометкаУдаления Тогда
ДокБух.УстановитьПометкуУдаления(Ложь);
КонецЕсли;



Функция ПолучитьДокумент(ТекДок)
	ВидДока = Метаданные.НайтиПоТипу(ТипЗНЧ(ТекДок)).Имя;
	УИ = открытие.NewObject("УникальныйИдентификатор",СокрЛП(""+ТекДок.УникальныйИдентификатор()));
	ЭтоНовый = Ложь;
	ЕстьСсылка = Открытие.Документы[ВидДока].ПолучитьСсылку(УИ);
	Если не ПустаяСтрока(ЕстьСсылка.Номер) тогда
		ДокБух=ЕстьСсылка.ПолучитьОбъект();
		Если ДокБух.ПометкаУдаления Тогда
			ДокБух.УстановитьПометкуУдаления(Ложь);
		КонецЕсли;	

	Иначе
		ДокБух = Открытие.Документы[ВидДока].СоздатьДокумент();
		НоваяСсылка = Открытие.Документы[ВидДока].ПолучитьСсылку(УИ);
		ДокБух.УстановитьСсылкуНового(НоваяСсылка);
		ЭтоНовый = Истина;
	КонецЕсли;
	Если ФлПерезаписыватьДоки и не ЭтоНовый тогда	
		инфа("Документ уже переносился!!! Изменяем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);
		//Очистим табличные части
		Для каждого ТЧ из Открытие.Метаданные.Документы[ВидДока].ТабличныеЧасти цикл
			ДокБух[ТЧ.Имя].Очистить();
		КонецЦикла;	
	ИначеЕсли не ФлПерезаписыватьДоки и не ЭтоНовый тогда	
		инфа("Документ уже переносился!!! Пропускаем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);	
	Иначе	
		инфа("Создаем документ "+ВидДока+" № "+ТекДок.Номер+" от "+ТекДок.Дата,0);
	КонецЕсли;	
	Возврат ДокБух;
КонецФункции
...Показать Скрыть
Светлый ум; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа