Имя: Пароль:
1C
 
Универсальный обмен через 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
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) Спасибо, вот сюда я и не посмотрел в свое время. Причина в директивах была. Большое спасибо откликнувшимся.