компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > 1C (Все версии) > WEB расширение 1С 8.0


Ответ
 
LinkBack Опции темы Опции просмотра
Старый 12.09.2006, 08:10   #1
Пользователи
 
Регистрация: 12.09.2006
Сообщений: 27
По умолчанию

В 1с 8.0 имеется функция ВернутьТаблицуЗначений обьявленную как Экспорт.
эта функция возвращает ТаблицуЗначений.

Код:
Функция ВернутьТаблицуЗначений() Экспорт 
**** таблЗнач= Новый ТаблицаЗначений;
**** таблЗнач.Колонки.Добавить("код");
**** таблЗнач.Колонки.Добавить("наименование");
**** таблЗнач.Колонки.Добавить("");
**** код="код";
**** наимен="наименование"; 
**** Для инд=0 По 5********
**********Цикл
**********стрТАБЛЗнач=таблЗнач.Добавить();
**********стрТАБЛЗнач.код=код+строка(инд);
**********стрТАБЛЗнач.наименование=наимен+строка(инд);********
**** КонецЦикла;****
**** возврат таблЗнач;
КонецФункции
Если возращать из функции строку, то все работает на ура.

Код:
**** V8DbConnection connection = new V8DbConnection();
**** connection.ConnectionString = "File=************************";
**** connection.Database = "File=********";
**** connection.Password = "*******";
**** connection.User = "******";
**** connection.Open();
**** try
**** {
**********object text = V8.Call(connection.Connection,"ВернутьТаблицуЗначений");
**********Label1.Text=text.ToString();
**** }
**** finally
**** {
**********connection.Close();
**** }
А что делать, если требуется получить ТаблицуЗначений в C# и разместить ее в Grid.




deevil вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
12.09.2006, 08:10
Техник
реклама
По умолчанию

Старый 12.09.2006, 08:48   #2
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Давай более детально разберем задачу.

Есть необходимость вывести на форме некоторые данные в виде грида.

Вопросы:
1. Планируется ли модифицировать грид, т.е. планируется ли непосредственный ввод/модификация данных?
2. Можешь ли данные для грида вытащить запросом?
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 09:10   #3
Пользователи
 
Регистрация: 12.09.2006
Сообщений: 27
По умолчанию

Более Детально.
Планируется сделать интернет-магазин.
Вывод номенклатуры хочу сделать так:
Слева выводятся группы номенклатуры.
Посередине номенклатура которая относится к этой группе.

Когда происходит нажатие на группу то через метод GET передается код группы.
Посередине где отображается номенклатура этой группы вызывается функция с кодом группы которая возвращает номенклатуру, которая относится к этой группе.

Для этого в 1с планируется сделать две функции:
1. возвращает все номенклатурные группы.
2. возвращает по коду родителя номенклатуру которая относится к этому родителю.

Для этого из функций хотел возвращать таблицызначений.

То есть функция возвращает таблицу а я уже как мне нужно вывожу их в HTML.


Насчет вопросов:
Цитата:
2. Можешь ли данные для грида вытащить запросом?
Можно. Но не очень удобно так делать. Как я лично думаю: запрос будет медленней выполнятся через веб расширение, чем если я из 1с верну уже результат запроса, или нет???
deevil вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 09:32   #4
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Т.е. тебе необходимо реализовать дерево номенклатуры.
Слева у тебя идут номенклатурные группы из справочника, посередке - собственно наполнение номенклатурной группы. Также тебе необходимо в поле, где выводятся элементы справочника, для каждого элемента добавить поле, в котором вводить количество заказанного товара.

Я всё правильно понял?
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 10:04   #5
Пользователи
 
Регистрация: 12.09.2006
Сообщений: 27
По умолчанию

Цитата:
Я всё правильно понял?
Так точно.

Но в далнейшем предпологалось также с помощью подобной функции выводить корзину, заказы покупателя, а также товары в заказе. т.е. функций которые возвращают таблицу будет несколько, а именно:
1. вывод номенклатурных групп.
2. вывод номменклатуры.
3. вывод корзины.
4. вывод заказов.
5. вывод товаров в заказе.
и еще может несколько....

И все они будут возвращать таблицу значений, массив, структуру или что нибудь другое.
Была идея передать через строку с разделителями ";", но это не очень правильно.
deevil вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 10:55   #6
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Цитата:
Была идея передать через строку с разделителями ";", но это не очень правильно.
Вот как раз через строку с разделителями будет правильно. Но тебе придётся прописывать несколько типов разделителей:
1. Разделитель строк таблицы значений, например #@#
2. Разделитель колонок в строке - #%#
3. Наконец, для ссылочных типов, разделитель уникального идентификатора и представления #$#.

Итак, как в 1с-е создать такую строку представляешь.

Теперь как разобрать эту строку C#-ом

В юзинг добавляем

Код:
using System.Text.RegularExpressions;
Если предположить, что _1CTable - это вышеизложенным образом преобразованная с троку твоя таблица значений, то код будет выглядеть приблизительно так:

Код:
Regex LineSplitter = new Regex("#@#");
Regex CellSplitter = new Regex("#%#");
Regex RefSplitter = new Regex("#$#");

string[] Lines = LineSplitter.Split(_1CTable);
string[] Cells = new string[n];// вместо n подставишь количество колонок в таблице
string[] Ref = new string[2];// ссылка (УИД) и представление

foreach(string Line in Lines)
{
**Cells = CellSplitter.Split(Line);
**foreach(string Cell in Cells)
**{
****if(((Match)RefSplitter.Match(Cell)).Success)
****{
******// Таки ссылка
******Ref = RefSplitter.Split(Cell);// После этого Ref[0] - УИД, Ref[1] - Представление (или как ты там заложишь в 1С
****}
****else
****{
******// Cell является искомым значением
****}
**}
}
ЗЫ: В коде возможны очепятки ибо писал с чистого листа
ЗЗЫ: А на счет скорости запроса - проверил бы, не думаю что медленнее
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 11:18   #7
Пользователи
 
Регистрация: 12.09.2006
Сообщений: 27
По умолчанию

Цитата:
Итак, как в 1с-е создать такую строку представляешь.
Не совсем. Можешь привести код который генерирует эту строку в 1с?
deevil вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 11:58   #8
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Цитата:
Не совсем. Можешь привести код который генерирует эту строку в 1с?
А ты на чём-то пишешь?..

Код:
мсКолонок = Новый Массив;
Для Каждого КолонкаТЗ Из .Колонки Цикл
**мсКолонок.Добавить(КолонкаТЗ.Имя);
КонецЦикла;

ПерваяСтрока = Истина;
СтрокаВозврат = "";

Для Каждого СтрокаТаблицыЗначений Из  Цикл
**ПерваяКолонка = Истина;
**СтрокаСтроки = "";

**Для Каждого ИмяКолонки Из мсКолонок Цикл
****
****Если (СтрокаТаблицыЗначений[ИмяКолонки]) Тогда // Способ определения того, является ли значение ссылочным, вставишь сам, ибо у каждого есть свой "любимый"
******СтрокаЭлемента = "" + СтрокаТаблицыЗначений[ИмяКолонки].УникальныйИдентификатор() + "#$#" + СтрокаТаблицыЗначений[ИмяКолонки];
****Иначе
******СтрокаЭлемента = "" + СтрокаТаблицыЗначений[ИмяКолонки];
****КонецЕсли;

****Если ПерваяКолонка Тогда
******ПерваяКолонка = Ложь;
******СтрокаСтроки = СтрокаЭлемента;
****Иначе
******СтрокаСтроки = СтрокаСтроки + "#%#" + СтрокаЭлемента;
****КонецЕсли;
**КонецЦикла;

**Если ПерваяСтрока Тогда
****ПерваяСтрока = Ложь;
****СтрокаВозврат = СтрокаСтроки;
**Иначе
****СтрокаВозврат = СтрокаВозврата + "#@#" + СтрокаСтроки;
**КонецЕсли;
КонецЦикла;
Кажись так
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 12:45   #9
Пользователи
 
Регистрация: 12.09.2006
Сообщений: 27
По умолчанию

Цитата:
А ты на чём-то пишешь?..
на дельфи, паскале, ПХП. по этому мне немного сложно разобраться с С# и 1с.

Огромное спасибо.
deevil вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 12.09.2006, 12:53   #10
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Цитата:
на дельфи, паскале, ПХП. по этому мне немного сложно разобраться с С# и 1с.
Блин, и как же ж тебя угораздило в 1С, да ещё и в вэб...

Мои соболезнования

Если что - 177-499-582
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 15:44. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2