#0
by Gamm
Собственно говоря непонятно, делаешь обмен с внешними системами завязанный на ГУИД а потом для сверки данных приходится извращаться так-как в 1С его в запросе никак не получишь.
#2
by Gamm
Конструкторы: Из строки Описание: Предназначен для создания и хранения глобального уникального идентификатора GUID.
#5
by Александр_Тверь
В запросах, когда мы выводим ссылку на объект мы фактически и получаем гуид, который после система автоматически преобразует
#6
by Александр_Тверь
он бывает нужен. Например при организации обмена данными. Или для восстановления некого объекта на который имеются ссылки в базе данных, но который фактически удален.
#7
by Gamm
Я же написал что использую ГУИД в обмене, и для всевозможных сверок, и получения информации из сторонних систем было бы чрезвычайно удобно работать с ГУИДом в запросе, а не заморачивать с перебором полученных объектов в цикле.
#9
by Александр_Тверь
сори, я прочитал только заголовок :))) а то что там еще сообщение даже не обратил внимание.
#10
by Gamm
Просто странно получается что в системе нет нормального доступа к ключевому полю таблиц.
#13
by Gamm
Заморочка в том что когда у меня за неделю 100000 документов, то мне гораздо удобнее из одного запроса получить только документы с расхождениями, чем в цикле проверять каждую строку.
#16
by H A D G E H O G s
Удобнее - да. Быстрее - отнюдь. Да, поиск в цикле. Да, поиск 2 раза. Однако поиск по индексу. Однако, результат поиска кэшируется сервером SQL. Но, если не терпится - ADO в руки-ноги.
#17
by toypaul
основы СУБД подучить надо. что быстрее - миллион записей тащить на сервер и потом по каждой записи запрос делать или этот миллион сразу на сервере обработать и получить на выходе всего лишь 2 записи?
#18
by PR
1. Можно GUID добавить в каждый объект и перед записью нового заполнять. 2. Можно запрос делать по временной таблице, которая получилась из запроса и потом была дополнена гуидами.
#19
by Регистратор
Заведи реквизит строковый и перед записью пиши туда идентификатор, всего делов то. А ждать что 1с это сделает можно ооочень долга
#20
by H A D G E H O G s
На какой сервер, что ты собрался тащить? Какие записи? Не путай. Уот, еще 2 товарисча. Что быстрее, скажите мне. Поиск по 16 байтному индексированному значению, или по 72-х байтному индексированному? А еще расскажите мне, товарисчи, как в SQL храняться строки? Ууу? Чем временная ТЗ будет отличаться принципиально от ?
#21
by H A D G E H O G s
Если критично быстродействие - делай через ADO. Не забывай только про инверсию GUID в 1С и в SQL.
#22
by Регистратор
ну конечно проходить результат запроса и обрабатывать каждую строку в табличке значений порождая короткий запрос на каждую строку например 10**6 раз намного лучше
#24
by PR
По поводу отличий могу сказать, что в общем-то ничем, лучше всего первый вариант конечно же. Это как и с типом документа, когда в журнале нет возможности сделать отбор по нескольким типам документов, а хочется, и приходится делать в каждом документе реквизит "Тип документа" :))
#26
by H A D G E H O G s
Давай спросим автора, что ему нужно? 1. Автор, у тебя в 1С есть список GUID-ов, допустим строковых и набор условий. И ты хочешь одним запросом получить записи (допустим справочника) согласно этому списку GUID-ов и набору условий? 2. Автор, ты подключаешься к 1С из сторонней проги, через COm и хочешь выполнить запрос и получить список GUID-ов?
#32
by H A D G E H O G s
Ладно, немного направлю свои мысли в нужное русло, а то что - то мистянский разум не думает. Чем циклическое зло ВЫБРАТЬ ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура, ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад, ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток КАК КоличествоБух, ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоУпр отличается от циклического зла: ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование ИЗ Справочник.Номенклатура КАК Номенклатура Номенклатура.Ссылка = &Ссылка Ааа?
#33
by MRAK
по моим ИХМО наблюдениям, еще и объект "Запрос" очень долго создается... переводил одну контору с клиента на файл, некоторые куски кода (да те же внешние печаные формы) раз в 30 медленнее стали работать...
#37
by ptiz
Гон. Вот еще пример: один товарищ, главный 1Сник на своей фирме, утверждает, что объект Запрос много памяти ест, поэтому во всех модулях объявляет одну переменную модуля типа Запрос и её использует. (речь именно об объекте Запрос, а не о результате запроса - но им еще тоже надо умудриться память сожрать)
#38
by PR
А что задумываться-то? :)) Лучше один раз сходить в магазин за двумя кило сахара, если магазин в соседнем районе, чем два раза по кило :)) Да плюс тебя каждый раз будут тормозить менты по пять раз (RLS) :))
#39
by H A D G E H O G s
Да, вот про RLS не подумал. Ладно, объясню свою мысль. Пусть не будет RLS. Вариант 1 будет злом, ибо мы циклически получаем остатки и циклически делаем соединения. Кроме того, есть еще косвенное зло - это служебная информация, отправляемая на сервер приложений, на сервер SQL и обратно. Вариант 2 не будет злом, ибо SQL все равно циклически ищет записи по списку ссылок. Дольше будет тольк из за большего объема служебной информации.
#43
by PR
Тем, что у тебя выполняется один запрос или несколько, что непонятного? :)) Ты пробовал в SQL напрямую запросы выполнять, без 1С?
#46
by H A D G E H O G s
Выполнялись. Вопрос можно? Вот у меня такое впечатление, что вам сказали, что запрос в цикле - зло, даже пример показали (и пример действительно показал, что запрос в цикле - гораздо медленнее, чем один запрос) и вы приняли это за аксиому. Я не берусь утверждать, что запрос в цикле одинаково быстр, как и запрос по списку. Я прошу вас попытаться подумать и объяснить мне, ПОЧЕМУ запрос в цикле медленней, чем по списку.
#51
by toypaul
я за деньги работаю. а за бесплатно либо ленюсь, либо самообразуюсь, либо делаю интересную/перспективную работу. еще вопросы?
#55
by PR
Да блин, я уже сказал уже. Если коротко, то запрос на SQL-сервере по получению порции данных на 1000 записей делается быстрее, чем два запроса по 500. Быстрее так потому, что требуется не только выполнить запрос, но и выполнить все остальные операции, связанные с этим, то есть соединение с SQL, RLS и прочяя шляпа.
#57
by PR
Да блин, какая скорость поиска, ты о чем вообще? Я же написал все вроде, ДВА запроса по 500 записей будут медленнее, чем ОДИН на 1000.
#61
by PR
Читай по губам :o) MS SQL Server ДВА запроса подряд отработает медленнее, чем ОДИН, но с выборкой в два раза больше. Почему так работает MS SQL Server можно почитать где-нить, но в любом случае с 1С это никак не связано. А с 1С связано то, что кроме разницы в самом скуле, еще сама 1С будет ДВА раза щемиться к скулю, будет ДВА раза пихать в запрос RLS, будет ДВА раза делать всю кучу действий, связанную с выполнением запроса вместо ОДНОГО. Какую именно кучу действий ты можешь посмотреть в профайлере, если интересно.
#62
by milan
Почитай рекомендации 1С, о том что количество обращений к базе необходимо минимизировать. На курсах в один запрос даже наименование товара тянули, на тот случай если надо будет сообщить о превышении остатка. Если ты конечно доверяешь разработчикам 1С, если нет - напиши свои рекомендации.
#65
by H A D G E H O G s
Ну вот профайлер: Запросец по нашей тематике: Сухой остаток: 577 миллисекунд перебора в цикле против 63 милисекунд единого запрос, из которых 47 миллисекунд на формирование Временной таблицы из массива ссылок, 16 миллисекунд на выборку. Однако. Там же ещ логировалось все профайлером. Для цикла - профайлер сделал дикое число записей (хотя бы просто текста). Поэтому не показатель, ибо теже 16 миллисекунд - это почти квант времени винды. Тем не менее, готов признать, что цикл гораздо медленнее единого запроса. Объяснений от вас я не дождусь, буду читать сам. И на последок, я доволен этой веткой. Сегодня я узнал еще одно заблуждение. Конструкция Код=СсылкаСправочника.Код; читает объект полностью, несмотря на заверение книги "Профессиональная разработка в 1С" про особенности чтения основных реквизитов объектов.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
В этой группе 1С
- Оплата по пластиковым картам и Договор эквайринга
- вот это реально дурдом (про фильм с переводом с русского на украинский)
- v7: Описание типовой конфигурации Зарплата и Кадры 2.3
- 1Cv8.cfu
- литература по упп
- ЗУП - как выгрузить данные в программу "Перечень льготных профессий"
- УПП Декларация по налогу на имущество
- Для чего нужны кластеры серверов 1С?
- количество знаков после запятой в "единицах измерения"
- Округление в ТОРГ-12
- 1C77 + Server 2003: Неудачная попытка создания объекта (com.sun.star.ServiceManager)
- Разработку форм рекомендуется выполнять в разрешении 96 DPI
- Подключение ККМ к 1С
- Проектирование: наложение интерфейсов. как програмно можно поменять интерфейс у пользователя?
- Управление торговлей. Переоценка товара на складе.
- Как для каждого начисления получить срез последних из регистра сведений
- Отчет на базе универсального отчета УТ
- v7: Ошибки при загрузке базы 1С 7.7
- Дерево значений сохранить в excel
- как нажать программно кнопку на форме