Имя: Пароль:
1C
1С v8
Как организовать проведение доков при загрузке () РИБ ???
0 Paul_Nevada
 
18.02.15
12:41
Помогите, пожалуйста, с вопросом - поиском не нарыл...
1 Paul_Nevada
 
18.02.15
13:03
Регистры накопления не мигрируют - вот и вопрос - как заставить доки ПРОВОДИТЬСЯ при загрузке?
2 Paul_Nevada
 
18.02.15
13:53
Совсем нечего сказать?)
Иль вопрос неровно задал?
3 dmpl
 
18.02.15
13:55
(0) Запоминай что загрузил и проводи после загрузки.
4 Maxus43
 
18.02.15
13:56
Есть механизмы отложенного проведения
5 Maxus43
 
18.02.15
13:57
а лучше заставить мигрировать движения, ибо после проведения документа - он опять в обмены полезет
6 Рэйв
 
18.02.15
13:58
(0)Я сделал РС, куда пишутся пришедшие с обменом доки. Потом регламентно запускаю обработку ночером и она их проводит.
7 Рэйв
 
18.02.15
13:59
+соотвественно удаляя из РС
8 vis_tmp
 
18.02.15
13:59
Можно и в саму загрузку встроить проведение.
9 Рэйв
 
18.02.15
14:00
(8)На больших объемах - по времени много занимает.
10 Paul_Nevada
 
18.02.15
14:01
(3) дописывать не желательно конфигурацию.
(4) как их "возбудить-то"?)
11 vis_tmp
 
18.02.15
14:01
(9)Если так, то (6)
12 dmpl
 
18.02.15
14:06
(10) Ну тогда разбирай XML и ищи ссылки для проведения.
13 Maxus43
 
18.02.15
15:01
(10) в УПП встроен, у тебя хз что за конфа. Там он корявый правда, лучше переписать
14 Sasha_1CK
 
18.02.15
16:36
(0)  насколько я понимаю в периферийной базе учет ведется не полностью, соответственно документ при проведении создает некорректные/неполные движения. При обмене тянется только документ, что бы не тащить кривые движения.
После загрузки необходимо провести загруженные документы.

Я правильно понял?

Создаем РС
Создаем подписку на событие при записи
с кодом типа такого

    Если Источник.ОбменДанными.Загрузка Тогда
    
        НоваяЗапись             = РегистрыСведений.ЗагруженныеДокументыУРИБ.СоздатьМенеджерЗаписи();
        НоваяЗапись.Документ    = Источник.Ссылка;
        НоваяЗапись.Загружен    = ТекущаяДата();
        НоваяЗапись.Записать();    
    
    КонецЕсли;     

Имеем список документов которые нужно провести.
А дальше как удобнее - можно обработку руками запускать, или настроить регламентное задание по проведению документов из регистра.

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

поэтому в обработке после проведения желательно очищать таблицу регистрации

        МассивУзлов = Новый Массив;
        Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()Тогда
            МассивУзлов.Добавить(ПланыОбмена.УРИБ.НайтиПоКоду("019"));
        Иначе
            МассивУзлов.Добавить(ПланыОбмена.АУРИБ.НайтиПоКоду("031"));
            
        КонецЕсли;
        ПланыОбмена.УдалитьРегистрациюИзменений(МассивУзлов,Док.Ссылка);


Ну и после проведения документов рРС необходимо очистить.
15 Sasha_1CK
 
18.02.15
16:38
(14)  + это для типовой БП 3.0 в других конфах процедуры общих модулей могут быть другими
16 Sasha_1CK
 
18.02.15
16:42
(10)  Ну если добавить свои РС, Подписку и Обработку - конфигурация поставщика останется без измененй и обновление не будет это затрагивать.

Насколько я понимаю если документы летают без движений - это значит план обмена добавлен и конфигурация таки снята с поддержки - так что хуже уже не будет.
17 Paul_Nevada
 
18.02.15
16:59
Всем большое спасибо за советы, особенно - Sasha_1CK - за развернутость!
Да, всем верно было понято.

Но вот неясно одно - как задействовать и так вроде имеющийся механизм по "отложенным движениям документов"?
18 Sasha_1CK
 
18.02.15
17:09
(17)  это не совсем то

точнее совсем не то.

Я конечно не спец по УПП - но это не к РИБу точно относится.

Концепция стандартных обменов построена на том что во всех узлах формируются полноценные движения и не хрен тратить время и ресурсы на их формирование.

Поэтому в типовых документах в модуле проведения всегда сразу стоит  Если Обмен.Загрузка то возврат и все.

попытки отменить это программно - сначала заводят в дебри общих модулей, а потом по ходу упираются в какое то ограничение уже на уровне платформы. То есть при обмене - документ провести никак нельзя - хоть убейся.
19 vis_tmp
 
19.02.15
09:15
(18) > То есть при обмене - документ провести никак нельзя - хоть убейся.
А у меня проводится в УТ 10.3
20 zalexey
 
19.02.15
09:17
(19) интересно, а как он у тебя проводится, если там нет четкой последовательности загрузки? Т.е. может сначала загрузиться реализация, потом поступление и только потом номенклатура, которая используется в этих документов.
21 Defender aka LINN
 
19.02.15
09:33
(18) "Концепция стандартных обменов построена на том что во всех узлах формируются полноценные движения и не хрен тратить время и ресурсы на их формирование." - особенно между УТ и БП, к примеру...
"Поэтому в типовых документах в модуле проведения всегда сразу стоит  Если Обмен.Загрузка то возврат и все." - в обработке проведения нифига подобного нет, в режиме загрузки ты туда и так не попадешь.
"То есть при обмене - документ провести никак нельзя - хоть убейся." - загляни в Розницу, удивишься.
22 Paul_Nevada
 
19.02.15
11:59
(19) каким образом-то?)))
23 Sasha_1CK
 
19.02.15
12:01
(21)  речь шла за РИБ. Обмены между БП и УТ, БП и Розница все же хоть и стандартные обмены - но галочки "распределенная база" не имеют.
Поэтому там возможны вариации.
(22)  Наверное  иметтся ввидуомбен УТ БП или БП УТ
там движения не могут переноситься - ибо не совпадают - и должны формироваться при загрузке
24 Defender aka LINN
 
19.02.15
12:06
(23) В Рознице таки документы проводятся при загрузке. И флаг "РИБ" в этом плане обмена стоит. ВНЕЗАПНО, да?
25 Sasha_1CK
 
19.02.15
12:10
(21)  Да в 8-ке нет моуля провеедения - это я по привычке.
В модуле объекта стандартынх документов БП в процедуре "Перед Записью" есть условие

Если ОбменДанными.Загрузка тогда
    Возврат;
КонецЕсли;

Соответственно в процедуру "лбоработка проведения" при заугрзке мы и не попадаем.
У меня эта же проблема в прошлом году была и я долго лбом об эту стенку бился.

Можно закомментить это условие и попасть в модуль проведения.
Однако один из реквизитов процедуры ПередЗаписью - РежимПроведения - при загрузке из РИБ это режим установлен в запись и программно его изменить не получилось (по крайней мере - я не смог) - из этого я сделал вывод - что ограничение где то на уровне платформы - пришлось юзать пост обработку.

Кстати я не ковырялся - но возможно что обмены УТ - БП  проводят документы после загрузки, а не вовремя, Но там это необходимость, а в РИБ при стандартном обмене - это избыточная операция
26 Defender aka LINN
 
19.02.15
12:13
(25) "Можно закомментить это условие и попасть в модуль проведения" - вперед и с песней. В режиме загрузки документ провести НЕВОЗМОЖНО. И условие тут не при чем.
27 Sasha_1CK
 
19.02.15
12:15
(26) тогда об чем спор?
28 Stim
 
19.02.15
12:21
(5) "после проведения документа - он опять в обмены полезет"
не полезет, он же загружается в режиме загрузки
29 Sasha_1CK
 
19.02.15
12:23
(28)  если использовать пост обработку - то это уже не загрузка
30 Defender aka LINN
 
19.02.15
12:24
(27) Об том, что ты не читаешь.
Еще раз, в Рознице документы, а конкретно Чек ККМ, при загрузке от подчиненного узла, ПРОВОДЯТСЯ.
31 Stim
 
19.02.15
12:27
(29) не знаю насчет пост, но в транзации записи объект - в загрузке. поэтому не должно быть никаких регистраций изменений этого объекта в типовой базе, когда он загружается, хоть 10 подписок к нему прилепи
32 Sasha_1CK
 
19.02.15
12:28
(30)  так они проводятся в режиме загрузки или все таки после загрузки?
Потому что сам же пишешь
"В режиме загрузки документ провести НЕВОЗМОЖНО. И условие тут не при чем."
33 Defender aka LINN
 
19.02.15
12:34
(32) В режиме загрузки - нельзя, платформа тебе лично не даст.
А вот ПРИ загрузке от подчиненного - можно.
34 Sasha_1CK
 
19.02.15
12:43
(33)  Признаю свою некомпетентность - но тогда встречный вопрос - где надо поставить галочку в обмене или в какой процедуре написать код, что бы документ "При загрузке" проводился.
35 Sasha_1CK
 
19.02.15
12:44
(34)  Розницы под рукой нет - в УТ есть проведение при загрузке изи РИБ?
36 Defender aka LINN
 
19.02.15
12:51
(34) У плана обмена есть события - при отправке данных, при загрузке данных, там и писать.
Вот кусок из Розницы:

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
    
    ТипОбъекта = ТипЗнч(ЭлементДанных);
    
    Если ТипОбъекта = мТипДокументОбъектОтчетОРозничныхПродажах
     ИЛИ ТипОбъекта = мТипДокументОбъектЧекККМ Тогда
        
        Если ЭлементДанных.Проведен Тогда
            
            ЭлементДанных.ОбменДанными.Отправитель = Ссылка;
            
            Попытка
                
                //провести документ
                ЭлементДанных.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                
            Исключение
                
                ОбщегоНазначения.СообщитьОбОшибке("Не удалось провести документ " + Строка(ЭлементДанных) + " по причине: " + ОписаниеОшибки());
                
            КонецПопытки
            
        ИначеЕсли ЗначениеЗаполнено(ЭлементДанных.Ссылка) И ЭлементДанных.Ссылка.Проведен Тогда
            
            ЭлементДанных.ОбменДанными.Отправитель = Ссылка;
            
            Попытка
            
                //распровести документ
                ЭлементДанных.Записать(РежимЗаписиДокумента.ОтменаПроведения);
                
            Исключение
                
                ОбщегоНазначения.СообщитьОбОшибке("Не удалось распровести документ " + Строка(ЭлементДанных) + " по причине: " + ОписаниеОшибки());
                
            КонецПопытки;
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры
37 Sasha_1CK
 
19.02.15
13:23
(36) Спс
надо будет попробовать.
38 Paul_Nevada
 
19.02.15
13:43
(36) Спасибо!
39 Paul_Nevada
 
19.02.15
13:44
Сейчас смотрю этот модуль в УТ 10.3 - ни слова в типовом решении о проведении доков) Щас поправим этот момент)
40 Paul_Nevada
 
19.02.15
14:21
А вот вопрос - можно ли влезть в программный код с целью отредактировать - его на стороне подчиненного узла???
41 Paul_Nevada
 
19.02.15
14:25
(40) как влезть, вернее???