Каталог решений - Фокусы с Конвертацией данных 2.0

Фокусы с Конвертацией данных 2.0

Фокусы с Конвертацией данных 2.0

В наличии

Используем мощный инструмент Конвертации данных  себе во благо

Категория:

Описание

Новый год по бухгалтерскому календарю опаздывает с натуральным на 3 месяца. Поэтому приходиться догружать данные. С базами 8 все просто. Есть поиск по внутреннему идентификатору. Но в 77 такого счастья нет. Сменили номер, дату и — привет лишним документам и старым хвостам. Как с этим бороться? Да очень просто. Можно воспользоваться дополнительными свойствами или регистром «Коллизии при обмене». Пример для передачи документа «Выписка банка» из Бух 77 в Бух 2.0 с использованием дополнительных свойств.

Что нам требуется

Передать, найти, переопределить, записать

Свойства избыточны, но зато бухгалтер сразу найдет в старой базе нужную информацию.

Передаем

Обработчик При выгрузке

УстановитьАтрибут(Приемник, "ВидДок", Источник.Вид());
УстановитьАтрибут(Приемник, "НомерДок", СокрЛП(Источник.НомерДок));
УстановитьАтрибут(Приемник, "ДатаДок", Формат(Источник.ДатаДок,"Д ГГГГммДД"));
УстановитьАтрибут(Приемник, "НомерСтроки", Строка(ВходящиеДанные.Получить("НомерСтроки")));
УстановитьАтрибут(Приемник, "ИНН", Константа.ИННОрганизации);

УстановитьАтрибут(Приемник, "ИД", ЗначениеВСтрокуВнутр(Источник));

Ищем

Обработчик Перед загрузкой

//Ищем объект по доп реквизитам

Параметры.Вставить("ДатаДок",Дата(ФайлОбмена.ПолучитьАтрибут("ДатаДок")));
Параметры.Вставить("НомерДок",ФайлОбмена.ПолучитьАтрибут("НомерДок"));
Параметры.Вставить("ВидДок",ФайлОбмена.ПолучитьАтрибут("ВидДок"));
Параметры.Вставить("ИНН",ФайлОбмена.ПолучитьАтрибут("ИНН"));
Параметры.Вставить("НомерСтроки",ФайлОбмена.ПолучитьАтрибут("НомерСтроки"));
Параметры.Вставить("ИД",ФайлОбмена.ПолучитьАтрибут("ИД"));
Параметры.Вставить("ОбъектНайден",Ложь);

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

Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда  //Нашли объект
    Ссылка=Результат.Объект;
    Параметры.Вставить("ОбъектНайден",Истина);
    Параметры.Вставить("Объект",Ссылка.ПолучитьОбъект());
Иначе
    Параметры.Вставить("ОбъектНайден",Ложь);
КонецЕсли;

Переопределяем если нашли

Обработчик  При загрузке

Если Параметры.ОбъектНайден=Истина Тогда
    //Стоит заметить, что при переопределении поля поиска не изменяются. Поэтому требуется прописать

    СтОбъект=Объект;

    ОбъектНайден=Истина;
    Объект=Параметры.Объект;

    Объект.Номер=СтОбъект.Номер;

    Объект.Дата=СтОбъект.Дата;
КонецЕсли;

И последнее — записываем

Обработчик После загрузки

Объект.Записать();

Свойства=ПланыВидовХарактеристик.СвойстваОбъектов;
СсылкаИНН =Свойства.НайтиПоНаименованию("ИНН");
СсылкаНомерДок =Свойства.НайтиПоНаименованию("НомерДок");
СсылкаДатаДок =Свойства.НайтиПоНаименованию("ДатаДок");
СсылкаВидДок =Свойства.НайтиПоНаименованию("ВидДок");
СвойстваДоков=ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы;
СсылкаНомерСтроки =Свойства.НайтиПоНаименованию("НомерСтроки"); 
СсылкаИД =Свойства.НайтиПоНаименованию("ИД");

Набор=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
Набор.Отбор.Объект.Установить(Объект.Ссылка);
Набор.Прочитать();
Набор.Очистить();
//ИНН
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаИНН;
Запись.Значение=Параметры.ИНН;
//НомерДок
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаНомерДок;
Запись.Значение=Параметры.НомерДок;
//ДатаДок
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаДатаДок;
Запись.Значение=Параметры.ДатаДок;
//ВидДок
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаВидДок;
Запись.Значение=Параметры.ВидДок;
//НомерСтроки
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаНомерСтроки;
Запись.Значение=Параметры.НомерСтроки;
//ИД
Запись=Набор.Добавить();
Запись.Объект=Объект.Ссылка;
Запись.Свойство=СсылкаИД;
Запись.Значение=Параметры.ИД;
Набор.Записать();
has been added to your cart:
Оформление заказа