Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

1C как ole automation сервер

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №1
 
01.09.2008 16:36

"нужно из внешней программы Delphi2006 обратиться к 1С7.7 Бухгалтерия (стандартная).<br>//строка соединения<br>...<br>constr:='/d '+inifile.ReadString('1c1','path','')+' /n '+inifile.ReadString('1c1','login','')+' /p '+ inifile.ReadString('1c1','password','');<br>//собственно соединеняемся<br>c1:=createoleobject ('v77s.application');<br>c1.initialize(c1.rmtrade,constr,'NO_SPLASH_SHOW');<br>//создаем объекты<br>c2vip:=c1.createobject ('Документ.Выписка');<br>c2val:=c1.createobject('Справочник.валюты');<br>c2bs:=c1.createobject('Справочник.банковскиесчета');<br>c2dvizh:=c1.createobject('Справочник.ДвиженияДенежныхСредств');<br>c2cont:=c1.createobject ('Справочник.Контрагенты');<br>//начинаем работать с объектами<br>c2vip.новый();<br>c2vip.датадок := datetimepicker1.Date;<br>c2val.найтипонаименованию ('руб');<br>c2vip.валюта := c2val.текущийэлемент ();<br>c2bs.найтипонаименованию ('РФБ');<br>c2vip.банковскийсчет := c2bs.текущийэлемент ();<br>...<br>именно в строке <br>c2vip.новый();<br>и возникает ошибка<br>First chance exception at $7C812AEB. Exception class EOleError with message 'Method новый' not supported by automation object'. Process Project1.exe (252)<br><br>думал что из-за проблем данной версии Delphi с русским языком, но применение вместо новый (), new () не меняет ситуации.<br>Если есть люди работавшие в такой связке, посоветуйте, пожалуйста, что делать.<br>"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №2
 
01.09.2008 18:15

"А если перед<br>c2vip.New();<br>сделать<br>c2vip.SelectItems(0);<br>что происходит?"

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №3
 
02.09.2008 16:40

"попробовал то же самое сделать в Delphi 7:<br>вот что мы имеем:<br>1. c2vip.SelectItems(0); - что предложил IceBeerg - то же самое "method selectitems not supported by automation object"<br>2. c2vip.new () или c2vip.новый() - "Несовпадение типов"<br>Ясно что 2. лучше, чем 1. или то, что было раньше, т.к. ошибка выдается уже русскими буквами, т.е. я так понимаю, что команды передались через Ole в 1с, а не застревают где-то посредине между Delphi, Ole и 1С. Так что дальше давайте копать отсюда:<br>имеем Delphi 7, код:<br><br>constr:='/d '+inifile.ReadString('1c1','path','')+' /n '+inifile.ReadString('1c1','login','')+' /p '+ inifile.ReadString('1c1','password','');<br><br>c1:=createoleobject ('v77s.application');<br>c1.initialize(c1.rmtrade,constr,'NO_SPLASH_SHOW');<br>c2vip:=c1.createobject ('Документ.Выписка');<br>c2val:=c1.createobject('Справочник.валюты');<br>c2bs:=c1.createobject('Справочник.банковскиесчета');<br>c2dvizh:=c1.createobject('Справочник.ДвиженияДенежныхСредств');<br>c2cont:=c1.createobject ('Справочник.Контрагенты');<br>//c2vip.selectitems(0);<br>c2vip.новый();<br>c2vip.датадок := datetimepicker1.Date;<br>c2val.найтипонаименованию ('руб');<br>c2vip.валюта := c2val.текущийэлемент ();<br>c2bs.найтипонаименованию ('РФБ');<br>c2vip.банковскийсчет := c2bs.текущийэлемент ();<br><br><br>на строке: c2vip.новый(); выдает ошибку "Несовпадение типов".<br>Есть ли у кого-нибудь какие мысли?<br>"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №4
 
02.09.2008 17:04

"Вот я жестоко ошибся...<br>не c2vip.SelectItems(0);<br>а c2vip.SelectDocuments(0);<br><br>Но<br>> 2. c2vip.new () или c2vip.новый() - "Несовпадение типов"<br>что-то подозрительно настораживает..."

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №5
 
02.09.2008 18:04

"c2vip.selectdocuments(0); проглотил нормально<br>но в следующей строке <br>c2vip.новый;<br>снова ошибка:<br>Project Project1.exe raised exception class EOleSysError with message 'Несовпадение типов' Process stopped."

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №6
 
02.09.2008 18:10

"поразительно, но написав<br>c2vip.новый; , а имел ввиду<br>c2vip.новый ();<br>теперь подумал и решил написать именно<br>c2vip.новый;<br>и эту строку проглотил нормально, сейчас буду дальше смотреть где выбросится ошибка."

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №7
 
02.09.2008 18:19

"c1:=createoleobject ('v77s.application');<br>c1.initialize(c1.rmtrade,constr,'NO_SPLASH_SHOW');<br>c2vip:=c1.createobject ('Документ.Выписка');<br>c2val:=c1.createobject('Справочник.валюты');<br>c2bs:=c1.createobject('Справочник.банковскиесчета');<br>c2dvizh:=c1.createobject('Справочник.ДвиженияДенежныхСредств');<br>c2cont:=c1.createobject ('Справочник.Контрагенты');<br>c2vip.selectitems(0);<br>c2vip.новый;<br>c2vip.датадок := datetimepicker1.Date;<br>c2val.найтипонаименованию ('руб');<br>c2vip.валюта := c2val.текущийэлемент ;<br>c2bs.найтипонаименованию ('РФБ');<br>c2vip.банковскийсчет := c2bs.текущийэлемент ;<br><br>В коде теперь возникает та же ошибка на строке <br><br>c2val.найтипонаименованию ('руб');<br><br>т.е. русскоязычные методы с параметрами почему-то он не воспринимает<br>т.е.<br>c2vip.selectitems(0);-норм<br>c2vip.новый(); - ошибка<br>c2vip.новый; - норм<br>c2vip.датадок := datetimepicker1.Date; - норм<br>c2val.найтипонаименованию ('руб'); - ошибка<br>Где бы мне скачать соответствие: русскоязычное написание методов 1С - англоязычное описание методов 1С?<br><br>"

CheshirskyCat
читатель
офлайн
Дата регистрации: 09.01.2004
Сообщений: 326
Пост №8
 
03.09.2008 10:41

Ну, во-первых, все методы в русском и английском вариантах есть в "желтых" книжках 1С - "Описание языка программирования"<br>Во-вторых, в конфигураторе 1С есть Синтакс-помощник. В конфигураторе через меню Сервис - Параметры откройте Настройка параметров системы. Там есть закладка Синакс-Помощник. В ней поставьте галочку Использовать оба языка.<br>Тогда все описания в Помощнике будут в русском и в английскоv вариантах.

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №9
 
03.09.2008 12:28

"Какая ошибка в?<br>>c2val.найтипонаименованию ('руб'); - ошибка<br>что пишет?"

Bookman
читатель
офлайн
Дата регистрации: 29.03.2006
Сообщений: 100
Пост №10
 
03.09.2008 15:59

"c1:=createoleobject ('v77s.application');<br>c1.initialize(c1.rmtrade,constr,'NO_SPLASH_SHOW');<br>c2vip:=c1.createobject ('Документ.Выписка');<br>c2val:=c1.createobject('Справочник.валюты');<br>c2bs:=c1.createobject('Справочник.банковскиесчета');<br>c2dvizh:=c1.createobject('Справочник.ДвиженияДенежныхСредств');<br>c2cont:=c1.createobject ('Справочник.Контрагенты');<br>c2vip.selectitems(0);<br>c2vip.new;<br>c2vip.датадок := datetimepicker1.Date;<br>c2val.findbydescr ('руб');<br>c2vip.валюта := c2val.currentitem ;<br>c2bs.findbydescr ('РФБ');<br>c2vip.банковскийсчет := c2bs.currentitem ;<br><br>Теперь мы доходим до строки <br>c2vip.валюта := c2val.currentitem ;<br>При таком написании ошибка вида "Параметр задан неверно".<br>при написании:<br>c2vip.валюта := c2val.currentitem ();<br>другая уже встрачавшаяся: "Несовпадение типов".<br>Видимо ошибка именно в правой части:<br>c2val.currentitem<br>В описании к данному методу сказано, что он не должен иметь никаких параметров, т.е. только<br>currentitem()/текущийэлемент()"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация