|
Загрузка из экзеля в 1с | ☑ | ||
---|---|---|---|---|
0
Сержант ВДВ Онегин
30.01.18
✎
09:22
|
Написал обработку, которая из экзеля считывает данные и загружает их в 1с, при этом создавая новую номенклатуру.
На копии базы, которая находится на локальном диске все нормально пашет. Но когда запускаю в базе, которая находится на сервере выходит такая ошибка: {ВнешняяОбработка.ПереносНоменклатуры.Форма.Форма.Форма(34)}: Ошибка при вызове конструктора (ComОбъект) Ex=Новый ComОбъект("Excel.Application"); , reason: -2147221005(0x800401F3): Invalid class string Код написан такой: Ex=Новый ComОбъект("Excel.Application"); Work = Ex.workbooks.Open(СокрЛП(ПутьКФайлу)); ЛистДанных = Work.Sheets(Лист); НачатьТранзакцию(); Если Номенклатура Тогда ВыполнитьЗаполнениеНоменклатуры(ЛистДанных); ЗафиксироватьТранзакцию(); Ex.Workbooks.Close(); КонецЕсли; |
|||
1
cw014
30.01.18
✎
09:24
|
Что то с классом не так. Или с доступом к нему от имени текущего юзера
|
|||
2
Сержант ВДВ Онегин
30.01.18
✎
09:25
|
(1) надо компу, на котром работает юзер открыть доступ на сервер?
|
|||
3
cw014
30.01.18
✎
09:25
|
(2) Это на сервере или на клиенте выполняется?
|
|||
4
Адинэснег
30.01.18
✎
09:26
|
щас выяснится, кто клиент запускается в терминале, на котором экселей нет
|
|||
5
Адинэснег
30.01.18
✎
09:26
|
(3)ВнешняяОбработка.ПереносНоменклатуры.Форма.Форма.Форма
угадай |
|||
6
Адинэснег
30.01.18
✎
09:27
|
хотя если УФ... тогда и &НаСервере может
|
|||
7
cw014
30.01.18
✎
09:27
|
(5) она и уф может быть такая
|
|||
8
Сержант ВДВ Онегин
30.01.18
✎
09:28
|
(3) на Сервере конечно же.
|
|||
9
Сержант ВДВ Онегин
30.01.18
✎
09:28
|
(4) Экзель есть и на сервере, и на компе пользователя
|
|||
10
cw014
30.01.18
✎
09:29
|
(9) Так, давай теперь подробности. Обычные или управляемые формы?
|
|||
11
Сержант ВДВ Онегин
30.01.18
✎
09:29
|
(10) управляемые
|
|||
12
Сержант ВДВ Онегин
30.01.18
✎
09:30
|
(10) все дело в том что на актуальной копии данной базы все работает как огурчик. Просто копия лежит на локальном компе.
|
|||
13
cw014
30.01.18
✎
09:30
|
(11) Так. Обработчик запускается в процедуре или функции с директивой &НаСервере или &НаКлиенте ?
|
|||
14
yavasya
30.01.18
✎
09:30
|
(11) просто у тебя пользователя платформы нет прав на эксель
|
|||
15
Бычье сердце
30.01.18
✎
09:30
|
(0) На сервере эксель переустановить/установить.
|
|||
16
perester
30.01.18
✎
09:31
|
на компьютере сервера работает?
Попробуйте закинуть файл в общую папку к которой есть доступ и у юзера и у сервера |
|||
17
Мимохожий Однако
30.01.18
✎
09:31
|
Сделай регистрацию СОМ на локальном компе
|
|||
18
yavasya
30.01.18
✎
09:32
|
||||
19
Сержант ВДВ Онегин
30.01.18
✎
09:32
|
(13) в процедуре на &НаСервере
|
|||
20
yavasya
30.01.18
✎
09:32
|
||||
21
yavasya
30.01.18
✎
09:33
|
(19) че совсем ? у тебя прав нет
|
|||
22
yavasya
30.01.18
✎
09:34
|
(19) замени на другой формат
|
|||
23
Сержант ВДВ Онегин
30.01.18
✎
09:35
|
(22) про какой формат идет речь?
|
|||
24
Сержант ВДВ Онегин
30.01.18
✎
09:35
|
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Файлы Excel(*.xls;*.xlsx)|*.xls; *.xlsx"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы; Для Каждого ИмяФайла Из МассивФайлов Цикл ПутьКфайлу=ИмяФайла; КонецЦикла; Иначе Предупреждение("Файл не выбран!"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВыполнитьНажатие(Команда) Загрузка(); КонецПроцедуры &НаСервере Процедура Загрузка() Экспорт Ex=Новый ComОбъект("Excel.Application"); Work = Ex.workbooks.Open(СокрЛП(ПутьКФайлу)); ЛистДанных = Work.Sheets(Лист); НачатьТранзакцию(); Если Номенклатура Тогда ВыполнитьЗаполнениеНоменклатуры(ЛистДанных); ЗафиксироватьТранзакцию(); Ex.Workbooks.Close(); КонецЕсли; КонецПроцедуры |
|||
25
cw014
30.01.18
✎
09:35
|
(19) Хорошо. База клиент-серверная? Если да, то агент сервера 1С предприятия локальный или где то еще находится?
|
|||
26
Barabashka
30.01.18
✎
09:36
|
(19) на сервере нет файла "ПутьФайла", он находится на клиентской машине. При запуске на файловой базе (на копии) - сервер и клиентская машина - это одно и то же. При запуске на сервере - ищет файл на сервере.
как вариант - вынести получение файла &НаКлиенте и передать уже полученный на сервер |
|||
27
cw014
30.01.18
✎
09:38
|
(26) У него валится на создании Com-объекта
|
|||
28
Сержант ВДВ Онегин
30.01.18
✎
09:38
|
(26) как это сделать?
|
|||
29
Сержант ВДВ Онегин
30.01.18
✎
09:38
|
(27) да вы точно подметили
|
|||
30
cw014
30.01.18
✎
09:39
|
(29) ответь на (25)
|
|||
31
Сержант ВДВ Онегин
30.01.18
✎
09:40
|
(25) не понял вопроса )база находится на сервере рабочая
|
|||
32
cw014
30.01.18
✎
09:41
|
Как 1С запускается? Через терминальное подключение? Или локально на машине?
|
|||
33
Сержант ВДВ Онегин
30.01.18
✎
09:42
|
(32) локально на машине
|
|||
34
cw014
30.01.18
✎
09:43
|
Так, он подключается к серверу какому то (можно посмотреть в строке подключения). На сервере точно эксель есть? То есть можете подключиться через RDP и запустить эксель от имени пользователя, под которым запущен агент сервера 1с?
|
|||
35
dezss
30.01.18
✎
09:43
|
(33) попробуй зайти на сервак под пользователем, под которым работает служба и запусти эксель.
|
|||
36
Barabashka
30.01.18
✎
09:43
|
(27) тьфу... но смысл тот же. На сервере 1С нет Excel. Выносить создание COM-объекта на клиента.
|
|||
37
Сержант ВДВ Онегин
30.01.18
✎
09:45
|
(34) на сервере точно есть экзель, сейчас попробую его запустить
|
|||
38
cw014
30.01.18
✎
09:45
|
(36) Может и есть, только агент установлен по умолчанию на usr1cv как там его, а у того нет прав на эксель
|
|||
39
Мимохожий Однако
30.01.18
✎
09:49
|
(38) Как определить от какого юзера запускается агент 1С, если написано "системная "
|
|||
40
cw014
30.01.18
✎
09:50
|
(39) системная? ХЗ. Давно не сталкивался, что бы пользователь был "системная"
|
|||
41
Сержант ВДВ Онегин
30.01.18
✎
09:51
|
(36) вынес на клиента. теперь такая ошибка выходит
{ВнешняяОбработка.ПереносНоменклатуры.Форма.Форма.Форма(41)}: Error calling context method (ВыполнитьЗаполнениеНоменклатуры) ВыполнитьЗаполнениеНоменклатуры(ЛистДанных); , reason: Data transfer between client and server error. Invalid value type. , reason: Error converting XDTO data: Property value record 'param': form: Item name: {http://v8.1c.ru/8.2/managed-application/modules}param , reason: XDTO type mapping on V8 type is missing: Missing view for type 'COMОбъект' |
|||
42
cw014
30.01.18
✎
09:53
|
(41) Нельзя передавать COMОбъект на сервер и на клиент. Открываешь, выбираешь, собираешь структуру, передаешь на сервер. Сервер создает и возвращает управление. Повторить, пока не станет хорошо
|
|||
43
Сержант ВДВ Онегин
30.01.18
✎
09:55
|
942) как это прописать в коде?
|
|||
44
Сержант ВДВ Онегин
30.01.18
✎
09:56
|
(42) защел на сервер через ремоут десктоп и открыл экзель. сработало
|
|||
45
cw014
30.01.18
✎
09:56
|
(44) Зайди в службы, найди агент сервера 1с предприятия, ткни правой кнопкой, открой свойства. Посмотри пользователя. Подумай
|
|||
46
Мимохожий Однако
30.01.18
✎
09:58
|
(40) Уточню. Кружочек Вход в систему- с системной учетной записью...Поэтому и вопрос. У меня есть схожая проблема,когда в клиентском режиме нормально читает Excel, а в регламентном задании - сбой.
|
|||
47
cw014
30.01.18
✎
09:58
|
(43)
&НаКлиенте СоздаемЕксель(); Для Сч = 1 По НашЕксель.СвойствоКоличествоСтрок Цикл СтруктураСтроки = Новый Структура; СтруктураСтроки.Вставить(КакойТоКлючПолученныйИзСтрокиЕкселя, КакоеТоЗначениеИзСтрокиЕкселя); СоздатьНаСервере(СтруктураСтроки); КонецЦикла; &НаСервере Процедура СоздатьНаСервере(СтруктураСтроки) СоздатьНоменклатуруПоДаннымСтруктуры(); КонецПроцедуры |
|||
48
cw014
30.01.18
✎
09:59
|
(46) Ну вот тогда снимай и указывай пользователя принудительно. Того, кто 100% имеет доступ к таким вещам
|
|||
49
Сержант ВДВ Онегин
30.01.18
✎
10:02
|
(47) а куда девать создание нового ком обьекта?
|
|||
50
cw014
30.01.18
✎
10:02
|
(49) Это тебе алгоритм, а не готовый код ;)
|
|||
51
cw014
30.01.18
✎
10:02
|
(49) Дальше включай мозги
|
|||
52
Мимохожий Однако
30.01.18
✎
10:02
|
(48) При этом надо убедиться, что у этого пользователя есть права на запуск агента 1С и взаимодействия с SQL. Так?
|
|||
53
cw014
30.01.18
✎
10:03
|
(52) Ну как бы да
|
|||
54
Barabashka
30.01.18
✎
10:07
|
(49) А вообще есть возможность узнать у админа, установлен ли Excel на машине, где крутится сервер 1С?
|
|||
55
Сержант ВДВ Онегин
30.01.18
✎
10:10
|
(54) да там есть 1с. установлен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |