Конвертация банковской выписки Ключевые слова: КД, Конвертация данных, Банковска выписка
Поставили как то задачу перенести документ из 7.7 БанковскаяВыписка в "Управление торговлей 8.0". В УТ 8.0 такого документа нету, есть только обработка "Выписка банка", но есть документы "Платежное поручение входящее" и "Платежное поручение исходящее" в которые и нужно переносить "Банковскую выписку".
Создадим правило переноса "Банковской выписки" в документы "Платежное поручение входящее" и "Платежное поручение исходящее".
1. Создадим правило конвертации объекта с пустым источником и приемником "Платежное поручение входящее" (ПКО = "ПлатежноеПоручениеВходящее").
2. Создадим правило выгрузки данных для банковской выписки, и установим для него способ выборки "Произвольный алгоритм" (ПВД = "ПлатежноеПоручениеВходящее").
3. В событии ПередОбработкой ПВД "ПлатежноеПоручениеВходящее" нужно написать код на встроенном языке 7.7 который бы проводил выборку из банковских выписок только входящих платежей (реквизит табличной части "ПлюсМинус = Перечисление.ПлюсМинус.Минус") и заполнил встроенную переменную ВыборкаДанных. Пример:
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Номер");
ВыборкаДанных.НоваяКолонка("Дата");
ВыборкаДанных.НоваяКолонка("Контрагент");
ВыборкаДанных.НоваяКолонка("Сумма");
ВыборкаДанных.НоваяКолонка("Индекс");
БанковскаяВыписка = СоздатьОбъект("Документ.БанковскаяВыписка");
БанковскаяВыписка.ВыбратьДокументы();
Пока БанковскаяВыписка.ПолучитьДокумент() = 1 Цикл
БанковскаяВыписка.ВыбратьСтроки();
Пока БанковскаяВыписка.ПолучитьСтроку() = 1 Цикл
Если БанковскаяВыписка.ПлюсМинус = Перечисление.ПлюсМинус.Плюс Тогда
Продолжить;
КонецЕсли;
ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Номер = БанковскаяВыписка.Номер;
ВыборкаДанных.Дата = БанковскаяВыписка.Дата;
ВыборкаДанных.Контрагент = БанковскаяВыписка.Контрагент;
ВыборкаДанных.Сумма = БанковскаяВыписка.Сумма;
ВыборкаДанных.Индекс = БанковскаяВыписка.НомерСтроки;
КонецЦикла;
КонецЦикла;
//Колонка Индекс необходима для того чтобы сделать каждую строку таблицы ВыборкаДанных
//объектом выгрузки, увидим это дальше.
4. Переходим к правилу конвертации объекта "ПлатежноеПоручениеВходящее", в событии ПередВыгрузкой, напишем следующий код:
КлючВыгружаемыхДанных = Строка(Источник.Дата) + Строка(Источник.Номер) + Строка(Источник.Индекс);
//таким образом с каждой строки таблицы ВыборкаДанных мы получим один объект для выгрузки
5. Создаем правила конвертации свойств. Здесь проблем возникнуть не должно. В правиле конвертации номера документа, в обработчике ПередВыгрузкой я написал:
Значение = Строка(Источник.Номер) + "-" + Строка(Источник.Индекс);
// это нужно для синхронизации, чтобы при повторной загрузке не создавались повторно документы
// не забудьте включить синхронизацию по номеру и дате
Все, правило конвертации для платежного поручения входящего готово! Для исходящего поручения правило конвертации создается аналогично. Удачи!
|