|
Универсальный обмен через com-соединение. Не получается провести документ | ☑ | ||
---|---|---|---|---|
0
Ymryn
26.08.15
✎
09:17
|
Мое почтение. Что-то начинаю уже душевно так буксовать, прошу помощи. Осуществляю обмен c помощью com-соединения по правилам. На выходе стабильно получаю документ с галочкой - проведен, но без движений. Стандартная ситуация для записи в режиме обмена данных. При обмене через файл, я это решал проверкой в после записи, что если проведен. то записать с проведением. Аналогичный код при com-соединении не работает. Подозреваю, что связано с тем, что выполнение идет в внешнем соединении. Есть подозрение, что создание общего модуля с процедурой проведения и вызовом этой процедуры - решит проблему, но мне не хочется модифицировать конфигурацию базы приемника. Может кто-то подскажет другие варианты решения проблемы?
|
|||
1
ДенисЧ
26.08.15
✎
09:25
|
Для начала - код нужен.
И записи ЖР, связанные с этим событием. Без этого могу посоветовать только лист бумаги А4 и шариковую ручку |
|||
2
Ymryn
26.08.15
✎
09:26
|
(1) код.
Если Объект.Проведен Тогда Попытка Объект.Записать(РежимЗаписиДокумента.Проведение); Исключение Сообщить("Не удалось провести " + Объект); Объект.Проведен = Ложь; Объект.Записать(); КонецПопытки; Иначе Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЕсли; Записи ЖР, чуток позднее будут. |
|||
3
Альбатрос
26.08.15
✎
09:29
|
А если внаглую, убрать все условия и написать: Объект.Записать(РежимЗаписиДокумента.Проведение);. Проведется?
|
|||
4
Ymryn
26.08.15
✎
09:31
|
(3) если честно, делал только до уровня
Если Объект.Проведен Тогда Объект.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; В этом случае не проводился. Вообще без условий не пробовал, сейчас для чистоты эксперимента попробую. |
|||
5
Cyberhawk
26.08.15
✎
09:33
|
Ставлю на то, что процедуры проведения в общих модулях не компилируются для внешнего соединения
|
|||
6
ДенисЧ
26.08.15
✎
09:34
|
(5) а ты думаешь, почему я просил записи ЖР?
Это я так тонко намекал... |
|||
7
Альбатрос
26.08.15
✎
09:35
|
(5) Очень похоже
|
|||
8
Ymryn
26.08.15
✎
09:36
|
(5) да я тоже про это думаю. Вопрос, как это обходить :)
|
|||
9
ДенисЧ
26.08.15
✎
09:37
|
(8) обходить можно разными путями. Например - отойти от 1с километров на 5....
|
|||
10
Ymryn
26.08.15
✎
09:37
|
(9) неплохой способ, но к сожалению не подходит.
|
|||
11
Ymryn
26.08.15
✎
09:40
|
(3) да, провел чистый эксперимент. Вообще без условий не срабатывает. По логике, из внешки для проведения надо писать ВнешнееПодключение.РежимЗаписиДокумента.Проведение, но в процедуре ПослеЗаписи даже намека нет на ВнешнееПодключение, хотя одна мысль есть, будем её рыть, если других идей никто не накидает.
|
|||
12
Альбатрос
26.08.15
✎
09:41
|
(11) Как насчет поставить галочку в конфигураторе?
|
|||
13
Ymryn
26.08.15
✎
09:43
|
(12) поточнее на счет галочки? Отладка имеется в виду?
|
|||
14
olegves
26.08.15
✎
09:44
|
(0) в модуле проведения базы, к которой цепляешься сом-конектором, поищи, где есть Сообщить и пропиши директивы препроцессора на внещнее соединение
|
|||
15
hhhh
26.08.15
✎
09:44
|
(13) а это что за фигня?
РежимЗаписиДокумента.Проведение это же не из той базы константа, вообще должно вылететь с таким бредом. |
|||
16
Ymryn
26.08.15
✎
09:46
|
(15) должна, но не вылетает. Сам удивился, что кушает, когда первый раз понял ситуацию. Видимо универсальный обмен, что-то с этим делает. Пока хотел обойтись малой кровью и не рыться непосредственно в том, что универсальный обмен делает с этим кодом. похоже придется.
|
|||
17
Альбатрос
26.08.15
✎
09:47
|
(15) Почему?
|
|||
18
Ymryn
26.08.15
✎
09:48
|
(17) ну при нормальном вызове com-соединения - это действительно должно вызывать ошибку, если пытаться так провести.
|
|||
19
hhhh
26.08.15
✎
09:49
|
(17) ну надо по идее
Объект.Записать(КакоеТоКомСоединение.РежимЗаписиДокумента.Проведение); если объект из того соединения? |
|||
20
Альбатрос
26.08.15
✎
09:51
|
(19) Ну так обработка вроде как и преобразует...
|
|||
21
Альбатрос
26.08.15
✎
09:52
|
(13) http://savepic.su/6052846.jpg
или (14) |
|||
22
Ymryn
26.08.15
✎
09:53
|
(20) я не уверен, что она этот код преобразует. Там же именно все-таки код выполняется. Вот почему она не падает, я не понимаю. При попытке написать ВнешнееСоединение.РежимЗаписиДокумента.Проведение (так сказать на пофиг, а вдруг угадаю) - она начала ругаться. Т.е. все-таки какая-то проверка там выполняется.
|
|||
23
Альбатрос
26.08.15
✎
09:54
|
(22) То, что ты не уверен - ничего не значит. Другого логичного объяснения нет. Если не лень - залезь и посмотри.
|
|||
24
Ymryn
26.08.15
✎
09:55
|
(23) как раз сейчас лажу и смотрю :)
|
|||
25
slavik013
26.08.15
✎
10:08
|
(15) С чего оно должно вылетать, если все обработчики правил выполняются в базе-приемнике через Выполнить()?
|
|||
26
Ymryn
26.08.15
✎
10:12
|
(25) а вот и ответ, почему не вылетает. Спасибо.
|
|||
27
Альбатрос
26.08.15
✎
10:12
|
(26) попробовал (21)?
|
|||
28
Ymryn
26.08.15
✎
10:14
|
(27) я не представляю у чего это ставить. Я не вызываю никаких общих модулей самостоятельно. Видимо я где-то туплю.
|
|||
29
Альбатрос
26.08.15
✎
10:21
|
(28) Jnrhjq vjlekm ljrevtynf? rjnjhsq [jxtim ghjdtcnb b cvjnhb? rfrbt vjlekb jy dspsdftn ghb ghjdtltybb/
|
|||
30
Альбатрос
26.08.15
✎
10:21
|
млять
|
|||
31
Альбатрос
26.08.15
✎
10:22
|
ОбработкуПроведения смотри у документа
|
|||
32
Ymryn
26.08.15
✎
10:24
|
(31) увы, мне крайне неудобно менять базу приемник. Даже если я там, что-то найду или решу изменить - это не то решение, которое я сейчас ищу. Хочется решить проблему изменениями в правилах, ну или в крайнем случае изменениями в базе источнике.
|
|||
33
Альбатрос
26.08.15
✎
10:27
|
(32) ааа... Ну удачи
|
|||
34
Ymryn
26.08.15
✎
10:28
|
(33) спасибо )
|
|||
35
Лефмихалыч
26.08.15
✎
10:38
|
(0) а не пробовал после записи
ДокументОбъект.ОбменДанными.Загрузка = Ложь; ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); ? первое, что в голову пришло |
|||
36
Ymryn
26.08.15
✎
10:42
|
(35) пробовал. Не помогает.
|
|||
37
ssh-2013
26.08.15
✎
10:45
|
(0) Есть параметры Обработчика Перед загрузкой
РежимЗаписи - Строка. Режим записи документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Запись", "Проведение", "ОтменаПроведения" РежимПроведения - Строка. Режим проведения документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Неоперативный", "Оперативный" |
|||
38
Ymryn
26.08.15
✎
10:50
|
(37) это еще не пробовал. Благодарю.
Вообще сейчас наконец-то отфильтровался ЖР. По документам любопытная картина. Есть зафиксированная транзакция по проведению, следом зафиксированная транзакция по изменению. Уж не чистит ли у меня обычная запись движения. |
|||
39
Ymryn
26.08.15
✎
10:53
|
(37) неа. Тоже мимо.
|
|||
40
ssh-2013
26.08.15
✎
10:57
|
(39) отладил бы уже как нибудь
|
|||
41
Ymryn
26.08.15
✎
10:59
|
(40) это последнее средство, когда закончатся все идеи. Слишком много дополнительных работ надо делать, чтобы отладку включить.
|
|||
42
Альбатрос
26.08.15
✎
11:00
|
(41) Млять, открой модуль документа и посмотри, обращается ли он в общие модули и доступны ли эти модули для внешнего соединения!
|
|||
43
ДенисЧ
26.08.15
✎
11:01
|
(41) Есть очень простой способ отладки - на каждый чих писать в ЖР.
|
|||
44
Ymryn
26.08.15
✎
11:11
|
(42) проверил. Все общие модули, вызываемые в теле проведения, имеют эту галочку.
(43) не без этого. Меня смущает, что я пользуюсь типовым функционалом. Обработке универсального обмена дофига лет. Да и база приемник не так уж переписана, чтобы в ней было особенное. Все должно же просто быть :) |
|||
45
ДенисЧ
26.08.15
✎
11:15
|
(44) Тебе точно 28 лет?
А по разговору - не больше 11... Потом уже такая наивность как-то сама собой проходит... |
|||
46
ssh-2013
26.08.15
✎
11:20
|
(44) (
|
|||
47
Ymryn
26.08.15
✎
17:19
|
Ну что я могу сказать, попробовал и так и эдак. Сделал отдельно процедуры проведения в общем модуле и пробовал вызывать их. Наставил записей в журнал регистрации. По ним могу сказать, что ПослеЗагрузки выполняется, в собственную процедуру заходит, ОбменДанными.Загрузка = Ложь. В процедуры передЗаписью и ОбработкаПроведения не заходит. Вообще. Даже при Объект.Записать(); Довольно неплохо. Чую на сегодня я уже выдохся, буду еще что-нибудь придумывать завтра. Ну должно же это хоть как-то работать.
|
|||
48
olegves
26.08.15
✎
17:43
|
(47) проверь модули документов на синтаксис с включенной только 1 галкой: Внешнее соединение
|
|||
49
Cyberhawk
26.08.15
✎
18:57
|
Кроме флагов компиляции модулей надо еще в документе в модуле объекта и модуле менеджера посмотреть директивы компиляции #Если Клиент ИЛИ бла-бла-бла
|
|||
50
Рэйв
26.08.15
✎
19:07
|
(0)Вот уж на что на что....А уж на их COM я бы точно не положился и от греха бы написал свой...
|
|||
51
Ymryn
27.08.15
✎
09:05
|
(48), (49) Спасибо, вот сюда я и не посмотрел в свое время. Причина в директивах была. Большое спасибо откликнувшимся.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |