Языки программирования > WEB-Расширение для "1С:Предприятие 8.0, 8.1" (v8)
Можно ли вызвать из Web-расширения функцию 1С?
iPRG Team:
После установки WEB-расширения, у меня в Visual Studio в меню Tools было меню "Импорт метаданных", но оно потом исчезло.
Но можно делать импорт метаданных и по другому, я так сейчас и делаю. Через меню: Пуск - Программы - 1С Предприятие 8. Web расширение 1.1 - Импорт метаданных
Сам EXE файл импорта метаданных лежит по умолчанию тут: "C:\Program Files\1cV8Web\bin\MDGenerate.exe"
Далее в открывшемся окне выбираешь базу 1С из которой делать импорт метаданных, только после этого C#(ASP.NET) будет знать о твоих изменениях в 1С:
1. Ввожу имя пользователя базы 1С
2. Ввожу пароль пользователя базы 1С
3. Ввожу каталог моего ASP.NET проекта и в нем выбираю папку BIN,
например: c:\Мойпроект\bin
тут должны быть 2 файла, проверь их дату и время, чтобы быть уверенным что они обновились:
c:\Мойпроект\bin\1cv8.dll
c:\Мойпроект\bin\1cv8.xml
Теперь нужно обязательно закрыть текущий ASP проект и открыть его еще раз, после этих операций у меня появляются в моем ASP проекте новые изменения в метаданных 1С.
mugg:
А как сделать импорт метаданных? Вроде должна быть в меню Tools, у меня нет. Я работаю в web developer 2005 Express. Можно ли выполнить эту операцию каким-то другим способом, из командной строки например?
iPRG Team:
1. Первое что мне приходит в голову, попробуй запусти еще раз "импорт метаданных", это самая частая ошибка. Если в базе 1С чтото менялось, лучше сделать еще раз "импорт метаданных" и у себя в проекте проверь в папке "bin", что у файлов "1cv8.dll" и "1cv8.xml" дата и время изменилась на сегодняшние. Возможно C# просто еще незнает что в 1С появилась новая функция. У меня бывало вылетала такая ошибка, проверяю даты файлов "1cv8.dll" и "1cv8.xml" - свежие, а как потом оказалось я импорт не из той базы 1С сделал :) , есстественно там таких функций нет.
2. Если ничего не получится, выложи текст ошибки или скриншот ошибки.
mugg:
Блин, что делать. Вот кусок кода. Вызывается функция 1с, которой в качестве параметра передается табличная часть.
Возвращаться должная таблица значений. Написал как в примере на диске ИТС
--- Код: ---ItemDataSource.GetDataFromForm();
using (V8DbConnection myConnect = ItemDataSource.Connection)
{
myConnect.Open();
try
{
using (ComObject obj = ItemDataSource.GetObject())
{
ComObject TabularPart = (ComObject)V8.Get(myConnect, obj, "ТМЦ"); //Табличная часть документа
[b]using (ComObject valueTable = (ComObject)V8.Call(myConnect, myConnect.Connection, "WebПолучитьПараметрыНоменклатуры", TabularPart))[/b]
{
}
}
}
finally
{
myConnect.Close();
}
}
--- Конец кода ---
Ругается на строке, выделенной жирным, ошибка - "неизвестное имя" и на имя функции 1с стрелкой показывает. Функция эта в 1с есть и описана со словом "Экспорт"
iPRG Team:
--- Цитировать ---Модуль, в котором описана функция 1С, не надо указывать?
--- Конец цитаты ---
Нет, общий модуль указывать не надо из C#.
В свойствах общего модуля 1С8 нужно только установить галочку: Внешнее соединение
--- Цитировать ---Даже в самой 1С вызов функции делается с указанием модуля, а из web-расширения он сам значит сам найдет?
--- Конец цитаты ---
В самой 1С, если в модуле установить "Экспорт", то функции будут виды во всей 1С без указания модуля, я у всех своих функций 1С так и сделал (у меня их не так то и много), незнаю правда хороший это подход или нет, может чуток памяти больше тратится, но мне удобнее так программировать :)
Навигация
Перейти к полной версии