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

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

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

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

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

Клиент – крупный холдинг. Настроен обмен по правилам между двумя базами (УСХП) через ftp ресурс. Пользователи стали жаловаться, что после обмена «затираются» реквизиты документов, а иногда документы «прилетают» не полностью заполненными. В источнике -  все ок. Проблема прослеживалась на платформах с 8.3.10 по 8.3.14

Расследование

Правила обмена уже выучил наизусть. Закономерность в проблеме с реквизитами обнаружить не удалось. Типы документов различные, реквизиты тоже: то склад, то номенклатура в ТЧ, то организация … .  От google никакого толку. Наконец, удалось «поймать» файл выгрузки с косячными документами (пока пользователи сообщат о проблеме, уже пройдет следующая синхронизация).

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

(1)
<Правило>
     <Код> ПеремещениеТоваров </Код>
     <ПриЗагрузке>
          Если ОбъектНайден Тогда
                ИсходныйОбъект = Объект.Ссылка.ПолучитьОбъект();
                Если ИсходныйОбъект.ОтражатьВБухгалтерскомУчете тогда
                    НеЗамещатьОбъект  =  Истина;
                КонецЕсли;
          КонецЕсли;
     </ ПриЗагрузке >
     <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору>
     <Источник>ДокументСсылка. ПеремещениеТоваров </Источник>
     <Приемник>ДокументСсылка. ПеремещениеТоваров </Приемник>
</Правило>

 

Из справки: «НеЗамещатьОбъект - Булево - Если установить значение Истина, то существующий объект информационной базы не будет изменен.»

Причина проблемы (на примере реквизита «Склад»)

При выгрузке данных в xml используется кеширование, т.е. в первом  выгружаемом объекте (в нашем случае документ «Перемещение товара») склад выгружается полностью:

(2)
<Объект Нпп="27" Тип="ДокументСсылка.ПеремещениеТоваров" ИмяПравила="ПеремещениеТоваров">

…

     <Ссылка Нпп="28" НеСоздаватьЕслиНеНайден="true">
          <Свойство Имя="{КлючПоискаВИБИсточнике}">
               <Значение>{"#",f9727404-36b6-4005-a5b4-77243dc0ff00,419:80bf9457a55a905311e6b55f082221c2}</Значение>
          </Свойство>
          <Свойство Имя="{ИмяТипаВИБИсточнике}">
               <Значение>СправочникСсылка.Склады</Значение>
          </Свойство>
          <Свойство Имя="{УникальныйИдентификатор}">
               <Значение>082221c2-b55f-11e6-80bf-9457a55a9053</Значение>
          </Свойство>
          <Свойство Имя="Код">
               <Значение>00825    </Значение>
          </Свойство>
          <Свойство Имя="Наименование">
               <Значение>Склад бабы Вали</Значение>
          </Свойство>
     </Ссылка>

…

</Объект>

Далее всех последующих объектов выгрузки вместо склада «Склад бабы Вали» подставляется тег <Нпп>28</Нпп> (чтобы не выгружать каждый раз одно и то же и уменьшить объем файла выгрузки).

(3)
<Объект Нпп="266" Тип="ДокументСсылка.КомплектацияНоменклатуры" ИмяПравила="КомплектацияНоменклатуры">

…

     <Свойство Имя="Склад">
          <Нпп>28</Нпп>
     </Свойство>

…

</Объект>

…

И вот возникла ситуация, когда при загрузке в приемник документ «Перемещение Товаров» (именно тот, в котором выгружена ссылка на склад (2)) соответствует условию правила (1) (т.е. в базе уже есть документ с установленным реквизитом БУ и его под страхом смерти нельзя загружать) и выполняется код:

НеЗамещатьОбъект  =  Истина;

Вследствие чего у всех объектов, у которых в xml свойство склад имело значение <Нпп>28</Нпп>, реквизит «Склад» чудесным образом превратился в неопределено («затерся»).

Решение

Правила обмена были переписаны:

(4)
<ПослеЗагрузки>
    Если ОбъектНайден Тогда
         ИсходныйОбъект = Объект.Ссылка.ПолучитьОбъект();
         Если ИсходныйОбъект.ОтражатьВБухгалтерскомУчете Тогда
             Отказ = Истина;
         КонецЕсли;
    КонецЕсли;
</ПослеЗагрузки>

Резюме

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

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

Комментарии
Избранное Подписка Сортировка: Древо
1. triviumfan 13 10.09.19 23:31 Сейчас в теме
Хм, а тут не дело в приоритетах?
А вообще - речь про так называемый online-обмен?
5. ivanek 11.09.19 09:09 Сейчас в теме
(1)К сожалению, дело не в приоритетах, проверено.
2. insurgut 187 11.09.19 06:13 Сейчас в теме
Поведение, конечно, не очевидное. У складов в настройках стоит "Использовать быстрый поиск объекта при выгрузке и загрузке"?
4. ivanek 11.09.19 09:06 Сейчас в теме
(2)Нет, ни у одного объекта флаг "Использовать быстрый поиск объекта при выгрузке и загрузке" не установлен.
3. Batman 150 11.09.19 08:04 Сейчас в теме
6. AlX0id 11.09.19 11:15 Сейчас в теме
ИсходныйОбъект = Объект.Ссылка.ПолучитьОбъект();
Если ИсходныйОбъект.ОтражатьВБухгалтерскомУчете Тогда
Отказ = Истина;
КонецЕсли;


Вообще - не очень решение.. В особенности, если документов много. Лучше уж запросом бы сделали получение флага, нежели весь объект вытаскивать.. А в идеале - так и вовсе где-то надо одним запросом вытащить все загружаемые объекты, отраженные в БУ.
10. Vovan1975 13 11.09.19 13:05 Сейчас в теме
(6) да хреновое решение.

Если конфа стандартная 1с то лучше было бы использовать функцию БСП: ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные)
11. ivanek 11.09.19 14:19 Сейчас в теме
(6)Спасибо, согласен, учту замечание.
14. Sintson 359 20.09.19 16:52 Сейчас в теме
(6) согласен, токмо со вторым предложением про один запрос для кэширования объектов БУ, если просто запросом, то получится запрос в цикле, что мягко говоря не кошерно.
7. MSK_Step 19 11.09.19 12:39 Сейчас в теме
Не ясна связь между у всех объектов, у которых в xml свойство склад имело значение <Нпп>28</Нпп> и документами. НеЗамещатьОбъект должно относится к конкретному объекту, а получается что влияет на реквизиты других даже объектов. Непонятно. Код загрузки надо смотреть в базе приемнике, как там обрабатывается флажок НеЗамещатьОбъект
8. wowik 651 11.09.19 12:48 Сейчас в теме
12. ivanek 11.09.19 14:21 Сейчас в теме
(8)Забыл в статье указать КД 2.1.8.2
9. Vovan1975 13 11.09.19 12:52 Сейчас в теме
Мой склероз мне подсказывает, что где-то в глубинах КД есть параметр управляющий кэшированием объектов при загрузке(он так и называется "не кэшировать объекты".
Вот его надо было выключить.
Правда побочка была бы в том что при каждом упоминании выгружался бы элемент целиком, что не очень с точки зрения памити (при разборе файлика обмена) да и файлик тоже "вспучивался".
15. Sintson 359 20.09.19 16:55 Сейчас в теме
Напишите ваше сообщение
(9) А мой склероз мне подсказывает что есть возможность файл выгрузки жать, хотя это тоже не панацея конечно, время загрузки/выгрузки может вырасти в разы.
13. Астиг 11 13.09.19 13:51 Сейчас в теме
Спасибо! "При выгрузке данных в xml используется кеширование" - не знал о таком.
16. azazana 60 20.09.19 17:02 Сейчас в теме
А ТолькоПолучитьУзелСсылки = Ложь не поможет в данном случае?
19. ivanek 30 24.09.19 09:04 Сейчас в теме
(16)Как появиться время попробую.
17. Casey1984 3 21.09.19 14:14 Сейчас в теме
Из справки КД:

НеЗамещатьОбъект - Булево - Если установить значение Истина, то существующий объект информационной базы не будет изменен.


Получается в первом варианте объект перезаписывается?
18. ivanek 30 24.09.19 09:04 Сейчас в теме
20. handscenter 34 04.10.19 09:05 Сейчас в теме
более простой способ добавить контроль при получении документов
https://infostart.ru/public/1130733/
21. ivanek 30 04.10.19 09:50 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

24.01.2020    1438    e-9    2       

INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо

Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.

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

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

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

09.11.2019    2420    vikulinamari    1       

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

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

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

21.10.2019    3259    OlesiaM    1       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

Объединение организаций в ЗУП при реорганизации с переносом данных из ЗУП 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    3414    Neti    1       

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

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

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

04.10.2019    3830    handscenter    12       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

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

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

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

12.09.2019    2693    al_zzz    2       

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

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

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

02.09.2019    9458    user5300    31       

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

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

от 1500 руб.

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

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

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

02.09.2019    3478    human_new    7       

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

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

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

22.08.2019    7314    ids79    7       

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

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

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

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

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

13.08.2019    5490    vikulinamari    6       

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

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

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

23.04.2019    6457    saveliev    3       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

16.04.2019    12280    m-rv    16       

Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо

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

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

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

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

15.04.2019    14405    vik070777    12       

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

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

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

09.04.2019    4395    mrcamomile    6       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

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

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

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

21.03.2019    18096    barelpro    82       

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

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

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

15.01.2019    9282    wowik    13       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

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

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

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

10.10.2018    6978    Viktor_Ermakov    6       

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

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

16450 рублей

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

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

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

10.09.2018    40917    zhichkin    21       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Альтернатива переноса ТЗ в конвертации данных 2.1

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

Здравствуйте уважаемые. Решил выложить альтернативный способ переноса данных в конвертации данных из источника к приемнику, с последующим сбором их в ТЗ в месте ПослеЗагрузки. Т.е.можно готовый перенесенный объект доработать либо создать что-то еще на базе данных. Метод сам разработан с учетом простого понимания Конвертации без использования всех её многочисленных тонкостей и сложностей. В примере рассматривается перенос Операции. И вот еще что. Я не привожу тут готовое решение, я всего лишь показываю концепцию того, как можно делать в КД. Без использования глобальных переменных.

20.08.2018    5343    dinopopyys    6       

Конвертация 2.0. Перенос независимого справочника в подчиненный (пример).

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

Пример переноса независимого справочника в подчиненный с помощью Конвертации 2.0.

15.08.2018    7548    Lyubogradov.P    6       

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

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

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

Повышаем эффективность разработки правил обмена

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

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    23075    olegtymko    47