Отмена проведения и проведение документов при переносе данных с использованием конвертации данных.

Публикация № 160588

Разработка - Обмен данными 1С - Перенос данных из 1C8 в 1C8

конвертация обмен перенос данных

В статье описано, как добиться оптимальной записи с отменой проведения или проведением перенесенных документов  при написании правил обмена в системе Конвертации Данных (КД).

При переносе данных между базами часто возникает ситуация, когда движения документов переносить не требуется, а перенесенные документы следует проводить в базе-приёмнике. Например, в базе-источнике ведется управленческий учет, а в базе-приемнике  регламентированный.  Если при переносе не учитывать свойство «Проведен» документа, то можно получить в приемнике проведенные документы, у которых данные в движениях и в объекте не соответствуют друг другу.

 В правилах конвертации объектов (ПКО) в обработчике «Перед загрузкой» существуют параметры «РежимЗаписи» и «РежимПроведения», указание которых обеспечивает необходимый режим записи объекта, но в этом случае, запись происходит во время загрузки данных и если, по каким-то причинам, документ не запишется, загрузка данных будет прервана. Правильней записывать новые документы в конце загрузки, когда все перенесенные объекты уже будут в базе - приемнике.

Несколько основных моментов:

  1. Нам необходим параметр конвертации с типом «Таблица значений», куда можно будет записывать ссылки на документ и информацию о том, что с документом делать. Создать параметр на вкладке «Параметры» конвертации – не получится, но его спокойно можно создать программным способом. После использования наш параметр следует удалить, в противном случае при использовании управляемой формы обработки система будет выдавать сообщение об ошибке, т.к. управляемая форма не использует таблицу значений. Несмотря на сообщение об ошибке, обработка все действия выполнит, но нервировать пользователей подобными сообщениями не следует.
  2. Для анализа, новый это объект или существующий в обработке используется параметр ОбъектНайден.
  3. Для анализа состояния ранее записанного объекта в приемнике используем обращение к его ссылке (Объект.Ссылка).
  4. Для записи ссылки нового для приемника документа нам необходимо документ записать. Чтобы избежать повторной записи документа обработкой обмена следует выставить параметр ОбъектМодифицирован в значение Ложь.
  5. Обработка обмена данными при записи документа обнуляет перенесенную пометку удаления. Это необходимо учитывать.
  6.  Для решения стоящей задачи наиболее удобно использовать обработчики событий конвертации в целом. Но нам необходимо определить – объект  - это документ, и если документ – то проводится ли он. Для идентификации документа используем параметр обработчика ИмяТипаОбъекта.

 

I. Первый, более простой, случай: требуется оставлять в базе-приемнике документы непроведенными.

      Подразумевается, что пользователи в базе-приемнике проверят документы и потом их проведут. Если не переносить движения и просто указать в свойстве «Проведен»  - «Значение = Ложь», то можем получить при повторном переносе документы внешне не проведенные, но с движениями. К этому получим справедливое возмущение пользователей, которые не смогут понять результатов отчетов.

     Свойство «Проведен» необходимо исключить из переноса в каждом документе. Нам необходимо при выгрузке данных запоминать необходимые для отмены проведения документы и после загрузки данных записать их с режимом отмены проведения. Помимо ссылки на документ необходимо сохранять и информацию об его пометке удаления. Для получения информации о пометке удаления данное свойство каждого проводимого документа необходимо передавать в параметр, который назовем также, как и имя свойства - ПометкаУдаления. (Рис.1)

1. В обработчике «Перед загрузкой данных» конвертации создаем параметр с типом значений «Таблица значений».  В колонку "Действие" строкой будем записывать – что делать с документом: просто отменять проведение или еще проставлять пометку на удаление.

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

2. В обработчике «После загрузки объекта» конвертации, определяем найден ли объект, является ли объект документом, проводится ли он, и если в приемнике он проведен, то только тогда помещаем ссылку на него в наш параметр ТаблицаДокументов.

    Если ОбъектНайден
        И ИмяТипаОбъекта = "Документ"
        И
Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
        И Объект.Ссылка.Проведен Тогда
        
НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
        
НоваяСтрока.Ссылка = Объект.Ссылка;
        Если
ПараметрыОбъекта.Получить("ПометкаУдаления") Тогда
            
НоваяСтрока.Действие = "Удаление";
        Иначе
            
НоваяСтрока.Действие = "Отмена";
        КонецЕсли;
    ИначеЕсли 
ПараметрыОбъекта <> Неопределено И Лев(Строка(ТипЗнч(Объект)),8) = "Документ"  Тогда
        
Объект.ПометкаУдаления = ПараметрыОбъекта.Получить("ПометкаУдаления"); //Пометка удаления у новых объектов и непроведенных старых
    КонецЕсли;

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

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

     Если Не
ПустаяСтрока(ТекстСообщенияОтмены) Тогда
         
Сообщить("Отменено проведение документов:" + Символы.ПС + ТекстСообщенияОтмены);
     КонецЕсли;
     Если Не
ПустаяСтрока(ТекстСообщенияОшибки) Тогда
         
Сообщить("Ошибки при отмене проведения: "+ Символы.ПС + ТекстСообщенияОшибки);
     КонецЕсли;
     
Параметры.Удалить("ТаблицаДокументов");

II. Требуется обеспечить проведение документов в базе-приемнике при переносе.

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

1. «Перед загрузкой данных» Повторяем создание параметра конвертации, как в первом примере

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

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

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

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

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

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

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

ТекстСообщенияЗаписи = "";
ТекстСообщенияОшибки = "";

Для каждого СтрокаТч Из Параметры.ТаблицаДокументов Цикл


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

        Продолжить;

    КонецЕсли;

    Если
СтрокаТч.Действие = "Проведение" Тогда
       
РежимЗаписи = РежимЗаписиДокумента.Проведение;
    Иначе
       
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
    КонецЕсли;

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

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

    ТекстСообщенияОшибки = ТекстСообщенияОшибки Строка(СтрокаТч.Ссылка)+ " : "+ОписаниеОшибки()+ Символы.ПС;

    КонецПопытки;
КонецЦикла;

Если Не
ПустаяСтрока(ТекстСообщенияЗаписи) Тогда
   
Сообщить(ТекстСообщенияЗаписи);
КонецЕсли;

Если Не
ПустаяСтрока(ТекстСообщенияОшибки) Тогда
   
Сообщить("Ошибки при отмене проведения: "+ Символы.ПС + ТекстСообщенияОшибки);
КонецЕсли;
Параметры.Удалить("ТаблицаДокументов");

 



Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. K_A_O 527 24.12.12 10:55 Сейчас в теме
Конечно же, такой подход имеет право на жизнь.
Однако в большинстве случаев достаточно параметра РежимЗаписи и установки флажка "Режим отладки" в обработке загрузки. В этом режиме загрузка прерываться не будет.
36. Crazy Professor 19 12.07.19 15:13 Сейчас в теме
Все жду, когда кто-нибудь наконец рабочие процедуры "после загрузки данных" выложит, сам все время забываю и уже третий раз их придумываю заново.
Проблема функций в топике, в том, что они не умеют помечать на удаление проведенные документы и проводить помеченные на удаление. В таких случаях действия необходимо выполнять в два этапа.
Ну и, если честно, функции тяжело воспринимаются.

Мой вариант:

ТекстСообщенияЗаписи = "";
ТекстСообщенияОшибки = "";

Для каждого СтрокаТч Из Параметры.ТаблицаДокументов Цикл

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

Если Не ПустаяСтрока(ТекстСообщенияЗаписи) Тогда
    Сообщить(ТекстСообщенияЗаписи);
КонецЕсли;

Если Не ПустаяСтрока(ТекстСообщенияОшибки) Тогда
    Сообщить("Ошибки: "+ Символы.ПС + ТекстСообщенияОшибки);
КонецЕсли;
Параметры.Удалить("ТаблицаДокументов");
Показать
2. iov 405 24.12.12 12:07 Сейчас в теме
(0) в КД проведен - в ложь.
Если перегружаем все подряд - то дополнительный реквизит - проводить = истина.
после загрузки - проводим все что нужно через попытку что не провелось - сообщаем пользователю.
Вариант?
Fox-trot; +1 Ответить
3. ARL 296 24.12.12 12:46 Сейчас в теме
(2)Вариантов всегда масса :) Показан один из них, реализованный у меня лично. У меня регулярный перенос по плану обмена. Проводить все подряд - в моем случае не допустимо.
4. iov 405 24.12.12 12:55 Сейчас в теме
(3)тык у меня тоже не все подряд - а только то что проведено в основной ... Но именно через попытку - потому как даже режим записи= истина не гарантирует корректности проводок (а порой документ проведен/не проведен а движений есть/нет). Но не суть на больших объемах (много данных или много обменов или и то и другое) обмен приходится делать через такие хитрости и извраты.... Но как говорится ваше решение имеет право на жизнь. И оно пригодится в ряде решений других задач.
5. ARL 296 24.12.12 13:07 Сейчас в теме
(4) В примерах все проводится через попытку. Только оператор открывается перед ПолучитьОбъект(), т.к. мы можем пытаться манипулировать с ранее записанным объектом, а он может быть кем-нибудь заблокирован.
bananoed; +1 Ответить
6. iov 405 24.12.12 13:22 Сейчас в теме
(5) дааа есть такие гады... дай ткнуть в документ ... :)
7. fomix 26 11.01.13 12:34 Сейчас в теме
Возможно у автора описка в тексте публикации. Событие "После загрузки данных" выполняется самым последним после загрузки данных из файла обмена, когда файл уже закрыт и только один раз! А потому правильнее будет, если таблица значений создается в событии "Перед загрузкой данных", которое выполняется первым перед началом загрузки данных из файла и только один раз, после открытия файла для чтения. В данном обработчике как раз и могут быть инициализированы переменные, которые впоследствии предполагается использовать.
user811769; Fox-trot; trium@bk.ru; +3 Ответить
8. ARL 296 11.01.13 12:55 Сейчас в теме
(7)Точно, описался. Несколько раз проверял, а такую очевидную ляпу пропустил. Благодарю за замечание, исправляю.
9. fomix 26 16.01.13 17:29 Сейчас в теме
Еще ошибка в обоих фрагментах текста обработчика "После загрузки данных":
....
Попытка
.....
Исключение
ТекстОшибки = ТекстСообщенияОшибки + Строка(СтрокаТч.Ссылка) + " : "+ ОписаниеОшибки() + Символы.ПС;
КонецПопытки;

нужно исправить на:
ТекстСообщенияОшибки = ТекстСообщенияОшибки + Строка(СтрокаТч.Ссылка) + " : "+ ОписаниеОшибки() + Символы.ПС;
Designer1C; LexSeIch; +2 Ответить
10. ARL 296 17.01.13 00:15 Сейчас в теме
11. fomix 26 17.01.13 10:05 Сейчас в теме
Тут еще по теме всплыли мыслишки. Для проверки принадлежности загружаемого объекта к типу "Документ" заменить нижеприведенные конструкции в обработчиках «После загрузки объекта» конвертации:

>> Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект.Ссылка))
>> Лев(Строка(ТипЗнч(Объект)),8) = "Документ"

на более простую:
<< Если ИмяТипаОбъекта = "Документ" ...
12. ARL 296 17.01.13 15:25 Сейчас в теме
Так будет и проще, и правильней. Не обратил внимание на данный параметр обработчика в свое время. В "своем" обмене уже поменял.
14. wau8824ru 09.04.13 17:29 Сейчас в теме
(12) Помогите разобраться новичку,
В обработчике «Перед загрузкой данных» конвертации
В обработчике «После загрузки объекта» конвертации
В обработчике «После загрузки данных» конвертации
Это глобальные обработчики, которые находятся на закладке "Основная" Конвертации, и они будут отрабатывать только для тех объектов у которых ПКС ПометкаУдаления и Проведен заменены на параметры??? А если не заменять на параметры то все будет как обычно(без параметров)?
,
В общем глупый вопрос, все написано в описании, невнимательно прочитал... спасибо за копипаст... работает
sv_mikh; knigina; +2 Ответить
13. Manonegro 15.03.13 16:28 Сейчас в теме
У меня выдает ошибку:

Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
Значение не является значением объектного типа (Получить)

Я, так понимаю, ПараметрыОбъекта = Неопределено.

Или свойства ПометкаУдаления и Проведен нужно передавать в параметр? Тогда для переноса из 7.7 не подходит, ибо в параметр переносить нельзя. Есть другой способ передать эти свойства? Например, через глобальные параметры?
15. LexSeIch 205 17.06.13 08:31 Сейчас в теме
Мир этому дому!
Автору плюс, fomix - то же плюс. Статья интересная - пока бегло прочитал - позже разберусь внимательней. Спасибо!
16. swimdog 701 07.11.13 12:03 Сейчас в теме
Пригодилось. Я делал похожий механизм, но проводил сразу после загрузки.
17. swimdog 701 07.11.13 12:11 Сейчас в теме
А зачем надо Проведен и ПометкаУдаления передавать через параметр? Почему нельзя просто Объект.Проведен и Объект.ПометкаУдаления?
И ПометкаУдаления снимается обработкой, наверное, в том случае, когда в обработке по загрузке установлен флажок "Объекты, выгруженные по ссылке, загружать без пометки на удаление".
18. ARL 296 07.11.13 23:15 Сейчас в теме
(17)
А зачем надо Проведен и ПометкаУдаления передавать через параметр? Почему нельзя просто Объект.Проведен

Через параметр передавать логичней, т.к. пометки появятся у документов только после проведения - отмены проведения в базе приемника.
Пример: вы передали свойство "Проведен" при обмене. Но при проведении - документ не провелся, а свойство - осталось. Получим проведенный документ без движений.
когда в обработке по загрузке установлен флажок "Объекты, выгруженные по ссылке, загружать без пометки на удаление"

Надо пробовать. Вроде как написано - для объектов по ссылке, а не напрямую.
Я заметил,к примеру, что при загрузке обработкой в управляемой форме - проблем с пометкой не возникало.
А к статье надо относиться как примеру методики работы с конвертацией, а использовать или нет - это уже в каждом конкретном случае надо определять.
19. knigina 15.11.13 23:25 Сейчас в теме
Моя тема. Как новичок, которому приходилось довольствоваться штатным обменом УТ 10.3-БП 3.0, не знала как подступить к переносу без проведения документов. Спасибо автору. И отдельное спасибо от меня 88wau24ru за правильно заданный (для меня!) вопрос...и ответ. В результате что-то у меня даже получилось. Буду разбираться дальше.
20. RSConsulting 107 17.02.15 07:59 Сейчас в теме
Ругается на строку "Если ПараметрыОбъекта.Получить("Проведен") Тогда".
Ошибка: "Значение не является значением объектного типа (Получить)"
Версия конвертации 2.1.8.1
22. ARL 296 18.02.15 10:34 Сейчас в теме
(20) Вы пропустили момент
В этом случае необходимо помимо пометки удаления передавать значение свойства «Проведен» в параметр «Проведен» и данный параметр анализировать в обработчике «После загрузки объекта» (Рис.2).
(21) Заработало, но некорректно. Возможно, что в новой базе документ не проведется, а свойство "Проведен" останется. Получим проведенный документ без движений. Пользователи скажут "спасибо".
26. kida1 129 24.11.16 20:11 Сейчас в теме
Автору Спасибо!
хорошо бы добавить снятие с проведения
(22) Добавьте в исключение в «После загрузки данных» не просто ТекстОшибки, а снятие с проведения

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

21. RSConsulting 107 17.02.15 08:16 Сейчас в теме
Заменил код в обработчике После загрузки объекта на

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

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

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

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


Заработало!
zShamaNz; AlexLM; ДимокШ; Designer1C; eldarik; maksa2005; Dunda; +7 Ответить
34. zShamaNz 50 22.02.19 18:27 Сейчас в теме
(21) Почему-то оригинальный вариант глючил, а этот взлетел.
23. damirxan 23.03.15 10:37 Сейчас в теме
Все работает.
Спасибо за решение по проведению документов через Параметр.
24. KliMich 25.03.16 19:19 Сейчас в теме
Спасибо! Переносил через КД из ПУБ 7.7 в БП 3.0.

Только при переносе из 1с 7.7 "передача данных в параметр" не работают....
Сделал как в посте 21. RSConsulting - все сработало!
25. Nik777x 16.08.16 09:42 Сейчас в теме
Спасибо, пригодилось. Автору респект.
27. le_ 204 03.07.17 13:50 Сейчас в теме
Покажите, плз, как параметры объекта передаются из источника (Проведение/Удаление/Отмена).
28. ARL 296 03.07.17 23:01 Сейчас в теме
(27) Открыть форму свойства, выбрать переключатель "Передавать данные в параметр" и ввести название параметра в поле ввода "Параметр". На рисунках именно это показано.
29. le_ 204 04.07.17 09:18 Сейчас в теме
(28) Спасибо! Рисунки-то я не посмотрел... А нельзя ли как-то глобальные параметры создать для всех документов?..
30. romku 11 23.08.17 13:28 Сейчас в теме
А почему не переносить реквизиты проведен и пометка удаления, а потом уже после записи документа в приемник, не проводить его или наоборот удалять движения? Т.е. анализировать реквизиты у уже записанного в приемник документа.
В обработчике после загрузки написать примерно так:

Если Объект.Проведен Тогда
	попытка
   		Объект.Записать(РежимЗаписиДокумента.Проведение);
	исключение
			
	конецпопытки
иначе
	попытка
		Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
	исключение
	КонецПопытки	
КонецЕсли;
Показать
31. ARL 296 23.08.17 20:28 Сейчас в теме
(30) Если в базе-приемнике документ не проведется, то получится проведенный документ без движений. И в случае с пометкой на удаление - может появиться помеченный на удаление документ, но с движениями, сформированными ранее.
32. romku 11 24.08.17 09:19 Сейчас в теме
(31) ну это можно обработать в исключении, сбросить эти реквизиты.
33. ARL 296 24.08.17 20:48 Сейчас в теме
(32) Вы указали на частный случай, а случаи разные бывают :) при переносе. Пример: при загрузке документов обработка прекращает работать по ошибке. Правила оказались недоработанными для какого-то редкого сочетания реквизитов. Все перенесенные до ошибки документы оказываются "проведенными" и без движений.
35. acanta 73 22.02.19 18:31 Сейчас в теме
+Добавляем в конфигурацию конвертация данных кнопочку, которая все эти процедуры добавляет и параметры переставляет для текущего объекта метаданных.
Оставьте свое сообщение

См. также

Механизмы проведения документов при обмене по универсальному формату

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    1558    partizand    5       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Автоматический обмен при появлении файла, по регламентному заданию создаёт файл выгрузки, даже если файл загрузки не появлялся

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Заметил, что "Автоматический обмен при появлении файла" каждый раз создаёт файл выгрузки данных, даже если файл для загрузки данных не появлялся. Данный код проверит, что файл появился, только после чего создаст файл выгрузки данных.

20.02.2020    894    wau8824ru    4       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Бесшовная интеграция через обмен по правилам - миссия выполнима

Статья Программист Нет файла v8 ДО ERP2 Бесплатно (free) Практика программирования Интеграция Перенос данных из 1C8 в 1C8

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    2159    e-9    2       

Конвертация ставок НДС: из Перечисления в Справочник (правила обмена в конвертации 2.0)

Статья Программист Нет файла v8 КД Россия НДС Бесплатно (free) Перенос данных из 1C8 в 1C8

При написании правил обмена между "более старой" и "более новой" конфигурациями можно столкнуться с тем, что в одной конфигурации ставки НДС - это перечисление, а в другой - справочник (или наоборот, но мой пример именно из перечисления в справочник). Ситуация несложная, но нестандартная, поэтому выкладываю работающий пример, может, кому пригодится.

09.11.2019    3507    vikulinamari    1       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Настройка синхронизации между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4

Статья no Нет файла v8 БП3.0 УТ11 Беларусь Бесплатно (free) Перенос данных из 1C8 в 1C8

Пошаговое описание настройки типового обмена между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4

21.10.2019    4320    OlesiaM    1       

Объединение организаций в ЗУП при реорганизации с переносом данных из ЗУП 2.5 в ЗУП 3.1

Статья Программист Нет файла v8 v8::СПР ЗУП2.5 ЗУП3.x БУ Бесплатно (free) Зарплата Управление персоналом (HRM) Перенос данных из 1C8 в 1C8

В этой статье описан опыт объединения 2-х организаций при реорганизации в ЗУП 3.1 с переносом данных одной организации из ЗУП 2.5 (релизы баз более или менее свежие, но не самые последние на момент перехода, примерно двух- и трехмесячной давности). За основу было взято решение из этой статьи https://infostart.ru/public/833658/, в которой описан алгоритм решения задачи, за что автору статьи огромная благодарность! Здесь же даны некоторые комментарии и пояснения к алгоритму переноса и объединения, описаны выявленные мною ошибки. Также приведена небольшая инструкция по использованию обработки ирПодборИОбработкаОбъектовБД — она будет полезна для пользователей — «не программистов», впервые работающих в не управляемых формах.

09.10.2019    4363    Neti    1       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Перенос данных из 1C8 в 1C8

Очень часто бухгалтеры ругаются, когда уже отраженные документы в бухгалтерском учета меняются сотрудниками.

04.10.2019    4460    handscenter    12       

Дозагрузка измененных данных при помощи КД2

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Иногда во время каких-то регламентных действий по обслуживанию базы(например, при обновлении измененной базы на много релизов) требуется обеспечить бесперебойность работы пользователей. Если конфигурации баз до и после идентичны, то тут сам Бог велел воспользоваться обработкой "ВыгрузкаЗагрузкаДанныхXML", либо такой же но с отбором(на Инфостарте есть такая). Но что если конфигурации баз различаются/значительно различаются? Ниже опишу, как вышел из положения я.

12.09.2019    3144    al_zzz    2       

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке"

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    5623    ivanek    21       

Обмен данными через Web Сервисы

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Ознакомительная статья о том, как загружать\выгружать данные с одной базы в другую, используя Web Сервисы.

02.09.2019    12102    user5300    38       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для решения задач бухгалтерского учета. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Бухгалтерия” и прочих прикладных решений, в которых реализованы соответствующие механизмы для автоматизации бухгалтерских задач.

4900 рублей

Выгрузка и загрузка документов с движениями

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

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

02.09.2019    4208    human_new    7       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    8980    ids79    7       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

Перенос дополнительных реквизитов в Конвертации данных 2.0

Статья Программист Нет файла v8 КД Россия УУ Бесплатно (free) Перенос данных из 1C8 в 1C8

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    6593    vikulinamari    7       

Выгрузка данных из УТ 10.3 в БП 3.0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 УТ10 БП3.0 Абонемент ($m) Перенос данных из 1C8 в 1C8

Выгрузка данных из УТ 10.3.34.1 в БП 3.0.72.54. Документы переносятся без пометки проведения.

1 стартмани

12.08.2019    1895    Belomor    8       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Синхронизация данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл

Статья Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

Публикация описывает последовательность синхронизации данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл.

23.04.2019    8027    saveliev    3       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    14075    m-rv    16       

Работа с ComОбъектом 1С 8.2; 8.3

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Перенос данных из 1C8 в 1C8

Определение типов и значений через COM соединение между конфигурациями.

15.04.2019    15863    vik070777    12       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена

Статья Программист Нет файла v8 УПП1 Россия Windows Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    5082    mrcamomile    12       

RabbitMQ + Конвертация Данных 3.0

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 КД Бесплатно (free) Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8

Предлагаем ознакомиться с хронологией проекта, проследить ход мыслей от снятия потребностей до реализации, и решить, удалось ли проектной команде найти оптимальное архитектурное решение под конкретный кейс заказчика путем совмещения двух известных, но до сих пор не пересекавшихся технологий, и получилось ли сложить плюсы и устранить минусы каждой из них.

21.03.2019    19318    barelpro    82       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Конвертация данных 2.1: поиск по условию

Статья Программист Нет файла v8 КД ERP2 Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

Задача. При обмене документами "Реализация товаров и услуг", поиск контрагента осуществлять по полям "ИНН", "КПП". Если вид договора с комиссионером, то поиск осуществлять по полям "ИНН", "КПП", "Наименование".

15.01.2019    10434    wowik    13       

Заметки КД 2.1: Как передать файл, динамически создаваемый в источнике, в справочник присоединенных файлов приемника

Статья Программист Нет файла v8 КД Россия Windows Бесплатно (free) Перенос данных из 1C8 в 1C8

В БП 3.0 есть документ "Книга Продаж Для Передачи В ЭлектронномВиде" из которого выгружается XML файл. Задача: Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу приемник. В приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".

10.10.2018    7535    Viktor_Ermakov    6       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Планы обмена 1С

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8 Интеграция

В статье - мастер-классе Дмитрий Жичкин рассказывает, для чего нужны планы обмена 1С и какие задачи они решают. Он подробно описывает физическую структуру планов обмена и механизмов регистрации изменений, рассматривает основные проблемы, возникающие при выгрузке изменений и предлагает методы их решения.

10.09.2018    44373    zhichkin    25