Удаление объекта в узле обмена по обмену данными

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

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

Варианты удаления объектов на удаленном узле при обмене данными.

Порой при обмене данных получается ситуация когда из удаленного узла необходимо удалить определенные объекты и сделать это непосредственно очень проблематично. Возможные варианты решения такой проблемы рассматриваются в данной статье. Необходимо заметить, что в целом рассматривается ситуация с распределенными информационными базами (РИБ).

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

 

Вариант 1. Использование объекта УдалениеОбъекта. Суть – находим ссылку на объект и по обмену посылаем в удаленную базу. Что-то вроде этого:

Узел = ПланыОбмена.ИмяНужногоПланОбмена.НайтиПоКоду("02");
Ссылка=Справочники.Номенклатура.НайтиПоКоду("000000026");
Удаление = Новый УдалениеОбъекта(Ссылка);
Удаление.Записать();
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Удаление);

Но с данным кодом возникнет следующая проблема – при наличии строки Удаление.Записать(); будет удален объект в текущей базе (а это не нужно). При отсутствии строки Удаление.Записать(); в удаленной базе данные останутся, то есть задача не будет решена.

 Вот если в текущей БД нет такого объекта, то можно использовать следующее:

Узел = ПланыОбмена.ИмяНужногоПланОбмена.НайтиПоКоду("02");
Ссылка=Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("de18c53b-c3a7-11e2-acf9-001966ee0859"));
Удаление = Новый УдалениеОбъекта(Ссылка);
Удаление.Записать();
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Удаление); 

Примечание: в 1С8 следует различать УникальныйИдентификатор (UUID) и глобальный уникальный идентификатор (GUID). При необходимости в сети можно найти код преобразования UUID в GUID и обратно.

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

 Необходимо учесть ситуацию, что в удаленном узле объект присутствует в других объектах (то есть, удалили номенклатуру «Валенки», а этот элемент присутствует в документах удаленного узла). Тут уже надо думать либо о восстановлении элемента в текущей базе либо предусмотреть замену удаляемого элемента на другой элемент.

Под задачу удаления объектов, которые отсутствуют в текущей БД весьма подходит //infostart.ru/public/173851/  (Регистрация на узлах обмена или перерегистрация Ссылок.) 

Но зачастую требуется удалить объект в удаленной БД, но в текущей БД он должен остаться.

  

Вариант 2. Муторный и не правильный.

Использовать вариант 1, отправить по обмену, получить подтверждение, восстановить элементы и предотвратить отправку восстановленных элементов в удаленный узел.

 

Вариант 3. Требуется вносить изменения в конфигуратор.

В модуле плана обмена в обработчике ПриОтправкеДанныхПодчиненному и/или ПриОтправкеДанныхГлавному отлавливаем нужные объекты и для них передаём Удаление.
Например:

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

Примечание: для универсальности возможен такой вариант. В план обмена вводим реквизит ВыполняемыйКод, тип строка неограниченной длины. В этот реквизит оперативно вставляется неоходимый программный код. Опять же следует учесть что процедура ПриОтправкеДанныхПодчиненному и ПриОтправкеДанныхГлавному срабатывает для КАЖДОГО отправляемого элемента.

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
    Попытка
       Выполнить(ВыполняемыйКод);
    Исключение
    КонецПопытки;
КонецПроцедуры

 

Вариант 4. Самостоятельно формировать файл XML.

Источник  http://www.cyberforum.ru/1c/thread396358-page4.html

 План обмена использую только для регистрации изменений, затем своей обработкой выгружаю выборку в XML по алгоритму из книги Радченко "Практическое пособие разработчика" (довольно просто и гибко получается).

Для передачи удаления объекта не требуется его регистрировать - достаточно выгрузить соответствющую "команду" в XML.

Если Не ВыгружаемыйОбъект.ОтражатьВБухгалтерскомУчете Тогда

    ВыгружаемыйОбъект = Новый УдалениеОбъекта(ВыгружаемыйОбъект.Ссылка);
КонецЕсли;

... и затем собственно сама выгрузка

ЗаписатьXML(ЗаписьXML, ВыгружаемыйОбъект);

 


А теперь подводные камни.

Если вы желаете удалить некоторый объект, то помните, что на этот объект могут быть завязаны и другие объекты в базе данных. Например – подчиненные справочники, движения документа, независимые регистры сведений и т.д., то есть те объекты которые не имеют смысла при отсутствии удаляемого объекта. Часть объектов можно найти достаточно просто (подчиненные справочники, движения документа, регистры сведений где объект является ведущим измерением), а вот некоторые достаточно проблематично, так как необходимо просматривать каждый объект и смотреть в коде какие изменения он вносит в БД при записи и/или проведении.

 

И последний совет. Если расхождения в удаленной БД достаточно велики по сравнению с текущей БД, то гораздо быстрее и проще заново создать БД удаленного узла.

Причины купить

 

Достоинства

 

Сравнение версий

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. maikl007 91 31.12.14 09:52 Сейчас в теме
В БП 3.0 добавил следующий код в правила обмена для удаления объета (обработчик события - перед обработкой). Объект остается в центральной и удаляется в перефирийной базе.
1. Для удаления объектов:
Если Не Объект.МиграцияДокумента Тогда
	Узел = Планыобмена[ПРО.ИмяПланаОбмена].НайтиПоКоду("ПБ");
	ОбъектУдаления = Новый УдалениеОбъекта(Объект.Ссылка);
	ПланыОбмена.ЗарегистрироватьИзменения(Узел, ОбъектУдаления);
	Отказ = Истина;
КонецЕсли;

2. Для удаления записей регистров:
Если Не Объект.Отбор.Регистратор.Значение.МиграцияДокумента Тогда
	Узел = Планыобмена[ПРО.ИмяПланаОбмена].НайтиПоКоду("ПБ");
	Регистратор = Объект.Отбор.Регистратор.Значение;
	НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
	ПланыОбмена.ЗарегистрироватьИзменения(Узел, НаборЗаписей);
	Отказ = Истина;
КонецЕсли;
forseil; druv; s.w.a.t.; Rudakov_D; +4 Ответить
Оставьте свое сообщение

См. также

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

29.10.2013    51653    pyrkin_vanya    70    

Передача параметров при обмене данными через конвертацию 2.1. Из 8.* в 7.7

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v8 КД Бесплатно (free)

Способ передать параметр в 7.7 при выгрузке данных через конвертацию из 8.2/8.3.

30.10.2020    349    dusha0020    4    

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 КД Бесплатно (free)

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    5784    ksnik    5    

Конвертация данных из 1С 8.3 в 7.7 (версия КД 2.1). Перенос данных из 8.3 в 7.7. Создание в современной 1С 8.3 XML в формате КД2. Инструкции и примеры переноса данных из любой современной 1С 8.3 в устаревшую конфигурацию 1С 7.7, через Конвертацию данных 2

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X v7.7 v8 КД Бесплатно (free)

При переходе на новую версию 1С в период параллельной эксплуатации может возникнуть необходимость обратной конвертации данных (по правилам КД версии 2.1) из 1С:Предприятие 8.3 в 1С:Предприятие 7.7 для переноса данных из 1С:Предприятие 8.3 в 7.7. Сделать это поможет следующая инструкция по КД2 о том, как создать новую конвертацию из 8.3 в 7.7, сохранить модуль и правила загрузки данных, сделать загрузку данных. КД2.

17.10.2019    8306    ksnik    0    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    41660    YPermitin    41    

Методика пошагового перехода из решения для платформы 7.7 "Торговля и склад" на решение для платформы 8 "Управление торговлей"

Перенос данных из 1С7.7 в 1C8.X Оптовая торговля Оптовая торговля v7.7 v8 УТ10 1С7:ТиС Оптовая торговля, дистрибуция, логистика Россия БУ УУ Бесплатно (free)

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

31.10.2016    15129    vugluscr1991    29    

Перенос данных из семерки по частям

Перенос данных из 1С7.7 в 1C8.X v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

При переносе баз из семерки в восьмерку, если база данных достаточно большая, может возникнуть ошибка «msxml3.dll: Недостаточно памяти для завершения операции». В этом случае советуют переносить данные по частям. Но возможности выгрузки по частям в стандартной обработке сильно ограничены: можно выгрузить отдельно справочники, остатки на начало года, обороты, документы. Обычно такая выгрузка по частям не исправляет ситуацию, т.к. основной объем данных сосредоточен обычно в одном справочнике, значит нужно выгружать отдельно этот справочник, мало того, может понадобиться его выгружать в несколько этапов. Попытаюсь описать метод решения, который использую в таких случаях.

01.01.2015    27484    32ops    5    

УНФ РИБ Промо

Распределенная БД (УРИБ, УРБД) Перенос данных из 1С7.7 в 1C8.X v8 УНФ Россия Бесплатно (free)

В типовой УНФ нет РИБа. Исправляем этот недостаток, используя УТ 11 и ИТС. Статья подойдет для настойки распределенки в любой конфе на базе БСП.

16.10.2012    39895    ptkrzy    23    

Получение в 1С82 списка баз 1С77 на сервере (управляемые формы)

Перенос данных из 1С7.7 в 1C8.X v8 Бесплатно (free)

Получение в 1С82 списка баз 1С77 на сервере (управляемые формы) для подключения к 1С77 через OLE.

23.12.2013    8081    sdf1979    3    

Случай из практики: об одной нетривиальной ситуации при обмене УНФ-БП

Перенос данных из 1С7.7 в 1C8.X v8 1cv8.cf Бесплатно (free)

Работал себе обмен между УНФ и БП, а потом как-то засбоил - то проходит, то не проходит. О том, что это было...

11.07.2013    9861    uncle_o    10    

Перенос данных из бухгалтерии 7.7 в 8.2 Бухгалтерия предприятия КОРП

Перенос данных из 1С7.7 в 1C8.X v8 БП2.0 Россия Бесплатно (free)

В статье описан процесс переноса данных из конфигурации 7.7 Бухгалтерский учет, версия 4.5 в конфигурацию 8.2 Бухгалтерия предприятия КОРП, редакция 2.0 с примером изменения правил переноса.

24.01.2013    86317    Программист 1С    15    

Прием конвертации, который позволит решить много задач

Практика программирования Перенос данных из 1С7.7 в 1C8.X Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 ЗУП2.5 1С7:Бух КД Бесплатно (free)

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

16.01.2013    85012    SergeMalikov    44    

Связь 8.2 и 7.7 по OLE управляемое приложение (нюансы подключения)

Перенос данных из 1С7.7 в 1C8.X v8 1cv8.cf 1cv7.md Бесплатно (free)

Казалось бы, тривиальная задача - связать 2 этих приложения. Многие это не раз успешно делали, море статей и примеров... А я как всегда наступил на грабли :(

03.01.2013    24702    wunderland    3    

Конвертация данных 2.1 (2.1.3.1) 1С 7.7 - 1С 8.Х передача параметра ПКО

Практика программирования Перенос данных из 1С7.7 в 1C8.X v7.7 v8 КД Бесплатно (free)

Передача параметров по умолчанию доступна только для баз 1С 8.х -1С 8.х. Показан пример, как передать параметры из 1С 7.7 - 1С 8.х

10.12.2012    25517    serg_gres    6    

Видео. Перенос данных из базы 1С:Торговля и склад 9.2 (7.7) в 1С:Управление торговлей 11 (8.2)

Перенос данных из 1С7.7 в 1C8.X Администрирование данных 1С v8 УТ10 1С7:ТиС УУ Бесплатно (free)

В этом видеокурсе будет продемонстрирована процедура переноса данных из программы 1С:Торговля и склад, начиная с редакция 9.2.973 и более поздние версии в 1С:Управление торговлей, редакция 11.0.9 и более поздние версии.

08.11.2012    34651    ИТ-Терминал    2    

Переход на "1С: Бухгалтерию 8". Часть 1. Перенос данных

Перенос данных из 1С7.7 в 1C8.X v7.7 v8 БП2.0 1С7:Бух Россия Бесплатно (free)

В данной публикации рассматривается перенос данных из "1С:Бухгалтерии 7.7" в "1С:Бухгалтерию 8".

03.09.2012    36996    Стил    11    

Групповая обработка ПКО и ПКС в КД

Перенос данных из 1С7.7 в 1C8.X Перенос данных из 1C8 в 1C8 1С7.7<->1C7.7 v8 КД Бесплатно (free)

Встраивание типовой обработки "Универсальный подбор и обработка объектов" в КД для групповой обработки ПКО и ПКС

05.07.2012    20905    Totoro    3    

Конвертация данных 2: передача параметров из выгрузки в загрузку (в том числе и на "ранние" стадии) при обмене из 7.7 в 8.х

Обмен через XML Перенос данных из 1С7.7 в 1C8.X v8 1cv8.cf 1cv7.md КД Бесплатно (free)

Кратко суть проблемы можно озвучить цитатой из документации: "Передача параметра из источника в приемник доступна только при обмене между информационными базами на платформе 1С:Предприятие 8". Ниже излагается способ передачи глобальных параметров при таком обмене без правки выгруженного из КД 2 модуля выгрузки и без правки самой КД 2.

27.05.2012    41887    andrewks    18    

Загрузка остатков из 1С6 в 1С8

Внешние источники данных Перенос данных из 1С7.7 в 1C8.X v8 БП2.0 БУ Бесплатно (free)

Часто при организации обмена данными с 1С6 требуется наладить перенос проводок из 1С6 за период. Но тут же возникает вопрос и о переносе начальных остатков. Так вот, если разработан механизм загрузки движений из 1с6 из файла проводок 1sboper.dbf, то можно просто сэмулировать файл 1sboper.dbf, но в нем оставить только проводки с нулевым счетом и загрузить этот файл на дату загрузки остатков. Таким образом не придется делать дополнительный механизм. Единственное - нужно свернуть остатки в 1sboper.dbf. Как это сделать - эта статья.

27.03.2012    16900    fixin    3    

Обмен между 1С 7.7 и 1С 8 через "ЗначениеВСтрокуВнутр"

Перенос данных из 1С7.7 в 1C8.X Универсальные функции v8 1cv8.cf Бесплатно (free)

Функция разбора строки, содержащей таблицу значений, полученной из 1С 7.7 методом "ЗначениеВСтрокуВнутр"

11.03.2012    17251    AvalonE2008    8    

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

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 1cv8.cf 1cv7.md КД Бесплатно (free)

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

19.12.2011    20206    tusv    9    

Перенос данных в «1С:Зарплата и Управление Персоналом 8.2»

Перенос данных из 1С7.7 в 1C8.X Зарплата Зарплата v8 ЗУП2.5 1С7:ЗиК Россия Бесплатно (free)

Методика переноса данных из типовой конфигурации «1С:Зарплата и Кадры 7.7» в конфигурацию «1С:Зарплата и Управление Персоналом 8.2» при помощи обработки «Перенос данных из информационных баз 1С Предприятие 7.7».

03.10.2011    18418    Nicholas    7    

Хитрость. Использование БУЛЕВО при OLE обмене/подключении из 7.7 к 8

Перенос данных из 1С7.7 в 1C8.X Универсальные функции v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Как известно, при OLE обмене доступны только типы СТРОКА, ЧИСЛО, ДАТА. А вот БУЛЕВО (ИСТИНА, ЛОЖЬ) использовать при подключении из 7.7 к 8 не получается. Как же быть? Есть хитрость, как использовать тип булево в семерке при обмене с 1С8! :)

28.09.2011    16688    dnikolaev    9    

Перенос информации из ЗиК в ЗУП через файл данных

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Зарплата Зарплата v8 ЗУП2.5 1С7:ЗиК Россия Бесплатно (free)

Если по каким-либо причинам невозможен перенос данных непосредственно из информационной базы «1С:Зарплата и Кадры 7.7», либо Вы собираетесь использовать нетиповые правила выгрузки данных, то необходимо воспользоваться «Помощником перехода на Зарплата и управление персоналом, редакция 2.5». В данной статье описывается, каким образом можно выгрузить данную обработку из справочника «Конвертация из информационных баз 1С:Предприятия 7.7» конфигурации 1С:Зарплата и управление персоналом.

19.09.2011    31858    Nicholas    16    

Прямой доступ к базе данных 77 из 8ки

Перенос данных из 1С7.7 в 1C8.X v8 1cv8.cf 1cv7.md Бесплатно (free)

Иногда бывает необходимость получить какие-то данные из 77 для того чтобы видеть всю историю работы до перехода на в 8ку. Вот один из моих вариантов получения данных из архивных баз 77. База данных 77 на SQL. P.S. 77-Комплексная

19.04.2011    12215    OldthiefXXX    15    

Работа с 1С через OLE 8.* (V81.Application, V81.COMConnector)

Перенос данных из 1С7.7 в 1C8.X Математика и алгоритмы v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Решил серьезно заняться изучением OLE. Конечно OLE это не КД, но все же...

07.04.2011    97147    artspeed    16    

Конвертация данных 2. Выгрузка виртуальных объектов (документ Установка цен номенклатуры)

Перенос данных из 1С7.7 в 1C8.X Ценообразование, прайсы Ценообразование, анализ цен Ценообразование, анализ цен v7.7 v8 БП2.0 1С7:ТиС КД Россия БУ Бесплатно (free)

Пример выгрузки цен из конфигурации ТиС 9.2 в БП 2.0 Выгружаются все цены на дату, загрузка происходит в документы Установка цен номенклатуры. Документы эти - виртуальные, источника в ТиС не имеют.

03.02.2011    37667    nicxxx    22    

Перенос данных из Бухгалтерии 7.7 в Бухгалтерию Предприятия 8.1, 8.2

Перенос данных из 1С7.7 в 1C8.X v8 БП2.0 1С7:Бух Россия БУ Бесплатно (free)

Перенос данных из Бухгалтерии 7.7 в Бухгалтерию Предприятия 8.1, 8.2 штатными средствами

15.10.2010    32807    Famza    39    

Выполнение параметризированных SQL запросов по OLE из 1С 8.x в 1С 7.7

Практика программирования Перенос данных из 1С7.7 в 1C8.X v8 1cv8.cf 1cv7.md Бесплатно (free)

Выполнение параметризованных SQL запросов по OLE из 1С 8.x в 1С 7.7 Показан алгоритм как можно выполнить данный вид запросов

08.10.2010    15993    Попытка1С    7    

Перенос проводок из ЗиК 7.7 в УПП

Перенос данных из 1С7.7 в 1C8.X Зарплата Зарплата v8 1С7:ЗиК УПП1 Россия БУ Бесплатно (free)

Перенос проводок из ЗиК 7.7 в УПП посредством стандарного обмена через XML с минимальной доработкой в УПП.

27.04.2009    9342    Evil Grym    1    

Выгрузка проводок из ЗиК, редакция 2.3 (7.70.283) -> БП 1.6

Перенос данных из 1С7.7 в 1C8.X v8 1С7:ЗиК БП1.6 Россия Бесплатно (free)

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

10.10.2008    19600    Frosja    17    

Объединение справочников и перенос остатков номенклатуры из нескольких баз 1С 7.7 в 1 базу УПП 8.1

Перенос данных из 1С7.7 в 1C8.X Практика программирования v7.7 v8 1cv7.md УПП1 Россия Бесплатно (free)

Объединение справочников и перенос остатков номенклатуры из нескольких баз 1С 7.7 в 1 базу УПП 8.1

11.12.2007    12551    danser    3