Имя: Пароль:
1C
1С v8
Правила обмена
0 an_str
 
21.08.13
15:38
Имеем следующие правила:
<ПослеЗагрузки>    
                    Объект.Номер = ДобавитьКПрефиксу(Объект.Номер, Объект.Организация.Префикс, 9, "Слева");
    
    </ПослеЗагрузки>
                <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору>
                <Источник>ДокументСсылка.СчетНаОплатуПокупателю</Источник>
                <Приемник>ДокументСсылка.ИсходящиеСчета</Приемник>
                <Свойства>
                    <Свойство Поиск="true">
                        <Код>1</Код>
                        <Наименование>Номер --&gt; Номер</Наименование>
                        <Порядок>50</Порядок>
                        <Источник Имя="Номер" Вид="Свойство" Тип="Строка"/>
                        <Приемник Имя="Номер" Вид="Свойство" Тип="Строка"/>
                        <ПриводитьКДлине>9</ПриводитьКДлине>
                    </Свойство>
......
Когда номер в источнике, к примеру, 00000000065 то выгружается в базу приемник хорошо и номер становится С00000065. А вот когда в источнике 0000000065/1, то к нам загружается тоже с номером С00000065. Как это поправить? чтобы загружалось С000065/1...Спасибо за любые подсказки...
1 Euguln
 
21.08.13
15:51
цифра 9 не наводит на мысль, что ....?
2 EugeniaK
 
21.08.13
15:53
(0) Смотри, что делает ДобавитьКПрефиксу()
3 an_str
 
21.08.13
15:54
понятно,что он из 11 значного номера приводит к 9-значному. И в базу куда я гружу у документа длина номера 9. Я первый раз с обменом столкнулась, где нужно поправить, чтобы вместе со слешом перегружалось?
4 an_str
 
21.08.13
15:56
(2)Функция ДобавитьКПрефиксу(Знач Стр, Добавок = "", Длина = "", Режим = "Слева") Экспорт

    Стр = СокрЛП(Формат(Стр,"ЧГ=0"));

    Если ПустаяСтрока(Длина) Тогда
        Длина = СтрДлина(Стр);
    КонецЕсли;

    ЧисловаяЧасть   = "";
    Префикс         = ПолучитьПрефиксЧислоНомера(Стр, ЧисловаяЧасть);

    Если Режим = "Слева" Тогда
        Результат = СокрЛП(Добавок) + Префикс;
    Иначе
        Результат = Префикс + СокрЛП(Добавок);
    КонецЕсли;

    Пока Длина - СтрДлина(Результат) - СтрДлина(Формат(ЧисловаяЧасть, "ЧГ=0")) > 0 Цикл
        Результат = Результат + "0";
    КонецЦикла;

    Результат = Результат + Формат(ЧисловаяЧасть, "ЧГ=0");

    Возврат Результат;

КонецФункции // ДобавитьКПрефиксу()
к ней на вход уже поступает номер без слеша, т.е. в моем примере 000000065
5 hhhh
 
21.08.13
15:56
(3) пару нулей убирайте
6 Euguln
 
21.08.13
15:56
(3) Перед выгрузкой обрезать левые нули до нужной длины
7 Euguln
 
21.08.13
15:57
(6) + или перед загрузкой
8 an_str
 
21.08.13
16:01
(7) Т.е. должен быть некий кусок кода перед выше указанным, что-то вроде:
<ПередЗагрузкой>    
            ....    
    </ПередЗагрузкой>
? не могли бы вы привести пример
9 Tateossian
 
21.08.13
16:01
(4) Вот там ПолучитьПрефиксЧислоНомера поменяй на выходе количество нулей.
10 Euguln
 
21.08.13
16:03
(9) не поможет, в объекте номер уже длиной 9
(8) пример чего? кода для удаления нулей или пример правила?
11 an_str
 
21.08.13
16:05
(9) не поможет, на вход уже без слеша подается
12 an_str
 
21.08.13
16:08
(10) фух, было бы замечательно и кода и правила...первый раз как-то уж очень тяжело обмен дается((( ...Не совсем пойму как обратиться в "ПередЗагрузкой" к старому номеру
13 Tateossian
 
21.08.13
16:12
(12) В Алгоритмах напиши свою функцию парсинга номера; она должна действовать во всех обработчиках, вот и вызывай ее ПослеЗагрузки (10) Да, ты прав, я невнимателен.
14 Euguln
 
21.08.13
16:13
(10) Ты хоть через КД работаешь?
15 an_str
 
21.08.13
16:22
(14) честно говоря, знаю, то надо через КД...но ее ни разу в жизни не открывала, а надо срочно...сейчас напрямую в макете смотрю. знаю, что неправильно...грызть мне еще 1с и грызть
16 Euguln
 
21.08.13
16:26
(15) Дольше проковыряешься в макете, грузи в КД
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан