Имя: Пароль:
1C
1С v8
Проблема с автообменом РИБ 1С 8.1
0 sanjasamara
 
12.01.14
12:56
Проблема при автообмене РИБ, 1С работает в клиент серверном режиме, настроен стандартный обмен по расписанию, но при выполнении обмена вылетают ошибки, при получении изменений у объектов не ставится признак ОбменДанными.Загрузка и при их записи в базу проводятся проверки как в при обычной записи, в результате чего идет вылет на процедурах Предупреждение, потому как на сервере такой процедуры нет.
Если обмен запускать вручную - то все проходит без ошибок, при приеме обмена признак ОбменДанными.Загрузка автоматом выставляется в ИСТИНУ и обмен проходит.
Весь код обмена излазил, так и не нашел как этот признак поднимается.
1 mistеr
 
12.01.14
13:06
Что-то недоговариваешь. Раньше работало?

Более вероятно, что просто модуль документа не запускается на сервере, потому что не компилируется с проверками сервера.
2 sanjasamara
 
12.01.14
13:12
Раньше база работала в файловом режиме и автообмен был настроен по событиям, файл появился - меняется, сейчас база перенесена на сервер 1С и я пытаюсь настроить обмен по расписанию чтоб он планировщиком серверным делался.
Если делать обмен вручную - все проходит, а вот при работе планировщика - косяк.
3 Ranger_83
 
12.01.14
13:22
(0) Предупреждение выводить только на клиенте
4 mistеr
 
12.01.14
13:34
(2) Ясно, я угадал. Не хочется расстраивать, но у тебя впереди переписывание модулей. Весь интерактив переноси в модули формы, а просто ругань меняй на ОбщегоНазначения.СообщитьОбОшибке(), как в типовых.
5 mistеr
 
12.01.14
13:35
(2) Оффтопик, а как было настроено "по событиям"?
6 sanjasamara
 
12.01.14
15:23
На закладке Доп настройки автообмена в блоке параметров Обмен по событиям стояла галка При появлении файла и путь к файлу обмена прописан был, так же был указан пользоваель под сеансом которого это должно работать.
Если этот пользователь входил в 1С, то мониторился файл, как приходил - запускался обмен.
7 sanjasamara
 
12.01.14
15:26
(4) Так почему обмен лезет в ту часть кода, куда ему не надо, при обмене в ручную он туда не лезет, т.к признак ОбменДанными.Загрузка=истина, а при фоновом обмене этот признак почему-то не поднимается.

В какой момент происходит поднятие этого признака и при каких условиях? В коде процедуры обмена он нигде не прописывается.
8 mistеr
 
12.01.14
15:31
(6) Понятно, всетаки событие - это вход пользователя. Я думал что-то оригинальное. :)
9 mistеr
 
12.01.14
15:38
(7) >почему обмен лезет в ту часть кода, куда ему не надо
Он не лезет. Просто не доходит до этого. И признак выставляется как положено.

Ошибка происходит еще на этапе компиляции модуля документа. А компиляция происходит при первом использовании, то есть при вызове из рег. задания во время обмена. На сервере модуль компилируется в другом режиме, чем на клиенте, и всякие Предупреждение() и т.д. вызывают ошибки. В файловой все работает всегда в клиентском режиме.

На всякий случай приведи полный текст ошибки. Но я уверен на 99%.
10 sanjasamara
 
14.01.14
13:17
Решил проблему автообмена топорным способом, сделал батник, который стартует 1С и запускает внешнюю обработку, а эта обработка деалет обмен по все узлам базы и потом закрывает подключение.
11 St17
 
30.01.14
11:29
(9) согласен. Сам столкнулся с подобной ошибкой , функция не доступна на сервере.
В каждой процедуре написано где она доступна.
Код который не должен быть виден на сервере фильтруем.
Пример:    
#Если Клиент Тогда
    Предупреждение("Доступность: Тонкий клиент, веб-клиент,толстый клиент. ");
#КонецЕсли