8.х Неупраляемые формы: НаКлиенте и НаСервере

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sevish, 1 май 2016.

  1. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Добрый день!
    В управляемых формах мне как бы понятно, если перед процедурой указать &НаКлиенте или &наСервере то она будет выполнятся соответствующим образом. При этом с сервера на клиент можно передавать только простые типизированные данные, то есть ТаблицаЗначений мне не передать в качестве возвращаемого значения функции выполненной на сервере.

    А вот как быть с неуправляемыми формами?

    Мне надо: выполнить запрос (функция), вернуть его в вызвавшую процедуру, обработать (то есть поместить в ТЗ с нужными мне преобразованиями), передать полученную ТЗ в другую процедуру, которая выведет данные в ТабличноеПоле.

    Проблема в том, что если запустить этот отчет на (физически) сервере - 39 сек. уходит на формирование, если на рабочей станции (физически не на сервере), то формирование происходит за 2 минуты 32 секунды. Плюс сетка грузится.

    На сколько я понимаю слабое место это возвращаемый результат запроса: тянется не просо ссылка на документ, справочник и т. п., но и весь контекст этих элементов, хотя мне он по сути не нужен, достаточно просто ссылки, чтобы вставить её в расшифровку.

    Поэтому как альтернатива - как доработать запрос, чтобы меньше трафика тянулось? Может это ускорит процесс работы?

    Хотя в идеале перекинуть бы всё &НаСервер.

    Так как правильно использовать эти директивы в неуправляемых формах?
  2. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Вот именно. Доработать запрос!
    В консоли сколько по времени отрабатывает?
    --- Объединение сообщений, 2 май 2016 ---
    Сколько тысяч-мильонов строк в результат попадает? :)
  3. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Вообще я имел ввиду под "доработать" - передавать в результат не ссылки а Бог знает что, чтобы трафик был меньше.
    Как я понял в неуправляемых формах невозможно использовать &НаСервере.
    Вот запрос.
    Загоняю его в управляемые, выполняю отчет который описал выше. Что физически на сервере, что на рабочей станции результат всегда от 35 до 40 сек. (ну не зря же &НаСервере).
    В неуправляемых - более 2х минут.
    Код:
    ВЫБРАТЬ
        СУММА(Проводки.Сумма) КАК Сумма,
        Проводки.Регистратор КАК Регистратор,
        СчетаДт.Ссылка КАК СчетДт,
        СчетаКт.Ссылка КАК СчетКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
                &ДатаНач,
                &ДатаКон,
                Активность = ИСТИНА
                    И Организация В (&Организации)
                    И СчетДт В ИЕРАРХИИ (&СчетДтЗначение)
                    И СчетКт В ИЕРАРХИИ (&СчетКтЗначение),
                ,
                ) КАК Проводки
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                Счета.Ссылка КАК Ссылка,
                Счета.Количественный КАК Количественный,
                Счета.Валютный КАК Валютный,
                КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Субконто.ВидСубконто) КАК КолвоСубконто
            ИЗ
                ПланСчетов.Хозрасчетный КАК Счета
                    ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК Субконто
                    ПО (Субконто.Ссылка = Счета.Ссылка)
           
            СГРУППИРОВАТЬ ПО
                Счета.Ссылка,
                Счета.Количественный,
                Счета.Валютный) КАК СчетаКт
            ПО Проводки.СчетКт = СчетаКт.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                Счета.Ссылка КАК Ссылка,
                Счета.Количественный КАК Количественный,
                Счета.Валютный КАК Валютный,
                КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Субконто.ВидСубконто) КАК КолвоСубконто
            ИЗ
                ПланСчетов.Хозрасчетный КАК Счета
                    ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК Субконто
                    ПО (Субконто.Ссылка = Счета.Ссылка)
           
            СГРУППИРОВАТЬ ПО
                Счета.Ссылка,
                Счета.Количественный,
                Счета.Валютный) КАК СчетаДт
            ПО Проводки.СчетДт = СчетаДт.Ссылка
    ГДЕ
        Проводки.Активность
        И Проводки.ПодразделениеДт = &Подразделение
        И Проводки.СубконтоДт1 В(&Статьи)
    
    СГРУППИРОВАТЬ ПО
        Проводки.Регистратор,
        СчетаДт.Ссылка,
        СчетаКт.Ссылка
    
    УПОРЯДОЧИТЬ ПО
        СчетаДт.Ссылка.Порядок,
        СчетаКт.Ссылка.Порядок,
        Проводки.Регистратор.Дата
    ИТОГИ
        СУММА(Сумма)
    ПО
        СчетДт,
        СчетКт,
    
    Решения с директивами нет?
    --- Объединение сообщений, 2 май 2016 ---
    Строк не миллионы, а по количеству документов, их может быть и 2 тыс. за выбранный период, и 20...
    Эх, было бы как в управляемых, и запрос и обработка и вывод в отчёт - всё на стороне сервера :(
  4. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    С обычным приложением не в курсе. Есть вариант - написать процедуру формирования в отдельном общем модуле с флажком сервер.
    Но не уверен, что это будет действительно серверная процедура.

Поделиться этой страницей