Переношу данные, вот решил встряхнуть старинной и сделать все одной обработинной в самой восьмере. Не могу по АДО срезать остатки на период, хотя в разрезе все выводится, вот примеры кода и результаты.
//Функция открывает ADO-соединение к базе по ODBC драйверу
//
Функция ОткрытьADOОСоединение() Экспорт
Если ЗначениеЗаполнено(ADODBConnection) Тогда
Возврат ADODBConnection;
КонецЕсли;
СтатусВозврата = Неопределено;
Если НЕ ЗначениеЗаполнено(СтрокаСоединения) Тогда
Сообщить("Не указана строка соединения",СтатусСообщения.Важное);
КонецЕсли;
Connection = Новый COMОбъект("ADODB.Connection");
Catalog = Новый COMОбъект("ADOX.Catalog");
СтрокаПодключения = СокрЛП(СтрокаСоединения);
//СтрокаПодключения = rror_0";
Попытка
Connection.ConnectionString = СокрЛП(СтрокаПодключения);
Catalog.ActiveConnection = СокрЛП(СтрокаПодключения);
Connection.Open(СокрЛП(СтрокаПодключения));
СтатусВозврата = Новый Структура("АДОСоединение,Catalog");
СтатусВозврата.Вставить("Connection",Connection);
СтатусВозврата.Вставить("Catalog",Catalog);
Исключение
#Если Клиент Тогда
Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
#КонецЕсли
КонецПопытки;
ADODBConnection = СтатусВозврата;
Возврат СтатусВозврата;
КонецФункции
//Функция выполняет запрос и возвращает его обход
// Входные параметры: текст запроса; ADOОСоединение
//
Функция ВыполнитьADOЗапрос(ADOОСоединение,ТекстЗапроса) Экспорт
RecordSet = Неопределено;
Попытка
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = ADOОСоединение;
Command.CommandText = ТекстЗапроса;
//Command.CommandType = ТипКоманды("adCmdUnknown");
//RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet = Command.Execute(); //Выполнение и получение набора данных
Исключение
#Если Клиент Тогда
Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
#КонецЕсли
КонецПопытки;
Возврат RecordSet;
КонецФункции
Процедура ЗакрытьADOСоединение(Соединение,флСообщений=Ложь) Экспорт
Если Соединение = Неопределено Тогда
Если флСообщений Тогда
Предупреждение("Ошибка подключения к серверу, программа не готова!");
КонецЕсли;
Возврат;
КонецЕсли;
//нужно закрыть сесии
Connection = Соединение.Connection;
Catalog = Соединение.Catalog;
Попытка
//Connection.Close();
Если флСообщений Тогда
Предупреждение("Инициализация успешно завершена!");
КонецЕсли;
Исключение
Если флСообщений Тогда
Сообщить(ОписаниеОшибки());
КонецЕсли;
КонецПопытки;
КонецПроцедуры
Процедура ВыполнитьЗапрос()
Соединение = ОткрытьADOОСоединение();
Если НЕ Соединение = Неопределено Тогда
ADOСоединение = Соединение.Connection;
КонецЕсли;
Состояние("Ждем выполнение запроса...");
RecordSet = ВыполнитьADOЗапрос(ADOСоединение,вПолучитьТекстЗапроса(Истина));
Попытка
RecordSet.MoveFirst();
ОбъявитьТаблицу(RecordSet);
Пока RecordSet.EOF() = 0 Цикл
Состояние("Заполняются данные...");
ОбработкаПрерыванияПользователя();
НовСтр = РезультатТаблица.Добавить();
Для А = 0 По РезультатТаблица.Колонки.Количество()-1 Цикл
НовСтр[А] = RecordSet.Fields.Item(А).Value;
КонецЦикла;
//-- переход на следующую запись основного цикла
RecordSet.MoveNext();
Если ЗаполнятьТаблицуСОбновлением Тогда
ЭлементыФормы.ТаблицаРезультата.СоздатьКолонки();
КонецЕсли;
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
Сообщить("Данные по запросу отсутсвуют или ошибка в запросе!");
КонецПопытки;
Если Не ЗаполнятьТаблицуСОбновлением Тогда
КонецЕсли;
ЗакрытьADOСоединение(Соединение);
ЭлементыФормы.ТаблицаРезультата.СоздатьКолонки();
КонецПроцедуры // ВыполнитьЗапрос()
такой текст запроса, возвращает данные по всем периодам:
select
TabRegOst.PERIOD,
TabRegOst.SP124 As Фирма,
TabRegOst.SP126 As Склад,
TabRegOst.SP125 As Товар,
sum(TabRegOst.SP127) As КвоКонОст
from RG123 As TabRegOst
group by
TabRegOst.PERIOD,
TabRegOst.SP124,
TabRegOst.SP126,
TabRegOst.SP125
PERIOD Фирма Склад Товар КвоКонОст
01.08.2011 1 R8UC0 17Q 1
01.08.2011 1 R9UC0 2A1 2
Такой же код, не возвращает остатка вообще:
WHERE
TabRegOst.PERIOD = CONVERT(DateTime, '20110801',112)
или так:
WHERE
TabRegOst.PERIOD = '20110801'
Помогите...