Запуск процедуры из 1С в Delphi

1. arttr1969 31.10.17 16:41 Сейчас в теме
Здравствуйте!
Столкнулся с проблемой. Перенесли 1С: Больничная аптека на SQL сервер и перестала работать процедура, вызываемая через COM соединение. Вылетает ошибка: Method <имя процедуры> not supported by automation object. Соединение через v83.COMConnector. Может кто-нибудь сталкивался с такой проблемой?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. japopov 68 31.10.17 16:58 Сейчас в теме
(1) Вы перенесли базу на другой компьютер. Компьютер, исполняющий серверный код 1С, сменился.
Проверьте:
а) Какая операционная система на сервере? OLE существует только в Windows.
б) На сервере как установлена платформа? Работает ли там OLE с тем объектом?
в) Как написана процедура, она вообще на сервере будет работать?
5. arttr1969 31.10.17 20:02 Сейчас в теме
(2)а) Какая операционная система на сервере? Win2008
б) На сервере как установлена платформа? 1С Предприятие 8.3 (бухгалтерия работает)
Работает ли там OLE с тем объектом? Подскажите, пожалуйста, как проверить? Я новичок в этом деле!
3. YanTsys 12 31.10.17 19:43 Сейчас в теме
"Где карта Билли? Нам нужна карта!"

Код?
6. arttr1969 01.11.17 12:58 Сейчас в теме
(3)Вот код

&НаСервере
Процедура CreateDocToServer(Знач Ответственный, Знач Подразделение, Знач КодИзРеестра, Знач Колво)  Экспорт
	
   КодОстатка = Новый Запрос;
   КодОстатка.Текст = "ВЫБРАТЬ Список.ЭлементКАТ.Код КАК КодИзРеестра,
                       | Список.Код, Список.Наименование,
					   | ОстаткиТоваров.Количество
                       | ИЗ Справочник.Номенклатура КАК Список
					   | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ОстаткиТоваров
					   | ПО ОстаткиТоваров.Номенклатура = Список.Ссылка
					   | ГДЕ Список.ЭлементКАТ.Код =&КодИзРеестра";
   КодОстатка.УстановитьПараметр("КодИзРеестра",КодИзРеестра);
   КодОстатка = КодОстатка.Выполнить();
   РезультатЗапроса = КодОстатка.Выбрать();
   Пока РезультатЗапроса.Следующий() Цикл
	    КодИзНоменклатуры = РезультатЗапроса.Код;
	КонецЦикла;
   КП = "000000000"+Подразделение;		
   КодПодразделения = Новый Запрос;
   КодПодразделения.Текст = "ВЫБРАТЬ Код, Наименование
                             |ИЗ Справочник.ПодразделенияОрганизаций
							 |ГДЕ Код = &КП";
   КодПодразделения.УстановитьПараметр("КП",КП);
   КодПодразделения = КодПодразделения.Выполнить();
   РезультатЗапроса = КодПодразделения.Выбрать();
   
   Пока РезультатЗапроса.Следующий() Цикл
	    Подразделение = РезультатЗапроса.Наименование;
	КонецЦикла;						 
   
   Поступление = Документы.ВнутреннееПотреблениеТоваров.СоздатьДокумент();
   Поступление.Дата = ТекущаяДата();
   Поступление.Организация = Справочники.Организации.НайтиПоНаименованию("ФГБУ ДОС Пионерск Минздрава России");
   Поступление.ПодразделениеОрганизации =  Подразделение;
   Поступление.СтатьяЗатрат = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Расходы");
   Поступление.Склад = Справочники.Склады.НайтиПоНаименованию("Склад медикаментов");
   Поступление.Ответственный = Справочники.Пользователи.НайтиПоНаименованию(Ответственный);
      
   НоваяСтрока = Поступление.Товары.Добавить();
   НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодИзНоменклатуры);
   НоваяСтрока.КоличествоВЕдиницахИзмерения = CalcOst(КодИзРеестра,Колво);
   
   Поступление.Записать(РежимЗаписиДокумента.Запись);	
КонецПроцедуры	


&НаСервере
Функция CalcOst(Знач КодИзРеестра,Знач КолВо) Экспорт 
 КоличествоОстатка = Новый Запрос;
 КоличествоОстатка.Текст = "ВЫБРАТЬ 
                       | Список.ЭлементКАТ.Код КАК КодИзРеестра,
                       | Список.Код,
                       | Список.Наименование,
                       | Список.ЭлементКАТ.Коэффициент01,
                       | Список.ЭлементКАТ.МассаУпаковки1,
                       | Список.ЭлементКАТ.ОбъемУпаковки1,
                       | Список.ЭлементКАТ.Коэффициент12,
					   | Список.ЭлементКАТ.Коэффициент23,
                       | ОстаткиТоваров.Количество КАК Кол_во
                       | ИЗ Справочник.Номенклатура КАК Список
					   | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ОстаткиТоваров
					   | ПО ОстаткиТоваров.Номенклатура = Список.Ссылка
					   | ГДЕ Список.ЭлементКАТ.Код =&КодИзРеестра";
					   
   КоличествоОстатка.УстановитьПараметр("КодИзРеестра",КодИзРеестра);
   КоличествоОстатка = КоличествоОстатка.Выполнить();
   РезультатЗапроса = КоличествоОстатка.Выбрать();
     
   Пока РезультатЗапроса.Следующий() Цикл
	   
	    Коэффициент01  = РезультатЗапроса.ЭлементКАТКоэффициент01;
	    МассаУпаковки1 = РезультатЗапроса.ЭлементКАТМассаУпаковки1;
	    ОбъемУпаковки1 = РезультатЗапроса.ЭлементКАТОбъемУпаковки1;
		Коэффициент12  = РезультатЗапроса.ЭлементКАТКоэффициент12;
		Коэффициент23  = РезультатЗапроса.ЭлементКАТКоэффициент23;   	
   КонецЦикла;
	
	Если Коэффициент01 >0  Тогда
		   Res = КолВо/(Коэффициент01*Коэффициент12);
 	КонецЕсли;
	Если МассаУпаковки1 >0 Тогда
		   Res = КолВо/(МассаУпаковки1*Коэффициент12);
	КонецЕсли;
	Если ОбъемУпаковки1 >0 Тогда
	   Если Коэффициент23 > 0 Тогда
	      Res = КолВо/(ОбъемУпаковки1*Коэффициент12*Коэффициент23);
	   Иначе
	      Res = КолВо/(ОбъемУпаковки1*Коэффициент12);
	   КонецЕсли;
	КонецЕсли;
	Если Коэффициент12 = null Тогда
	   Res = КолВо/Коэффициент01;
	КонецЕсли; 
   
   Возврат Res	
КонецФункции
Показать
7. olegmedvedev 65 01.11.17 13:11 Сейчас в теме
(6)отладчиком смотерли на каком месте падает? в этой процедуре вызова COM объекта нет.
8. arttr1969 01.11.17 13:56 Сейчас в теме
(7)Запуск идет из Delphi

Meta_ole:=s1Connect.spLib_OLE.CreateDocToServer(Trim(ls1s_user),pdr,Trim(sKod),StrToFloat(sKol));

А вот непосредственно сам коннект
ls1s_connector:='v83.COMConnector';
COMStr:='Srvr='+ls1s_srv+';Ref='+ls1s_db+';Usr='+ls1s_user+';Pwd='+ls1s_pass;
s1Connect:=UnAssigned;
s1Connect:=ConnectTo1C8_COM(ls1s_connector, COMStr);
9. japopov 68 01.11.17 15:23 Сейчас в теме
(8)
Вот тут попробуйте, сначала стандартное решение, потом и то, что автор там накопал...
https://infostart.ru/public/400951/
10. arttr1969 02.11.17 13:34 Сейчас в теме
(9) Я ничего не понимаю! Стандартные процедуры и функции отрабатываются как часы, но стоит что-то добавить - не видит!
4. arttr1969 31.10.17 20:01 Сейчас в теме
а) Какая операционная система на сервере? Win2008
б) На сервере как установлена платформа? 1С Предприятие 8.3 (бухгалтерия работает)
Работает ли там OLE с тем объектом? Подскажите, пожалуйста, как проверить? Я новичок в этом деле!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот