Конвертация Контрагенты #678084


#0 by AlexeyAlexeyAlexey
У меня в конвертации между ЗУП и КА реализован следующий перенос. Переносим справочник "Способы отражения в реглментированном учете" Там в одной из проводок есть элементы справочника "Контрагенты". На данный момент выгрузка контрагентов происходит так: - Ищем по ссылке - Если не находим ищем по связке ИНН, Наименование, ЭтоГруппа - Далее если не нашел, то создаем элемент. Событие "После загрузки" проверяет, есть ли в справочнике контрагент с таким кодом, и если есть, то генерируется новый код. Хотелось бы еще следующий момент. Нужно, чтобы если в базе-приемнике уже есть элемент с таким кодом (и не важено ИНН, наименование и прочее), то грузить в базу контрагента НЕ НАДО. Проводка должна быть с пустой ссылкой. Я сделал изменение в "После загрузки". Был код: стал код: Но в этом случае не только не записывает контрагента, что правильно, но и не записывает главный объект, элемент справочника "Способы отражения зарплаты в регл учете". Как быть?
#1 by AlexeyAlexeyAlexey
up
#2 by AlexeyAlexeyAlexey
up1
#3 by dk
Это тебе надо в поля поиска лезть, а не в после загрузки
#4 by AlexeyAlexeyAlexey
Ок, сейчас посмотрю, что там
#5 by dk
хотя отказа я там не нашел
#6 by AlexeyAlexeyAlexey
Нет, это не то. Мне нужно, если есть такой код в базе, чтобы он в значение затолкал пустую ссылку.
#7 by Абыр
Вообще странно, что отказ в ПослеЗагрузки у контрагента вызывает отказ и для способа отражения. А так можно попробовать поэкспериментировать с параметрами в ПослеЗагрузки: Ссылка - установить пустую ссылку на контрагента ОбъектНайден - установить в Истина ОбъектМодифицирован - установить в Ложь
#8 by Odavid
Перегружай все через DBF, и не возись с этими КД. Тем более - если типовые правила не подходят.
#9 by AlexeyAlexeyAlexey
Попробую Объект найден поставить в истину
#10 by Mikhail Volkov
"После загрузки" отказ записи какого объекта: Контрагент или "Способы отражения зарплаты в регл учете"? Попробуй заменить ОбъектНайден на Не Объект.Ссылка.Пустая
#11 by gorakh
"Вы нелюбите .... значит ВЫ не умеете их готовить". КД очень упрощает жизнь при переносе данных + полная интеграция в стандартные конфигурации и механизмы платформы.
#12 by AlexeyAlexeyAlexey
"После загрузки" отказ записи какого объекта: Контрагент или "Способы отражения зарплаты в регл учете"? Текст отказа написал в правилах контрагентов, а объект не выгрузился весь элемент "Способы отражения зарплаты в регл учете".
#13 by Cyberhawk
может, в ПКО способов отражения есть проверка на заполненность контрагента и отказ в случае незаполненности?
#14 by AlexeyAlexeyAlexey
Не получилось объект записывется без кода, только наименование, чисто чтобы ссылочка была Да, как вариант, можно попробывать править не правила контрагентов, а правила способов учета, в этом варианте мне не нравится, что если контрагенты будут еще где-то, то там также придется ставить этот код.
#15 by AlexeyAlexeyAlexey
Вообщем, так: Не помогает ни Отказ = Истина ни ОбъектНайден = ИСТИНА Он все равно пишет ссылку, без реквизитов, даже без кода, но с наименованием.
#16 by AlexeyAlexeyAlexey
Хотел сделать так, чтобы какая-то определнная ссылка ставилась хотя бы. Но ссылки присвоить можно только в полях поиска, а проверить на наличие такого кода можно только в обработчике "ПослеЗагрузки"
#17 by AlexeyAlexeyAlexey
Может у кого есть еще идеи? Если коротко описатьпроблему, то Нужно оставлять не заполненным значение реквизита справочника в случаях, когда такой код в справочнике уже есть. При этом поиск элемента ведется не по коду, а по наименовнаию и ИНН или по ссылке.
#18 by AlexeyAlexeyAlexey
up
#19 by AlexeyAlexeyAlexey
Помогите, люди добрые...
#20 by zladenuw
в кд. открой справку Обработчики "Правила конвертации объектов" При загрузке и убери по ссылке(там же не ссылка,а по внутреннему индетификатору). у меня так дубли шли хоть инн и наименование были одинаковые
#21 by be-may
"Хотелось бы еще следующий момент. Нужно, чтобы если в базе-приемнике уже есть элемент с таким кодом (и не важно ИНН, наименование и прочее), то грузить в базу контрагента НЕ НАДО. " а что если .... ПКО "Способы отражения в реглментированном учете" ПКС Контрагент. Ставишь галочку "получить из входящих данных" , правило конвертации указываешь "твоеправилоДляКонтрагентов". (или можешь создать новое с поиском, как у тебя в ). В алгоритме "перед выгрузкой" ЭТОГО(!) ПКС  примерно такой код Если ВходящиеДанные = Неопределено Тогда --- т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике.
#22 by Жан Пердежон
Попробуй поиск объекта выполнить в обработчике "Поля поиска" и в нужном месте добавить:
#23 by Жан Пердежон
ошибка в том, на этапе выгрузки не известно, будет ли найден этот объект в приемнике или нет.
#24 by be-may
так ведь это же самое можно сказать и про любой другой выгружаемый объект (справочник, документ,..) : "на этапе выгрузки неизвестно, будет ли найден этот объект в приемнике или нет."
#25 by AlexeyAlexeyAlexey
т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике. Мне надо искать в приемнике, а не в источнике
#26 by AlexeyAlexeyAlexey
ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры, переданные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено. В данном обработчике соответствие содержит только те параметры, для которых УСТАНОВЛЕН ПРИЗНАК ПОИСКА. а у меня он не стоит, и не надо.
#27 by be-may
"т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике. " вот эту фразу я неправильно написала. ее не нужно читать.. зарапортовалась, сорри. :( попробуй просто.
#28 by be-may
а какой код у тебя в Поля поиска ?
#29 by Жан Пердежон
это точно к ?
#30 by AlexeyAlexeyAlexey
Я не могу на этапе выгрузки проверку сделать (если только COM соединение к приемнику не сделать :))), мысль, но ведь и правда можно сделать ). Если ничего не поможет, я сделаю COM соединение.
#31 by AlexeyAlexeyAlexey
В поле поиска у меня ИНН и Наименование. И так и должно быть, так как основное условие такое, ищем по ссылке, если не находим, то ищем по ИНН и наименованию, если не находим, то создаем. Но при этом создавать с кодом, который уже есть - НЕЛЬЗЯ, пусть будет пустое значение.
#32 by AlexeyAlexeyAlexey
Да. Проблема в том, что во время "Поля поиска" еще не загружены данные для загрузки, и и для проверки элемента доступны только те элементы, которые отмечены галочками "Поиск". Мой реквизит "Код" не отмечен, следовательно в обработчике "поля поиска" я не могу посмотреть значение.
#33 by AlexeyAlexeyAlexey
Итак: воообщем, я витоге решил задачу. Для тех, кто наткнется, пишу свое решение. Описание проблемы еще раз: Есть в ЗУП проводка, ее кидают в БП. При этом ссылки, которые в ней также переносятся. Среди ссылок есть ссылка на контрагента. По правилу, контрагента надо искать по ссылке, если не нашли по связке наименование и ИНН. При этом бухгалтеры выдвинули новое условие: не должен переносится контрагент, если в справочнике уже есть контрагент с таким кодом. Проблема была в том, что перед выгрузкой проверять не с чем (база применик недоступна). А в момент загрузки, если сделать Отказ = Истина, не переносится ВСЯ проводка (а должна быть просто пустая ссылка), если сбросить ссылку на загружаемый элемент, то загрузка все равно создает ссылку с наименованием, пусть и без кода и прочих реквизитов. Решение: 1. Сделал еще одно правило по справочнику Контрагенты, которое является точной копией первого правила за исключением того, что в обработчике ПослеЗагрузки указать, что если такой код в приемнике уже есть, то отказ = истина. 2. В первом правиле указал, что если элемент не найден, то элемент не создается. 3. Добавил специальную выгрузку справочника Контрагенты и поместил ее в самый верх очереди. При этом правило как раз новое, а старое правило без создания элементов будет использоваться во всех остальных случаях. Выгрузка справочника выполняется проивзодльным алгоритмом, то есть делаем запрос, в котором собираем всех контрагентов, которые используются в интересующих нас объектах и выгружаем их. 4. Для элементов, имеющих несколько типов (например Субконто, как в нашем случае), нужно в обработчике При выгрузке сделать код, типа если значение ссылка контрагент, то имя правила такое то. Иначе он будет использовать любое. Все. Как итог мы получаем следующее: сначала загружаются элементы справочника. Если такие коды есть, то элемент не грузится. Потом грузим проводки, у проводок такое правило контрагентов используется, которое не создает, если не находит элементы. Как итог, задача решена.
#34 by Cyberhawk
может, на ИС опубликовать?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С