|
Конвертация Контрагенты | ☑ | ||
---|---|---|---|---|
0
AlexeyAlexey Alexey
23.08.13
✎
14:05
|
У меня в конвертации между ЗУП и КА реализован следующий перенос.
Переносим справочник "Способы отражения в реглментированном учете" Там в одной из проводок есть элементы справочника "Контрагенты". На данный момент выгрузка контрагентов происходит так: - Ищем по ссылке - Если не находим ищем по связке ИНН, Наименование, ЭтоГруппа - Далее если не нашел, то создаем элемент. Событие "После загрузки" проверяет, есть ли в справочнике контрагент с таким кодом, и если есть, то генерируется новый код. Хотелось бы еще следующий момент. Нужно, чтобы если в базе-приемнике уже есть элемент с таким кодом (и не важено ИНН, наименование и прочее), то грузить в базу контрагента НЕ НАДО. Проводка должна быть с пустой ссылкой. Я сделал изменение в "После загрузки". Был код: Если Не ОбъектНайден Тогда Если Справочники.Контрагенты.НайтиПоКоду(Объект.Код) <> Справочники.Контрагенты.ПустаяСсылка() Тогда Объект.УстановитьНовыйКод(); КонецЕсли; КонецЕсли; стал код: Если Не ОбъектНайден Тогда Если Справочники.Контрагенты.НайтиПоКоду(Объект.Код) <> Справочники.Контрагенты.ПустаяСсылка() Тогда Отказ = Истина; КонецЕсли; КонецЕсли; Но в этом случае не только не записывает контрагента, что правильно, но и не записывает главный объект, элемент справочника "Способы отражения зарплаты в регл учете". Как быть? |
|||
1
AlexeyAlexey Alexey
23.08.13
✎
14:12
|
up
|
|||
2
AlexeyAlexey Alexey
23.08.13
✎
14:29
|
up1
|
|||
3
dk
23.08.13
✎
14:34
|
Это тебе надо в поля поиска лезть, а не в после загрузки
|
|||
4
AlexeyAlexey Alexey
23.08.13
✎
14:36
|
Ок, сейчас посмотрю, что там
|
|||
5
dk
23.08.13
✎
14:38
|
хотя отказа я там не нашел
|
|||
6
AlexeyAlexey Alexey
23.08.13
✎
14:42
|
Нет, это не то. Мне нужно, если есть такой код в базе, чтобы он в значение затолкал пустую ссылку.
|
|||
7
Абыр
23.08.13
✎
15:52
|
Вообще странно, что отказ в ПослеЗагрузки у контрагента вызывает отказ и для способа отражения.
А так можно попробовать поэкспериментировать с параметрами в ПослеЗагрузки: Ссылка - установить пустую ссылку на контрагента ОбъектНайден - установить в Истина ОбъектМодифицирован - установить в Ложь |
|||
8
Odavid
23.08.13
✎
16:41
|
Перегружай все через DBF, и не возись с этими КД.
Тем более - если типовые правила не подходят. |
|||
9
AlexeyAlexey Alexey
24.08.13
✎
07:03
|
(7) Попробую Объект найден поставить в истину
|
|||
10
Mikhail Volkov
24.08.13
✎
08:08
|
"После загрузки" отказ записи какого объекта: Контрагент или "Способы отражения зарплаты в регл учете"?
Попробуй заменить ОбъектНайден на Не Объект.Ссылка.Пустая() |
|||
11
gorakh
24.08.13
✎
12:39
|
(8)"Вы нелюбите .... значит ВЫ не умеете их готовить". КД очень упрощает жизнь при переносе данных + полная интеграция в стандартные конфигурации и механизмы платформы.
|
|||
12
AlexeyAlexey Alexey
26.08.13
✎
05:30
|
(10) "После загрузки" отказ записи какого объекта: Контрагент или "Способы отражения зарплаты в регл учете"?
Текст отказа написал в правилах контрагентов, а объект не выгрузился весь элемент "Способы отражения зарплаты в регл учете". |
|||
13
Cyberhawk
26.08.13
✎
05:37
|
(12) может, в ПКО способов отражения есть проверка на заполненность контрагента и отказ в случае незаполненности?
|
|||
14
AlexeyAlexey Alexey
26.08.13
✎
05:45
|
(7) Не получилось объект записывется без кода, только наименование, чисто чтобы ссылочка была
(13) Да, как вариант, можно попробывать править не правила контрагентов, а правила способов учета, в этом варианте мне не нравится, что если контрагенты будут еще где-то, то там также придется ставить этот код. |
|||
15
AlexeyAlexey Alexey
26.08.13
✎
06:08
|
Вообщем, так:
Не помогает ни Отказ = Истина ни ОбъектНайден = ИСТИНА Он все равно пишет ссылку, без реквизитов, даже без кода, но с наименованием. |
|||
16
AlexeyAlexey Alexey
26.08.13
✎
06:22
|
Хотел сделать так, чтобы какая-то определнная ссылка ставилась хотя бы. Но ссылки присвоить можно только в полях поиска, а проверить на наличие такого кода можно только в обработчике "ПослеЗагрузки"
|
|||
17
AlexeyAlexey Alexey
26.08.13
✎
07:21
|
Может у кого есть еще идеи? Если коротко описатьпроблему, то
Нужно оставлять не заполненным значение реквизита справочника в случаях, когда такой код в справочнике уже есть. При этом поиск элемента ведется не по коду, а по наименовнаию и ИНН или по ссылке. |
|||
18
AlexeyAlexey Alexey
26.08.13
✎
10:29
|
up
|
|||
19
AlexeyAlexey Alexey
26.08.13
✎
11:27
|
Помогите, люди добрые...
|
|||
20
zladenuw
26.08.13
✎
11:49
|
в кд. открой справку
Обработчики "Правила конвертации объектов" При загрузке и убери по ссылке(там же не ссылка,а по внутреннему индетификатору). у меня так дубли шли хоть инн и наименование были одинаковые |
|||
21
be-may
26.08.13
✎
11:57
|
(17) "Хотелось бы еще следующий момент. Нужно, чтобы если в базе-приемнике уже есть элемент с таким кодом (и не важно ИНН, наименование и прочее), то грузить в базу контрагента НЕ НАДО. "
а что если .... ПКО "Способы отражения в реглментированном учете" ПКС Контрагент. Ставишь галочку "получить из входящих данных" , правило конвертации указываешь "твоеправилоДляКонтрагентов". (или можешь создать новое с поиском, как у тебя в (0)). В алгоритме "перед выгрузкой" ЭТОГО(!) ПКС примерно такой код Если ВходящиеДанные = Неопределено Тогда Отказ = Истина; КонецЕсли; --- т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике. // при загрузке ж уже поздно что либо проверять, а тем более после.. |
|||
22
Жан Пердежон
26.08.13
✎
12:12
|
Попробуй поиск объекта выполнить в обработчике "Поля поиска" и в нужном месте добавить:
ПрекратитьПоиск = Истина; ОбъектНайден = Истина; СсылкаНаОбъект = Справочники.Контрагенты.ПустаяСсылка() |
|||
23
Жан Пердежон
26.08.13
✎
12:18
|
(21) ошибка в том, на этапе выгрузки не известно, будет ли найден этот объект в приемнике или нет.
|
|||
24
be-may
26.08.13
✎
12:39
|
(23) так ведь это же самое можно сказать и про любой другой выгружаемый объект (справочник, документ,..) : "на этапе выгрузки неизвестно, будет ли найден этот объект в приемнике или нет."
|
|||
25
AlexeyAlexey Alexey
26.08.13
✎
12:43
|
(21) т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике.
Мне надо искать в приемнике, а не в источнике |
|||
26
AlexeyAlexey Alexey
26.08.13
✎
12:45
|
(22) пробывал, но
ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры, переданные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено. В данном обработчике соответствие содержит только те параметры, для которых УСТАНОВЛЕН ПРИЗНАК ПОИСКА. а у меня он не стоит, и не надо. |
|||
27
be-may
26.08.13
✎
12:48
|
"т.е. ты уже на этапе выгрузки регистра не выгружаешь контрагента, если он не найден в источнике. "
вот эту фразу я неправильно написала. ее не нужно читать.. зарапортовалась, сорри. :( попробуй просто. |
|||
28
be-may
26.08.13
✎
12:50
|
(26) а какой код у тебя в Поля поиска ?
|
|||
29
Жан Пердежон
26.08.13
✎
13:11
|
(26) это точно к (22)?
|
|||
30
AlexeyAlexey Alexey
30.08.13
✎
05:04
|
(27) Я не могу на этапе выгрузки проверку сделать (если только COM соединение к приемнику не сделать :))), мысль, но ведь и правда можно сделать ). Если ничего не поможет, я сделаю COM соединение.
|
|||
31
AlexeyAlexey Alexey
30.08.13
✎
05:05
|
(28) В поле поиска у меня ИНН и Наименование. И так и должно быть, так как основное условие такое, ищем по ссылке, если не находим, то ищем по ИНН и наименованию, если не находим, то создаем. Но при этом создавать с кодом, который уже есть - НЕЛЬЗЯ, пусть будет пустое значение.
|
|||
32
AlexeyAlexey Alexey
30.08.13
✎
05:08
|
(29) Да. Проблема в том, что во время "Поля поиска" еще не загружены данные для загрузки, и и для проверки элемента доступны только те элементы, которые отмечены галочками "Поиск". Мой реквизит "Код" не отмечен, следовательно в обработчике "поля поиска" я не могу посмотреть значение.
|
|||
33
AlexeyAlexey Alexey
13.09.13
✎
07:05
|
Итак: воообщем, я витоге решил задачу. Для тех, кто наткнется, пишу свое решение.
Описание проблемы еще раз: Есть в ЗУП проводка, ее кидают в БП. При этом ссылки, которые в ней также переносятся. Среди ссылок есть ссылка на контрагента. По правилу, контрагента надо искать по ссылке, если не нашли по связке наименование и ИНН. При этом бухгалтеры выдвинули новое условие: не должен переносится контрагент, если в справочнике уже есть контрагент с таким кодом. Проблема была в том, что перед выгрузкой проверять не с чем (база применик недоступна). А в момент загрузки, если сделать Отказ = Истина, не переносится ВСЯ проводка (а должна быть просто пустая ссылка), если сбросить ссылку на загружаемый элемент, то загрузка все равно создает ссылку с наименованием, пусть и без кода и прочих реквизитов. Решение: 1. Сделал еще одно правило по справочнику Контрагенты, которое является точной копией первого правила за исключением того, что в обработчике ПослеЗагрузки указать, что если такой код в приемнике уже есть, то отказ = истина. 2. В первом правиле указал, что если элемент не найден, то элемент не создается. 3. Добавил специальную выгрузку справочника Контрагенты и поместил ее в самый верх очереди. При этом правило как раз новое, а старое правило без создания элементов будет использоваться во всех остальных случаях. Выгрузка справочника выполняется проивзодльным алгоритмом, то есть делаем запрос, в котором собираем всех контрагентов, которые используются в интересующих нас объектах и выгружаем их. 4. Для элементов, имеющих несколько типов (например Субконто, как в нашем случае), нужно в обработчике При выгрузке сделать код, типа если значение ссылка контрагент, то имя правила такое то. Иначе он будет использовать любое. Все. Как итог мы получаем следующее: сначала загружаются элементы справочника. Если такие коды есть, то элемент не грузится. Потом грузим проводки, у проводок такое правило контрагентов используется, которое не создает, если не находит элементы. Как итог, задача решена. |
|||
34
Cyberhawk
13.09.13
✎
09:41
|
(33) может, на ИС опубликовать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |