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

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    186998    442    301    

450

Перенос данных 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    160303    967    317    

482

SALE! 10%

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

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

42000 37800 руб.

15.12.2021    33926    256    64    

194

Перенос данных 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    187898    357    288    

417

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

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

84000 руб.

05.10.2022    13317    15    8    

16

Перенос данных 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    83802    224    174    

161

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    62614    80    131    

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

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

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

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

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

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

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

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

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

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