Имя: Пароль:
1C
1С v8
Обмен между базами
,
0 PitNN
 
19.11.15
13:26
Доброго всем дня)
Подскажите, разобраться никак не могу. Как происходит обмен между базами в плане логики? Т.е. имеется две базы УТ 11.1 и БП 2.0 (типовая). Обмен настроен, все работает. Данные выгружаются из УТ в БП. Правила типовые. Возникла нужда изменить типовые правила таким образом, чтобы при переносе документов поступления проставлялся счет учета номенклатуры (в типовых правилах счет учета заполняется после загрузки данных). Я недолго думая выгрузил из торговли правила обмена, нашел место где заполняются данные о документе и его табличной части и добавил туда еще одно свойство. И загрузил обратно в торговлю. При обмене вылезла ошибка:
СвойствоПриемника = СчетУчета  (ПланСчетовСсылка.Хозрасчетный)
ОписаниеОшибки    = Поле объекта не обнаружено (СчетУчета)
Откуда он это взял? Получается торговля где-то еще хранит информацию о правила?
1 VikingKosmo
 
19.11.15
13:28
рассказывай, куда правила грузил?
2 PitNN
 
19.11.15
13:37
(1) Выгрузил из торговли и загрузил обратно в торговлю
3 PitNN
 
19.11.15
13:38
Ошибка вылазит при выгрузке из торговли
4 VikingKosmo
 
19.11.15
13:40
загрузил в торговлю в Предприятии?
5 БатКор
 
19.11.15
13:41
"Я недолго думая выгрузил из торговли правила обмена, нашел место где заполняются данные о документе и его табличной части и добавил туда еще одно свойство" В конфигураторе пройди до момента загрузки файла обмена, скорее там при выборке не может найти этот самый реквизит.
6 PitNN
 
19.11.15
13:43
(4) Да. И выгружал тоже из режима предприятия. Правил в блокноте, без использования КД. В настройках обмена с БП указано что используются внешние правила обмена (которые шли в поставке с БП).
7 VikingKosmo
 
19.11.15
13:45
может стоит все таки править в КД?
8 Cyberhawk
 
19.11.15
13:46
Для начала внятно нарисуй картинку со схемой обмена и куда нужно тебе внести изменения
9 БатКор
 
19.11.15
13:47
(8) Браво!!!
10 БатКор
 
19.11.15
13:50
(6) "Правил в Блокноте" да же если так, то в момент загрузки файла обмена., проверяется с метаданными базы. и когда говорит ошибку как у тебя то не может найти этот самый реквизит в метаданных базы.
11 PitNN
 
19.11.15
13:51
Может, конечно, и стоит, но это не даст ответа на первый вопрос о логике процесса. Правился файл ExchangeRules.xml.
В него было добавлено следующее:
<Свойство>
    <Код>80</Код>
    <Наименование>--&gt; СчетУчета</Наименование>
    <Порядок>700</Порядок>
    <Источник Имя="" Вид=""/>
    <Приемник Имя="СчетУчета" Вид="Реквизит" Тип="ПланСчетовСсылка.Хозрасчетный"/>
    <ПриВыгрузке>Если ЗначениеЗаполнено(ОбъектКоллекции.Назначение) Тогда
            Значение = Истина;
        Иначе
            Значение = Ложь;
        КонецЕсли;
    </ПриВыгрузке>
    <ПриЗагрузке>Если Значение Тогда
            Значение = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.02");
        Иначе
            Значение = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
        КонецЕсли;
    </ПриЗагрузке>                                        
</Свойство>

Раз пишет что поле в приемнике не обнаружено, то получается, что торговля еще где-то хранит какие данные должны выгружаться
12 Cyberhawk
 
19.11.15
13:54
ПриЗагрузке у свойств - что-то новенькое
13 PitNN
 
19.11.15
13:57
(12) Это не суть) Не в этом же ошибка. Но спасибо, посмотрю и этот момент
14 БатКор
 
19.11.15
13:58
Надо смотреть коде в момент загрузки. там обычная выборка, именно посмотреть как он проверяет
15 PitNN
 
19.11.15
14:03
(14) Там намудрили так, что не один час уйдет на отладку. Думал, может сталкивался кто, подскажет, где откуда еще цепляются правила
16 PitNN
 
19.11.15
15:09
В общем, если кому интересно.
Дело вот в чем. Если у свойства есть обработчик "ПриВыгрузке" ил "ПослеВыгрузки", то в XML структуре правил у соответствующего свойства служебное поле "НуженУзелXMLПриВыгрузке" ставится в значение "Истина". Это означает, что при выгрузке в источнике будет обращение к соответствующему свойству. Поскольку у меня обработчик есть, а поля такого в источнике нет, то и вылетает исключение. Как-то так
17 Ranger_83
 
19.11.15
15:20
(0) Что-то я не понял чем типовые настройки счетов учета номенклатуры не устраивают?Они очень универсальные
18 PitNN
 
19.11.15
15:32
(17) Вы меня простите, но данный вопрос к теме не относится)
19 PitNN
 
20.11.15
10:14
Вот так правильно будет:
-- Это вставляется в описание реквизитов табличной части
<Свойство>
    <Код>80</Код>
    <Наименование>--&gt; СчетУчета</Наименование>
    <Порядок>700</Порядок>
    <Источник Имя="" Вид=""/>
    <Приемник Имя="СчетУчета" Вид="Реквизит" Тип="ПланСчетовСсылка.Хозрасчетный"/>
    <КодПравилаКонвертации>МоеПравило_Хозрасчетный                                      </КодПравилаКонвертации>
    <ПередВыгрузкой>Если ЗначениеЗаполнено(ОбъектКоллекции.Назначение) Тогда
                Значение = Новый Структура("Код", "41.02");
            Иначе
                Значение = Новый Структура("Код", "41.01");
            КонецЕсли;
    </ПередВыгрузкой>
</Свойство>

--А это после описания блока документа

<Правило>
    <Код>МоеПравило_Хозрасчетный</Код>
    <Наименование>трям</Наименование>
    <Порядок>100</Порядок>
    <НеЗамещать>true</НеЗамещать>
    <НеСоздаватьЕслиНеНайден>true</НеСоздаватьЕслиНеНайден>
    <Приемник>ПланСчетовСсылка.Хозрасчетный</Приемник>
    <Свойства>
        <Свойство Поиск="true">
            <Код>1</Код>
            <Наименование>--&gt; Код</Наименование>
            <Порядок>50</Порядок>
            <Источник Имя="" Вид=""/>
            <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/>
        </Свойство>
    </Свойства>
    <Значения/>
</Правило>

На этом тема закрывается. Всем спасибо)