Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 244218 )
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #75 - 16. Ноября 2010 :: 13:48
Печать  
Работает на версии 1.07.018 от 26.09.10 г.
Если устанавливаю версию 1.7.20 от 12.11.10 г. то вываливается эта ошибка Печаль
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #76 - 16. Ноября 2010 :: 14:45
Печать  
Интуитивно, точнее методом тыка нашел строку, которая вызывает данную ошибку, точнее может и не вызывает, но ее можно обойти:

Строка 5683 это в Функции РегистрОстаткиОбороты_DBF(ВекторВыражения)

СтрПериодТаблицы = "case when datetable.start_of_period < :НачалоПериода then :НачалоПериода else datetable.start_of_period end";

В таком варианте вываливается ошибка.

Если вернуть то что было в версии 1.07.018, точнее там конечно такой строки не было, но было в строке 5706:
select datetable.start_of_period НачалоПериода

Вообщем если я в версии 1.7.20 делаю:
СтрПериодТаблицы = "datetable.start_of_period";

То ошибки нет.

  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #77 - 16. Ноября 2010 :: 15:48
Печать  
Симптом и источник проблемы понятен. Это связано с реализацией возможности дополнения. Исправлю.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #78 - 24. Ноября 2010 :: 20:27
Печать  
Выпущена версия класса 1.7.21 от 25.11.10 г.
Исправлена описанная выше ошибка. Всем брать в топе.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #79 - 01. Декабря 2010 :: 07:10
Печать  
Возникла новая проблема.
В соседней ветки выложили новую версию 1sqlite 1.0.2.4
При ее использовании элементарный запрос:
     Запрос.Текст = "
     |ВЫБРАТЬ
     |      РегОстатки.Склад КАК [Склад $Справочник.Склады]
     |      ,РегОстатки.ЦенаПрод КАК [РозничнаяЦена]
     |      ,РегОстатки.КоличествоОстаток КАК [КонОст]
     |ИЗ
     |      $РегистрОстатки.ОстаткиТМЦ(,
     |       ,
     |      (Номенклатура,Склад,ЦенаПрод),
     |      (Количество),
     |      ) КАК РегОстатки
     |      СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрТовар $nolock
     |      ПО РегОстатки.Номенклатура =  $СпрТовар.ТекущийЭлемент
     |";

Приводит к полному зависанию 1С, помогает только завершение процесса Печаль
При использовании версии 1sqlite 1.0.2.3 - запрос отрабатывается нормально.
  
Наверх
 
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #80 - 01. Декабря 2010 :: 07:12
Печать  
Sserj писал(а) 01. Декабря 2010 :: 07:10:
Возникла новая проблема.
В соседней ветки выложили новую версию 1sqlite 1.0.2.4
При ее использовании элементарный запрос:
     Запрос.Текст = "
     |ВЫБРАТЬ
     |      РегОстатки.Склад КАК [Склад $Справочник.Склады]
     |      ,РегОстатки.ЦенаПрод КАК [РозничнаяЦена]
     |      ,РегОстатки.КоличествоОстаток КАК [КонОст]
     |ИЗ
     |      $РегистрОстатки.ОстаткиТМЦ(,
     |       ,
     |      (Номенклатура,Склад,ЦенаПрод),
     |      (Количество),
     |      ) КАК РегОстатки
     |      СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрТовар $nolock
     |      ПО РегОстатки.Номенклатура =  $СпрТовар.ТекущийЭлемент
     |";

Приводит к полному зависанию 1С, помогает только завершение процесса Печаль
При использовании версии 1sqlite 1.0.2.3 - запрос отрабатывается нормально.


Забыл дописать, возмоно поможет. Запрос без соединения, т.е. :

     Запрос.Текст = "
     |ВЫБРАТЬ
     |      РегОстатки.Склад КАК [Склад $Справочник.Склады]
     |      ,РегОстатки.ЦенаПрод КАК [РозничнаяЦена]
     |      ,РегОстатки.КоличествоОстаток КАК [КонОст]
     |ИЗ
     |      $РегистрОстатки.ОстаткиТМЦ(,
     |       ,
     |      (Номенклатура,Склад,ЦенаПрод),
     |      (Количество),
     |      ) КАК РегОстатки
     |";

Отрабатывается нормально на новой версии 1sqlite 1.0.2.4
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #81 - 01. Декабря 2010 :: 07:31
Печать  
А если написать ЛЕВОЕ соединение?
Покажи текст отладки запроса.
  
Наверх
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #82 - 01. Декабря 2010 :: 08:07
Печать  
leshik писал(а) 01. Декабря 2010 :: 07:31:
А если написать ЛЕВОЕ соединение?
Покажи текст отладки запроса.


     Запрос.Текст = "
     |ВЫБРАТЬ
     |      РегОстатки.Склад КАК [Склад $Справочник.Склады]
     |      ,РегОстатки.ЦенаПрод КАК [РозничнаяЦена]
     |      ,РегОстатки.КоличествоОстаток КАК [КонОст]
     |ИЗ
     |      $РегистрОстатки.ОстаткиТМЦ(,
     |       ,
     |      (Номенклатура,Склад,ЦенаПрод),
     |      (Количество),
     |      ) КАК РегОстатки
     |   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрТовар $nolock
    |      ПО РегОстатки.Номенклатура =  $СпрТовар.ТекущийЭлемент
     |";

Работает отрабатывает нормально.

А вот как выложить что выдается при РежимОтладки = 1 пока не знаю, 1С же сразу зависает намертво. Может можно как то это в файлик выводить, но в доке вроде не увидел такого.
  
Наверх
 
IP записан
 
BlueWind
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Тирасполь
Зарегистрирован: 28. Ноября 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #83 - 03. Декабря 2010 :: 13:05
Печать  
Огромное спасибо vandalsvq за такой чудесный класс! Это весч!! В восторг приводит неописуемый! )

Использую КОП ПрямойЗапрос 1.7.21 25.11.2010, 1с++ 3.2.3.1. База на SQL.

1. Еще в одном месте $БИОстатки давится пробелом:
Код
Выбрать все
ТекстЗапроса = "
|ВЫБРАТЬ *
|ИЗ
|$БИОстатки.Основной(:КонДата~,, (Подразделения, Товары), (Количество, Сумма), ((Субконто1 = :ВыбПодразделение) И (Счет = :ВыбСчет)),)
|КАК Би
|";
 


дает ошибку "В метод необходимо передавать непустые объекты типа метаданных". Если между идентификаторами видов субконто убрать пробел - все нормально. Если вместо (Подразделения, Товары) задать через пробел (Субконто1, Субконто2) - ошибки не возникает.

2. Тот же запрос. КонДата - тип Дата. Хочу получить остатки на конец 31.12.2010. Расчет Бухгалтерских итогов в базе установлен по 4 квартал 2010. $БИОстатки остатков не находит. Кусок из отладчика:
Код
Выбрать все
                ...
		FROM _1SBKTTL bkttl_vt (nolock)
		WHERE (bkttl_vt.DATE = '20110101')
                ...
 


На начало 31.12.2010 (|$БИОстатки.Основной(:КонДата,,......) остатки дает нормально:
Код
Выбрать все
                ...
		FROM _1SBKTTL bkttl_vt (nolock)
		WHERE (bkttl_vt.DATE = '20101001')
                ...
	UNION ALL
                ...
		FROM _1SENTRY AS entry_vt (nolock)
		WHERE (entry_vt.DATE_TIME_DOCID >= '20101231     0     0   ')
		AND (entry_vt.DATE_TIME_DOCID < '20110101     0     0   ')
                ...
	UNION ALL
                ...
		FROM _1SENTRY AS entry_vt (nolock)
		WHERE (entry_vt.DATE_TIME_DOCID >= '20101231     0     0   ')
		AND (entry_vt.DATE_TIME_DOCID < '20110101     0     0   ')
                ...
 



3. И еще вопрос: als и ints файлы для КОП ПрямойЗапрос существуют?
« Последняя редакция: 08. Декабря 2010 :: 21:11 - BlueWind »  
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #84 - 13. Декабря 2010 :: 19:00
Печать  
Странно, почему не работает конструкция
Код
Выбрать все
спСтатусы = СоздатьОбъект("СписокЗначений");
спСтатусы.ДобавитьЗначение("А");
спСтатусы.ДобавитьЗначение("Б");
спСтатусы.ДобавитьЗначение("В");

глПрямойЗапрос.УложитьСписокЗначений(спСтатусы,"#ВыбСтатусы");
глПрямойЗапрос.Выполнить(,"ВЫБРАТЬ С.* ИЗ #ВыбСтатусы КАК С").ВыбратьСтроку();
 



Приходится извращаться:
Код
Выбрать все
тзСтатусы = СоздатьОбъект("ТаблицаЗначений");
тзСтатусы.НоваяКолонка("val","Строка",1);
Для Сч=1 По спСтатусы.РазмерСписка() Цикл
	тзСтатусы.НоваяСтрока();
	тзСтатусы.val = спСтатусы.ПолучитьЗначение(Сч);
КонецЦикла;
глПрямойЗапрос.УложитьТаблицуЗначений(тзСтатусы,"#ВыбСтатусы");
глПрямойЗапрос.Выполнить(,"ВЫБРАТЬ С.* ИЗ #ВыбСтатусы КАК С").ВыбратьСтроку();
 


так работает!
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #85 - 14. Декабря 2010 :: 07:10
Печать  
"УложитьСписокЗначений" не укладывает простые типы, о чем написано в документации.
  
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #86 - 14. Декабря 2010 :: 07:51
Печать  
Хорошо, а почему не работает такая конструкция:
Код
Выбрать все
спСтатусы = СоздатьОбъект("СписокЗначений");
спСтатусы.ДобавитьЗначение("А");
спСтатусы.ДобавитьЗначение("Б");
спСтатусы.ДобавитьЗначение("В");

тзСтатусы = СоздатьОбъект("ТаблицаЗначений");
спСтатусы.Выгрузить(тзСтатусы);
глПрямойЗапрос.УложитьТаблицуЗначений(тзСтатусы,"#ВыбСтатусы");
глПрямойЗапрос.Выполнить(,"ВЫБРАТЬ С.* ИЗ #ВыбСтатусы КАК С").ВыбратьСтроку();
 


  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #87 - 16. Декабря 2010 :: 09:47
Печать  
Потому что не надо так делать, вот выгрузил, дай колонке имя и тип, тогда только запихивай в объект Улыбка. Он капризный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #88 - 10. Января 2011 :: 22:42
Печать  
Выпущен новый релиз:

1.7.22 от 11.01.11 г.
- Исправлена ошибка при подготовке ВТ БИОстатки если дата снятия остатков находилась за пределами точки расчета бухгалтерских итогов, а также без указания параметра «КонецПериода».
- Исправлена ошибка при подготовке ВТ БИОбороты, иногда возможно неоптимальное построение запроса.
- Исправлена документация. Добавлен общий совет для использования виртуальных таблиц.

ВНИМАНИЕ: при построении запросов с использованием временных таблиц, у которых существуют параметры, предусматривающие перечисления через запятую, рекомендуется:
- одно значение писать без обрамления в скобки
- два и более значения писать только в скобках.
Например: БИОстатки(,,Субконто1) или БИОстатки(,,(Субконто1, Субконто2)).
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #89 - 13. Января 2011 :: 22:41
Печать  
Вышла новость и ни одного коммента Улыбка)) это верный признак что разработка подошла к логическому завершению.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 ... 51
ОтправитьПечать