Конвертация транспортной информации 7.7 -> 8.2

1. n_v_l 18.12.12 18:26 Сейчас в теме
Необходимо модифицировать существующие правила конвертации 7.7 -> 8.2
а именно добавить перенос реквизитов накладной 7.7:
Автопредприятие (Справочник.Контрагенты)
Водитель (Справочник.ФизЛица)
Автомобиль (Справочник.Автомобили)

в регистр сведений 8.2
Измерения регистра:
Ссылка на накладную
Ссылка на Справочник Транспортные средства
Ресурсы регистра:
Водитель -> Справочник Физические лица
Перевозчик -> Справочник Контрагенты

Просьба подсказать направление действий
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RocKeR_13 1329 19.12.12 11:02 Сейчас в теме
Встречный вопрос: регистр в 8.2, видимо, подчинен документу (режим записи - Подчинен регистратору), в который вы переносите накладные из 7.7? Так что вам необходимо лишь провести выгруженные документы (при переносе свойство "Проведен" лишь устанавливает отметку проведения, однако, движения не переносятся, подробнее уже писал об этом вот тут). Как проводить при переносе (основано на http://infostart.ru/public/21069 ):
1) создаем глобальный параметр, например, ТаблицаДокументов, устанавливаем галку "ПриЗагрузке"
2) в глобальном событии ПередЗагрузкойДанных определяем структуру параметра

ТаблицаДокументов = Новый ТаблицаЗначений;
ТаблицаДокументов.Колонки.Добавить("Документ");
ТаблицаДокументов.Колонки.Добавить("ДатаВремя");

Параметры.ТаблицаДокументов = ТаблицаДокументов;

3) В глобальном событии ПослеЗагрузкиОбъекта заполняем нашу таблицу только теми документами, которые были проведены
Если ИмяТипаОбъекта = "Документ" И Объект.Проведен Тогда 
	Объект.Записать();
	НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
	НоваяСтрока.Документ = Объект.Ссылка;
	НоваяСтрока.ДатаВремя = Объект.Дата;
КонецЕсли;

4) И, наконец, в глобальном событии ПослеЗагрузкиДанных проводим документы; у документов, которые не провелись - снимаем галку "Проведен" (и, например, выводим список и информацию о количестве непроведенных документов)

Если Параметры.ТаблицаДокументов.Количество() > 0 Тогда
	Параметры.ТаблицаДокументов.Сортировать("ДатаВремя Возр");
	НепроведенныеДокументы = Новый ТаблицаЗначений;
	НепроведенныеДокументы.Колонки.Добавить("Документ");
	Для каждого Строка из Параметры.ТаблицаДокументов Цикл
		Объект = Строка.Документ.ПолучитьОбъект();
		Попытка
			Объект.Проведен = Ложь;
			Объект.Записать(РежимЗаписиДокумента.Проведение);
			Сообщить("Документ "+Строка.Документ+" успешно проведен");
		Исключение
			Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
			Строка = НепроведенныеДокументы.Добавить();
			Строка.Документ = Объект.Ссылка;
			Сообщить(Строка(Строка.Документ)+" не был проведен");
		КонецПопытки;
	КонецЦикла;
	Если НепроведенныеДокументы.Количество() > 0 Тогда
		Сообщить("==========СПИСОК НЕПРОВЕДЕННЫХ ДОКУМЕНТОВ=============");
		Для Каждого Стр Из НепроведенныеДокументы Цикл
			Сообщить(Строка(Стр.Документ));
		КонецЦикла;
		Сообщить("Количество непроведенных документов: "+НепроведенныеДокументы.Количество());
		Сообщить("==========СПИСОК НЕПРОВЕДЕННЫХ ДОКУМЕНТОВ============="); 
	КонецЕсли;
КонецЕсли;
Показать
3. n_v_l 19.12.12 13:58 Сейчас в теме
(2) RocKeR_13, Регистр сведений не подчинен регистратору, в накладной 8.2 реквизиты, которые необходимо перенести отсутствуют
4. RocKeR_13 1329 25.12.12 16:03 Сейчас в теме
(3) n_v_l, создавать ПКО Накладная --> РегистрСведений
типы измерений и ресурсов совпадают с типами реквизитов документа, так что тут все до неприличного просто. Единственно, нужно создать ПКС "-->СсылкаНаНакладную" с пустым источником, указать правило, соответствующее ПКО накладной и прописать ПередВыгрузкой:
Значение = Источник.Ссылка;

Ну и, понятное дело, не забывать, что ПВД для регистра должно стоять после ПВД для накладной и справочников
5. n_v_l 28.12.12 19:58 Сейчас в теме
(4) RocKeR_13, Спаcибо - работает!
6. RocKeR_13 1329 29.12.12 09:43 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот