Имя: Пароль:
1C
1С v8
Новый COMObject("v77.Application") - на сервере
,
0 dimm7310
 
25.04.22
11:40
Добрый день.

Возможно ли создание Новый COMObject("v77.Application") - на сервере (для использования в обработке)?  На клиенте - работает, но нужно на сервере )
Сервер WIN 2012(64).

Если возможно, то что для этого нужно сделать? (что бы объяснить админу)
Сейчас при попытке создания ошибка "Интерфейс не поддерживается "
1 H A D G E H O G s
 
25.04.22
11:41
(0) Можно. Не поддерживается, потому что на сервере не установлена 7.7, либо не зарегистрирована.
2 Злопчинский
 
25.04.22
11:42
(0) как в (1) написали - 77 копированием на сервер перекинута
3 dimm7310
 
25.04.22
11:48
(1) на сервере каталог есть.  Что нудно сделать , что бы зарегистрировать?
4 MWWRuza
 
гуру
25.04.22
11:51
(3) Ну, для начала, попробуйте один раз "от имени администратора", с полными правами запустить.
Если не поможет, тогда устанавливать с дистрибутива(есть сборки, не официальные, которые под 64 битами ставятся).
5 tgu82
 
25.04.22
12:01
(4) Да, я ставил до сих пор с аппаратным ключом работает система
6 dimm7310
 
25.04.22
12:08
(4) Руками запускается ("от имени администратора") . Но в обработке (на сервере) -  та же ошибка.
Есть возможность дать ссылку на такой дистриб ?  Можно на почту [email protected]
7 dimm7310
 
25.04.22
14:19
по окночании установки
https://ibb.co/CJ88BV6

при попытке запуска 1С 7.7
https://ibb.co/QkqxLj2

и при попытке подключения из 1С 8.3 - "Класс не зарегистрирован"

что можно сделать?
8 nodrama
 
25.04.22
14:20
regsvr32
9 H A D G E H O G s
 
25.04.22
14:21
(7) Позвать специалиста
10 dimm7310
 
27.04.22
10:07
Возможно ли подключение и выполнение запроса Из 1С 8.3(управляемые формы) к 1С 7.7 - прямыми запросами 1С++ без (Новый COMObject("v77.Application"))?

Когда то- писал прямые запросы для 1С 7.7(SQL) - но все внутри одной базы.

или для них тоже нужно использовать (Новый COMObject("v77.Application") ?
11 Kigo_Kigo
 
27.04.22
10:13
А всего то надо зайти на сервер под пользователем от которого запускается сервер 1с обычно это USR1CV8, и от него зарегистрировать компоненту
12 VoditelKobyly
 
27.04.22
10:15
(10) Если семерка на SQL тогда со стороны восьмерке просто цепляйся к SQL и делай любые запросы. 1с++ и не понадобится (если только не будешь отлаживать запросы со стороны семерки)
13 dimm7310
 
27.04.22
10:16
(11) Я удаленно работаю, а там такой админ - что как будто нет его.
14 dimm7310
 
27.04.22
10:16
(12) да 7ка на SQL2000.
Можно пример как подцепиться?
15 VoditelKobyly
 
27.04.22
10:18
В поисковике строку подключения к SQL поищи, под рукой примера нет
16 VoditelKobyly
 
27.04.22
10:18
Задача постоянная или разовая?
17 lEvGl
 
гуру
27.04.22
10:21
(14) Connection = Новый COMОбъект("ADODB.Connection");
    Connection.CommandTimeout = 180;
    стрПодключения = "Provider = SQLOLEDB; Data Source = server; Initial Catalog = cataloh;User ID = user; Password = password";
    Connection.ConnectionString = стрПодключения;
    Connection.Open();
    RS = Новый COMОбъект("ADODB.Recordset");
    
    RS.Open("Select DH2614.IDDoc as IDDoc, DH2614.SP2600 as IDPod, DH2614.SP6814 as IDYch,
    |Convert(VarChar, DATEADD(MilliSecond, dbo.ConvSyst10(SUBSTRING(_1SJourn.DATE_TIME_IDDOC,9,6), 36)/10, LEFT(_1SJourn.DATE_TIME_IDDOC,8)), 20) As Date,
    |SC1874.SP5636 as Nomenklatura, DT2614.SP2609 as Qty, DT2614.SP6847 as StringType
    |FROM DH2614 left join DT2614 on DH2614.IDDoc = DT2614.IDDOC
    |left join SC1874 on DT2614.SP2918 = SC1874.ID
    |Left join _1SJourn On DH2614.IDDoc = _1SJourn.IDDOC
    |Where Convert(DateTime, Convert(VarChar, DATEADD(MilliSecond, dbo.ConvSyst10(SUBSTRING(_1SJourn.DATE_TIME_IDDOC,9,6), 36)/10, LEFT(_1SJourn.DATE_TIME_IDDOC,8)), 20), 120)
    |> Convert(DateTime, '" + Формат(ТекущаяДата() - 86400, "ДФ=гггг-ММ-дд")+ " " + "00:00:00', 120)", Connection, 3);
    
    Если RS.recordCount() > 0 Тогда
18 dimm7310
 
27.04.22
10:23
(16) постоянная
19 VoditelKobyly
 
27.04.22
10:25
(18) Тогда лучше напрямую из SQL базы запросами данные бери без v77.Application, гораздо быстрее будет
20 dimm7310
 
27.04.22
10:27
(17)  Спасибо

А можно этот запрос на 1С++ выполнять что бы не SC1874.SP5636  
а что то привычное типа:
    ТекстЗапроса = "
        |SELECT Номенклатура.ID [Номенклатура $Справочник.Номенклатура]
        |    , $Номенклатура.АртикулПоставщика Артикул
        |    , Номенклатура.DESCR НаименованиеТовара
        |    , $Номенклатура.МинОстаток МинОстаток
        |    , ОстаткиТМЦОстатки.КоличествоОстаток КонОстаток
        |    , $Номенклатура.ОсновнаяЕдиница [ОсновнаяЕдиница $Справочник.Единицы]
        |    , $Номенклатура.БазоваяЕдиница [БазоваяЕдиница $Справочник.Единицы]
        |   , Номенклатура.PARENTID [Родитель $Справочник.Номенклатура]
        |   , Номенклатура.CODE КодТовара
        |FROM $Справочник.Номенклатура AS Номенклатура
        |    LEFT OUTER JOIN $РегистрОстатки.ОстаткиТМЦ(:КонДата ~,
        |        ,,
        |        Номенклатура,) AS ОстаткиТМЦОстатки ON Номенклатура.ID = ОстаткиТМЦОстатки.Номенклатура
        |WHERE (Номенклатура.ID IN (SELECT Val FROM #ГруппаМ))
        |ORDER BY Номенклатура.PARENTID
        |    , Номенклатура.DESCR
        |";
21 VoditelKobyly
 
27.04.22
10:31
Вот нашел, как у (17):
               СоединениеТекущее = Новый Структура;
               СоединениеТекущее.Вставить("Соединение",        Новый COMОбъект("ADODB.Connection"));
               СоединениеТекущее.Вставить("команда",                Новый COMОбъект("ADODB.Command"));
               СоединениеТекущее.Вставить("НаборЗаписей",        Новый COMОбъект("ADODB.Recordset"));
               СоединениеТекущее.Вставить("ЗаписьСтрок",        Новый COMОбъект("ADODB.Recordset"));        
               СоединениеТекущее.соединение.CommandTimeout = 600;
               СоединениеТекущее.соединение.ConnectionString = "Provider=sqloledb;Server=192.168.1.23;Database=ИмяБазы;UID=sa;PWD=100500;" ;
22 VoditelKobyly
 
27.04.22
10:34
Ну и далее можешь кидать запросы:
        ТекстЗапроса = "
        |Select
        |   Номенклатура.ID as ИдентификаторНоменклатуры,
        |   Номенклатура.Descr as НаименованиеНоменклатуры,
        |   Номенклатура.ParentID as ИдентификаторРодителя,
        |   Номенклатура.IsFolder as ЭтоГруппа,
        |   Номенклатура.IsMark as ПометкаУдаления,
        |   Единицы.Descr as НаименованиеЕдиницы,
        |   Единицы.sp6990 as КодОКЕИ,
        |   НДС.sp151 as СтавкаНДС
        |From
        |   sc152 as Номенклатура
        |left join
        |   sc171 as Единицы on Номенклатура.sp159 = Единицы.ID
        |left join
        |   sc149 as НДС on НДС.ID = (
        |select top 1
        |left(c163_vv.value, 9)
        |from
        |_1sconst as c163_vv (nolock)
        |where
        |c163_vv.id = 163 and
        |c163_vv.objid = Номенклатура.ID and
        |(c163_vv.date <= '21000101')
        |order by c163_vv.date desc, c163_vv.time desc, c163_vv.docid desc, c163_vv.row_id desc
        |)
        |where
        |   Номенклатура.ID in (" + ИдентификаторыСтрокой + ")";
        
        РезультатЗапроса = СКЛСоединение.Соединение.Execute(ТекстЗапроса);
        ТаблицаРезультат = ПолучитьТаблицуПоРезультатуЗапроса(РезультатЗапроса);
23 VoditelKobyly
 
27.04.22
10:36
Со стороны семерки пиши обработку для отладки текстов запросов.
Потом у 1с++ есть метод, что-то типа ОбрМетаSQL (точно не помню), прогоняешь через него свой текст запроса и получаешь результат в чистом SQL виде.
24 VoditelKobyly
 
27.04.22
10:40
(21)+ Забыл последнюю строку:
                       СоединениеТекущее.Соединение.Open(СоединениеТекущее.Соединение.ConnectionString);
25 ADirks
 
27.04.22
10:41
(20) см. документацию

ODBCDataBase :: ПрисоединитьИБ / AttachIB

Синтаксис: ПрисоединитьИБ(КаталогИБ, [ИмяПользователя], [Пароль], [СтрокаСоединения])

Параметры:

КаталогИБ - тип: Строка. Путь к каталогу информационной базы. Должен заканчиваться "\".

ИмяПользователя - тип: Строка. Имя пользователя информационной базы как оно задано в конфигураторе. Значение по умолчанию - имя текущего пользователя.

Пароль - тип: Строка. Пароль на имя пользователя информационной базы как он задан в конфигураторе. Значение по умолчанию - пароль текущего пользователя.


СтрокаСоединения - тип: Строка. Строка соединения по спецификации ODBC. Значения по умолчанию:
для ИБ sql-формата: "Driver={SQL Server};Server=%1;Database=%2;Uid=%3;Pwd=%4;",где %1 - имя sql-сервера, %2 - имя базы данных, %3 - имя пользователя БД, %4 - пароль, взятые из параметров, сохраненных в каталоге ИБ.
для ИБ dbf-формата: "DRIVER={Microsoft Visual FoxPro Driver};Deleted=No;Null=Yes;Collate=RUSSIAN;Exclusive=No;SourceType=DBF;SourceDB=%1", где %1 - переданный КаталогИБ;
Описание: позволяет загрузить метаданные из указанного каталога ИБ и соединиться с источником данных по строке соединения. В дальнейшем, после установки соединения для объекта ODBCRecordset методом УстБД, при выполнении запросов, парсер будет разрешать метаимена по подключенным метаданным.

Примечание: имя пользователя и пароль проходят проверку только при подключении к ИБ sql-формата. (При подключении к ИБ dbf-формата значения не имеют.)

Пример:

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ("\\server\КаталогИБ\");
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);
Результат=рс.ВыполнитьИнструкцию(ТекстЗапроса);
26 dimm7310
 
27.04.22
10:43
(22) мне запросом нужно остатки на дату по номенклатуре получать ($РегистрОстатки.ОстаткиТМЦ)
27 dimm7310
 
27.04.22
10:46
(25) спасибо нашел https://forum.infostart.ru/forum9/topic138399/
буду пробовать
28 trad
 
27.04.22
11:30
(25) (27) это только 77 -> 77
8.x -> 77 такое не прокатит
Независимо от того, куда вы едете — это в гору и против ветра!