|   |   | 
| 
 | Где хранится таблица значений? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Darchick 12.10.15✎ 07:31 | 
        Добрый день! Подскажите пожалуйста где физически во время обработки хранится Таблица значений в клиент-серверном варианте. На сервере базы данных или на сервере 1С:Предприятия?  В оперативной памяти, кэше или еще где-то? Не могу найти информацию по этому поводу.     | |||
| 1
    
        jurassic 12.10.15✎ 07:31 | 
        в памяти     | |||
| 2
    
        Darchick 12.10.15✎ 07:32 | 
        В памяти сервера 1С?     | |||
| 3
    
        VladZ 12.10.15✎ 07:34 | 
        Правильный ответ: там! :)     | |||
| 4
    
        GROOVY 12.10.15✎ 07:34 | 
        На серевере, в озу. если квота вышла то на харде в темпах.     | |||
| 5
    
        ЧеловекДуши 12.10.15✎ 07:38 | 
        (0) Если про реквизит Формы. То на клиенте.
 Если про то, что обрабатывается по директиве "&НаСервере", то все перемещается на Сервер и обрабатывается на сервере :) Вообще все это как-то не оптимально, реализовано. Почему нельзя объявить реквизиты формы, которые не надо перемещать на сервер. Или делать это выборочно, по списку :) | |||
| 6
    
        jurassic 12.10.15✎ 07:40 | 
        (5) а что, уже нельзя?     | |||
| 7
    
        GROOVY 12.10.15✎ 07:41 | 
        (5) На клиенте не хранится ТЗ. Там есть часть сериализованных данных.     | |||
| 8
    
        GROOVY 12.10.15✎ 07:42 | 
        (5) И на клиенте вообще ничего не хранится, это, по сути, браузер.     | |||
| 9
    
        Darchick 12.10.15✎ 07:44 | 
        (4) Теоретически я так и думала, а вот практически при выполнении кода две конфигурации, расположенные на разных серверах БД, но исполняемые на одном сервере 1С дают разное время 
 код (упрощенно) &НаСервере Процедура ВыполнитьЗапросНаСервере() Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ВнутренниеДокументы.Ссылка |ИЗ | Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы" ; ТЗ=Запрос.Выполнить().Выгрузить(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Для каждого стр из ТЗ цикл а1=стр.ссылка; конеццикла; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Время=(Время2-Время1)/1000; Сообщить(Время); КонецПроцедуры Данные абсолютно одинаковые | |||
| 10
    
        GROOVY 12.10.15✎ 07:47 | 
        Darchick, для чистоты эксперимента замеряйте без контекста и с перезапуском сервера.
 Ну и "сообщить" на сервере - это атавизм. | |||
| 11
    
        jsmith82 12.10.15✎ 07:47 | 
        (9) И щито?     | |||
| 12
    
        GROOVY 12.10.15✎ 07:48 | 
        Кстати, нафига запрос в ТЗ выгружать? 1С всячески  рекомендует выборку юзать.     | |||
| 13
    
        Darchick 12.10.15✎ 07:51 | 
        (10) ОК попробую
 (12) Это дает лучшую производительность? | |||
| 14
    
        GROOVY 12.10.15✎ 07:52 | 
        (13) Естественно. Выборка порционна. Обычно за такой код увольняют.     | |||
| 15
    
        jsmith82 12.10.15✎ 07:53 | 
        (12) А почему бы и нет? Удобно вполне. Можно курсор юзать по индексу. Щас-то уже не 640 кб ОЗУ на дворе.     | |||
| 16
    
        jsmith82 12.10.15✎ 07:53 | 
        (14) Фигня это. За это не увольняют, а снижают балл на экзамене по платформе.     | |||
| 17
    
        GROOVY 12.10.15✎ 07:54 | 
        (16) А почему?!
 Коллеги, когда у вас в выборке 20 строк - то пофиг. Когда 20млн - тогда глаза открываются. | |||
| 18
    
        GROOVY 12.10.15✎ 07:56 | 
        ТЗ из запроса = созданию второго (дубля) объекта, не сериализуемого в памяти на сервере. При том, что он уже есть и вполне себе сериализуем.     | |||
| 19
    
        Darchick 12.10.15✎ 07:58 | 
        (17) Полностью согласна, но мне нужно было четко разделить время обращения к БД и исполнения на сервере. Насчет выборки была не уверена, а ТЗ всегда думала что хранится на сервере 1С.     | |||
| 20
    
        Darchick 12.10.15✎ 07:59 | 
        (17) Поэтому результат и удивил     | |||
| 21
    
        jsmith82 12.10.15✎ 08:04 | 
        Причём тут код в (9) и ТЗ на сервере 1с?     | |||
| 22
    
        GROOVY 12.10.15✎ 08:08 | 
        ТЗ на клиенте нет. В принципе.     | |||
| 23
    
        Darchick 12.10.15✎ 08:09 | 
        (21) ТЗ=Запрос.Выполнить().Выгрузить(); Выгружает результат запроса в таблицу значений     | |||
| 24
    
        jsmith82 12.10.15✎ 08:09 | 
        (23) Ну и чо? Две базы на разных серверах СУБД. Код на сервере 1с.     | |||
| 25
    
        jsmith82 12.10.15✎ 08:10 | 
        Груви сказал - ТЗ хранится на сервере 1с в ОЗУ, всё.     | |||
| 26
    
        jsmith82 12.10.15✎ 08:11 | 
        Откуда такие вопросы вообще в (0)? Прям озадачилась. Биты в памяти менять через ассемблер собралась что ли     | |||
| 27
    
        GROOVY 12.10.15✎ 08:15 | 
        (25) Не все. Может упасть на хард.     | |||
| 28
    
        jsmith82 12.10.15✎ 08:16 | 
        (27) Ну, файл подкачки тоже ОЗУ     | |||
| 29
    
        Darchick 12.10.15✎ 08:17 | 
        (26) Нужно сравнить производительность 2 серверов БД. Код слегка переукоротила было примерно вот так:
 &НаСервере Процедура ВыполнитьЗапросНаСервере() Время0 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ВнутренниеДокументы.Ссылка |ИЗ | Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы" ; ТЗ=Запрос.Выполнить().Выгрузить(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Для каждого стр из ТЗ цикл а1=стр.ссылка; конеццикла; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); ВремяЗапроса=(Время1-Время0)/1000; ВремяОбработки=(Время2-Время1)/1000; КонецПроцедуры Изначально предполагалось что времяЗапроса будет отличаться, а времяОбработки останется примерно одинаковым, а вот вышло наоборот. Не могу понять почему | |||
| 30
    
        GROOVY 12.10.15✎ 08:18 | 
        И где тут обработка?     | |||
| 31
    
        GROOVY 12.10.15✎ 08:19 | 
        В коде все делается на сервере, копируется массив данных, непонятно зачем, и перебирается по индексированному полю. В принципе тормозить должно.     | |||
| 32
    
        GROOVY 12.10.15✎ 08:20 | 
        *31 по НЕ индекированному     | |||
| 33
    
        jsmith82 12.10.15✎ 08:23 | 
        (29) Производительность двух серверов БД - окей...
 Делаешь одну обработку и гоняешь её на две базы, что и делаешь Теперь догнал | |||
| 34
    
        jsmith82 12.10.15✎ 08:24 | 
        То бишь запрос у неё одинаково работает, а итерация по ТЗ не одинаково. И она подозревает, что ТЗ хранится в памяти сервера БД     | |||
| 35
    
        jsmith82 12.10.15✎ 08:24 | 
        А количество строк в ТЗ одинаковое?     | |||
| 36
    
        GROOVY 12.10.15✎ 08:25 | 
        Какие все подозрительные. 
 Не проще ли посмотреть, что сервер получает и как хранит? | |||
| 37
    
        organizm 12.10.15✎ 08:27 | 
        эххх, поколение пепси.     | |||
| 38
    
        organizm 12.10.15✎ 08:28 | 
        их бы запустить поработать с ASP.NET глаза бы открылись на мир...     | |||
| 39
    
        jsmith82 12.10.15✎ 08:28 | 
        (32) Без разницы тут. Просто УИД     | |||
| 40
    
        jsmith82 12.10.15✎ 08:28 | 
        (38) А чо там? Я работал в 2008 г. Чото крутое?     | |||
| 41
    
        organizm 12.10.15✎ 08:29 | 
        позволяет понять возможности клиента и сервера, что можно и что нельзя. а то все 1С плохое...     | |||
| 42
    
        gigi789 12.10.15✎ 08:32 | 
        (9) Для такого кода запрос не нужен, достаточно Справочники.ВнутренниеДокументы.Выбрать();     | |||
| 43
    
        gigi789 12.10.15✎ 08:33 | 
        (8) ой-ли. А зачем же позвольте вас спросить гуру мы кеши всякие чистим??     | |||
| 45
    
        H A D G E H O G s 12.10.15✎ 08:37 | 
        Вполне кошерно выгружать запрос в тз. Ведь вы же максимально фильтруете его и на выходе у нас пара сотня строк, не больше. Не так ли Грувви?     | |||
| 46
    
        gigi789 12.10.15✎ 08:37 | 
        (30) Человек смотрит 1) скорость выполнение кастериндексскана
 2) перебор тз Как варик пишет обоснование увеличения опреративы. Типо бла бла добавите 10 гигов и вот этот код начнет выполнятся быстрее. | |||
| 47
    
        NcSteel 12.10.15✎ 08:39 | 
        (45) Пара сотня не критична, миллионы критично     | |||
| 48
    
        jsmith82 12.10.15✎ 08:41 | 
        10 млн доков / 365 дней = 27 доков в день     | |||
| 49
    
        H A D G E H O G s 12.10.15✎ 08:41 | 
        (47) еще раз. Миллионов у вас не должно быть. Никогда.     | |||
| 50
    
        gigi789 12.10.15✎ 08:41 | 
        (45) Еще очень кошерно делать выборку для заполнения тч документа, и не в коем случаи не пользоваться ЗаполнитьЗначенияСвойств(). Ибо тру 1сники зп получают от времени и количества строчек кода.     | |||
| 51
    
        jsmith82 12.10.15✎ 08:41 | 
        *27 тыщ в день     | |||
| 52
    
        NcSteel 12.10.15✎ 08:42 | 
        (49) Почему? А если обмен?     | |||
| 53
    
        User_Agronom 12.10.15✎ 08:42 | 
        (0) У меня тут СП завалялось какое-то. Оттуда: 
 "ТаблицаЗначений (ValueTable) ... Доступность: Сервер, толстый клиент, внешнее соединение. ..." Так что (7) не совсем верно. При работе в обычных формах ТЗ нормально живёт на клиенте. | |||
| 54
    
        jsmith82 12.10.15✎ 08:43 | 
        Причём тут обмен?     | |||
| 55
    
        Провинциальный 1сник 12.10.15✎ 08:43 | 
        (17) Когда у вас в выборке 20 млн строк - то само её существование говорит о том, что запрос написан неверно)     | |||
| 56
    
        NcSteel 12.10.15✎ 08:44 | 
        (54) При том, что для обмена могут потребоваться запросы с выборкой данных     | |||
| 57
    
        NcSteel 12.10.15✎ 08:44 | 
        (55) Ложь     | |||
| 58
    
        Лефмихалыч 12.10.15✎ 08:44 | 
        (49) ни когда не говори ни когда     | |||
| 59
    
        NcSteel 12.10.15✎ 08:44 | 
        (58) +100500
 Поражают крайне критические выводы | |||
| 60
    
        Лефмихалыч 12.10.15✎ 08:45 | 
        вообще. автор занимается хернёй.     | |||
| 61
    
        H A D G E H O G s 12.10.15✎ 08:46 | 
        Автор, ответ на твой вопрос:
 Dbcc cleanbuffers На сервере mssql между тестами | |||
| 62
    
        jsmith82 12.10.15✎ 08:47 | 
        (53) Компиляция прям для клиента?     | |||
| 63
    
        H A D G E H O G s 12.10.15✎ 08:47 | 
        (52) порционные запросы в цикле     | |||
| 64
    
        jsmith82 12.10.15✎ 08:47 | 
        А, ну да     | |||
| 65
    
        Провинциальный 1сник 12.10.15✎ 08:48 | 
        (57) Нет. Язык запросов разрабатывался не для того, чтобы выдавать сырые данные огромного размера. Делать "ВЫБРАТЬ * ИЗ РегистрБухгалтерии.Хозрасчетный" и переборка выборки - еще более неверно, чем выгрузка в ТЗ.     | |||
| 66
    
        gigi789 12.10.15✎ 08:49 | 
        (54) по ком тянем в соседнюю базу данные например. Достаточно удобно запрос выгрузить в тз, тз в строку из строки и вот у вас тз на той стороне.     | |||
| 67
    
        NcSteel 12.10.15✎ 08:50 | 
        (65) Кто тебе сказал, что 20 млн это сырые данные? Самая настоящая выжимка того что надо     | |||
| 68
    
        Лефмихалыч 12.10.15✎ 08:50 | 
        (65) язык-то может и разрабатывался так, но вот только изобретатели всяких форм отчетности типа алкогольной об этом не в курсе, по этому выборки в миллионы строк таки иногда бывают     | |||
| 69
    
        H A D G E H O G s 12.10.15✎ 08:51 | 
        (22) из на клиенте в принципе есть, Грувви.     | |||
| 70
    
        H A D G E H O G s 12.10.15✎ 08:51 | 
        (66) а вот этого делать нельзя.     | |||
| 71
    
        gigi789 12.10.15✎ 08:52 | 
        (66) Согласен с тем что это нужно делать порционо и желательно много поточно.     | |||
| 72
    
        NcSteel 12.10.15✎ 08:52 | 
        (63) Не факт, что будет быстрее, а код усложняет....     | |||
| 73
    
        gigi789 12.10.15✎ 08:52 | 
        (70) почему??     | |||
| 74
    
        Провинциальный 1сник 12.10.15✎ 08:52 | 
        (70) Отличнейшее решение, что оно вам не нравится? Сериализация-десериализация позволяет избавиться от кучи проблем типа плавающей точки при передаче рублей.     | |||
| 75
    
        User_Agronom 12.10.15✎ 08:53 | 
        (62) Не понял, что хотел ты сказать. 
 А так да: в обычных формах ТЗ можно сформировать на клиенте и там с ним работать. (22) О сколько нам открытий чудных, готовит просвещения дух! Но это явно не тот случай. | |||
| 76
    
        H A D G E H O G s 12.10.15✎ 08:54 | 
        (74) сериализация идет в неепияеской длины строку, которую надо Каждый раз при сериализации гдето разместить в памяти.     | |||
| 77
    
        Лефмихалыч 12.10.15✎ 08:55 | 
        +(76) при чем - два раза разместить, ведь ее же потом передают из процесса в процесс     | |||
| 78
    
        jsmith82 12.10.15✎ 08:56 | 
        Прерву вашу баталию, миллионы строк вполне живут в ТЗ на сервере и робят
 Если у фирмы миллионы строк, пусть ставят хороший сервер | |||
| 79
    
        H A D G E H O G s 12.10.15✎ 08:59 | 
        (77) ты немного не понял. Реаллокация в памяти происходит каждый раз, когда к строке добавляется другая строка. Как раз, когда готовая строка отправляется в другой процесс ничего страшного.     | |||
| 80
    
        NcSteel 12.10.15✎ 09:04 | 
        (79) Ну и че? ))) пусть хоть переварачивает сервер, от этого он не помрет и отработает....
 Я открою секрет, то даже гото можно использовать. | |||
| 81
    
        DmitrO 12.10.15✎ 09:28 | 
        (27)На сколько я помню, 1С говорила, что на хард может упасть результат запроса, а не ТЗ.     | |||
| 82
    
        Живой Ископаемый 12.10.15✎ 10:37 | 
        (81) А с МайкроСофтом они об этом договорились?     | |||
| 83
    
        Garykom гуру 12.10.15✎ 11:31 | 
        (9) и ни у кого не возникло подозрения что подобный код вполне зависим от сервера бд?
 или хотите сказать что в платформе 1С нет никакой оптимизации, кеширования и прочих многопоточных хр..й? переброска данных полученных запросом с сервера бд, на сервер 1С в ТЗ занимает какое то время возможно сделана оптимизация в платформе что сначала в ТЗ создаются пустые элементы в нужном кол-ве (из запроса), и только потом они в фоне начинают заполнятся данными с сервера бд причем если пытаются прочитать строку из ТЗ которая еще не заполнена, то задержка будет, пока ее с сервера вне очереди не прочитают ЗЫ это просто размышления... | |||
| 84
    
        Фокусник 12.10.15✎ 11:36 | 
        (43) а что, у браузеров нет кешей? ;)     | |||
| 85
    
        hhhh 12.10.15✎ 11:42 | 
        (83) думаете там по одной строке передается? По идее по 5-10 тыс строк должно сразу в одной порции.     | |||
| 86
    
        Necessitudo 12.10.15✎ 11:46 | 
        (25) А разве не в буферном пуле СУБД хранится таблица значений?)     | |||
| 87
    
        gigi789 12.10.15✎ 11:54 | 
        (84) а что разве в них не чего не хранится??     | |||
| 88
    
        Живой Ископаемый 12.10.15✎ 12:14 | 
        2(26) если мы ее помещаем в параметр запроса для ВТ? наверное да, в нем     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |