Как через VBA написать обращение к справочникам (например Номенклатура), только на английском языке (русский не поддерживается)?
Никак.
Только если через переменную, которой присвоить значение оригинального имени справочника.
Либо, если база крутится на сиквеле, прямым запросом туды.
DEDUSHKA
2.10.2008, 10:09
Цитата(LxS @ 2.10.2008, 12:38)

Никак.
Только если через переменную, которой присвоить значение оригинального имени справочника.
Либо, если база крутится на сиквеле, прямым запросом туды.
А что-то типа такого:...
Set Spravochniki = V8.Catalogs
Set a = Spravochniki("Номенклатура") 'ругается на этом месте (пишет, что объект не поддерживает данные метод)
Call a.Select()
P.S. Русский язык допускается везьде как строка (в кавычках). Нельзя чтобы в коде были русские буквы.
Уверен, что скобки круглые д.б.?
Скинь код с момента подключения и до момента выбора.
DEDUSHKA
2.10.2008, 10:39
Цитата(LxS @ 2.10.2008, 13:25)

Уверен, что скобки круглые д.б.?
на квадратные он ругается
Set OneC = CreateObject("V81.COMConnector")
Set V8 = OneC.Connect("Srvr='buhdb.Radius.ru';Ref='UPP';Usr='Белоусов С.В.';Pwd='********';")
Ну а дальше идет выбор.
Если писать внешнюю обработку в 1С, то скобки должны быть квадратные.
А как быть, если я пишу из другой ИС?
В чем фишка. Я не силен в VBA, объясню на пальцах. У справочника есть метод select().
У тебя select. Скобки убирает компилятор VBA. Соответственно метод не метод вовсе, а команда VBA. Дело в скобках.
DEDUSHKA
2.10.2008, 11:07
Цитата(LxS @ 2.10.2008, 13:50)

В чем фишка. Я не силен в VBA, объясню на пальцах. У справочника есть метод select().
У тебя select. Скобки убирает компилятор VBA. Соответственно метод не метод вовсе, а команда VBA. Дело в скобках.
Вот что он пишет:
Объект не поддерживает это свойство или метод: 'Spravochniki'
Ошибка выполнения Microsoft VBScript
На квадратные скобки ругается:
Set a = Spravochniki["Номенклатура"]
Предполагается наличие окончания инструкции
Ошибка компиляции Microsoft VBScript
А через Метаданные нельзя как-нить?
Справочник ты получаешь нормально.
Не надо мудрить с квадратными.
Вопрос в скобках у select-а. У восьмерочного спр. есть метод Select(), он предполагает обязательное наличие скобок.
У тебя же их нет.
Сёдня порою матчасть вечером. Я не цеплялся никогда извне к восьмерке таким образом.
Мастер_миража
2.10.2008, 11:30
а че нет функции которая строкой посылает команды в 1с?
в 7.7 есть
set v7=createobject("V77.Application")
инициализация
v7.EvalExpr("строка выражениея на языке 1с")
v7.ExecuteBatch("строка операторов 1с")
DEDUSHKA
2.10.2008, 11:51
Цитата(Мастер_миража @ 2.10.2008, 14:30)

а че нет функции которая строкой посылает команды в 1с?
в 7.7 есть
set v7=createobject("V77.Application")
инициализация
v7.EvalExpr("строка выражениея на языке 1с")
v7.ExecuteBatch("строка операторов 1с")
Ваша идея мне понравилась! Внешеней обработкой сработало:
а = Вычислить("Справочники.номенклатура.Выбрать()");
Пока а.Следующий() Цикл
Сообщить(а.Наименование);
КонецЦикла;
но в VB нет:
Set a=V8.Eval("Справочники.Номенклатура")
Пишет: объект не поддерживает это свойство или метод
Мастер_миража
2.10.2008, 11:54
Цитата(DEDUSHKA @ 2.10.2008, 11:51)

Ваша идея мне понравилась! Внешеней обработкой сработало:
а = Вычислить("Справочники.номенклатура.Выбрать()");
Пока а.Следующий() Цикл
Сообщить(а.Наименование);
КонецЦикла;
но в VB нет:
Set a=V8.Eval("Справочники.Номенклатура")
Пишет: объект не поддерживает это свойство или метод
Eval вычисляет выражение и возвращает значение
Execute выполяент команду
в справке ничего лучше не нашел
DEDUSHKA
2.10.2008, 12:43
Цитата(Мастер_миража @ 2.10.2008, 14:54)

Eval вычисляет выражение и возвращает значение
Execute выполяент команду
в справке ничего лучше не нашел
Пробовал еще так:
Set a=Eval("V8.Справочники.Номенклатура")
ничего не помогло, выдает ошибку ~не удается найти имя V8 этого выражения
coder1cv8
2.10.2008, 12:46
Просто тихий ужас!...
Spravochniki["Номенклатура"] - это вообще что-то! Насколько извращенной фантазией надо обладать, что бы так написать?!... )
V8.Catalogs["Номенклатура"].Select()
ЗЫ: нет Eval-а в восьмерке...
DEDUSHKA
2.10.2008, 12:54
Цитата(coder1cv8 @ 2.10.2008, 15:46)

Просто тихий ужас!...
Spravochniki["Номенклатура"] - это вообще что-то! Насколько извращенной фантазией надо обладать, что бы так написать?!... )
V8.Catalogs["Номенклатура"].Select()
ЗЫ: нет Eval-а в восьмерке...
Предложите вашу идею
P.S. Eval есть в восьмерке:
Код
а = Eval("Справочники.номенклатура.Выбрать()");
Пока а.Следующий() Цикл
Сообщить(а.Наименование);
КонецЦикла;
Чувак, с тебя спасибо!!
Код
Sub first()
Set OneC = CreateObject("V81.COMConnector")
Set V8 = OneC.Connect("Srvr=--------;Ref=----;Usr=-----;Pwd=-----")
Set q1 = V8.newObject("Запрос")
q1.Text = "ВЫБРАТЬ Сотрудники.Наименование Как Сотрудник ИЗ Справочник.СотрудникиОрганизаций КАК Сотрудники"
Set Result = q1.Execute
Set Tabl = Result.Выгрузить()
For i = 0 To Tabl.Количество() - 1
MsgBox Tabl.Получить(i).Сотрудник
Next i
End Sub
У меня кстати методы, написанные по-русски, влет пошли..
Мастер_миража
2.10.2008, 14:00
Цитата(DEDUSHKA @ 2.10.2008, 12:43)

Пробовал еще так:
Set a=Eval("V8.Справочники.Номенклатура")
ничего не помогло, выдает ошибку ~не удается найти имя V8 этого выражения
может скобочки?=)
Set a=V8.Eval("Справочники.Номенклатура()")
или
"создатьОбъект(Справочник.Номенклатура)" - ет нав в 7.7 так бы
Мастер_миража
2.10.2008, 14:06
запрос рулит=)
DEDUSHKA
2.10.2008, 14:07
Цитата(LxS @ 2.10.2008, 16:59)

Чувак, с тебя спасибо!!
Код
Sub first()
Set OneC = CreateObject(\\"V81.COMConnector\\")
Set V8 = OneC.Connect(\\"Srvr=--------;Ref=----;Usr=-----;Pwd=-----\\")
Set q1 = V8.newObject(\\"Запрос\\")
q1.Text = \\"ВЫБРАТЬ Сотрудники.Наименование Как Сотрудник ИЗ Справочник.СотрудникиОрганизаций КАК Сотрудники\\"
Set Result = q1.Execute
Set Tabl = Result.Выгрузить()
For i = 0 To Tabl.Количество() - 1
MsgBox Tabl.Получить(i).Сотрудник
Next i
End Sub
У меня кстати методы, написанные по-русски, влет пошли..
А если я хочу не запросом что-то достать, а добавить элемент справочника?
Может эта ссылка поможет, только я в ней ничего не понял
http://forum.developing.ru/showthread.php?t=7855&page=2
Мастер_миража
2.10.2008, 14:09
а в 8 кажется есть катакая штурка ".ссылка"...не пробовал?
DEDUSHKA
2.10.2008, 14:13
Цитата(Мастер_миража @ 2.10.2008, 17:09)

а в 8 кажется есть катакая штурка ".ссылка"...не пробовал?
Даже и не знаю как ей можно воспользоваться...
Мне надо не только читать, но и править, добавлять...
Код
Set OneC = CreateObject("V81.COMConnector")
Set V8 = OneC.Connect("Srvr=----------;Ref=---------;Usr=Администратор;Pwd=----------")
Set Spr = V8.Catalogs.ФизическиеЛица
Set NS = Spr.СоздатьЭлемент()
Call NS.Записать
Загадил справочник правда свой ))
У меня другой вопрос. Ты с восьмеркой дружишь?
DEDUSHKA
2.10.2008, 14:40
Цитата(LxS @ 2.10.2008, 17:13)

Код
Set OneC = CreateObject(\\"V81.COMConnector\\")
Set V8 = OneC.Connect(\\"Srvr=----------;Ref=---------;Usr=Администратор;Pwd=----------\\")
Set Spr = V8.Catalogs.ФизическиеЛица
Set NS = Spr.СоздатьЭлемент()
Call NS.Записать
Загадил справочник правда свой ))
У меня другой вопрос. Ты с восьмеркой дружишь?
И ты опять применяешь русские символы...Да дружу я с 8-кой, еще как. Наверное это все-таки VBScript (В котором недопустимо использовать русские символы).
Кстати мне тут посоветовали вписать эту функцию в модуль приложения, а из той ИС вызывать ее. Но мне не хотелось бы править конфигуратор.
Эмм.. это особенность твоего компилятора - неруссифицированность?
Ща попробую на англ. перевести.
DEDUSHKA
2.10.2008, 14:47
Цитата(LxS @ 2.10.2008, 17:44)

Эмм.. это особенность твоего компилятора - неруссифицированность?
Ща попробую на англ. перевести.
Да, особенность. От которой избавиться нельзя, так как он является частью ИС, в которой мы работаем (((
Мастер_миража
2.10.2008, 15:26
так вот для чего английские аналоги наименований функций=)
а я думал ето для экспорта 1с в англоязычные страны
coder1cv8
2.10.2008, 15:31
У-у-у... да мы ещё и читать не умеем... (
Вроде доступно изложил свою идею.
Set Selection=V8.Catalogs["Номенклатура"].Select()
Что ж я умываю руки.
Цитата(coder1cv8 @ 2.10.2008, 16:31)

У-у-у... да мы ещё и читать не умеем... (
Вроде доступно изложил свою идею.
Set Selection=V8.Catalogs["Номенклатура"].Select()
Что ж я умываю руки.
Я не говорю про его компилятор..но даже мой матерится на такую строку. Синтаксическая ошибка..
Если бы от твоего поста была польза, поверь, чел бы восторжествовал.
DEDUSHKA
2.10.2008, 18:19
Цитата(LxS @ 2.10.2008, 18:41)

Я не говорю про его компилятор..но даже мой матерится на такую строку. Синтаксическая ошибка..
Если бы от твоего поста была польза, поверь, чел бы восторжествовал.
во-во. Я полностью во внимании и читать умею, только всяко-разно пробовал ничего не помогло.
З.Ы. Прочитайте ссылку, что я дал. Может кто сможет ее осмыслить и перевести на язык VBasic
http://forum.developing.ru/showthread.php?t=7855&page=2
Пытаусь сделать так:
В модуле приложения написать функцию:
Код
Функция GetObjectByRussianName(Строка) Экспорт
Возврат Вычислить(Строка);
КонецФункции
В VBScript пишу:
Set nmk = V8.GetObjectByRussianName("Справочники.Номенклатура")
Пишет "Объект не поддерживает данное свойсвто или метод", хотя я откомпилировал конфигуратор.
Что я делаю не так?
Цитата(DEDUSHKA @ 3.10.2008, 9:16)

Пытаусь сделать так:
В модуле приложения написать функцию:
Код
Функция GetObjectByRussianName(Строка) Экспорт
Возврат Вычислить(Строка);
КонецФункции
В VBScript пишу:
Set nmk = V8.GetObjectByRussianName("Справочники.Номенклатура")
Пишет "Объект не поддерживает данное свойсвто или метод", хотя я откомпилировал конфигуратор.
Что я делаю не так?
А понял, надо было это делать в модуле внешнего соединения)))
Скажите, корректно ли так делать?
Это решает проблему отчасти. Теперь надо решить, как быть с установкой реквизитов:
Set nmk = V8.GetObjectByRussianName("Справочники.Номенклатура.СоздатьЭлемент()")
nmk.НаименованиеПолное = "тест" 'Как установить реквизит?
Цитата(DEDUSHKA @ 3.10.2008, 10:34)

Это решает проблему отчасти. Теперь надо решить, как быть с установкой реквизитов:
Set nmk = V8.GetObjectByRussianName("Справочники.Номенклатура.СоздатьЭлемент()")
nmk.НаименованиеПолное = "тест" 'Как установить реквизит?
Решил проблему написав в модуле внешнего соединения:
Код
Функция GetObjectByRussianName(Строка) Экспорт
Возврат Вычислить(Строка);
КонецФункции
Процедура SetValue(переменная, имяРеквизита, значение) Экспорт
переменная[имяРеквизита] = значение;
КонецПроцедуры
Функция ReadValue(переменная, имяРеквизита) Экспорт
Возврат переменная[имяРеквизита];
КонецФункции
Теперь хочу эти функции и процедуру вызывать из другого модуля (собой созданного). Как это сделать?
Мастер_миража
3.10.2008, 10:21
то что с экспортом вставь в глобальный модуль
DEDUSHKA
3.10.2008, 12:36
Цитата(Мастер_миража @ 3.10.2008, 13:21)

то что с экспортом вставь в глобальный модуль
А подробнее можно? Желательно с примерами
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.