Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 19:29

Правила обмена

Автор Новенькая, 21 авг 2013, 17:03

0 Пользователей и 1 гость просматривают эту тему.

Новенькая

Имеем следующие правила:
<ПослеЗагрузки> Объект.Номер = ДобавитьКПрефиксу(Объект.Номер, Объект.Организация.Префикс, 9, "Слева"); </ПослеЗагрузки> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <Источник>ДокументСсылка.СчетНаОплатуПокупателю</Источник> <Приемник>ДокументСсылка.ИсходящиеСчета</Приемник> <Свойства> <Свойство Поиск="true"> <Код>1</Код> <Наименование>Номер --&gt; Номер</Наименование> <Порядок>50</Порядок> <Источник Имя="Номер" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Номер" Вид="Свойство" Тип="Строка"/> <ПриводитьКДлине>9</ПриводитьКДлине> </Свойство> ...... 
Когда номер в источнике, к примеру, 00000000065 то выгружается в базу приемник хорошо и номер становится С00000065. А вот когда в источнике 0000000065/1, то к нам загружается тоже с номером С00000065. Как это поправить? чтобы загружалось С000065/1...Спасибо за помощь

Новенькая


MuI_I_Ika

А если не приводить к длине, то что получится?

boobzx

  Скрин Попробуйте передавать номер и выставить как на скрине? Или если уж нужно именно после загрузки...добавлять к префиксу.. я бы это значение тогда передавал в параметре.. просто
Ном = Параметры.["ПодготовленныйНомер"];
ДобавитьКПрефиксу(ПрефиксОрганизации, Ном);
Ну что-то типа такого. мы через параметры передали строку. а дальше можно играться как душе угодно.

Новенькая

Цитата: MuI_I_Ika от 21 авг 2013, 18:20
А если не приводить к длине, то что получится?
Результат в моем примере будет следующий: С00000000
Добавлено: 21 авг 2013, 21:24


Цитата: boobzx от 21 авг 2013, 19:03
  Скрин Попробуйте передавать номер и выставить как на скрине? Или если уж нужно именно после загрузки...добавлять к префиксу.. я бы это значение тогда передавал в параметре.. просто
Ном = Параметры.["ПодготовленныйНомер"];
ДобавитьКПрефиксу(ПрефиксОрганизации, Ном);
Ну что-то типа такого. мы через параметры передали строку. а дальше можно играться как душе угодно.
Спасибо за идею!!! а не могли бы привести пример...Я первый день смотрю на КД и эти правила обмена...Как этот параметр установить??? Нашла примеры:
<ПередЗагрузкойДанных>Параметры.Вставить("ВалютаРегламентированногоУчета", Константы.ВалютаРегламентированногоУчета.Получить());
Параметры.Вставить("ОсновнаяОрганизация", УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация"));</ПередЗагрузкойДанных>
а в моем случае как должно быть?
<ПередЗагрузкойДанных>Параметры.Вставить("ПодготовленныйНомер", ПодготовленныйНомер);
</ПередЗагрузкойДанных> где мне расчитать этот ПодготовленныйНомер??? ПодготовленныйНомер=Прав(Номер, 9);

boobzx

Ну что бы понять как у вас.. я значит сделал в двух базах тестовый документ.. в первом документе.. номер состоит из цифр и там 11 символов. А во втором из 9. Скрин(Старт). Далее открываю ПКС и создаю там правило -> Снимок_2 На снимке_2 под цифрой ставим галочку передавать в параметр, под цифрой 2 задаем имя параметра, под 3 пишем под.. т.е. задаем параметру значение, и потом этот параметр передаем через значение. далее открываем ПКО ->в пко после загрузки я написал...Снимок_3 первым параметром я определяю код подразделения(у вас в базе это своя процедура..) вторая строка, я определил параметр.. какой получился.. и его подставил.. ВАЖНО понимать! параметр можно считать только после загрузки документа.. не перед не при.. только после!! У вас скорее всего это будет выглядеть так..


//Нас сначала, что бы не менять типовой код.. лучше проверить заполнен ли наш параметр
Ном = ПраметрыОбъекта["НомДок"];
Если НомДок = "" Тогда //(я тут точно не помню как проверку делать.. может на нуль нужно проверять)
    Объект.Номер = ДобавитьКПрефиксу(Объект.Номер, Объект.Организация.Префикс, 9, "Слева");
Иначе
    Объект.Номер = ДобавитьКПрефиксу(НомДОк, Объект.Организация.Префикс);// ну примерно как-то так.. подробнее не могу разобрать.. нужна Ваша база:)
КонецЕсли

Добавлено: 21 авг 2013, 22:51


У Вас еще не понятно.. сколько символов на номер в источнике.. то 11, то 12
Добавлено: 21 авг 2013, 22:52


Если длина номера действительно разная, то тогда следует в источнике делать проверку на длину номера, если 11 символов, но Прав("строка", стоит ставить 8), если 12 то 9.

Новенькая

Спасибо огромное, сейчас буду пробовать
Добавлено: 22 авг 2013, 08:41


Все получилось, еще раз огромное спасибо!!!!!!!!!

boobzx

:zebzdr: А вообще я так подумал.. если у вас номер сам передается.. тооо должна просто помочь галочка автоматически приравнивать:)и он сам что нужно передаст.. просто мой вариант был.. это руками как та галочка работает:)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск