1CV77 для SQL
03.05.2005
14:47
#1
Вопрос вот в чем, перешел на SQL версию 1С. В DBF версии отчет работал нормально: отчет выводит оплату с расшифровкой выписок и в каждой выписке по платежкам. Оплату я вытягиваю с помощью бухгалтерского запроса, а реквизиты выписки с помощью обыкновенного запроса. Так вот, в SQL версии бухгалтерский запрос срабатывает, а тот внутренний, обыкновенный запрос нет. Может кто подскажет, что может быть? В отладчике проверял не срабатывает группировка по реквизиту выписки (возвращает 0).
03.05.2005
18:23
#2
"Попробуй перед Запрос.Выполнить() написать:
Запрос.ВключитьSQL(0);
Должно помочь, если говоришь, что в dbf работает.
"
Запрос.ВключитьSQL(0);
Должно помочь, если говоришь, что в dbf работает.
"
04.05.2005
06:18
#3
Не все конструкции запроса которые работают в dbf работают в sql. Покажи запрос скажим что и как переписать
04.05.2005
09:00
#4
Спасибо, конструкция Запрос.ВключитьSQL(0) помогла, но все же не понятно почему он не работает когда SQL запрос включен.
04.05.2005
09:01
#5
"вот модуль:
Процедура Сформировать_Колонки(Ит, Таб, Стр)
Перем Запрос, ТекстЗапроса,Пер, Счет,Контра;
Таб.ВывестиСекцию(Стр+"|Начало");
Ит.ВыбратьСчета(1);
Запрос = СоздатьОбъект("Запрос");
Пока Ит.ПолучитьСчет() = 1 Цикл
Таб.ПрисоединитьСекцию(Стр+?(Контр = 1,"|Счет","|Счет1"));
КонецЦикла;
Таб.ПрисоединитьСекцию(Стр+?(Контр = 1,"|Итог","|Итог1"));
Если Стр = "Период" Тогда
Пер = Ит.НачДата;
Контра = Ит.Субконто();
Счет = Ит.Счет;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с Пер по Пер;
|Обрабатывать НеПомеченныеНаУдаление;
|КоррСчет = Документ.Выписка.КоррСчет;
|Субконто1 = Документ.Выписка.Субконто1;
|Приход = Документ.Выписка.Приход;
|Расход = Документ.Выписка.Расход;
|ТипыДоков = Документ.Выписка.ТипыДоков;
|Номер = Документ.Выписка.Номер;
|ДатаДока = Документ.Выписка.ДатаДока;
|ПервДок = Документ.Выписка.ПервичныйДокумент;
|НомерПП = Документ.Выписка.НомерДокВходящий;
|ДатаПП = Документ.Выписка.ДатаДокВходящий;
|Функция ИтогПриход = Сумма(Приход);
|Функция ИтогРасход = Сумма(Расход);
|группировка Номер;
|Условие(Субконто1 в Контра);
|"//}}ЗАПРОС
;
Если Контр = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(Приход>0);";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|Условие(Расход>0);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Номер") = 1 Цикл
общномер = ПолучитьПустоеЗначение("Строка");
общНомер = Строка(Запрос.типыДоков)+" №"+ СокрЛП(Запрос.Номер) + " от "+СокрЛП(Запрос.ДатаДока) + " (п/п №"+СокрЛП(Запрос.НомерПП) + " от "+СокрЛП(Запрос.ДатаПП)+")";
Таб.ВывестиСекцию("СтрОплаты|Начало");
Таб.ПрисоединитьСекцию("СтрОплаты"+?(Контр = 1,"|Счет","|Счет1"));
Таб.ПрисоединитьСекцию("СтрОплаты"+?(Контр = 1,"|Итог","|Итог1"));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбСубконто1, 1);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ?(Контр = 1,"62,76.5,76.55","60,76.5,76.55"), "51,52",, 2, "День", "С");
Таб.ВывестиСекцию("Заголовок");
Сформировать_Колонки(Ит, Таб, "Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
Сформировать_Колонки(Ит, Таб, "Субконто1");
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
Сформировать_Колонки(Ит, Таб, "Период");
КонецЦикла;
КонецЦикла;
Сформировать_Колонки(Ит, Таб, "Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","""");
КонецПроцедуры
Процедура ПриОткрытии()
ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();
Контр = 1;
КонецПроцедуры "
Процедура Сформировать_Колонки(Ит, Таб, Стр)
Перем Запрос, ТекстЗапроса,Пер, Счет,Контра;
Таб.ВывестиСекцию(Стр+"|Начало");
Ит.ВыбратьСчета(1);
Запрос = СоздатьОбъект("Запрос");
Пока Ит.ПолучитьСчет() = 1 Цикл
Таб.ПрисоединитьСекцию(Стр+?(Контр = 1,"|Счет","|Счет1"));
КонецЦикла;
Таб.ПрисоединитьСекцию(Стр+?(Контр = 1,"|Итог","|Итог1"));
Если Стр = "Период" Тогда
Пер = Ит.НачДата;
Контра = Ит.Субконто();
Счет = Ит.Счет;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с Пер по Пер;
|Обрабатывать НеПомеченныеНаУдаление;
|КоррСчет = Документ.Выписка.КоррСчет;
|Субконто1 = Документ.Выписка.Субконто1;
|Приход = Документ.Выписка.Приход;
|Расход = Документ.Выписка.Расход;
|ТипыДоков = Документ.Выписка.ТипыДоков;
|Номер = Документ.Выписка.Номер;
|ДатаДока = Документ.Выписка.ДатаДока;
|ПервДок = Документ.Выписка.ПервичныйДокумент;
|НомерПП = Документ.Выписка.НомерДокВходящий;
|ДатаПП = Документ.Выписка.ДатаДокВходящий;
|Функция ИтогПриход = Сумма(Приход);
|Функция ИтогРасход = Сумма(Расход);
|группировка Номер;
|Условие(Субконто1 в Контра);
|"//}}ЗАПРОС
;
Если Контр = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(Приход>0);";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|Условие(Расход>0);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Номер") = 1 Цикл
общномер = ПолучитьПустоеЗначение("Строка");
общНомер = Строка(Запрос.типыДоков)+" №"+ СокрЛП(Запрос.Номер) + " от "+СокрЛП(Запрос.ДатаДока) + " (п/п №"+СокрЛП(Запрос.НомерПП) + " от "+СокрЛП(Запрос.ДатаПП)+")";
Таб.ВывестиСекцию("СтрОплаты|Начало");
Таб.ПрисоединитьСекцию("СтрОплаты"+?(Контр = 1,"|Счет","|Счет1"));
Таб.ПрисоединитьСекцию("СтрОплаты"+?(Контр = 1,"|Итог","|Итог1"));
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбСубконто1, 1);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ?(Контр = 1,"62,76.5,76.55","60,76.5,76.55"), "51,52",, 2, "День", "С");
Таб.ВывестиСекцию("Заголовок");
Сформировать_Колонки(Ит, Таб, "Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
Сформировать_Колонки(Ит, Таб, "Субконто1");
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
Сформировать_Колонки(Ит, Таб, "Период");
КонецЦикла;
КонецЦикла;
Сформировать_Колонки(Ит, Таб, "Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","""");
КонецПроцедуры
Процедура ПриОткрытии()
ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();
Контр = 1;
КонецПроцедуры "
Читают тему
(гостей: 1)