Описание задачи: программно, подключиться (используя прямое подключение) к базе данных и запросом вытянуть информацию об отработанных часах, затем заполнить таблицу по запросу.
&НаСервере Процедура ПрочитатьДанныеНаСервере() // Подключение к базе УчетнаяИнформация = "srvr='bserver:13356'; ref='SUP_SGA'; usr='Adm'; pwd='*';"; // Подключение к базе: клиент-сервер УчетнаяИнформация = "file='d:\db\SUP'; usr='Adm'; pwd='*';"; // Подключение к базе: файловая ComConnector = ПолучитьCOMОбъектПоВерсииПлатформы(); Сообщение = Новый СообщениеПользователю; Попытка ComConnection = COMConnector.Connect(УчетнаяИнформация); Исключение Сообщение.Текст = "Попытка подключения провалена: " + ОписаниеОшибки(); Сообщение.Сообщить(); Возврат; КонецПопытки; // Получение количества выработанных часов из базы УСП запросом Запрос = ComConnection.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | СУММА(ФактическиеТрудозатраты.Длительность) КАК Длительность, | ФактическиеТрудозатраты.Источник.Абонент._ИНН КАК ИНН, | ФактическиеТрудозатраты.Источник.Абонент.Наименование КАК КонтрагентУСП |ИЗ | РегистрСведений.ФактическиеТрудозатраты КАК ФактическиеТрудозатраты |ГДЕ | ФактическиеТрудозатраты.ДатаРаботы >= &Начало | И ФактическиеТрудозатраты.ДатаРаботы <= &Окончание |СГРУППИРОВАТЬ ПО | ФактическиеТрудозатраты.Источник.Абонент._ИНН, | ФактическиеТрудозатраты.Источник.Абонент.Наименование"; Запрос.УстановитьПараметр("Начало", Период.ДатаНачала); Запрос.УстановитьПараметр("Окончание", Период.ДатаОкончания); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Ошибка = ""; ИННКонтр = Выборка.ИНН; Если ЗначениеЗаполнено(ИННКонтр) Тогда КонтрагентERP = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", Выборка.ИНН); Если Не ЗначениеЗаполнено(КонтрагентERP) Тогда КонтрагентERP = ""; Ошибка = "Не найден контрагент по ИНН"; Иначе Ошибка = ""; КонецЕсли; КонецЕсли; ДанныеУСПНовСтр = ДанныеУСП.Добавить(); ДанныеУСПНовСтр.КонтрагентERP = КонтрагентERP; ДанныеУСПНовСтр.КонтрагентУСП = Выборка.КонтрагентУСП; ДанныеУСПНовСтр.ИННКонтрУСП = Выборка.ИНН; ДанныеУСПНовСтр.КоличествоЧасов = Выборка.Длительность / 3600; ДанныеУСПНовСтр.Ошибка = Ошибка; КонецЦикла; КонецПроцедуры
Оставить комментарий