Каталог оконных фирм, статистика, цены, статьи. Описание ПВХ профилей, фурнитуры и других комплектующих. Форум. Объявления.  

 форум поддержки VSGroup 

сделать стартовой   добавить в избранное

WinCalc   PaneCut   PTrade   УОП 1С 8   TPS.com.ua
 
 FAQ   •  Поиск  •  Пользователи   •  Регистрация   •  Вход
Текущее время: 17 сен 2019, 04:16 Часовой пояс: UTC + 2 часа





Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 15:04 
Не в сети
Ректор
Ректор
Аватара пользователя

Группа: Служба поддержки VSgroup
Сообщения: 22066
Для связи нашей программы с учетными системами рекомендуем брать данные напрямую из нашей базы данных.
Структура базы данных:
Вложение:
СтруктураЗаказа.xls [17 КБ]
Скачиваний: 66

Как сделать выборку по заказу:

1. Найти соответствующий заказ в таблицу offers
например select * from offfers where znotext = "123-24"

2. Найти все позиции заказа
например select * from constructions where pid = [offers.id]

3. Получить спецификацию заказа
select * from calcrep where pid = [constructions.id]

Выполнить запрос можно подключившись к базе напрямую (например http://www.google.com.ua/search?q=firebird+1c) или выполнить запрос через OLE объект программы.

Пример как выполнить запрос через OLE:

1. Создание COM объекта и запуск программы:

Код:

Процедура ЗапуститьПрограммуWinCalc
   
   Попытка
      // проверка активного Оле соединения
      ПрограммаРасчетаСтартована=OLEСоединениеWinCalc.Started(); // вызов любого метода программы для проверки
   Исключение
      ПрограммаРасчетаСтартована = Ложь;
   КонецПопытки;
   
   WCObject="wincalc.wincalcsrv";
   
   Если НЕ ПрограммаРасчетаСтартована Тогда
      Попытка
         // создание COM объекта
         OLEСоединение       = Новый COMОбъект(WCObject);
         OLEСоединениеWinCalc = Новый COMОбъект(WCObject);
         
         // установка пользователя и пароля
         OLEСоединениеWinCalc.SetLoginData("Пользователь","Пароль");
         
         // строка подключения сервер
         OLEСоединениеWinCalc.SetServerName(Константы.спкОПСервер.Получить());
         
      Исключение
         Предупреждение("Не возможно создать объект оконной программы. "+ИнформацияОбОшибке().Описание, 10, "Оконная программа");
         Возврат;
      КонецПопытки;
      
      OLEСоединениеWinCalc = Неопределено;
   КонецЕсли;
   
   // запуск программы
   OLEСоединениеWinCalc.Start();
   
   // ожидание запуска программы
   Пока НЕ OLEСоединениеWinCalc.Started() Цикл
      OLEСоединениеWinCalc.Wait(100);
   КонецЦикла;
   
конецпроцедуры;      


2. Выполнение запросы:

Код:

   // выполнение запроса в базу wcoffers.fdb
   // Результат - ComSafeArray
   // 1 элемент равен 0 если запрос не удался, 1 если все ок
   // 2 элемент равен количеству строк в результате запроса
   // 3 элемент - ComfaseArray срок результата, каждый также является ComSafeArray, каждый элемент которого является значением колонки в выборке.
   Запрос = OLEСоединениеWinCalc.ExecQueryO(" select ID, ZSUM from constructions where pid = 3 ");
   
   // если запрос выполнен
   если Запрос.getValue(1) = 1 тогда
      
      // получим массив записей
      Записи = Запрос.GetValue(3);
      
      // цикл по количеству записей
      КоличествоЗаписей = Запрос.GetValue(2);   
      для й = 1 по КоличествоЗаписей цикл
         
         // поулчим й-ую запись
         Запись = Записи.GetValue(й);
         
         // 1 поле текущей записи
         сообщить(Запись.getValue(1)); // ID
         // 2 поле текущей записи
         сообщить(Запись.getValue(2)); // ZSUM
         
      конеццикла;
      
   конецесли;


3. Чтобы выполнить запрос к базе wcglobal.fdb нужно использовать функцию ExecQueryG

4. Вот функция, которая преобразовывает результат функции ExecQuery в ТаблицуЗначений:
Код:
функция ЗапросВинКалкВТаблицуЗначений(ЗапросВинКалк) Экспорт
   
   Если ЗапросВинКалк.GetValue(1) = 1 тогда
      
      ТЗ = Новый ТаблицаЗначений;
      
      для й = 1 по ЗапросВинКалк.GetValue(3).GetValue(0).GetUpperBound() цикл
         ТЗ.Колонки.Добавить(ЗапросВинКалк.GetValue(3).GetValue(0).GetValue(й));
      КонецЦикла;
      
      для ц = 1 по ЗапросВинКалк.GetValue(2) цикл
         
         Строка = ТЗ.Добавить();
         для й = 1 по ЗапросВинКалк.GetValue(3).GetValue(0).GetUpperBound() цикл
            Строка[й - 1] = ЗапросВинКалк.GetValue(3).GetValue(ц).GetValue(й);
         КонецЦикла;
         
      КонецЦикла;
      
      возврат ТЗ;
      
   иначе
      возврат Неопределено;
   конецесли;
   
конецфункции

_________________
Как правильно задавать вопросы на форуме поддержки
Если программист утром на работе, значит он оттуда не уходил.
Если я пишу "исправил", "сделал" и т.д., это значит что собрана новая сборка и выложена на сайт. Нужно обновить программу чтобы получить исправления.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 15:44 
Не в сети
Новичок
Новичок
Аватара пользователя

Группа: 185 - ЕвроВикнаБуд
Сообщения: 6
Откуда: Киев
В запросе - Запрос = OLEСоединениеWinCalc.ExecQueryO(" select ID, ZSUM from constructions where pid = 3 "); как задать номер заказа, что такое ZSUM?

_________________
Деркач Женя
ООО "Евровикнобуд"
г. Киев


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 15:51 
Не в сети
Ректор
Ректор
Аватара пользователя

Группа: Служба поддержки VSgroup
Сообщения: 22066
Деркач Женя писал(а):
как задать номер заказа


Код:
select constructions.* from constructions, offers where constructions.pid = offers.id and offers.znotext = "123-45"


Деркач Женя писал(а):
что такое ZSUM?


описание полей таблицы constructions можно глянуть в файле который приложил в первом сообщении

_________________
Как правильно задавать вопросы на форуме поддержки
Если программист утром на работе, значит он оттуда не уходил.
Если я пишу "исправил", "сделал" и т.д., это значит что собрана новая сборка и выложена на сайт. Нужно обновить программу чтобы получить исправления.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 17:40 
Не в сети
Новичок
Новичок
Аватара пользователя

Группа: 185 - ЕвроВикнаБуд
Сообщения: 6
Откуда: Киев
Что такое в запросе - where pid = 3

_________________
Деркач Женя
ООО "Евровикнобуд"
г. Киев


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 17:41 
Не в сети
Новичок
Новичок
Аватара пользователя

Группа: 185 - ЕвроВикнаБуд
Сообщения: 6
Откуда: Киев
Я имею в виду что такое - 3

_________________
Деркач Женя
ООО "Евровикнобуд"
г. Киев


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 17:46 
Не в сети
Новичок
Новичок
Аватара пользователя

Группа: 185 - ЕвроВикнаБуд
Сообщения: 6
Откуда: Киев
как воткнутся в таблицу wcoffers.constructions по конкретному номеру заказа?

_________________
Деркач Женя
ООО "Евровикнобуд"
г. Киев


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 18:13 
Не в сети
Новичок
Новичок
Аватара пользователя

Группа: 185 - ЕвроВикнаБуд
Сообщения: 6
Откуда: Киев
Те примеры запросов которые вы написали на форуме не работают в конфигурации , выдает ошибку -

{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(3152)}: Ошибка при вызове метода контекста (ExecQueryO)
Запрос = OLEСоединение.ExecQueryO(" select ID, ZSUM from constructions where pid = 3 ");
по причине:
Произошла исключительная ситуация (wincalc.WinCalcSRV): use Open for a Select Statement

_________________
Деркач Женя
ООО "Евровикнобуд"
г. Киев


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связь программы с учетными системами
СообщениеДобавлено: 27 дек 2013, 21:05 
Не в сети
Ректор
Ректор
Аватара пользователя

Группа: Служба поддержки VSgroup
Сообщения: 22066
Деркач Женя писал(а):
как воткнутся в таблицу wcoffers.constructions по конкретному номеру заказа?


select constructions.* from constructions, offers where constructions.pid = offers.id and offers.notext = "[НомерЗаказа]"

Деркач Женя писал(а):
Те примеры запросов которые вы написали на форуме не работают в конфигурации , выдает ошибку -

{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(3152)}: Ошибка при вызове метода контекста (ExecQueryO)
Запрос = OLEСоединение.ExecQueryO(" select ID, ZSUM from constructions where pid = 3 ");
по причине:
Произошла исключительная ситуация (wincalc.WinCalcSRV): use Open for a Select Statement


уберите первый пробел в строке запроса, т.е.
Запрос = OLEСоединение.ExecQueryO("select ID, ZSUM from constructions where pid = 3 ");

ошибку в программе исправил в 22 сборке

P.S. В первое сообщение добавил функцию преобразования запроса WinCalc в ТаблицуЗначений

_________________
Как правильно задавать вопросы на форуме поддержки
Если программист утром на работе, значит он оттуда не уходил.
Если я пишу "исправил", "сделал" и т.д., это значит что собрана новая сборка и выложена на сайт. Нужно обновить программу чтобы получить исправления.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB