Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Особенности сортировки в POSTGRE SQL
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Администратору 1С / Системному администратору / Администратору баз данных > Администрирование и настройка серверов баз данных
onsamuy
Раньше организация работала на MS SQL, после перехода на бд POSTGE вылезла проблема - в результате запроса "путаются" строки табличных частей документов. Первый раз такая проблема вылезла в документе НалоговаяНакладная, модуль менеджера, процедура

Процедура ПроизвестиУстановкуНомерСтрокиНН(Объект) Экспорт
    
    Перем СтруктураШапкиДокумента;
    Перем ТаблицаНоменклатуры, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА;
    
    УстановитьПривилегированныйРежим(Истина);

    Если Объект.РеквизитыНомерСтрокиННАктуальны Тогда
        Возврат;
    КонецЕсли;
    
    // Подготовим таблицы
    Отказ = Ложь;
    СтруктураШапкиДокумента = Объект.ПодготовитьСтруктуруШапкиДокумента(Отказ);
    Объект.ПодготовитьТаблицы(СтруктураШапкиДокумента, ТаблицаНоменклатуры, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА);

    // Загрузим все таблицы (кроме тары) в одну таблицу
    ОбщегоНазначенияБПВызовСервера.ЗагрузитьВТаблицуЗначений(ТаблицаПоУслугам, ТаблицаНоменклатуры);    
    ОбщегоНазначенияБПВызовСервера.ЗагрузитьВТаблицуЗначений(ТаблицаПоОС      , ТаблицаНоменклатуры);    
    ОбщегоНазначенияБПВызовСервера.ЗагрузитьВТаблицуЗначений(ТаблицаПоНМА      , ТаблицаНоменклатуры);    
    
    Если ТаблицаНоменклатуры.Количество() = 0 Тогда
        Объект.РеквизитыНомерСтрокиННАктуальны = Истина;
        Возврат;
    КонецЕсли;
    
    ТаблицаНоменклатуры.Сортировать("НомерСтрокиТЧ ВОЗР");//БС()
    
       ...................
    
КонецПроцедуры // ()


Решил проблему принудительной сортировкой таблицы значений ТаблицаНоменклатуры.Сортировать("НомерСтрокиТЧ ВОЗР");//БС() . Но сейчас вылезла проблема с Приложением2.
Можно конечно вставлять костыли до бесконечности, но хотелось бы раскопать, в чем проблема smile.gif))
TohaMonster
Гм. Могу предположить "по приборам" (не зная Конфигурации), что проблему можно решить таким образом:
Объект.ПодготовитьТаблицы() вызывает ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(), где формируется запрос к документу
...
    Запрос.Текст = "ВЫБРАТЬ
                    | Док.НомерСтроки " + ТекстЗапроса + "
                    | ИЗ
                    |      Документ." + ДокументОбъект.Метаданные().Имя + "."+ СокрЛП(ИмяТабличнойЧасти) +
                    " КАК Док
                    |     ГДЕ Док.Ссылка = &ДокументСсылка";
...

Вот если ету конструкцию дополнить
...
                | УПОРЯДОЧИТЬ ПО
                |         Док.НомерСтроки
...
, то, как мне думается, это должно помочь в большинстве документов

А вот о причине такой сортировки при смене СУБД мне трудно судить: знаний не хватает. Если мне не изменяет память, у меня была подобная ситуация после перехода с файловой БД как раз на MS SQL. Но в другом запросе УТП. Где-то в УправленииЗапасами емнип. Но смысл был тот же самый: вылечилось сортировкой по НомеруСтроки
Batchir
У нас нет проблем с сортировками на POSTGRE, админы вроде средствами СУБД с сортировками поигрались и всё.
onsamuy
TohaMonster @ Сегодня, 14:25 необходимо зарегистрироваться для просмотра ссылки ,

да, именно до такого я додумался час назад smile.gif. Но хотелось бы чтобы еще "на берегу" все работало как надо.

Batchir @ Сегодня, 14:29 необходимо зарегистрироваться для просмотра ссылки ,

буду признателен, если напишете как. Могу быть даже признателен материально smile.gif
andr_andrey
onsamuy @ Вчера, 16:31 необходимо зарегистрироваться для просмотра ссылки ,
Постгрес брали с сайта 1С? Если нет - возьмите оттуда.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.