Имя: Пароль:
1C
1С v8
Конвертация УТ-БП
,
0 alex-ander-777
 
24.02.14
22:57
Господа, затупил.
Есть односторонняя конвертация УТ-БП on-line. Уже и редактировал правила, и свои создавал, но тут споткнулся.
Надо после выгрузки документа сделать записи в некоторый регистр сведений (без регистратора) базы-приемника. Одно из измерений - данный документ, то есть как минимум он должен быть записан.
1. То есть наверное надо написать что-то в обработчике ПКО "после выгрузки в файл"? Вообще, в случае on-line этот обработчик когда срабатывает?
2. Как обратиться к базе-приемнику из обработчика? Какая переменная? Какая-нибудь Параметры.Объект подключения?
Большая просьба знающим ответ подсказать...
1 zmaximka
 
24.02.14
23:27
а чего обработчик после загрузки не устраивает?
2 alex-ander-777
 
24.02.14
23:30
Не хочу трогать БП. Хочется всё на стороне УТ сделать.
3 zmaximka
 
24.02.14
23:31
ну ссылка то у тебя есть так что можно и после выгрузки в файл.
4 alex-ander-777
 
24.02.14
23:34
Пока допустим. А что по поводу второго пункта?
5 zmaximka
 
24.02.14
23:41
(4) а зачем? нужно ПКО которое будет делать запись в регистр и в ПослеВыгрузкиВфайл делать ВыгрузитьПоПравилу(бла,бла,бла);
6 zmaximka
 
24.02.14
23:45
в хелпе по обработчику пример есть
7 alex-ander-777
 
24.02.14
23:46
Типа ПКО Документ-Регистр? Ну... может быть. Завтра буду пробовать.
8 alex-ander-777
 
25.02.14
08:59
Всё-таки не въехал.
В базе приемнике надо сделать запись в независимом регистре сведений.
Одно из измерений - ссылка на созданный документ в базе-приемнике, другие измерения зависят от реквизитов документа в базе-источнике. У документа в базе-приемнике соответствующих реквизитов нету.
Вот как это сделать?
9 Godofsin
 
25.02.14
09:02
(8) Читай (5) еще раз
10 alex-ander-777
 
25.02.14
09:04
Да читал. Как ссылку на объект в базе-приемнике-то получить?
11 Godofsin
 
25.02.14
09:07
(10) Зачем? в ПКО по твоему реквизиту, где ссылка нужна, указываешь ПКО этого документа и передаешь туда ссылку из источника
12 Godofsin
 
25.02.14
09:07
))) во написал )))
13 alex-ander-777
 
25.02.14
09:13
Да... ну попробую разобраться, как до работы доеду...
14 SleepyHead
 
гуру
25.02.14
09:25
> Да читал. Как ссылку на объект в базе-приемнике-то получить?

Открой в ПКО обработчик "После загрузки", нажми кнопку "Информация по обработчикам".

Если память не изменяет, он так и называеся - Объект.
15 floody
 
25.02.14
09:27
Решение в (1).
16 SleepyHead
 
гуру
25.02.14
09:28
В обработчике "После загрузки" документа есть ссылка на объект-документ, Объект.Ссылка - это уже ссылка на документ, вот в этом обработчике и прописывай код записи в регистр сведений.

В конце обработчика не забудь прописать

ОбъектМодифицирован = Ложь;

чтобы не выполнялась повторная запись объекта системой конвертации данных.
17 alex-ander-777
 
25.02.14
09:46
(14) >  обработчик "После загрузки"

Это уже на стороне базы-приемника? Но там другая сложность:
===========================
Одно из измерений - ссылка на созданный документ в базе-приемнике, другие измерения зависят от реквизитов документа в базе-источнике. У документа в базе-приемнике соответствующих реквизитов нету.
===========================
вот для этих других измерений информации в базе-приемнике не существует.

Или я словами не понимаю - нужна схема, а здесь её не нарисуешь..
18 alex-ander-777
 
25.02.14
09:47
Ладно, видимо, вопрос сырой, поковыряюсь - созрею для более внятного.
19 SleepyHead
 
гуру
25.02.14
09:53
Тогда создавай ПВД с произвольным алгоритмом для переноса этого регистра, значения измерений будут конвертироваться штатными средствами КД, правила конечно пропишешь.
20 SleepyHead
 
гуру
25.02.14
09:57
Что конкретно надо переносить в тот регистр, можешь накапливать в параметрах конвертации, а потом в ПВД этот параметр использовать.

Примерно так:

1. В обработчике "Перед конвертацией" создать параметр конвертации (допустим, таблица значений)
2. В обработчиках выгрузки документов добавлять в эту таблицу значений нужные значения (ссылки на стороне базы-источника)
3. к моменту выгрузки ПВД этого регистра таблица значений будет заполнена, в ПВД ставишь тип алгоритма - произвольный, в переменную ВыборкаДанных приписываешь ссылку на эту коллекцию, а в ПКС измерений прописываешь правила конвертации объектов исходной базы
21 alex-ander-777
 
25.02.14
11:20
Ага, уже что-то дельное! Спасибо, буду думать.
22 SleepyHead
 
гуру
25.02.14
11:22
В марте открывается очередной поток курса по конвертации у Гилева, автор, записывайся, не пожалеешь.
23 alex-ander-777
 
25.02.14
11:23
А в апреле общероссийская выставка по тематике нашей фирмы. Не будет времени.
24 Aleksey
 
25.02.14
11:24
(1) А он разве работает при онлайн обмене?
25 SleepyHead
 
гуру
25.02.14
11:26
(24) С чего бы ему не работать? Возьмите правила УТ11-> БП.30, к примеру документ ввода начальных остатков, вот текст обработчика "После загрузки"

Выполнить(Алгоритмы.ОбработатьЗаписьДокументаПослеЗагрузки);

Для Каждого СтрокаТаблицы Из Объект.БухСправка Цикл
    
    ЧислоАктивныхСубконто = СтрокаТаблицы.СчетУчета.ВидыСубконто.Количество();
    
    Для Сч = 1 По ЧислоАктивныхСубконто Цикл
        
        ТипСубк = СтрокаТаблицы.СчетУчета.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;
        
        Если ТипСубк.ПривестиЗначение(СтрокаТаблицы["Субконто" + Сч]) <> СтрокаТаблицы["Субконто" + Сч] Тогда
            СтрокаТаблицы["Субконто" + Сч] = ТипСубк.ПривестиЗначение(СтрокаТаблицы["Субконто" + Сч]);
        КонецЕсли;
        
    КонецЦикла;
    
    Для Сч = (ЧислоАктивныхСубконто + 1) По 3 Цикл
        
        Если Не СтрокаТаблицы["Субконто" + Сч] = Неопределено Тогда
            СтрокаТаблицы["Субконто" + Сч] = Неопределено;
        КонецЕсли;
        
    КонецЦикла;
    
КонецЦикла;
26 Aleksey
 
25.02.14
11:27
(25) А ничего что это не онлайн обмен?
27 Aleksey
 
25.02.14
11:27
у меня есть правило в котором после загрузки прописано

Выполнить(Алгоритмы.ПровестиДокументы);

Если я выгружаю через файл - то алгоритм отрабатывает
Если делаю онлайн-обмен - то алгоритм не работает
28 SleepyHead
 
гуру
25.02.14
11:30
Возможно, у вас корпоративный обмен, и обработчики выгружены в отдельную обработку и встроены в план обмена.
29 SleepyHead
 
гуру
25.02.14
11:32
Ну и можно же сообщений навтыкать, пред вызовом алгоритма, после вызова, посмотреть что в алгоритме.

Опять же, режим совместимости с БСП надо смотреть.
30 13_Mult
 
25.02.14
11:56
Имхо при онлайн обмене правила лежат в макете плана обмена. И не помню что и где но не всё при онлайн обмене работает и наоборот.
Что то можно посмотреть в Конвертации.
31 SleepyHead
 
гуру
25.02.14
11:59
> Имхо при онлайн обмене правила лежат в макете плана обмена

Не совсем так, в менеджере плана обмена есть функция, которая возвращает имя обработки с обработчиками событий. Но применяется это только в режиме, когда обработчики выгружаются отдельно, правила отдельно.

Обычно применяется при передаче сведений не внутри локальной сети, а через интернет.
32 13_Mult
 
25.02.14
12:04
(31) Если надо бороться за безопасность и в сообщении не было ни каких обработчиков, то да, можно только так. ))
Основная теорема систематики: Новые системы плодят новые проблемы.