Как не регистрировать стопку документов в планах обмена с включенной авторегистрацией при групповом перепроведении

18.12.15

Интеграция - Перенос данных 1C

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

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

Для начала я вкратце расскажу, как ручная регистрация происходит в типовой конфигурации:

  1. Перед записью документа вызывается событие "МеханизмРегистрацииОбъектовПередЗаписьюДокумента", которое, собственно, и отвечает за регистрацию. Я пропущу большую часть всех условий, а перейду к сути.
  2. А именно к функции "ОбъектМодифицированДляПланаОбменаПопыткаИсключение". Функция получает "ТаблицаРеквизитовРегистрации", которая, по-видимому, берется из правил регистрации объектов. После чего для каждого реквизита или таблицы регистрации идет запрос (ЗАПРОС В ЦИКЛЕ) для значения реквизита до изменений. И идет сравнение с текущим значением реквизита. 
  3. В результате перед записью одного документа выполняется хренова куча кода с хреновой кучей запросов.

Скажу честно, такой подход мне показался не слишком оптимальным, и при этом достаточно МНОГОВРЕМЕНИЗАТРАЧИВАЕМЫМ для моей простой небольшой базы. Поэтому я и решил поискать способ попроще.

  1. Чтобы отменить авторегистрацию, нужно написать где-нибудь:
    Источник.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
  2. Я создал подписку перед записью документа и решил добавить простенькую проверку на модифицированность
    Если Не Источник.Модифицированность() Тогда
        Источник.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; 
    КонецЕсли; 
  3. Каково же было моё удивление, что она не работает))) Причем, даже есть проверять модифицированность в самом начале в модуле объекта. Решением стал вызов подписчика на процедуру "ОбработкаПроверкиЗаполнения". Но и это не все! если проведение происходит из списка документов, то проверка на модифицированность даёт ЛОЖЬ, а если через форму документа (даже если ты просто нажал ОК) ИСТИНА.

В результате я спокойно при групповом перепроведении перепровожу документы, не опасаясь, что вся эта МАССА полезет обмениваться. 

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

Вступайте в нашу телеграмм-группу Инфостарт

ОбменДанными авторегистрация АвтоЗаполнение Получатели групповое перепроведение отключить автоматическая регистрация план обмена

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 1C Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

58000 руб.

04.08.2015    190914    460    307    

460

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    190026    369    292    

426

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

58000 руб.

15.04.2019    85556    229    180    

166

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    162387    980    324    

483

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

42000 37800 руб.

15.12.2021    35159    261    64    

199

Перенос данных 1C Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Перенос данных из УПП 1.3 в УНФ | из КА 1.1 в УНФ | из УТ 10.3 в УНФ | Перенос разработан в формате КД 2 (правила конвертации объектов) | Выгружаются все возможные виды документов, начальных остатков и вся нормативно-справочная информация | Есть фильтр по организациям при выгрузке данных | Есть несколько алгоритмов выгрузки начальных остатков товаров на выбор | Можно проверить перед покупкой на своем сервере!

58000 руб.

17.10.2019    45216    60    117    

62

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    13989    16    8    

17

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Перенос данных из БП 2 в БП 3 готовые правила конвертации данных (КД 2), сэкономьте свое время! | Выполнить переход с БП 2 на БП 3 в ситуациях, когда простым обновлением перейти не получается | Переносится вся справочная информация, документы за выбранный период, а также начальные остатки на выбранную дату (то есть можно еще и свертку базы сделать при переносе) | Есть фильтр по организациям при выгрузке данных | Перенос можно проверить перед покупкой прямо на вашем сервере! Обращайтесь за проверкой!

50600 руб.

21.05.2019    59089    81    134    

73
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. insurgut 208 19.12.15 07:58 Сейчас в теме
Текст можно и покорректнее сделать, как модераторы пропустили "хренова куча кода с хреновой кучей запросов"?
veyron21; OneScan; ardn; +3 Ответить
4. KilloN 74 19.12.15 18:22 Сейчас в теме
(1) insurgut, А что собственно Вам не нравится - этот сайт не научное издание и публикация не учебник. А материал - это опыт которым я поделился. Стиля РОБОТА я не придерживаюсь! Он скучен и нуден.

Текст можно и покорректнее сделать
- Что Вы имеете в виду под фразой поконкретнее?
5. insurgut 208 20.12.15 17:38 Сейчас в теме
(4) у вас не только с описанием, но и с чтением проблемы :)
6. KilloN 74 21.12.15 01:23 Сейчас в теме
(5) insurgut, С чтением - это означает я не смог прочитать. Как то не правдоподобно звучит. Молодец - ничего поумнее не смог придумать?
А вот у тебя проблемы с русским языком, раз не можешь ответить на достаточно простой вопрос. ))
11. insurgut 208 28.12.15 08:48 Сейчас в теме
(6) на что мне отвечать, если корректнее <> конкретнее. Читайте внимательнее буквы. :)

P.S. И если вам несколько человек сделали замечание по поводу ненадлежащего оформления статьи - проблема вероятнее всего в оформлении статьи, а не в людях, сделавших замечание.
7. TODD22 20 21.12.15 07:33 Сейчас в теме
(4)
Стиля РОБОТА я не придерживаюсь! Он скучен и нуден.

Цыганский стиль весёлый и задорный....
С чтением - это означает я не смог прочитать. Как то не правдоподобно звучит. Молодец - ничего поумнее не смог придумать?

Очень даже правдоподобно....

Не зря же говорят что в 1С порог вхождения очень низкий. Писать не умеют, культура письменной речи отсутствует, читать внимательно не могут, элементарных знаний в теории оформления статей, текстов то же нет. Зато в конфигуратор научился и уже делится опытом.
nporrep; insurgut; alest; dmpas; +4 Ответить
8. KilloN 74 21.12.15 09:40 Сейчас в теме
(7) TODD22,
Цыганский стиль весёлый и задорный....

Цыганам лучше знать про цыганский стиль веселый и задорный! ))
Не зря же говорят что в 1С порог вхождения очень низкий. Писать не умеют, культура письменной речи отсутствует, читать внимательно не могут, элементарных знаний в теории оформления статей, текстов то же нет. Зато в конфигуратор научился и уже делится опытом.

Когда я ищу в какой либо ответ в интернете, то мне абсолютно наплевать как оформлен ответ, с каким стилем и другой чепухой. Потому что всё это мишура, которой цена 0!
Я лучше найду один правильный ответ, на сайте с фоном картинки в виде Ж*ПЫ, нежели 10 000 прекрасно оформленных с культурой письменной речи статей, которые ничего не дают, кроме как потраченного времени!
22. user1779407 19.05.22 16:18 Сейчас в теме
(7) Да не обращай на них внимания, такие ханжи везде есть, а уж в 1с этих нудных типов выше крыши. Норм статья, как раз по теме.
2. TODD22 20 19.12.15 14:48 Сейчас в теме
Текст можно и покорректнее сделать, как модераторы пропустили "хренова куча кода с хреновой кучей запросов"?

+1
Оформление ужасное. Видимо и раскраска текста для компенсации бедности речи.
3. KilloN 74 19.12.15 18:15 Сейчас в теме
(2) TODD22, Ты случаем не блондин для которого ВАЖНО какого цвета телефон, вместо самих характеристик?
Что ж посмотрел, я на твои публикации, у тебя оформления вообще нет!
9. karapuzzzz 63 23.12.15 17:32 Сейчас в теме
Для того, чтобы писать сопровождаемый код, необходимо пользоваться общами паттернами программирования, которые были разработаны годами. Если программист знает, что стоит авторегистрация, то и будет уверен, что авторегистрация проходит успешно. Если авторегистрация по каким-либо признакам не подходит, то указывается ручная регистрация а дальше через подписку на событие проводятся нужные проверки и т.д. Это логично именно так надо поступать.
10. KilloN 74 23.12.15 22:08 Сейчас в теме
(9) karapuzzzz, Все верно. Но, не зря же в есть возможность отключать "АвтоЗаполнение"? ))

Допустим есть 1000 яблок в корзине. Нужно отобрать свежие. Свежих 999. Зачем перебирать 999 яблок в другую корзину, если можно выбросить одно гнилое?
Так и получается у меня. что проще сделать одно исключение из правила с размером кода в 3 строчки которое актуально для всех планов обмена, нежели переделывать все на ручную регистрацию.

На ХабраХабре наткнулся на статью про паттерны. Один из них такой:

Ненужная сложность (Accidental complexity)

Простыми словами — это заумность решения. Ненужная сложность может быть внесена в решение любой задачи. Это могут быть как и ненужные проверки, части кода, продуцированные мягким кодированием, отсутствие какой-либо оптимизации. Это приводит к усложнению понимания кода, понижению скорости работы. Причинами являются — отсутствие или некачественность рефакторинга, некомпетентность программиста. Бороться довольно просто — следует проводить тщательные code review, эффективный рефакторинг.
12. fomix 33 28.12.15 09:50 Сейчас в теме
Здесь что клуб благородных девиц или все оппоненты разом стали ханжами?!
"Хренова куча кода с хреновой кучей запросов" - поддерживаю автора, все правильно написал! Очень часто типовые конфигурации "страдают" избыточным кодом
RomanKod; KilloN; +2 Ответить
13. TODD22 20 28.12.15 10:08 Сейчас в теме
(12) fomix,
Здесь что клуб благородных девиц или все оппоненты разом стали ханжами?!

Действительно чего это... давайте будем быдлом с низким культурным уровнем письменной речи.
14. KilloN 74 28.12.15 13:25 Сейчас в теме
(13) TODD22,
Если хотите можете быть, Ваше право :)

Однако мнения, что все кто написал "не культурное слово" к месту считать "быдлом с низким культурным уровнем письменной речи", я не придерживаюсь)))

Наверное Вы не служили в армии?
В армии ставится задача. Задача должна быть выполнена в конкретные сроки. И абсолютно не важно, с какой лексикой она была выполнена. Главное быстро и качественно!
Для меня главное на этом сайте не лексика, а нужная мне информация, которая затрагивает сферу моей работы.
15. TODD22 20 28.12.15 15:10 Сейчас в теме
(14)
Наверное Вы не служили в армии?

Дома по уставу живёшь? Строем на работе ходишь?
Если кто то где то матерится в публичном месте это не значит что нужно поступать так же.
16. KilloN 74 29.12.15 09:41 Сейчас в теме
(15) TODD22, Значит не служил))
Про армию я вспомнил не потому что там кто то ругался матом, а потому что там акцентировали внимание только на главном.
В моем случае вопросах проблематики обменов. А вместо этого открыли кружёк брезгливых неженок.

Ой как не красиво написано... Как грубо фууууууууууууу... Плохая публикация....


Если так охота поговорить не по теме откройте ветку на форуме, а здесь попрошу не спамить.
17. nems 13.01.16 14:47 Сейчас в теме
Здраствуйте! Как правильно проверять на модифицированность при регистрации движений документов при перепроведении из списка (в ручном режиме регистрации)?
18. KilloN 74 26.01.16 09:22 Сейчас в теме
(17) nems, Здравствуйте! Я сделал так:

Если Не Источник.Модифицированность() Тогда 
	Источник.ДополнительныеСвойства.Вставить("НеИзменен", Истина);
КонецЕсли;


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


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

П.С. Давно не заходил на сайт, надеюсь еще актуально =))
19. insurgut 208 26.01.16 11:22 Сейчас в теме
(18) ошибка может возникнуть в случае незаполненного значения источника (что теоретически маловероятно), поэтому достаточно добавить в условие проверку на заполненность...
Если ЗначениеЗаполнено(Источник) И Не (Источник.ДополнительныеСвойства.Свойство("НеИзменен") И Источник.ДополнительныеСвойства.НеИзменен) Тогда


Еще возможна ситуация когда регистрируется событие непосредственного удаления объекта - источник вроде как будет равен внутреннему идентификатору и метод ДополнительныеСвойства у него не отработает, хотя могу ошибаться.
20. KilloN 74 26.01.16 18:31 Сейчас в теме
(19) insurgut,
Я имел в виду вот что: Когда пользователь создает новый или редактирует существующий документ он всегда будет Модифицирован, но если в документе в процедуре ПередЗаписью производятся какие либо изменения (например изменяется какой либо реквизит). То не будет зарегистрирован измененный документ. Но данная ошибка возникнет только в том случае, если реквизит может изменится от обычного переводоведения! Я лично такого пока не встречал.

Я проверку провожу в подписке "ПередЗаписью", "ПередУдалением" я не трогал. У меня механизм обмнена через универсальный формат EnterpriseData внедрен в комплексную автоматизацию 1.1. А дополнительная проверка уменьшает ненужные обмены =))
21. insurgut 208 26.01.16 19:23 Сейчас в теме
(20) я говорил не о проверке на модифицированность, просто расположение второго кода не знаю, предположил что он где-то в модулях стандартных процедур в плане обмена например :)
23. Cool_vsi 26.03.26 09:18 Сейчас в теме
типовые обмены работают через БСП в новых конфигурациях, перед записью добавляем свойство

ДокументОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов", Истина);

и бсп не регистрирует его, вот подробно https://its.1c.ru/db/v8std/content/773/hdoc
Для отправки сообщения требуется регистрация/авторизация