Отказ от создания ненайденных элементов при перегрузке с помощью Конвертации данных с предупреждением

31.03.11

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

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

Конвертация данных предлагает стандартный механизм, позволяющий НЕ создавать НЕнайденные элементы. (рис.1)

Но этот механизм не предупреждает пользователя о том, что объект не найден.

Данную задачу можно было бы решить следующим образом:

Снять галку «Не создавать новый объект в приемнике, если он НЕ найден»

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

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

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

Данную проблему можно решить с помощью следующего кода во все том же обработчике «После загрузки» (рис. 3)

Если НЕ ОбъектНайден Тогда
    Сообщить("Не найден " + Объект + " поиск идет по наименованию и дате рождения");
    Отказ = Истина;

    СписокУдаляемыхПодразделений = Новый СписокЗначений();

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

    Для Каждого Стр Из СписокУдаляемыхПодразделений Цикл
        мГлобальныйСтекНеЗаписанныхОбъектов.Удалить(Стр.Значение);
    КонецЦикла;

КонецЕсли;

Данный код анализирует список отложенных для записи объектов (именно оттуда и создаются элементы, когда они загружаются по ссылкам) и удаляет оттуда элементы нашего справочника.

Данный пример рассмотрен на основе конвертации справочника "Физические лица"

Возможно есть более оптимальные методы, буду рад их услышать.

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

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

  • 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    191506    461    308    

462

Перенос данных 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    190414    370    294    

427

Перенос данных 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    85831    231    181    

168

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    162844    989    329    

486

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    209156    178    253    

297

Перенос данных 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    45411    60    118    

62

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

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

55200 руб.

03.12.2020    46214    132    83    

120

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

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

70760 руб.

10.04.2026    888    3    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gr0ck 31.03.11 17:00 Сейчас в теме
Здорово, жаль что поздно, уже сам разобрался в этом)
2. serg_gres 157 01.04.11 00:33 Сейчас в теме
Уже точно не помню как было дело, но у меня приблизительно такой же метод не сработал.
Причем если объектов < 5000 (есть переменная для кэширования такая) - то все ОК, если больше - все плохо.
Так и не разобрался в чем там было дело, пошел другим путем.

А на каких объемах Вы тестировали?
3. sherbv 525 01.04.11 04:15 Сейчас в теме
Объемы не такие большие, применял пару раз на 2000 тыс вроде и на 500
Подозревал, что на больших может не сработать.
4. K_A_O 554 08.04.11 19:10 Сейчас в теме
Можно использовать обработчик "Поля поиска".
Там, кроме предупреждений можно организовать свой поиск по значениям, переданных как параметры
dima_gsv; +1 Ответить
5. serg_gres 157 08.04.11 19:58 Сейчас в теме
Блин, а ведь точно...
Надо будет попробовать.
6. dima_gsv 24 28.05.13 11:57 Сейчас в теме
Спасибо за подсказку про "Поля поиска".
Я в обработчик "Поля поиска" ПКО вставил следующий код. Код до условия отрабатывает стандартный алгоритм поиска. Само условие - это наше предупреждение.
// сам поиск непосредственно и без алгоритма поиска
СсылкаНаОбъект = НайтиЭлементПоСвойствамПоиска(ТипОбъекта, ИмяТипаОбъекта, СвойстваПоиска, СтруктураСвойств, 
	СтрокаИменСвойствПоиска, ПоискПоДатеНаРавенство);
//
ОбъектНайден = ЗначениеЗаполнено(СсылкаНаОбъект);

ПрекратитьПоиск = Истина;

Если не ОбъектНайден Тогда
	Сообщить("Контрагент с ИНН (" + СвойстваПоиска["ИНН"] + ") не найден!");
КонецЕсли;
Показать

После загрузки все сообщения пропускаю через фильтр отсеивающий одинаковые строки и на выходе получаю то, что надо довнести ручками в базу. Фильтр одинаковых строк сделал в виде внешней обработки:
СписокУникальныхСтрок = Новый СписокЗначений;

Для ИИ = 1 По ЭлементыФормы.Текст.КоличествоСтрок() Цикл
	
	Стр = ЭлементыФормы.Текст.ПолучитьСтроку(ИИ);
	Если СписокУникальныхСтрок.НайтиПоЗначению(Стр) <> Неопределено Тогда
		Продолжить;
	КонецЕсли;
	
	СписокУникальныхСтрок.Добавить(Стр);
КонецЦикла;

ЭлементыФормы.Текст.Очистить();

Для каждого Стр Из СписокУникальныхСтрок Цикл

	ЭлементыФормы.Текст.ДобавитьСтроку(Стр);

КонецЦикла;
Показать
soft-servis; zul333; +2 Ответить
7. Lusha_28 52 15.01.14 09:55 Сейчас в теме
Спасибо за статью, очень помогла, у меня стояла задача в приемнике все ненайденные (т.е. их поля поиска) сложить в регистр сведений, Вашим способом хорошо получилось.
8. PiccaHut001 14.10.14 16:44 Сейчас в теме
"К сожалению, данный механизм работает только при выгрузке непосредственно этого справочника. Когда же элемент справочника выгружается по ссылке, программа все-равно создает этот элемент." - И почему я не удивляюсь. Перенос данных без программирования, с этим справится любой квалифицированный пользователь...бла-бла-бла...прочее маркетинговое *овно от Бориса. 1С в очередной раз облажалась, опять приходится допиливать напильником
9. Gvenor 130 13.06.16 14:00 Сейчас в теме
Спасибо! Очень помогло. Тоже столкнулся с этой проблемой. Если объект выгружается по ссылке, то нет возможности в "ПослеЗагрузки" отказать в этом. А у меня именно в ПослеЗагрузки есть возможность определить надо ли загружать объект.
Чтобы объект не загружался в "ПослеЗагрузки", использовал код:
Отказ=Истина;
ДобавитьСсылкуВСписокЗагруженныхОбъектов(НППГлобальнойСсылки, НппСсылки, Объект.Ссылка);
Для отправки сообщения требуется регистрация/авторизация