Имя: Пароль:
1C
1С v8
Запуск внешней обработки для загрузки данных
0 OleskaG
 
06.11.15
16:16
Добрый день!
Есть CRM 1С 8.3 sql-серверная.
В нее обработкой загружаются данные из 1С 7.7 (самописная).
Когда CRM была файловой все работало нормально, без проблем. Поставили сервер, и все стало. При нажатии кнопки ЗагрузитьНоменклатуру запускается процедура ЗагрузитьНоменклатуру(Команда) и все, дальше никаких движений, 1С-ка виснет окончательно. Что делать?

Спасибо.

Сама обработка

&НаСервере
Процедура ЗагрузитьНоменклатуруНаСервере() Экспорт
    
    глСоединение = Неопределено;
    Если глСоединение = Неопределено Тогда
        
        ВерсияПлатформы = "V77";
        Путь = "D:\1C\DB77";
        Пользователь = "Системный";
        Пароль = "123";
        ВыборТипаПодключения = 1;
        Попытка
            ОбъектПодключения = ВерсияПлатформы +".Application";
            vConnector = Новый COMОбъект(ОбъектПодключения);
            СтрокаСоединения = "/D"""+СокрЛП(Путь)+"""";
            init = vConnector.Initialize(vConnector.RMTrade,СтрокаСоединения,"NO_SPLASH_SHOW");
            Если init Тогда
                Сообщить("БАЗА ОТКРЫТА УСПЕШНО!");
            Иначе
                Сообщить("Ошибка открытия информационной базы!");
            Конецесли;
            глСоединение = vConnector;
        Исключение
            СтрокаСообщенияОбОшибке = "При попытке соедиения с COM-сервером произошла следующая ошибка:" + Символы.ПС
            + ОписаниеОшибки();
            #Если Клиент Тогда
                Сообщить(СтрокаСообщенияОбОшибке, СтатусСообщения.Важное);
                Состояние("Соединение установить не удалось");
                Состояние();
            #КонецЕсли
            глСоединение = Неопределено;                    
            
        КонецПопытки;
        
    КонецЕсли;    
    
    ВыборкаЭлементов = глСоединение.CreateObject("Справочник.Продукция");
    // текст выборки...
    
    Сообщить("Загружено новых - " + СокрЛП(Загружено));

КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьНоменклатуру(Команда)
    ЗагрузитьНоменклатуруНаСервере();
КонецПроцедуры
1 mxs089
 
06.11.15
16:17
путь относительно сервера
2 mxs089
 
06.11.15
16:17
+ семерка на сервере должна быть установлена
3 MadJhey
 
06.11.15
16:19
инициализация 7.7 не проходит
4 stix2010
 
06.11.15
16:19
путь на сервере отличается от клиентского + права для пользователя от которого запущен сервер + 7.7
5 OleskaG
 
06.11.15
16:20
Путь серверный и 7-ка на сервере стоит.
Дело в том, что выполнение даже не доходит процедуры ЗагрузкаНоменклатурыНаСервере.
6 stix2010
 
06.11.15
16:20
+ еще 7  выкидывает окно для регистрации базы
7 OleskaG
 
06.11.15
16:23
(6) Это да, я специально из "СтрокаСоединения = "/D"""+СокрЛП(Путь)+"""";" убрала пользователя и пароль, чтобы увидеть запрашивает ли базу 7-ки.
И она ее не запрашивает :(
8 mxs089
 
06.11.15
16:23
потому что на сервере
9 stix2010
 
06.11.15
16:24
а где это было видно? НаСервере?
10 VikingKosmo
 
06.11.15
16:24
(7) Что ты на сервере собираешься увидеть то?
11 MadJhey
 
06.11.15
16:24
Сообщить переделать на запись в журнал регистрации.
12 VikingKosmo
 
06.11.15
16:25
(11) или на СообщениеПользователю
13 Мимохожий Однако
 
06.11.15
16:26
Отладчик пыталась включать?
14 OleskaG
 
06.11.15
16:26
(11) А что это даст?
У меня выполнение до команды "Сообщить" не доходит.
15 OleskaG
 
06.11.15
16:26
(13) Да, конечно, им собственно и увидела что движений нет вообще.
16 MadJhey
 
06.11.15
16:27
(14) откуда это известно. Отладчик? База в режиме debug?
17 Мимохожий Однако
 
06.11.15
16:28
До какой строчки добралась отладчиком?
18 MadJhey
 
06.11.15
16:29
(17) да у нее наверно отладчик на сервер не заходит.
19 OleskaG
 
06.11.15
16:30
(17) Вот до этой ЗагрузитьНоменклатуруНаСервере()

&НаКлиенте
Процедура ЗагрузитьНоменклатуру(Команда)
    ЗагрузитьНоменклатуруНаСервере();
КонецПроцедуры
20 VikingKosmo
 
06.11.15
16:31
(19) не мучай публику в пятницу то, включи уже отладку на сервере
21 OleskaG
 
06.11.15
16:32
(20) Я бы рада не мучить, только что ж мне одной мучиться :).
Скажите, что я делаю не так и как правильно, пожалуйста.
22 VikingKosmo
 
06.11.15
16:32
(21) ты не включила серверную отладку
23 OleskaG
 
06.11.15
16:33
(22) а как ее включить?
24 VikingKosmo
 
06.11.15
16:34
(23) гугль не предлагать?
25 olegves
 
06.11.15
16:34
(0) сервер и клиент - разные компьютеры, отсюда и проблема
26 stix2010
 
06.11.15
16:35
ха ха ха
27 mxs089
 
06.11.15
16:35
попробуй запустить 1с и пропиши в командной строке format c:
28 stix2010
 
06.11.15
16:36
(21) замуж, срочно замуж :)
29 OleskaG
 
06.11.15
16:37
(28) уже...
30 Мимохожий Однако
 
06.11.15
16:39
Не помогло...Тогда только гугла
31 stix2010
 
06.11.15
16:39
включить параметр -debug в строке запуска сервиса 1с,

на компьютере с сервером 1с запустить 7.7 базу под учеткой пользователя под которым запускается сервер 1С.
32 MadJhey
 
06.11.15
16:43
На сервере. Запустить regedit. Найти строку вроде -
"C:\Program Files (x86)\1cv8\8.3.4.437\bin\ragent.exe" -debug -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files (x86)\1cv8\srvinfo"

в строке -debug уже добавлен.


Перезапустить службу агента 1с.
Не забыть выгнать пользователей.
33 OleskaG
 
06.11.15
16:47
(31) "включить параметр -debug в строке запуска сервиса 1с"
это сейчас админ сделает, погуглила, не все потеряно...
Заработает режим отладки.
(25) они и раньше были разные компы, когда была файловая, но работало же...
34 olegves
 
06.11.15
16:53
когда была файловая, но работало же(33) файловая уже подразумевает отсутствие сервера - вся работа 1С на клиенте
35 olegves
 
06.11.15
16:57
Сервер 1С на своем диске D не находит базы 7.7:
Путь = "D:\1C\DB77";
36 stix2010
 
06.11.15
17:01
(33) раньше у тебя в файловом на компьютере пользователя работала "ЗагрузитьНоменклатуруНаСервере()", а теперь на сервере и контекст там теперь серверный.
37 OleskaG
 
06.11.15
17:02
(35) Но она там есть.
38 stix2010
 
06.11.15
17:08
запуск 7 на сервере проверен?
39 OleskaG
 
06.11.15
17:09
(38) Да, она там запускается.
40 Мимохожий Однако
 
06.11.15
17:09
Давай же скорее включи отладчик
41 olegves
 
06.11.15
17:11
(37) она есть на клиенте, на котором стартует внешняя обработка, а сервер 1С - это другой компьютер.
Позови, наконец, админа
42 stix2010
 
06.11.15
17:16
Кстати толстый клиент или УФ?
43 stix2010
 
06.11.15
17:23
скорее всего все настроено нормально,
читаем последний пост
http://forums.kuban.ru/f1040/podklyuchenie_iz_8_2_k_7_7_po_ole-3397614.html,
и  курим параметры командной строки 8 на запуск в ТК.
44 stix2010
 
06.11.15
17:32
а не, не то, не параметры командной строки, я думал это автоматом обработка при старте загружает, а тут просто

соединение в управляемом приложении инициализироваться должно &НаКлиенте
45 OleskaG
 
09.11.15
09:17
Доброе утро!

Апну темку.
Отладчик запустила, дошла до строки
vConnector = Новый COMОбъект(ОбъектПодключения);
46 Aleksandr N
 
09.11.15
09:38
(45) Скорее всего путь к базе неправильно указан.
47 OleskaG
 
09.11.15
09:39
Изменила на
ВерсияПлатформы = "V77s";
и дошла до
init = vConnector.Initialize(vConnector.RMTrade,СтрокаСоединения,"NO_SPLASH_SHOW");
а дальше висит.
48 MaxS
 
09.11.15
09:44
Повторю совет (31)
При первом запуске 7-ки на предлагает записать базу в список баз. Вот поэтому и висит.
49 OleskaG
 
09.11.15
10:09
(48) передала админу, так и сделал, все равно виснет.
50 MaxS
 
09.11.15
10:33
(47) убрать "NO_SPLASH_SHOW" и попробовать. Может быть будет видно в чем дело
51 OleskaG
 
09.11.15
10:41
Переделала
Поставила подключение с базе 7-ки на клиенте, а на сервер передаю уже переменную глСоединение.

Выдает следующее
{Форма.ФормаОсновная.Форма(141)}: Ошибка при вызове метода контекста (ЗагрузитьНоменклатуруНаСервере)
    ЗагрузитьНоменклатуруНаСервере(глСоединение);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'COMОбъект'
52 OleskaG
 
09.11.15
11:37
Разобралась, ком нельзя передавать. Создала на форме таблицузначений, наклиенте сделала в нее выборку, и передаю насервер.
53 Aleksandr N
 
10.11.15
23:31
(52) Это можно было сделать без создания реквизита формы, а, например, через массив структур. А потом передавать его на сервер.
54 Franchiser
 
гуру
10.11.15
23:51
Виснет от того что база на сервере не зарегистрирована в списке баз.
Ее нужно там зареггить.
Есть еще одна проблема: если у вас сервер стартует не под system, то в 1 момент времени будет возможно только 1 ком-подключение к 7.7. Из за этих причин пришлось переписать подключение на клиента, а затем на прямой запрос к скулю.
55 trooba
 
11.11.15
01:51
(52) Конечно нельзя. Строка, число, текст. Можно в строку превратить данные, а на входе из строи в данные преобразовать. Смекаешь?
56 trooba
 
11.11.15
01:56
(52) Com Это твой объект там. Ты можешь к нему обратиться, как к объекту, получить данные на той стороне, поиграть с ними на той стороне. Передавать на эту сторону не так все просто. Через код, строка, наименование.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.