#0
by DEVIce
Я в шоке. Не могу заставить это чудо отсортировать выборку если в ней есть левое соединение. Причем если соединения нет, то сортирует только по возрастанию. Попытка отсортирвать по убыванию приводит к ошибке транзакции no wait. А отсортировать очень надо, потому что "умные" товарищи в 1С запретили таблицы значений в тонком клиенте, а писть сортировку самому - как-то по костыльски получается.
#1
by DEVIce
Пример запроса: SELECT Invoices.InvNo as InvNo, Invoices.DepNo as DepNo, Invoices.ItemDiscount as SkidkaIzd, Invoices.DopDiscount as SkidkaAcc, Invoices.IzdAmount as SummaIzd, Invoices.AccAmount as SummaAcc, Invoices.WrkAmount as SummaRbt, Invoices.Amount as SummaInv, Invoices.Ratio as Kurs, Clients.ClName as Klient, Clients.ClPhone as KlientTel FROM Invoices LEFT JOIN Clients ON (Clients.ClNum = Invoices.ClNum AND Clients.ClDep = Invoices.DepNo) WHERE (Invoices.InvN = " + стрСчет + " AND Invoices.DepNo = " + стрОтдел + ") Куда уж проще.
#2
by Ненавижу 1С
1. сортировать можно ТЗ на сервере 2. какая версия Firebird? 3. сколько данных в таблице? 4. если через внешние источники, то может 1С тупо неправильно для FB генерит запрос?
#4
by DEVIce
Любые попытки запихнуть в него order by приводит к ошибке транзакции no wait. Причем DSN как раз настроен на только чтение и без ожидания.
#5
by DEVIce
. 1. Ага, а потом результат сортировки на клиента надо вернуть однако. 2. 1.5 3. В самой таблице до фига, в примере на котором проверяю выборка возвращает 4 строки 4. Делаю через COMОбъект . Это без сортировки, но попытка воткнуть сортировку приводит к проблемам.
#6
by DEVIce
Похоже что все придется гнать на сервер и на нем самом настраивать DSN и доступ до сервера Firebird.
#8
by DEVIce
. Число там. Конкретно это запрос работает. В транзакцию валится запрос: SELECT Invoices.InvNo as InvNo, Invoices.DepNo as DepNo, Invoices.ItemDiscount as SkidkaIzd, Invoices.DopDiscount as SkidkaAcc, Invoices.IzdAmount as SummaIzd, Invoices.AccAmount as SummaAcc, Invoices.WrkAmount as SummaRbt, Invoices.Amount as SummaInv, Invoices.Ratio as Kurs, Clients.ClName as Klient, Clients.ClPhone as KlientTel FROM Invoices LEFT JOIN Clients ON (Clients.ClNum = Invoices.ClNum AND Clients.ClDep = Invoices.DepNo) WHERE (Invoices.InvN = " + стрСчет + " AND Invoices.DepNo = " + стрОтдел + ") ORDER BY Invoices.InvNo
#9
by DEVIce
Причем валится всегда, даже если в базе нет никого больше. Если убрать левое соединение, то начинает работать, но только по возрастанию, с параметром DESC снова ничание валиться. Чертовы версионники. :)
#11
by DEVIce
. Какая разница? Запрос поедет через КОМ или через внешний источник от 1С? Запрос выполняется сервером в итоге который находится черте где вообще.
#13
by MMF
бред какой-то. Проблемы либо в тебе, либо в настройках источника данных. Поставь IBExpert и выполни запрос в нем - увидишь, что никаких проблем с левым соединением нет
#14
by Defender aka LINN
"Ага, а потом результат сортировки на клиента надо вернуть однако." - куда и зачем вернуть?
#16
by H A D G E H O G s
Но я помогу ему, не дружащему с СП. ДанныеФормыСтруктураСКоллекцией.Сортировать (FormDataStructureAndCollection.Sort) ДанныеФормыСтруктураСКоллекцией (FormDataStructureAndCollection) Сортировать (Sort) Синтаксис: Сортировать(<Колонки>, <ОбъектСравнения>) Параметры: <Колонки> (необязательный) Тип: Строка. Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее. <ОбъектСравнения> (необязательный) Тип: Строка; СравнениеЗначений. Объект для сравнения элементов, либо имя типа объекта для сравнения. Если объект сравнения или имя типа не задано, сравнение выполняется по следующим правилам: элементы, чьи типы не совпадают, сравниваются по коду типа; элементы простых типов сравниваются по значению; элементы остальных типов сравниваются по строковому представлению. Примечание: объекты для сравнения элементов недоступны на клиенте, поэтому там необходимо задавать имя типа объекта. Описание: Сортирует коллекцию в соотвествии с указанными правилами сортировки. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. Вызов метода выполняет обращение к серверу.
#17
by H A D G E H O G s
Вызов метода выполняет обращение к серверу... Походу он все же отправит "ТЗ" на сервер.
#20
by el-gamberro
Дык кто мешает выгрузить коллекцию в ТЗ, отсортировать и обратно загрузить? Просто метод делает это все одним движением
#24
by DEVIce
. Версией сервера руля не я, приходится работать с тем что есть. . Согласен, хрень какая-то, IBExpress почему-то не дает возможности запросы делать, кноки эти погашены. . Да уже пересмотрел концепцию, теперь сортировка уже не нужна и плюс к этому выполняться модули будут на сервере, но вопрос остался интересным. . Так и есть, было решено, что на север будут установлены дрова и доступ к серверу скуля. Опять же это не мой каприз - работаю с тем что есть. И все же ближе к вопросу. Что же это могет быть, что элементарнейшую сортировку скуль делает только в идеальных условиях.
#27
by Diversus
Нет FireBird не УГ это точно... Сама СУБД достаточно мощная и многое может. По производительности тоже как бы все нормально. Видел даже программу, в которой ЖЭУ рассчитывает начисления за квартиры в городе с населением в 150 тыщ человек и кстати в качестве СУБД была FireBird. Так что не надо гнать... А лучшего инструмента с базами чем IBExpert я вообще не видел и тот же MS SQL Server Managment Studio нервно курит в сторонке.
#28
by DGorgoN
Я лично знаю что на пне-1 серверном у нас в электросбыте рассчитывается весь город и все подрядчики и субподрядчики это больше 700 000 контрагентов. База mysql. И чо собственно?
#33
by DEVIce
. Пробовал, ничего не меняется :) . У меня какая-то странная версия, неактивны кнопки позволяющие запрос выполнить. . Воооот, про это дело читал, но так и не понял как до этих параметров достучаться.
#34
by DEVIce
. В самом источнике данных, который и указывается в строке подключения, стоит READ и NOWAIT.
#38
by Jofa
Я тоже думал что птица не робит не фига а потом оказалась что руки не из того места растут ..)
#40
by Torquader
Таки попробовать задать план выполнения запроса. Кроме того, как можно выполнять запрос с сортировкой с конца, в режиме выборки сразу - всё равно надо сначала всё перебрать, а потом выполнять ORDER или нужно указывать, какой индекс можно использовать для ORDER, если, конечно, он есть. Птичка, она совсем другая - она умеет то, что другие не умеют - и, соответственно, наоборот.
#41
by DEVIce
. Смотри . Настроен внешний источник данных. . "Кроме того, как можно выполнять запрос с сортировкой с конца, в режиме выборки сразу - всё равно надо сначала всё перебрать" - ЧЕ? :)
#42
by Torquader
Чтобы сервер мог выполнить сортировку, нужно, чтобы по этому полю был индекс и его можно было использовать в запросе - иначе запрос нужно выполнить до конца, чтобы потом можно было выполнить сортировку результата.
#43
by DEVIce
. Что значит "выполнить запрос до конца"? Да и какая мне разница, по индексу отсортируется или пройдет по всей таблице и отсортируется, ORDER BY команда древняя и почему на простейшем запросе у файрберда проблема с ней мне не понятно.
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Проблема с запросом к FireBird Через ADODB
- 1С Умеет? в форме документа разместить две табличные части.
- Firebird и 1c
- Выполнять условие в запросе если выполняется др. условие
- Запрос к базе firebird из 1С
- Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2
- Кто умеет просматривать временные таблицы в больших запросах?
- Можно ли в СКД сделать 2 запроса? второй выполнять используя параметр из 1го?
- Кто-нибудь подключался из 1С к базе firebird?
В этой группе 1С
- СКД. Программно изменить текст схемы компоновки данных.
- Отличаются ли запросы?
- форма СФ от 26 декабря 2011 № 1137
- отчет ОборотноСальдоваяВедомостьПоСчету
- база данных не найдена в сервере баз
- Роль "Только просмотр" в УПП ??
- v7: Периодические реквизиты: история изменения (1С++)
- Ограничения прав доступа на уровне записей для УНФ нет? Кто с УНФ дело имел?
- Как провести платежку без указания зарплатной ведомости
- Внешняя печатная форма Счет-Фактура выданный1137
- Перенос данных из зик 7.7 в зик 8
- Не работает COMconnector
- Как найти регистраторы Регистра через Метаданные
- Пара вопросов для тру Ай-Ти )
- Почему табличная часть не растягивается вместе с документом?
- 1c создание запроса в объекте и передача его в 1с
- Возможно ли заблокировать настройки панели разделов, навигации и тд. в УТ11
- Свертка базы БГУ
- v8: Проблемы с 1С 8.2.14.540 х64 + windows 2008r2
- Отправка почты из 1с как лучше создавать тело письма?