Имя: Пароль:
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 Это твой объект там. Ты можешь к нему обратиться, как к объекту, получить данные на той стороне, поиграть с ними на той стороне. Передавать на эту сторону не так все просто. Через код, строка, наименование.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn