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

31.03.11

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

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

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

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

См. также

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    168916    350    280    

385

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 24894 руб.

12.06.2017    143814    830    297    

430

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    54038    239    73    

194

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    37519    101    68    

96

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.237.x) и БП 3.0 (3.0.166.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    25069    175    51    

133

SALE! 10%

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

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

55778 50200 руб.

15.04.2019    73053    188    152    

127

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    81865    332    253    

281

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    172266    308    259    

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

А на каких объемах Вы тестировали?
3. sherbv 516 01.04.11 04:15 Сейчас в теме
Объемы не такие большие, применял пару раз на 2000 тыс вроде и на 500
Подозревал, что на больших может не сработать.
4. K_A_O 548 08.04.11 19:10 Сейчас в теме
Можно использовать обработчик "Поля поиска".
Там, кроме предупреждений можно организовать свой поиск по значениям, переданных как параметры
dima_gsv; +1 Ответить
5. serg_gres 154 08.04.11 19:58 Сейчас в теме
Блин, а ведь точно...
Надо будет попробовать.
6. dima_gsv 23 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 Сейчас в теме
Спасибо! Очень помогло. Тоже столкнулся с этой проблемой. Если объект выгружается по ссылке, то нет возможности в "ПослеЗагрузки" отказать в этом. А у меня именно в ПослеЗагрузки есть возможность определить надо ли загружать объект.
Чтобы объект не загружался в "ПослеЗагрузки", использовал код:
Отказ=Истина;
ДобавитьСсылкуВСписокЗагруженныхОбъектов(НППГлобальнойСсылки, НппСсылки, Объект.Ссылка);
Оставьте свое сообщение