Некоторые принципы оптимизации запросов 1С (+SQL)

Публикация № 562352

Разработка - Математика и алгоритмы

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

Сразу к делу.

Я надеюсь, к концу чтения этой публикации у Вас появятся некоторые представления, а если у Вас они есть, то Вы можете не читать дальше, т.к. это весьма субъективный вопрос.

Держите в своей голове несколько принципов написания запросов:

- В маленьких табличках нечего оптимизировать, т.к. SQL сервер в любом случае будет просматривать всю табличку, а 1С не забывает делать один кластеризованный индекс.

- Если вы намерены получить ограниченное количество строк (одну или две), то не забывайте сообщить об этом заранее, добавляя «первые K» и сортировку вдоль отсортированного поля.

- Поиск в отсортированном поле выполняется быстрее, чем в любом другом. Вам нужно соединять таблицы или выбирать из них строки по отсортированным полям (в 1С есть свойство индексирования у реквизитов).

- Старайтесь обходиться левыми соединениями и поднимать вверх таблички с наименьшим количеством строк (оптимизатор SQL сервера будет стараться делать это за Вас, опираясь на статистику, и, конечно, может ухудшить ожидаемое время, если соединений слишком много, ну, скажем, 7 и более).

- Если условий много, то складывайте во временную таблицу небольшой объем нужных строк, отбирая их по индексу. А потом используйте этот небольшой набор, чтобы добавить прочие условия или левые соединения. (Оптимизатор SQL вполне может «напутать» с порядком формирования таких начальных наборов, и ждать придется долго).

- Если есть вложенные запросы и много вычисляемых полей, то старайтесь отложить вычисления на позднее время, когда количество отобранных строк максимально сократится.

- Добавляйте требуемые индексы к реквизитам, значения которых редко повторяются. Поиск хорошо «разгоняется» по таким полям.

Пути оптимизации запросов:

- Добавление и удаление индексов. Это позволит ускорить поиск и отбор нужных строк.

- Изменение текста запросов. Это позволит изменить стратегию отбора нужных строк из таблиц.

Модель поведения программиста при оптимизации запросов.

Обычно проблема появляется резко и без подсказок. А нам нужно быстро собрать сведения.

1) Работа не клеится, когда кто-то стоит над душой. Поэтому открываем Management Studio, подключаемся к нашей базе и нажимаем волшебную комбинацию <Ctrl>+<Alt>+A. В результате откроется окно, где мы для виду будем тыкать на кнопочки с умным видом, пока нас не оставят в покое, решив, что мы уже работаем. Это лучше потренировать заранее.

2) Проверим для начала, не ждут ли пользователи друг друга:

/*Кто кого блокирует */
SELECT
         pr1.status,
         pr1.waittime                    as [Сколько ждем?],
         pr1.waitresource         as [Что ждем?],
         pr1.waittype                    as [Тип ожидания],   
         DB_NAME(pr1.dbid)        AS [DB],
      pr1.spid                          AS [spID ждущего],
      RTRIM(pr1.loginame)  AS [Login ждущего],
         RTRIM(pr1.hostname)      AS [Компьютер ждущего],
         pr1.program_name         AS [программа ждущего],
      pr2.spid                          AS [spID виновника],
      RTRIM(pr2.loginame)  AS [Login виновника],
          RTRIM(pr2.hostname)     AS [Компьютер виновника],
      pr2.program_name            AS [программа виновника],
      txt.[text]                  AS [Запрос виновника],
         pr1.*

FROM   MASTER.dbo.sysprocesses as pr1(NOLOCK)

          left JOIN MASTER.dbo.sysprocesses as pr2(NOLOCK) ON  (pr2.spid = pr1.blocked)

          OUTER APPLY MASTER.sys.dm_exec_sql_text(pr2.[sql_handle]) AS txt

WHERE  pr1.blocked <> 0
--or pr1.hostname='ws-msk-a1573'
--or pr1.spid in (87)

Скажу честно, я давно не сталкиваюсь с блокировками, поэтому не буду касаться здесь деталей.

3) Проверим, не ждут ли пользователи долгие запросы:

/* Список тяжелых запросов */

SELECT TOP 555
       execution_count,
       total_worker_time/(execution_count*1000) AS [Avg CPU Time],
    SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
         ELSE qs.statement_end_offset
         END - qs.statement_start_offset)/2) + 1) AS statement_text,
       pt.query_plan
FROM
       sys.dm_exec_query_stats AS qs

       CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st

          CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS pt

--where st.text like '%dnprefix%Docno>%'

ORDER BY  2 DESC

Этот запрос (в отличие от предыдущего) всегда что-то возвращает. В первой колонке количество запросов, а во второй длительность выполнения (смело округляйте до тысяч, и это будут секунды). Найдите строки с большим количеством в первой колонке и подумайте, могут ли на это жаловаться пользователи, взглянув на время выполнения. Имеет смысл анализировать запросы длительностью большей и близкой к 1 секунде. Третья колонка содержит текст запроса (и его придется искать в 1С, связав имена таблиц в запросе с привычными именами 1С). Четвертая колонка содержит план выполнения запроса, и если Вы его откроете, то узнаете, из каких источников и в каком порядке выбираются данные (есть даже совет, какого индекса не хватает).

3) Разработчиком был программист (хочется об этом мечтать), а пользоваться готовым функционалом дали пользователям, которые преследуют какие-то свои цели. Поэтому часть имеющихся индексов может просто тормозить базу. Это, в первую очередь, индексы на полях, значения которых часто повторяются, или не используемые в запросах индексы:

/* Index Read/Write stats (all tables in current DB) */

SELECT
       OBJECT_NAME(s.[object_id]) AS [ObjectName],
       i.name AS [IndexName],
       i.index_id,
       user_seeks + user_scans + user_lookups AS [Reads],
       user_updates AS [Writes],
       i.type_desc AS [IndexType],
       i.fill_factor AS [FillFactor]
FROM
       sys.dm_db_index_usage_stats AS s

       INNER JOIN sys.indexes AS i ON s.[object_id] = i.[object_id]

WHERE
       OBJECTPROPERTY(s.[object_id], 'IsUserTable') = 1
       AND i.index_id = s.index_id
       AND s.database_id = DB_ID()

       --Укажите анализируемую таблицу (Комментарий в SQL –это «--«)
       --and OBJECT_NAME(s.[object_id]) like '_Reference44'

ORDER BY
       OBJECT_NAME(s.[object_id]),
       writes DESC,
       reads DESC;

Если в поле Read стоит ноль или число значительно меньшее числа в поле Write, то индекс скорее мешает и его лучше убрать. Если Вы сами не можете принять такое решение, то спросите:

/*Возможно не нужные индексы*/
SELECT
       OBJECT_NAME(s.[object_id]) AS [Table Name] ,
       i.name AS [Index Name] ,
       i.index_id ,
       user_updates AS [Total Writes] ,
       user_seeks + user_scans + user_lookups AS [Total Reads] ,
       user_updates - ( user_seeks + user_scans + user_lookups ) AS [Difference]

FROM sys.dm_db_index_usage_stats AS s WITH ( NOLOCK )

       INNER JOIN sys.indexes AS i WITH ( NOLOCK ) ON s.[object_id] = i.[object_id] AND i.index_id = s.index_id

WHERE
       OBJECTPROPERTY(s.[object_id], 'IsUserTable') = 1
       AND s.database_id = DB_ID()
       AND user_updates > ( user_seeks + user_scans + user_lookups )
       AND i.index_id > 1

ORDER BY
       [Difference] DESC ,
       [Total Writes] DESC ,
       [Total Reads] ASC ;

А если не верите мне, то сходите https://technet.microsoft.com/ru-ru/library/jj128029.aspx

 

Очевидные вопросы:

1) Кластеризованный индекс – это отсортированная по каким-то полям сама таблица (а таблица может быть только одна).

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

3) У регистров кластеризованный индекс содержит все измерения в порядке, указанном в конфигурации. А обычный индекс включает реквизит (с сортировкой) и все измерения, т.е. измерения всегда будут задвоены (что увеличивает объем).

4) Поиск в индексе возможен, если указаны все входящие в него поля (и желательно без условий, т.к. SQL допускает только простейшие сравнения в индексах).

5) В плане запроса указано относительное время выполнения операции и сравнительный объем отбираемых данных из источника.

6) Т.к. все отсортировано, то частые изменения предполагают периодическую дефрагментацию. Иначе статистика, накапливаемая сервером, начнет жить своей жизнью, меняя стратегию выборки данных по запросам.

Примечание:

Несмотря на кажущуюся простоту, скоро Вы поймете, что можно оптимизировать бесконечно и бесконечно зарабатывать большие деньги только этим. Удачи!

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 5824 18.11.16 09:38 Сейчас в теме
"Поиск в индексе возможен, если указаны все входящие в него поля".
Точнее все таки будет "Поиск в индексе возможен по набору полей, если они расположены в начале структуры индекса".
sorb; brr; RealEscander; Dem1urg; bulpi; CyberCerber; корум; ture; +8 Ответить
2. Gilev.Vyacheslav 1851 18.11.16 13:28 Сейчас в теме
(0) а можно просто запустить консоль http://infostart.ru/public/556589/ которая сделает весь этот анализ более точно и глубоко
3. Gilev.Vyacheslav 1851 18.11.16 13:30 Сейчас в теме
А если не верите мне, то сходите https://technet.microsoft.com/ru-ru/library/jj128029.aspx

не поверил, сходил по ссылке, не поленился, а там написано:
Не забудьте об периодическом создании отчетов — эта операция может отсутствовать в ежедневной нагрузке. Хотя используемы для отчетности индексы и используются нечасто, их наличие может быть критически необходимым
4. Gilev.Vyacheslav 1851 18.11.16 13:31 Сейчас в теме
- В маленьких табличках нечего оптимизировать, т.к. SQL сервер в любом случае будет просматривать всю табличку, а 1С не забывает делать один кластеризованный индекс.

привет блокировки, сегодня вы все будете ждать маленькую табличку, потому что там скан и нам посоветовали ее не трогать
myjob1c; user596640_Atarasyuk; корум; tormozit; +4 Ответить
5. Gilev.Vyacheslav 1851 18.11.16 13:34 Сейчас в теме
то складывайте во временную таблицу

отличный доклад был на инфостарте про проблемы с временными таблицами на пострессе, можно переосмыслить подход к написанию запросов )
7. starik-2005 2176 18.11.16 15:08 Сейчас в теме
(5) Gilev.Vyacheslav, на "пост стрессе" или "на постгресе"? Как бы вроде одна буква, но столько смыслов разных...

На курсах подготовки к эксперту помимо многого всего (обычно нехорошего) о гилевах, рассказывают еще о том, почему 1С в плане оптимизации запросов учит выносить соединения с подзапросами во временные таблицы - типа 1С-неги тупые и иначе им сложно что-то объяснить. Но 1С-неги помимо соединений с подзапросами как-то автоматически выносят во временные таблицы и все остальное - т.е. даже такую примитивную вещь не в силах освоить. В итоге у чуть более продвинутых товарищей так много интересной работы.
8. Gilev.Vyacheslav 1851 18.11.16 19:55 Сейчас в теме
(7) starik-2005,
На курсах подготовки к эксперту помимо многого всего (обычно нехорошего) о гилевах

тем не менее факты:
фирма 1С купила разработку дизайна 8ки у Егора Гилева https://habrahabr.ru/company/turbomilk/blog/74806/
Евгений Гилев известен обучением
фирма 1С не раз обращалась ко мне (Вячеславу Гилеву) за услугами ЗА ДЕНЬГИ
по производительности у моей команды отзывов по производительности больше чем у подразделения 1С:ЦКТП со всеми франчайзами вместе взятыми

что там себе позволяют отдельные представители 1С на тренингах пусть останется на их совести

1С-неги тупые
если бы это было так, 1С:Предприятие не вытеснило другие другие учетные системы
я знаю очень много талантливых программистов 1С

им сложно что-то объяснить
это скорее больше говорит о том, кто и как обучает
если "зубриловку" 1С:Профессионал заменить практическим экзаменом, проверяющим практические навыки, то гляди и доверия больше было бы )
сами же породили лозунг "Доступно и всерьез"...


Новиков; +1 1 Ответить
9. starik-2005 2176 18.11.16 23:06 Сейчас в теме
(8) да мне, собственно, и так ясно, что кто-то что-то у кого-то покупает. Отрицательно высказывался некий Бурмистров - может ему завидно - не знаю.

По поводу того, что 1С-неги - тупые (разумеется, не все - просто порог входа вроде бы как весьма маленький) - это вполне обоснованное мнение, с другой стороны кодеры на JS не менее тупые (опять же не все, но их в принципе больше на порядок), но они хотя бы ООП осваивают.

Ну и основной месседж, который Вы так и не уловили (видимо, Бурмистров в чем-то тут прав) - это то, что проблема оптимизации запросов решается 1С-негами в большинстве случаев просто через вынесение всего и вся во временные таблицы без какой-либо задней мысли на тему, зачем это вообще надо и какой эффект это дает. Один товарищ - эксперт по скулу - на какой-то международной конфе по скулу сказал, что есть в России программа такая - 1С. Так вот она такое (Т-А-А-А-КОЕ!!!) количество временных таблиц генерит в своих запросах, что он такого нигде и никогда не видел. И что, это программа плохая или 1С-неги? Или вендор из-за тупизны 1С-негов кроме как научить их оптимизировать запросы через временные таблицы ничему не могут? Тогда и вендор - тупой, ибо не может научить, т.е. качественно оказать образовательную услугу?

Ну а экзамены - это в принципе отстой. Всегда можно за сто попыток примелькаться экзаменаторам, и они пожалеют потраченных тобой денег и дадут заветную корочку.
10. Gilev.Vyacheslav 1851 19.11.16 14:47 Сейчас в теме
(9) starik-2005,
Отрицательно высказывался некий Бурмистров
очень сильно сомневаюсь -
он не работает в 1С, не ведет курсы 1С:Эксперт

Ну и основной месседж, который Вы так и не уловили (видимо, Бурмистров в чем-то тут прав) - это то, что проблема оптимизации запросов решается 1С-негами в большинстве случаев просто через вынесение всего и вся во временные таблицы без какой-либо задней мысли на тему, зачем это вообще надо и какой эффект это дает.


наша консоль запросов http://infostart.ru/public/556589/ при вставке во временную таблицу оценивает разумность объема строк и рациональность такого приема и любой программист может проверить свой код
все кто проходит курсы на сайте изучают нашу консоль и учатся ее использовать

что за касается мотивации писать хорошо я уже в (6) ответил, так что это Вы не уловили

Один товарищ - эксперт по скулу - на какой-то международной конфе по скулу сказал, что есть в России программа такая - 1С. Так вот она такое (Т-А-А-А-КОЕ!!!) количество временных таблиц генерит в своих запросах, что он такого нигде и никогда не видел. И что, это программа плохая или 1С-неги?
видать эксперт не до конца эксперт )

Или вендор из-за тупизны 1С-негов кроме как научить их оптимизировать запросы через временные таблицы ничему не могут?

Платформа тоже генерирует временные таблицы не спрашивая программиста 1С. И тут скорее можно говорить что надо те кто судят - делают это поверхностно. Не стоит обсуждать эту тему абстрактно без конкретных примеров.
Даже ms sql server может в плане запроса сделать Table Spool, который просматривает входную таблицу и помещает копию каждой строки в скрытую буферную таблицу, которая находится в базе данных tempdb и существует только в течение времени жизни запроса. Скуль у Вас тоже плохой получается!

Если нужно, создайте отдельную ветку форуме. Не надо автору публикации забивать ветку совсем сторонним.

13. jaroslav.h 19.11.16 22:31 Сейчас в теме
(10) Gilev.Vyacheslav, как ты меня уже достал своей рекламой во многих комментах на разных публикациях, угомонись уже наконец-то
artfa; alest; user596640_Atarasyuk; Новиков; kuzyara; Solovyeff; корум; ture; bpc222; JohnyDeath; starik-2005; +11 Ответить
38. ineshyk 25.11.16 23:34 Сейчас в теме
(10) интересно, как Ваша консоль предугадает план запроса без статистики и решит, оптимальный запрос или нет.


17. Silenser 522 21.11.16 11:23 Сейчас в теме
(8) Gilev.Vyacheslav, В конце прошлого года проходил курс подготовки к эксперту, ни одного плохого слова в ваш адрес не было. Уточню, в рамках официально части курса о ваших инструментах вообще молчали (что понятно, им нужно ЦУП по 80к продавать), а в неофициальной части отзывались нейтрально, как об еще одном инструменте, который не лучше и не хуже, все больше зависит от головы того, кто инструмент применяет.
Gilev.Vyacheslav; +1 Ответить
18. Gilev.Vyacheslav 1851 21.11.16 13:30 Сейчас в теме
(17) Silenser, да, у меня тоже возникли сомнения в достоверности утверждений товарища Sergey Andreev
(11) ture, посты (3) и (4) не по теме? а ну тогда конечно
21. ture 565 21.11.16 13:48 Сейчас в теме
(18) Gilev.Vyacheslav, указанные посты не грамотные. Я не могу закрыть Вам рот, но рекомендую воздержаться от дальнейших высказываний, т.к. они не делают Вам чести как специалисту.
22. Gilev.Vyacheslav 1851 21.11.16 14:08 Сейчас в теме
(21) ture,
указанные посты не грамотные.
а можете раскрыть техническую часть, например для поста 4?
в 1С очень много таблиц с небольшим количеством строк (<1000)
Вы учите:
- В маленьких табличках нечего оптимизировать, т.к. SQL сервер в любом случае будет просматривать всю табличку, а 1С не забывает делать один кластеризованный индекс.

Если взять ЗУП, там практически все таблички "маленькие". Но нам приходится очень часто бороться с не параллельностью расчета ЗП для нескольких организаций.
Тут может быть несколько вариантов: Вы правы, что
(18) Gilev.Vyacheslav, указанные посты не грамотные

а может быть что стоит повнимательней изучить другую точку зрения, вдруг за ней реальный опыт.

Ваш совет хорош для "однопоточных" монопольных сеансов, когда про параллельность думать не надо. Но в реальной жизни все сложнее. Иногда нужно пожертвовать потоковой скоростью ради параллельности.

24. ture 565 21.11.16 15:12 Сейчас в теме
(22) Gilev.Vyacheslav, Если я Вас задел, прошу прощение. Давайте больше не будем так рассуждать.
26. Gilev.Vyacheslav 1851 21.11.16 17:16 Сейчас в теме
(24) ture, т.е. сказать по делу нечего
25. starik-2005 2176 21.11.16 15:22 Сейчас в теме
(17) времена меняются, да и профессионала по тех.вопросам в прошлом году не было - сдавали сразу эксперта. Теперь все иначе: http://1c.ru/rus/partners/training/uc1/course.jsp?id=436

А по поводу продуктов от Гилева, то мне лично вполне по душе тес, остальными не пользуюсь - необходимости нет. Простота теста Гилева и возможность посмотреть табличку результатов, сравнив ее с другими тестируемыми конфигурациями, вполне помогает оценить уровень в цепочке производительности одного потока (сервер 1С - сервер СУБД). Но вот какие-то выводы сделать, куда копать - увы и ах.
27. ture 565 21.11.16 17:27 Сейчас в теме
(25) starik-2005, я вот сейчас вникаю в межпроцессорное взаимодействие (Windows API), пытаясь разобраться на основе аналогий с Posix. И вдруг такой "трёп" не простительный. Если б все программисты вели себя так словно ЧСВ важнее всего остального, то мы не увидели бы ни одной операционной системы. Нет, я знаю, что программист 1С - это халява при больших деньгах, по все же я не предполагал, что кто-то всерьёз считает, что общается с отбросами.

Мне его консоль бесполезна во всех смыслах. Объясню почему в двух словах:
1) найдя запрос в статистике SQL, я долго соображаю откуда он мог прилететь (родной 1с-ный или кто-то умный, что-то прикинул в студии)
2) видя запрос 1С, мне нужно переписать его "голыми руками" на t-sql, чтоб увидеть план (здесь меня спасают только view-хи и предположения о том, как это сделает 1С)
3) в реали, я даже не имею права включать трассировки на SQL или как-то еще тормозить продакшен
4) конечно мне не нужны советы о том, что я сделал не так в запросе, т.к. мне нужен план запроса вместо них

Мне, разумеется, приятно читать замечания, т.к. каждое из них раскрывает моё невежество или напоминает, что не бывает мелочей (хоть и хочется говорить об обратном с замыленными-то глазами). Особенно ценно, когда человек разобрался в причинах и упоминает их.

В конечном счете сообщество программистов 1С смогло организоваться и собирать знания по крупицам. Уже за это нельзя обидно обзываться. Политика 1С носит защитный характер (разработчики прямо-таки охраняют свою платформу от расширений и контролируют способы интеграции). В результате программист 1С оказывается замкнут в рамках дозволенного 1С, но это дозволенное такой программист изучает весьма усердно.

Когда 1С искажает понятия и ограничивает интерфейс, вдруг находится кто-то, кто выделяется своим знанием и волшебным умением. Он просто знает детали об изначальном API, которые собрал своим трудом. И лучшее - это поделиться этим, а не набивать себе цену и баловать своё ЧСВ. Любой серьёзный проект - это дело рук не одного человека, и когда находится один крутой и замкнутый на себе, то это просто лошадь, для тяжелой работы, а не игрок для сложного проекта.


34. starik-2005 2176 25.11.16 17:00 Сейчас в теме
(27) а к чему столь много строк-то (пафосу)? К тому, что я сказал о том, что 1С-неги (как и прочие) могут оказаться не на столько умными, чтобы понять, что все во временные таблицы тащить не стоит? И всего-то?
36. ture 565 25.11.16 18:59 Сейчас в теме
(34) не знаю, сам подумай, а я пока скорректирую своё восприятие.
37. starik-2005 2176 25.11.16 22:47 Сейчас в теме
(36) ну довай, корректируй. Токмо поменьше химии )))
39. корум 284 28.11.16 10:10 Сейчас в теме
28. BorovikSV 1362 22.11.16 22:22 Сейчас в теме
(5) Gilev.Vyacheslav,
отличный доклад был на инфостарте про проблемы с временными таблицами на пострессе, можно переосмыслить подход к написанию запросов
. О каком докладе речь?
29. Gilev.Vyacheslav 1851 23.11.16 16:26 Сейчас в теме
(28) BorovikSV, http://event.infostart.ru/2016/video/ 03 МАЛЫЙ ЗАЛ МАСТЕР КЛАСС РЕШЕНИЕ ТИПОВЫХ ПРОБЛЕМ ПРИ ПЕРЕХОДЕ НА POSTGRESQL СМОЛКИН ГРИГОРИЙ
30. ture 565 23.11.16 18:44 Сейчас в теме
(29) в памятку:
Есть такая кнопка CapsLock. Если она нажата, то все буквы в верхнем регистре вводятся. Слова написанные таким образом означают крик и воспринимаются в цивилизованном обществе как невежество. На профессиональных форумах не принято писать в верхнем регистре.
32. корум 284 25.11.16 09:10 Сейчас в теме
(30)
копипаст рУками перебивать никто не заморачивается.
Вопросы к составителю расписания мероприятий, походу.
33. Gilev.Vyacheslav 1851 25.11.16 12:39 Сейчас в теме
(32) можно объяснить всё, но не всем )
когда чел создает свою "виртуальную реальность" и она ему "удобна", то она его защищает его психику от фрустраций, но она же его и "держит"
не надо его "шевелить палкой" - захочет, сам вылезет из "домика"
35. starik-2005 2176 25.11.16 17:00 Сейчас в теме
(33)
можно объяснить всё, но не всем )
ну вот и я о том же. Токмо я к тому, что если важен результат, то некоторые (1С, например) понимая, что не всем можно что-то объяснить достоверно, объясняет так, чтобы дошло до большинства. А до большинства может дойти только что-то простое, например вынести все подзапросы во временные таблицы.
6. Gilev.Vyacheslav 1851 18.11.16 13:40 Сейчас в теме
не проходит и недели как на инфостарте люди пытаются расковырять тайные техники оптимизации, наполнить себя эзотерическими сведениями
а проблема банальна - люди при написании кода не получают денег за то чтобы он работал быстро, только за то чтобы функционал успеть к дедлайну

напишите статью чтобы платить шеф начал за оптимизацию и оно "как попрет"... )
sorb; tormozit; jurix; sevushka; Irwin; bydk; dark_wolf; Gorus; Trancer64; klmop; GarfildOLD; baton_pk; Silenser; taurus__; sigmov; Dem1urg; Dach; Yashazz; bulpi; c1nil; корум; Aspirant; Designer1C; 1cWin; +24 Ответить
16. sigmov 21.11.16 10:36 Сейчас в теме
(6) Gilev.Vyacheslav,
Ну собственно в итоге платить приходиться (проходит оптимизация) или мириться с медленной работой.
Большинство в мире работает по PainDD (пока не заболит - фиг с ним, заболело - лечим)
Silenser; Gilev.Vyacheslav; +2 Ответить
11. ture 565 19.11.16 17:43 Сейчас в теме
Давайте ближе к теме публикации. Сколько можно себя нахваливать? и подкладывать ссылки на бесполезные поделки?
Мне было бы приятно обойтись без уличного базара. Я внимательно прочитал Ваши комментарии, но не нашел, что из этого достойно добавления к статье.
В этой публикации я себя не рекламирую. Идея написать статью у меня возникла после ознакомления с рядом подобных статей. Я захотел, с одной сторон, изложить все максимально сжатно и приближено к 1с-практике, а, с другой, оставить поле деятельности, для самостоятельного размышления. Ряд приведенных запросов вполне рабочий и используется мной на предприятии (где обслуживает нагруженную систему). Перечисленные мной принципы оптимизации тоже рабочие (ими я руководствуюсь, можно считать из заметками на полях).
Прошу в комментариях придерживаться теории СУБД, чтоб была общая платформа, для рассуждений или спора.
sorb; artfa; eskor; Solovyeff; JohnyDeath; +5 Ответить
12. fishca 1179 19.11.16 19:17 Сейчас в теме
тем не менее факты:
фирма 1С купила разработку дизайна 8ки у Егора Гилева https://habrahabr.ru/company/turbomilk/blog/74806/

уж лучше бы и не покупала
artfa; user610297_agsh; ture; wolfsoft; Solovyeff; +5 Ответить
14. starik-2005 2176 19.11.16 23:21 Сейчас в теме
Гыгы, Славу стало плющить)))

Был месяц назад на курсах подготовки к проф. и эксперту по тех. вопросам - вели Бурмистров и Филиппов (который книжку написал).

Да и вообще сообщения должны смысл нести,но у некотопых только реклама. Может не взлетел продукт и от такой вот невеселой жизни хочется рвать и метать икру? Бывает. И это пройдет.
MRAK; ЗС1; Dach; +3 3 Ответить
15. Dach 295 20.11.16 14:27 Сейчас в теме
Статья хорошая.

А меня вот интересует вопрос. В запросах 1С, к сожалению, нельзя писать скульные хинты. Может есть какие-то ловкие ходы, чтобы заставить запрос выполниться с нужным мне хинтом? Например, отсортировав две таблицы и джойня их между собой в 1С - хочу чтобы вместо нестед лупс использовался мердж. Можно как-то схитрить и заставить план построиться именно так?

Кстати, вот еще один пример весьма очевидной оптимизации, о которой, к сожалению не только лишь все знают, точнее мало кто вообще )))

Если параметры в запрос передавать не в явном виде, а динамически формируя текст запроса - то вы заставляете оптимизатор запросов СУБД каждый раз строить новый план.

N-е количество запросов вида, текст которых собирается динамически:

ВЫБРАТЬ * ИЗ Документ.МойДокумент ГДЕ Документ.Реквизит В "%СтрокаМассиваОтбор%"
СтрокаМассиваОтбор = "(1,2,3)"


выполнится в разы медленнее, чем если написать
ВЫБРАТЬ * ИЗ Документ.МойДокумент ГДЕ Документ.Реквизит В (&МассивОтбор)


А по поводу В (&СписокОтбора) - тоже еще один пласт для ускорения. Порой, значительного прироста можно добиться, передав отбор в запрос, поместив его во временную таблицу и отсортировав, а также ЯВНО написать вместо "В (&СписокОтбора)" - "ВНУТРЕННЕЕ СОЕДИНЕНИЕ".


19. Yashazz 3263 21.11.16 13:32 Сейчас в теме
(15) Dach, да ладно. Это что, получается, что интерпретатор 1С вообще ни при чём, и собирая запрос конкатенацией с заменами (я уж молчу про новомодную объектную технику) я имею более медленное исполнение итогового запроса? Чё-то или я не понял, или вы странные вещи пишете. Вы о "динамическом формировании текста запроса" - где и в какой момент?
23. Dach 295 21.11.16 14:38 Сейчас в теме
(19) Yashazz, если на вход интерпретатора СУБД подать различные запросы, где отборы "написаны руками", вместо параметров запроса - для запроса, где отбор написан "вручную" - СУБД будет каждый раз анализировать и заново строить план, вместо того, чтобы использовать кэш. Я не про динамическую сборку целиком, а про параметры.
20. Gilev.Vyacheslav 1851 21.11.16 13:34 Сейчас в теме
(15) Dach, неоднократно обсуждалось на партнерском, фирма 1С считает что это "усложнение" может принести больше зла в неумелых руках
31. lustin 24.11.16 23:07 Сейчас в теме
увидел знакомое ```ws-msk-a1573``` и думаю где то я уже этот формат имени компьютера видел ;-)

(0) Жень - ссылка https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit

такие вещи как "Кто кого блокирует", спрашивают у Брента https://www.brentozar.com/askbrent/
ildarovich; +1 Ответить
40. dgolovanov 04.01.17 02:00 Сейчас в теме
Мальчики выросли, и пиписки нет? Что за клоунада в комментах.
Zhilyakovdr; ture; IgorS; +3 Ответить
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32395    0    ids79    40    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    2892    0    lastcontra    4    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    4200    0    randomus    18    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    2872    0    Alxby    23    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    53568    0    pahich    82    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24395    0    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Сентябрьская серия статей про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма. На этот раз - открытие значения из текущей колонки.

02.09.2019    9246    0    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    11333    0    ildarovich    19    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    44403    0    ildarovich    116    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    13486    0    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    40260    4    AlbinaAAA    27    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    25662    0    skv_79    35    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    65733    0    tormozit    27    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5174    0    vandalsvq    16    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    15432    0    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    22371    0    YPermitin    34    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    286348    0    Evil Beaver    173    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45942    0    ids79    25    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    13380    0    RonX01    65    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    3977    0    scientes    1    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    108317    0    bpc222    327    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    7296    0    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    24348    0    YPermitin    7    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    6377    0    Designer1C    81    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    34643    10    bforce    22    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    10682    0    IVC_goal    7    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    12551    0    _ASZ_    33    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30292    5    juntatalor    49    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    36434    0    Rain88    46    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    11880    0    vasilev2015    24    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18693    0    ildarovich    19    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    49349    0    bpc222    51    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    23025    0    real_MaxA    22    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Зачастую почти любой модуль в 1С содержит от одного до несметного множества вызовов других модулей. Как с этим бороться, чтобы было проще куда-то что-то переносить - в этом посте.

12.10.2017    17556    0    for_sale    58    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14546    0    user621724_Dimav1979    12    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    37619    0    MarSeN    57    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    25704    0    ikekoval    34    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

Описывается структура областей модулей, которую я использую при разработке на своих проектах. Обсуждаются недостатки стандарта 1С "Структура модуля". Предложен улучшенный подход к работе со структурой модуля.

26.03.2017    14176    0    o.nikolaev    23    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32800    0    alexandersh    48    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы v8 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    193920    0    AlbinaAAA    65    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    16820    0    zhichkin    9    

Использование git для доработки типовых конфигураций 1С

Математика и алгоритмы v8 Беларусь Украина Россия Бесплатно (free)

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    204417    0    pumbaE    31    

Оптимизация запросов 1С:Предприятие – от теории к практике

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Я давно отметил достаточно серьезный интерес сообщества к вопросам оптимизации и повышения производительности высоконагруженных систем. Общаясь с различными специалистами, обслуживающими малые и большие предприятия (торговые и производственные), я пришел к выводу, что вопросы повышения производительности интересны почти всем, вне зависимости от того, какую конфигурацию они обслуживают – большую или маленькую, измененную или без значительных изменений. В связи с этим я пришел к выводу, что стоит посвятить данный материал вопросам оптимизации запросов, поскольку именно запросы являются основным инструментом извлечения данных из системы.

07.10.2016    37149    0    bpc222    20    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    41690    0    1cspecialist    13    

Регистры сведений 1С. Как это устроено.

Математика и алгоритмы v8 Бесплатно (free)

Основная идея публикации - собрать в одном месте информацию о внутреннем устройстве такой абстрактной сущности, как "Регистр сведений 1С" и ответить на ряд вопросов: Что происходит при записи регистра в различных режимах? Что такое на самом деле "СрезПервых" и "СрезПоследних"? Как оптимально выбрать структуру регистра? Это та информация, владея которой, начинаешь лучше понимать как это работает и как правильно использовать регистры сведений.

05.08.2016    180291    0    Sergey.Noskov    156    

Переводим расширения на 8.3.8. Памятка.

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    46501    0    mrXoxot    12    

Подобие Объектно-ориентированного программирования в 1С (ПООПс)

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Статья для тех кто знаком с ООП и опустил руки.

24.07.2016    12270    0    adam26    54    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    34417    0    O-Planet    130    

Опыт практического применения методики BDD на 1С. Написание сценариев

Математика и алгоритмы Практика программирования Vanessa Automation v8 Бесплатно (free)

Эта статья открывает цикл публикаций, в которых я хочу поделиться опытом использования методики BDD при разработке на 1С. В этой статье речь пойдёт о написании сценариев.

03.07.2016    22999    0    oleynik.dv    131    

Заметки про запросы. Последовательность.

Математика и алгоритмы Практика программирования v8 Бесплатно (free)

Рассуждения, основанные на контрпримерах. Определяем последовательность операций с помощью одной только консоли запросов. Версия 2.

27.05.2016    34353    0    vasilev2015    31