Имя: Пароль:
1C
1С v8
Конвертация данных из БП 3.0 в УТ 10.3
0 StarkNotDead
 
24.10.16
07:46
Такая ситуация, выгружаю данные из БП 3.0 (там в документе списание с расчетного счета в роли контрагента могут быть Справочники контрагент и физлицо) в УТ 10.3 (там в документе списание с расчетного счета только справочник контрагент). Правилами выгрузки предусмотрена выгрузка контрагента с типом справочник.контрагенты, а если среди документов списания с РС попадается контрагент физлицо выдает ошибку, т.к. физлицо он начинает выгружать по правилам контрагента. Нужно что бы при выгрузке если тип Источник.Контрагент = СправочникСсылка.физическиеЛица вышружал пустую ссылку на справочникКонтрагенты, потому что физлица в Платежном поручении не нужны, они просто пустыми остаются.
    <Свойство>
<Код>13</Код>
                        <Наименование>Контрагент --&gt; Контрагент</Наименование>
<Порядок>700</Порядок>
<Источник Имя="Контрагент" Вид="Реквизит" Тип="СправочникСсылка.Контрагенты"/>
<Приемник Имя="Контрагент" Вид="Реквизит" Тип="СправочникСсылка.Контрагенты"/>
<ПередВыгрузкой>
Если (ТипЗнч(Источник.Контрагент) = Тип("СправочникСсылка.ФизическиеЛица"))
ИЛИ (НЕ ЗначениеЗаполнено(Источник.Контрагент)) Тогда
Значение = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
</ПередВыгрузкой>
</Свойство>
1 mehfk
 
24.10.16
08:01
Обработчики "Правила конвертации свойств"
Перед выгрузкой

Пусто - Булево - Ложь. Если установить Истина, то в приемник будет записано пустое значение свойства, соответствующего типа и дальнейшая обработка правила конвертации свойств будет прекращена
2 StarkNotDead
 
24.10.16
08:16
(1) Можно, пожалуйста, пример того, как это должно выглядеть?
3 azt-yur
 
24.10.16
08:37
А что собственно в (0) не работает? Вроде должно отрабатывать.
Можно использовать Пусто как в (1), для этого замени
Значение = Справочники.Контрагенты.ПустаяСсылка();
на
Пусто = Истина;
4 StarkNotDead
 
24.10.16
08:54
(3) Судя по всему, программе не удается считать сам тип значения Источник.Контрагент, так как через условия проскакивают физлица, не могли бы подсказать, где можно найти информацию, о том какие параметры передаются между функциями "ПередВыгрузкой" да и вообще правилами
5 StarkNotDead
 
24.10.16
09:00
(3) Физические лица в документе указываются в контрагенте только в тех случаях, когда ВидОперации = ПеречислениеПодотчетномуЛицу, но этот код тоже не работает:

Если Источник.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеПодотчетномуЛицу
                        Тогда
                        Пусто = Истина;
                        КонецЕсли;
6 azt-yur
 
24.10.16
09:05
(5) А где код вставляете? Должно быть перед выгрузкой свойства.
И как обмен запускаете? Может правила не те отрабатывают?
7 StarkNotDead
 
24.10.16
09:14
(6) Код вставляю как в (0) обмен запускаю через внешнюю обработку, сохраняю и после сохранения заново запускаю, 2-ой день уже бьюсь..
8 novichok79
 
24.10.16
09:18
обновляли метаданные конфигураций? иногда помогает в случае возникновения таких ошибок.
9 azt-yur
 
24.10.16
09:22
(7) Добавь вывод сообщения в условии - проверишь отрабатывает ли оно у тебя
10 StarkNotDead
 
24.10.16
09:23
(8) Обработка предназначена для версий БП 3.0.30.38 - УТ 10.3.31.3, а стоят БП 3.0.43.260 и УТ 10.3.37.2, Свежее в интеренете нет, поэтому и правлю вручную, осталось вот 2 документа, один из них Списание с РС
11 StarkNotDead
 
24.10.16
09:29
Ни при

Если Источник.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеПодотчетномуЛицу
                        Тогда
                        Ссобщить("Срабатывает");
                        Пусто = Истина;
                        КонецЕсли;

ни при

Если (ТипЗнч(Источник.Контрагент) = Тип("СправочникСсылка.ФизическиеЛица"))
                        Тогда
                        Ссобщить("Срабатывает");
                        Пусто = Истина;
                        КонецЕсли;

сообщение не выводится
12 azt-yur
 
24.10.16
09:35
(11) уверен, что правила нужные подхватываются? Какой обработкой пользуешься? В составе БП же есть обработка Универсальный обмен данными в формате XML
13 StarkNotDead
 
24.10.16
09:46
(12) Правила подхватываются,

    <Свойство>
                        <Код>13</Код>
                        <Наименование>Контрагент --&gt; Контрагент</Наименование>
                        <Порядок>700</Порядок>
                        <Источник Имя="Контрагент" Вид="Реквизит" Тип="СправочникСсылка.Контрагенты"/>
                        <Приемник Имя="Контрагент" Вид="Реквизит" Тип="СправочникСсылка.Контрагенты"/>
                        <ПередВыгрузкой>
                        Сообщить(Источник.Контрагент);
                                                </ПередВыгрузкой>
                    </Свойство>


выводит наименования контрагентов
14 StarkNotDead
 
24.10.16
10:30
(12) Нашел Условие, которое 100% срабатывает, осталось понять, что в него впихнуть)

Если Источник.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеПодотчетномуЛицу Тогда

....

КонецЕсли;