Имя: Пароль:
1C
1С v8
Организация Авто-обмена в РИБ
,
0 Gsoom2010
 
13.11.11
17:18
Добрый день!

Подскажите как организовать Автоматический обмен по расписанию в РИБ на самописной конфигурации? Может быть у кого-то есть готовые решения? В интернетах нашёл только описания такого обмена на стандартных конфигурациях.
1 kosts
 
13.11.11
17:24
(0) Посмотри конфу "стандартные подсистемы", может быть там есть что то про обмен.
Даже если конфа своя, посмотри как сделано в типовой (ту которую вы покупали изначально).

И в инете куча описаний обмена.
2 kosts
 
13.11.11
17:27
(0) Способ автоматического запуска будет зависеть от того на сервере у тебя база или файловая. На сервере можно использовать фоновые задания. В файловом "назначенные задания".
3 Gsoom2010
 
13.11.11
17:33
Файловая база, 1С 8.2.
Сейчас я тупа создал план обмена и указал что он РИБ.
4 Gsoom2010
 
13.11.11
17:35
Выгружать/Загружать файлики вручную - всё ок.
Хочу чтобы автоматом всё делалось по расписанию, не совсем понимаю что должно вызывать Регламентное задание и как повесить обмен хотябы на ftp. Да хоть на ДропБокс...
5 kosts
 
13.11.11
17:38
В процедуре в начале работы системы анализируй входящие параметры и если специальный установлен (свой какой то), то автоматически запускай процедуру обмена.
6 Gsoom2010
 
13.11.11
17:51
Мне бы обмениваться данными каждые 3 часа, да и пустить это всё через ftp. Может набросаете схему работы такого обмена? Я читал что надо создавать пользователя который будет инициировать запуск регламентных заданий по обмену данными, это так?
7 Gsoom2010
 
13.11.11
17:52
Вся проблема в том что везде описано как настроить обмен в стандартных конфигурациях, но не понять как сделать это самому с нуля...
8 kosts
 
13.11.11
17:56
В типовых все универсально (и сложно) и повторять нет смысла.
По простому. Тебе только нужна процедура обмена и механизм запуска.
9 Gsoom2010
 
13.11.11
17:59
У меня сейчас есть только план обмена (и тот стандартный для РИБ).
Следующими действиями будет создать регламентное задание и написать процедуру запуска и выполнения этого плана?
Я правда совсем не представляю как обращаться к плану обмена из процедуры.
10 kosts
 
13.11.11
18:01
Для запуска используй обычные "Назначенные задания в виндовсе".
Задание которое запускает батник  с запуском Предприятия с установленным параметром

типа
"c:\Program Files\1cv82\8.2.13.205\bin\1cv8.exe" enterprise /pпароль /uпользователь /конфа /CВыполнитьОбмен

Подробно где нибудь посмотри.

В

Процедура ПриНачалеРаботыСистемы()

   Если ВРЕГ(переданный параметр) = ВРЕГ("ВыполнитьОбмен") Тогда
       МодульОбмена.ВыполнитьОбмен();
       ЗавершитьРаботуСистемы();
   КонецЕсли;


Как то так
11 Gsoom2010
 
13.11.11
18:04
Благодарю, часть пути к цели уже стала ясной. Осталось понять вторую часть как написать МодульОбмена.ВыполнитьОбмен();
12 kosts
 
13.11.11
18:04
В плане обмена отметь какие объекты должны мигрировать и с автоматической регистрацией или нет.

Сам обмен тут не буду описывать, подробно все не помню, да и инет полон описаний (на мисте тоже где то есть).
13 kosts
 
13.11.11
18:05
Если регистрация не автоматическая, то нужно позаботиться о том что бы зарегистрировать объекты после их изменения.
14 Gsoom2010
 
13.11.11
18:05
Сам план обмена у меня настроен, по крайней мере в ручном режиме всё работает. (Регистрация объектов автоматическая)
Не понятно как из процедуры обращаться к этому плану чтобы выполнить выгрузки и загрузки в/из узлов РИБ.
15 Gsoom2010
 
13.11.11
18:08
Попытаюсь найти как это происходит в Управление Торговлей. Если найду выложу, наверняка кому-то пригодится.
16 kosts
 
13.11.11
18:11
(14) Видимо нужно вызвать ту же процедуру начала обмена, которая вызывается интерактивно. Ваш Кэп. :-)

(15) Не надо.
17 Gsoom2010
 
13.11.11
18:40
Функция ВыполнитьОбмен() Экспорт
   
   ВыборкаУзлов = ПланыОбмена.ОсновнойПланОбмена.Выбрать();

   Пока ВыборкаУзлов.Следующий() Цикл

       // Произвести обмен данными со всеми узлами, кроме текущего (ЭтотУзел)
       Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Филиалы.ЭтотУзел() Тогда
           УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();

           // Получить сообщение
           УзелОбъект.ПрочитатьСообщениеСИзменениями();

           // Сформировать сообщение
           УзелОбъект.ЗаписатьСообщениеСИзменениями();

       КонецЕсли;
   
   КонецЦикла;
   
   
КонецФункции
18 Gsoom2010
 
13.11.11
18:40
Выходит что так надо делать, теперь бы понять где задаётся путь к записи файлов с измнениями. Чтобы указать ftp сервер...
19 kosts
 
13.11.11
18:43
Выгружай в файл как обычно. Потом копируй на FTP. В типовых тоже можно посмотреть. В середине можно файл сжать.
20 Gsoom2010
 
13.11.11
18:47
kosts - Спасибо!
21 kosts
 
13.11.11
18:51
В журнал пиши если обмен не выполнился. Или как то еще сигнализировать нужно. А то чревато ....
22 Gsoom2010
 
13.11.11
19:12
23 Gsoom2010
 
13.11.11
19:24
Тут такое дело, фактически у меня нет функций ПрочитатьСообщениеСИзменениями(); и ЗаписатьСообщениеСИзменениями(); т.к. План обмена создавался автоматически с галочкой РИБ. Нужно где-то брать эти функции (писать самому) или можно как-то обратиться к тем самым процедурам РИБ которые работают на автомате?
24 Gsoom2010
 
13.11.11
19:36
В Практическом пособии разработчика нашёл исходные тексты для выгрузки и загрузки. Попробую использовать их.
25 Gsoom2010
 
13.11.11
21:32
Чото нихера у меня не выходит... но о чудо http://subscribe.ru/archive/comp.soft.prog.magic1c/200408/14193355.html
26 DrShad
 
13.11.11
22:15
помогло?
27 Gsoom2010
 
13.11.11
22:29
Да вообще на 100%, у меня даже тело обмякло от удовольствия.
28 Aleksey
 
13.11.11
22:29
(25) Первоисточник http://mista.ru/v8/urbd.htm
29 Gsoom2010
 
13.11.11
22:31
Да, я видел. Спасибо огромное!
30 Gsoom2010
 
13.11.11
23:26
Раз уж на то пошло, может кто подскажет как обойти:

{ОбщийМодуль.рбРаспределеннаяБаза.Модуль(85)}: Ошибка при вызове метода контекста (Послать)
        Почта.Послать(ПочтовоеСообщение);
по причине:
Неизвестная ошибка (SMTP error code 503, 5.5.4 Error: send AUTH command first.)
31 Gsoom2010
 
13.11.11
23:27
yandex.ru использую для тестирования, в принципе могу сменить сервер...
32 Gsoom2010
 
13.11.11
23:47
Вопрос решается добавлением в функцию:

ПочтовыйПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
...
ПочтовоеСообщение.Отправитель = Константы.АдресПочтовогоЯщикаОбмена;
33 Gsoom2010
 
13.11.11
23:50
.Получить();
34 Gsoom2010
 
15.11.11
23:58
Господа, подскажите, как более грамотно и красиво сделать запуск авто-обмена:

1. Через *.bat файл запускать БД и выполнять процедуру обмена из ПриНачалеРаботыСистемы()
2. Как в статье (28) сделать это через ОбработчикОжидания повешенный на пользователя
3. Каким-то иным образом, возможно через регламентные задания?

База файловая. Конфигурация не стандартная.
35 kosts
 
16.11.11
09:03
(34) Варианты 3 и 4 неудобны, что предприятие должно быть постоянно запущено.
Это затрудняет сопровождение, нужно не забыть запустить предприятие. (Если это автоматизировать снова имеем бат файл).
При изменении в конфе выйти из него, а потом не забыть снова зайти.
В общем понятно.
Регламентные задания будут удобны только с сервером.
36 Alex_MA
 
16.11.11
10:19
(0)тебе поможет библиотека стандартных подсистем