Имя: Пароль:
1C
1С v8
Универсальный обмен XML, отказ от передачи
0 rudnitskij
 
15.09.18
23:04
Доброе всем.
Вопрос в следующем. При универсальном обмене УТ-БУХ по правилам обмена передаются документы, если они в УТ изменились - они при повторной передаче меняются и в бухгалтерии.
Подскажите пожалуйста, можно ли как-то настроить правила таким образом, чтобы при определенных значениях реквизита уже переданного документа в базе-приемнике повторной его передачи не происходило?
1 NuclearWinter
 
16.09.18
00:45
Можно
2 rudnitskij
 
16.09.18
00:50
(1) спасибо
3 rudnitskij
 
16.09.18
00:51
а можно чуть более развернуто?)
4 MaxS
 
16.09.18
05:41
В КД2 в ПКО на вкладке Перед выгрузкой написать
Отказ = Источник.МойРеквизит=КакоеТоЗначение;

Если обмен через планы обмена, то в правилах регистрации можно поправить.
5 rudnitskij
 
16.09.18
15:04
(4) не совсем то, у меня отказ должен зависеть от значения реквизита не в источнике, а в приемнике
6 rudnitskij
 
16.09.18
15:12
в ПКО ПередВыгрузкой пришлось вот такой велосипед изобретать:
// если в базе-приемнике уже есть документ и в нем указаны ведомости по выплате ЗП
// не выгружаем его
Если    
    Источник.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПрочееСписаниеБезналичныхДенежныхСредств
    Тогда
    Коннектор = Новый COMОбъект("V83.COMConnector");
    База = Коннектор.Connect("Srvr=""localhost""; Ref=""БазаПриемник""; Usr=""логин""; Pwd=""пароль""");
    ДокПриемник = База.Документы.ПлатежноеПоручениеИсходящее.НайтиПоНомеру(Источник.Номер,Источник.Дата);
    // если документ по выплате ЗП уже есть в базе
    Если ДокПриемник.СтатьяДвиженияДенежныхСредств.Код = "(тут вписать нужный код справочника)" // сравнение по ссылке почему-то не срабатывает
        И
        ДокПриемник.ВыплатаЗаработнойПлаты.Количество()
        Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
7 Cyberhawk
 
16.09.18
17:19
(6) О боже
Просто в ПослеЗагрузки анализируешь объект в БД приемнике и взводишь Отказ = Истина
8 rudnitskij
 
17.09.18
12:58
(7) "Просто в ПослеЗагрузки анализируешь объект в БД приемнике и взводишь Отказ = Истина"
после загрузки значения реквизитов уже изменены на те, что были в базе-источнике, толку их проверять?
9 Mankubus
 
17.09.18
13:07
(8) ложное утверждение
10 Mankubus
 
17.09.18
13:08
(9) + изменения еще не записаны. значит можно проверить старые значения по ссылке
11 rudnitskij
 
17.09.18
17:48
(9) "ложное утверждение" - не ложное, а проверенное на практике. Когда уже перенес данные - хрен ты что проверишь
ЗЫ. Сколько экспертов-теоретиков вылезло когда решился вопрос...
12 rudnitskij
 
17.09.18
17:48
(10) "+ изменения еще не записаны. значит можно проверить старые значения по ссылке" - вы бы хоть проверили прежде чем вводить людей в заблуждение
13 Cool_Profi
 
17.09.18
17:49
(11) овощЪ там. Данные перехали на ту сторону, но ещё не записаны.
Это как в ПередЗаписью отказ поставить.
14 Cyberhawk
 
17.09.18
18:25
Что-то автор со своими опровержениями бакланит. Если у него в коде обработчиков правил конвертации принудательно объект записывается, то кто ж в этом виноват?
15 zmaximka
 
17.09.18
18:55
(6) велосипед из костылей. Жесть просто
16 zmaximka
 
17.09.18
18:57
в ПКО в событии при загрузке
Если ОбъектНайден И Объект.Проведен Тогда
     НеЗамещатьОбъект = Истина;
КонецЕсли;    

Вместо Объект.Проведен напиши свое условие
17 rudnitskij
 
18.09.18
13:04
(14) что-то комментаторы не хотят проверить свои умствования на практике
18 rudnitskij
 
18.09.18
13:06
(16) на практике вы проверяли это всё? "Проведен" это не реквизит. Контрагент, например, на момент выполнения ПриЗагрузке уже в документе заменен на выгружаемый из источника. Пусть он и не записан - толку с того, мне старый негде брать
19 NuclearWinter
 
18.09.18
13:14
rudnitskij
В 16 все корректно написано, Проведен такой же стандартный реквизит как и пометка удаления.
20 Franchiser
 
гуру
18.09.18
13:23
Обработчики "Правила конвертации объектов"
После загрузки
Условия возникновения события
Только для платформы V8.
Событие выполняется после прочтения и установки атрибутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта.

Параметры:
Отказ - Булево - Если Истина, то объект загружен не будет.

Объект - Произвольный - загруженный объект.

Ссылка – Произвольный – ссылка на найденный объект в информационной базе.

ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе

ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено.

ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.

ИмяТипаОбъекта – Строка. Имя типа загруженного объекта, например, «СправочникСсылка.Номенклатура».

НаборЗаписей – РегистрСведенийНаборЗаписей. Загруженный набор записей. Только при загрузке в обработке УниверсальныйОбменДаннымиXML.
21 Franchiser
 
гуру
18.09.18
13:25
(18) Объект - это новый, Ссылка - это старый
22 rudnitskij
 
18.09.18
14:19
(21) ну если так то наверное да, испытаю на досуге
Спасибо за разъяснение
Программист всегда исправляет последнюю ошибку.