|
Режим "ОбменДанными.Загрузка = Истина" в "Конвертации данных" | ☑ | ||
---|---|---|---|---|
0
Voittamaton
24.08.12
✎
14:13
|
Всем привет!
При выгрузке через обработку "УниверсальныйОбменДанными..." есть возможность установить галочку "ОбменаДанными.Загрузка = Истина". Как установить эту галочку в конфигурации "Конвертация данных"? Можно ли задать эту опцию для отдельных объектов конфигурации? |
|||
1
Voittamaton
24.08.12
✎
14:14
|
Обмен данными происходит через план обмена с прямым подключением к базе-приёмнику.
|
|||
2
Йохохо
24.08.12
✎
14:27
|
это проперти Объекта
ПослеЗагрузки Если Не ОбъектНайден Тогда Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); КонецЕсли; |
|||
3
Voittamaton
24.08.12
✎
14:52
|
(2) - хм... Что-то не работает... Всё равно выполняет код после
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Может попробовать в событии ПКО "При загрузке"? |
|||
4
Рэйв
24.08.12
✎
14:54
|
(3)Так оно для того там и проверяется
|
|||
5
Рэйв
24.08.12
✎
14:54
|
(3)Чтобы обойти всякие хитрые проверки и всю подобную лабуду
|
|||
6
Voittamaton
24.08.12
✎
15:02
|
(4) вот я написал в ПКО:
Объект.ОбменДанными.Загрузка = Истина; И в "ПриЗагрузке", и в "ПослеЗагрузки", а при выполнении кода в модуле документа Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; всё равно Обмен.Данными.Загрузка = Ложь. |
|||
7
Йохохо
24.08.12
✎
15:20
|
значит (Объект.ОбменДанными.Загрузка <> ОбменДанными.Загрузка) = true
|
|||
8
acsent
24.08.12
✎
15:25
|
(6) и что этот код не падает с ошибкой?
|
|||
9
Рэйв
24.08.12
✎
15:26
|
(6)Такой код прервет загрузку. потому что ты выйдешь из процедуры ЗагрузитьИзФайла()
|
|||
10
Рэйв
24.08.12
✎
15:27
|
Или ЗагрузитьОбъект() ...не помню уже точно
|
|||
11
Voittamaton
24.08.12
✎
15:29
|
(6) - параметр "Объект.ОбменДанными.Загрузка" я устанавливаю в "Истину" в ПКО.
НО: в модуле документа он по-прежнему равняется "Ложь" :-( С ошибкой не вылетает. |
|||
12
Torquader
26.08.12
✎
00:57
|
обмен данными загрузка равно истина имеет вообще опосредоыанное отношение к обмену данными - этот режим отключает любые проверки корректности загружаемого или создаваемого объекта,то есть позволяет,например,создать два элемента с одинаковым кодом,когда установлена уникальность кода.
применение данной галочки в конвертации нежелательно,так как может приводить к нарушениям в базе данных. при обмене же мы не можем не загрузить объект,который пришёл к нам из другой базы данных,так как там он уже есть и не может быть удалён. ,а в случае переноса данных нежелательно создавать новые объекты,если есть уже созданный объект с тем же кодом. |
|||
13
Mikhail Volkov
26.08.12
✎
07:02
|
(12) Для чего режим "ОбменДанными.Загрузка = Истина" и так понятно. Вопрос: кто, где его устанавливает? Вроде как УниверсальныйОбменДаннымиXML, но где, в каком месте? Отловить это мне не удалось... для одних документов он Истина, для других - Ложь. Прописывал в правилах обмена - игнорируется!?
|
|||
14
Йохохо
26.08.12
✎
10:45
|
понятно же, что все работает и не игнорируется. просто ты торопишься
в конвертации многое автоматом обернуто в попытку, надо быть аккуратнее вероятно, если ты детально все опишешь - сам же найдешь косяк |
|||
15
Алистар
26.08.12
✎
10:47
|
а может это свойство не работает если объект не включен ни в один план обмена
|
|||
16
acsent
26.08.12
✎
10:52
|
Окуеть зyатоки o_O
|
|||
17
Voittamaton
27.08.12
✎
08:26
|
Я был не прав - параметр "Объект.Обмен.ЗагрузкаДанных" устанавливается и срабатывает корректно. Дело было в том, что объект выгружался два раза, и при повторной выгрузке параметр равнялся "ложь".
Всем спасибо! |
|||
18
Voittamaton
27.08.12
✎
09:36
|
Как я понял, процедура "ПередЗаписью" в модуле документа выполнялась один раз перед записью, и один раз перед проведением.
В связи с этим возникает вопрос: как выгрузить документ таким образом, чтобы он не проводился в базе-приёмнике, но чтобы переносились его движения по регистрам и пометка проведения равнялась истине? |
|||
19
Йохохо
27.08.12
✎
10:04
|
(18) связи нету между посылкой и вопросом. чтобы не выполнялась 2 раза - найди галку не выгружать ляляля по ссылке, чтобы док целиком выгружался 1 раз
|
|||
20
Voittamaton
27.08.12
✎
10:49
|
(19) - объясню иначе. Я выгружаю только один документ. Загрузка = Истина срабатывает при записи документа. Если же документ проводится, тогда Загрузка автоматом ставится в "Ложь" и выполняются действия, которые не должны (по задумке) выполняться.
Флаг "Не выгружать объекты свойств источника по ссылкам" относится к подчинённым объектам. В своём же случае я выгружаю только один документ и на него не ссылаются другие, так как они попросту не выгружаются. Я же хочу, чтобы не срабатывал код, который написан в модуле документа в процедуре "Перед записью". Как я понял, при проведении он будет срабатывать в любом случае (или я ошибаюсь?). И единственный способ - не проводить документ, а переносить его движения. Но как это сделать? :-( |
|||
21
Йохохо
27.08.12
✎
12:05
|
в заказе УТ 10.3
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; так что, если избавишься от двойной загрузки и так взлетит |
|||
22
Voittamaton
27.08.12
✎
12:41
|
При выгрузке документа (только одного!) при первом выполнении (при записи) процедуры оператор заходит в цикл (так как ОбменДанными.Загрузка = Истина), а при втором выполнении (при проведении) процедуры оператор НЕ заходит в цикл (так как ОбменДанными.Загрузка = Истина). Какие есть варианты сделать ОбменДанными.Загружка = Истина при проведении? Если написать команду в ПКО, то всё равно при проведении параметр будет равен "Ложь".
|
|||
23
Voittamaton
27.08.12
✎
12:42
|
(22) - напутал немного.
При выгрузке документа (только одного!) при первом выполнении (при записи) процедуры оператор заходит в цикл (так как ОбменДанными.Загрузка = Истина), а при втором выполнении (при проведении) процедуры оператор НЕ заходит в цикл (так как ОбменДанными.Загрузка = ЛОЖЬ). Какие есть варианты сделать ОбменДанными.Загрузка = Истина при проведении? Если написать команду в ПКО, то всё равно при проведении параметр будет равен "Ложь". |
|||
24
kosts
27.08.12
✎
12:58
|
(23) >Какие есть варианты сделать ОбменДанными.Загрузка = Истина при проведении?
Так нельзя. Это в нарушение логики работы конфигурации. Мучился с такой же проблемой, перенести документ 1 к 1 со всеми движениями из базы в базу. Получилось только переделкой модуля обмена и модулей документа. Но на данный момент отказался от переноса 1 к 1, решил, что для нас лучше будет это проведение документа при загрузке. (И при не успешном проведении документ остается старый). |
|||
25
Voittamaton
27.08.12
✎
13:06
|
(24) - хм... А на что тогда влияют наборы движений регистров накопления в КД в конвертации свойств? Ведь если бы движения не переносились вручную, а только создавались заново при проведении в базе-приёмнике, то какой смысл от этих строчек ("Набор движений регистра накопления") в конвертации свойств? Или я Вас неправильно понял?
|
|||
26
kosts
27.08.12
✎
13:17
|
(25) В этой конвертации столько заморочек, черт ногу сломит... :-(
Регистр сведений есть (видимо для переноса независимых регистров), регистра накоплений нет (тоже доделывал, что бы был, но сейчас вернул назад). |
|||
27
Йохохо
27.08.12
✎
16:22
|
(23) РежимЗаписи = "Проведение";
|
|||
28
GenV
27.08.12
✎
16:29
|
(0) Если загружаешь через обработку "УниверсальныйОбменДаннымиXML", то документ проводиться, если указано (27), иначе переносится как есть вместе с движениями. Если через стандартный механизм обмена по правилам и плану обмена (это будет обработка "ОбменДаннымиXML"), то документ будет проводиться при загрузке, если выгружается статус проведения.
|
|||
29
GenV
27.08.12
✎
16:31
|
28+ ОбменДанными.Загрузка = Истина может повлиять на обход проверок в событиях и подписках, только если в них есть проверка на "ОбменДанными.Загрузка = Истина".
|
|||
30
Voittamaton
28.08.12
✎
06:19
|
(28) - спасибо за информацию!
|
|||
31
Mikhail Volkov
31.08.12
✎
05:06
|
Дык, в каком месте должно быть прописано "ОбменДанными.Загрузка = Истина", чтобы Истина была в ходе всей загрузки?
|
|||
32
Mikhail Volkov
31.08.12
✎
17:13
|
(30) Все же, где?
|
|||
33
Voittamaton
04.09.12
✎
12:53
|
(32) - я перепроверил режим "Загрузка = Истина" и пришёл к выводу, что он выставляется автоматически в "ложь" при записи объекта и в "истину" при проведении. Почему-то не работает команда "ОбменДанными.Загрузка = Истина" в ПКО.
|
|||
34
Йохохо
04.09.12
✎
12:57
|
(33) а вот эта работает
Объект.ОбменДанными.Загрузка = Истина; |
|||
35
Mikhail Volkov
05.09.12
✎
06:44
|
(34) Это надо прописывать в ПКО каждого объекта, или где-то (где?) можно один раз прописать?
|
|||
36
Voittamaton
05.09.12
✎
06:53
|
(34) - именно это я и имел ввиду, может я что-то делаю не так? Прописывал в ПКО "При загрузке" и "После загрузки". Затем проверил значение параметра в процедуре "При записи" документа. Если только записывать документ, тогда параметр "Загрузка" равняется истине, если документ записывается и проводится, то сначала параметр равняется истине, затеи лжи.
|
|||
37
Светлый Гений
05.09.12
✎
06:54
|
нужно помещать эту проверку в процедуру ПриЗаписи в модуле объекта
|
|||
38
Voittamaton
05.09.12
✎
06:55
|
(37) - именно туда и поместил проверку параметра
|
|||
39
Mikhail Volkov
05.09.12
✎
06:58
|
(37) "ПриЗаписи" - не в КД, а конфе базы приемника, как у (21)?
|
|||
40
Йохохо
05.09.12
✎
08:05
|
!!!111
"первом выполнении (при записи) процедуры оператор заходит в цикл (так как ОбменДанными.Загрузка = Истина), а при втором выполнении (при проведении) процедуры оператор НЕ заходит в цикл (так как ОбменДанными.Загрузка = ЛОЖЬ)" при первом выполнении ты выставил в коде ОбменДанными в Истину, но при втором выполнении нет. это не реквизит, это указание конфигурации, как себя вести, он не хранится в базе и не считывается из нее Не надо проводить два раза, сделай все в первом проходе |
|||
41
Voittamaton
05.09.12
✎
09:04
|
(40) - я выставлял значение в "ложь", а оператор всё равно заходит в цикл. Второй же проход цикла, видимо, выполнялся при проведении, потому что я специально проверял на одном документе и не выгружал его по ссылкам через другие элементы конфигурации.
|
|||
42
Йохохо
05.09.12
✎
09:43
|
что за цикл? "если обмен = истина тогда возврат"?)
в обработке загрузки есть код типа "записать если (модифицирован или НЕ записыватьтолькоизмененныеобъекты)" вероятно первый раз записываешь ты кодом в обработчике, а второй раз обработка сама |
|||
43
Voittamaton
05.09.12
✎
10:47
|
(42) - да, я имел ввиду конструкцию "Если ... Тогда" :-)
Хорошо, попробую установить этот параметр. |
|||
44
Йохохо
05.09.12
✎
11:05
|
в форме записыватьтолькоизмененныеобъекты = ага
ПослеЗагрузки если обработканепишиясамзапишу тогда ОбъектМодифицирован = Ложь; Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(РежимЗаписиДокумента...); конецесли вроде так |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |