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

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

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

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

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

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

 

Вариант 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, ВыгружаемыйОбъект);

 


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

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

 

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

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

 

Достоинства

 

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

 

9

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

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

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

См. также

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

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

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

31.10.2016    12101    vugluscr1991    27       

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

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

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

01.01.2015    24371    32ops    5       

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

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

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

23.12.2013    6513    sdf1979    3       

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

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

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

29.10.2013    47534    pyrkin_vanya    70       

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

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

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

11.07.2013    8276    uncle_o    10       

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

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

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

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

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

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

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

16.01.2013    75206    SergeMalikov    44       

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

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

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

03.01.2013    22264    wunderland    3       

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

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

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

10.12.2012    22110    serg_gres    6       

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

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

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

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

УНФ РИБ 35

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

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

16.10.2012    36694    ptkrzy    23       

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

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

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

03.09.2012    34324    Стил    11       

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

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

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

05.07.2012    18826    Totoro    3       

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

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

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

27.05.2012    37040    andrewks    18       

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

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

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

27.03.2012    14854    fixin    3       

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

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

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

11.03.2012    14935    AvalonE2008    7       

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

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

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

03.10.2011    16220    Nicholas    7       

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

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

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

28.09.2011    14003    bsturtle    9       

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

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

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

19.09.2011    28501    Nicholas    16       

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

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

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

19.04.2011    10548    OldthiefXXX    15       

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

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

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

03.02.2011    34717    nicxxx    22       

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

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

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

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

Один из вариантов переноса данных из 1С 7.7 в 1С 8.Х 24

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Перенос данных из 1С7.7 в 1C8.X Файловые протоколы обмена, FTP

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

30.11.2009    15915    266    awk    29       

Правила переноса из Бух77 в Бух 8.1 11

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 БП2.0 1С7:Бух Россия БУ Бесплатно (free) Перенос данных из 1С7.7 в 1C8.X Обмен через XML

Правила переноса из Бухгалтерский учет для Украины 77 в Бухгалтерия для Украины 8.1 Были отредактированы правила для документов Приходная накладная, Расходная накладная, ОстаткиТМЦ, СписаниеТМЦ.

03.08.2009    16067    212    pri_hod    7       

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

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

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

27.04.2009    8146    Evil Grym    1       

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

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

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

10.10.2008    18081    Frosja    17       

Перенос справочников из 7.7 в 8.1 (OLE) 156

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Бесплатно (free) Обработка справочников Перенос данных из 1С7.7 в 1C8.X

Обработка позволяет перенести простые справочники из семерки в восьмёрку. Реквизиты справочников могут не совпадать.

02.09.2008    23452    2787    deemaa    51       

Перенос данных из 1С Предприятие 7.7 в 8.0 95

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Перенос данных из 1С7.7 в 1C8.X

Универсальная обработка для переноса данных из 1С Предприятие 7.7 в 1С Предприятие 8.0 через OLE.

21.04.2006    11914    1420    Yurij_zp    34