новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Проведение документов в базе-приемнике при переносе (Конвертация данных)

  • Добавить свою публикацию
  • для этого требуется регистрация

Проведение документов в базе-приемнике при переносе.

   В этом случае необходимо  передавать значение свойства «Проведен» в параметр «Проведен» и данный параметр анализировать в обработчике «После загрузки объекта».

 Изображение

1. «Перед загрузкой данных» 

 

Создаем в параметрах Правил обмена один параметр, обзываем его "Таблица документов" в нем будут храниться значения которые загрузились в приемник.

 Изображение

Далее вставляем следующий код.

 

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

 


2. «После загрузки объекта»  После загрузки мы должны уже работать с объектами, которые еще не записаны в базе. Документы можно выделить по типу значения, а новый объект, перед внесением в таблицу параметра, необходимо предварительно записать. Не забываем установить параметр «ОбъектМодифицирован» в «Ложь». 

 


Если ИмяТипаОбъекта = "Документ"
    И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда

    Если Не ОбъектНайден  Тогда
        Объект.Записать();
        ОбъектМодифицирован = Ложь;
    КонецЕсли;

    НоваяСтрока =  Параметры.ТаблицаДокументов.Добавить();
    НоваяСтрока.Ссылка = Объект.Ссылка;

    Если ПараметрыОбъекта.Получить("Проведен")  Тогда
        НоваяСтрока.Действие = "Проведение";
    ИначеЕсли ПараметрыОбъекта.Получить("ПометкаУдаления")  Тогда
        НоваяСтрока.Действие = "Удаление";
    Иначе
        НоваяСтрока.Действие = "Отмена";
    КонецЕсли;
КонецЕсли;

 

3. «После загрузки данных» После загрузки мы должны пропустить запись документа, если он не проведен в базе-источнике и в базе приемника. Также необходимо проследить за пометкой удаления.

 

 

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

 

 

Вот в принципе и все, в итоге получили проведенные документы в базе приемнике.

 
0
Читайте также
Конфигурирование методом «структурного невмешательства».
Концепция "неизменяемой конфигурации". Обновление при этом занимает значительно меньше времени, а базовый функционал почти не меняется
[СКД] Организация простейшего отчета с помощью схемы компоновки данных
Схема компоновки данных представляет большие возможности по отборам, группировкам и оформлению выходного макета
(V 7.7) Справка по работе с метаданными (с примерами)
Получение метаданных в программе 1С 7.7 происходит через объект "Метаданные"
Настройка и обслуживание 1С
Настройку 1С предприятия осуществляют после установки конфигурации, при обнаружении ошибок и при изменениях в работе фирмы
Разработки
IBridges бесплатный сервис обмена первичными документами
Сервис обмена первичными документами для торговых предприятий
Свободное проведение документов
Помощь в проведении документов
Как из 1С правильно УКАЗАТЬ MS EXCEL как нужно печатать документы !
Как правильно из 1С печатать документы .xml в EXCEL
Еще от автора
≡ к списку статей