Ускорим проведение в 1С:Управление холдингом

Публикация № 1708663 10.08.22

Администрирование БД - HighLoad оптимизация

управление холдингом ускорение проведения

В 1С:Управление холдингом есть "нехороший" запрос, который съедает значительную часть времени проведения документов. Если его подправить, то проведение заметно ускорится.

Данный запрос я проверял на Управление холдингом, редакция 3.1 (3.1.15.4)

Сам запрос есть и в последних выпусках 1С:Управление холдингом, редакция 3.1.17.4 и в новой Управление холдингом, редакция 3.2.1.111.

Находится он в конфигурации здесь ОбщийМодуль.ВстраиваниеОФД.ОпределитьСрокЗакрытияЗадолженности()

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ЕСТЬNULL(РасчетыСКонтрагентамиПоДокументамОстатки.СуммаОстаток,0) + ВЫБОР
|		КОГДА ОтражениеФактическихДанныхБюджетирования.НаправлениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.НаправлениеДвиженияВзаиморасчетов.УвеличениеЗадолженности)
|			ТОГДА ОтражениеФактическихДанныхБюджетирования.СуммаДокумента
|		ИНАЧЕ -ОтражениеФактическихДанныхБюджетирования.СуммаДокумента
|	КОНЕЦ КАК СуммаЗадолженности
|ИЗ
|	Документ.ОтражениеФактическихДанныхБюджетирования КАК ОтражениеФактическихДанныхБюджетирования
|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка) КАК РасчетыСКонтрагентамиПоДокументамОстатки
|		ПО РасчетыСКонтрагентамиПоДокументамОстатки.Организация = ОтражениеФактическихДанныхБюджетирования.Организация
|			И РасчетыСКонтрагентамиПоДокументамОстатки.ДоговорКонтрагента = ОтражениеФактическихДанныхБюджетирования.ДоговорКонтрагента
|			И РасчетыСКонтрагентамиПоДокументамОстатки.ОбъектРасчетов = ОтражениеФактическихДанныхБюджетирования.ОбъектРасчетов
|ГДЕ ОтражениеФактическихДанныхБюджетирования.Ссылка = &Ссылка
|";

Запрос.УстановитьПараметр("Ссылка", ДокОбъект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
	СуммаЗадолженности = Выборка.СуммаЗадолженности;
	Если СуммаЗадолженности = 0 Тогда
		Возврат;
	КонецЕсли;
Иначе
	Возврат;
КонецЕсли;

Проблема в том, что для каждого документа в 1С:УХ создается связанный Документ.ОтражениеФактическихДанныхБюджетирования.

 

 

Программа при его формировании каждый раз выполняет указанный запрос, собирая ВСЕ ОСТАТКИ по РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка)а затем выдергивает из общей таблицы записи с учетом фильтра по Организации, ДоговоруКонтрагента и ОбъектуРасчетов текущего документа (не комильфо прям скажем).

 

 

В результате более 40% времени проведения документа уходит на выполнение запроса к остаткам. Ниже привожу замер производительности типового кода 1С:УХ проведения 24 документов реализации, где верхняя строчка ссылается на указанный запрос, показывая большие затраты времени на его выполнение: 

 

 

ПРИМЕЧАНИЕ: Я это делал с базой 1С:УХ крутящейся на СУБД PostgresSQL поэтому выполнение запросов может отличаться от MS SQL (там запрос выполниться оптимальнее, возможно совсем без задержки).

Вариант оптимизации простой - не собирать каждый раз все остатки.

Требуется исправить

РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка)

добавив отбор по Организации, ДоговоруКонтрагента и ОбъектуРасчета, вот так

РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка И Организация = &Организация И ДоговорКонтрагента = &ДоговорКонтрагента И ОбъектРасчетов = &ОбъектРасчетов)

К тому же для этого все есть:

  • Есть и поля в самом регистре

 

 

  • Есть в контексте процедуры переменная ДокОбъект, где просто через точку получим их: ДокОбъект.Организация, ДокОбъект.ДоговорКонтрагента, ДокОбъект.ОбъектРасчетов

В итоге выходим на такой запрос, который выполняется в 100 раз быстрее исходного

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ЕСТЬNULL(РасчетыСКонтрагентамиПоДокументамОстатки.СуммаОстаток,0) + ВЫБОР
|		КОГДА ОтражениеФактическихДанныхБюджетирования.НаправлениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.НаправлениеДвиженияВзаиморасчетов.УвеличениеЗадолженности)
|			ТОГДА ОтражениеФактическихДанныхБюджетирования.СуммаДокумента
|		ИНАЧЕ -ОтражениеФактическихДанныхБюджетирования.СуммаДокумента
|	КОНЕЦ КАК СуммаЗадолженности
|ИЗ
|	Документ.ОтражениеФактическихДанныхБюджетирования КАК ОтражениеФактическихДанныхБюджетирования
//+ Малышев Д.А. 2022-08-09, Заявка № 000000571
//было_н 
//|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка) КАК РасчетыСКонтрагентамиПоДокументамОстатки
//было_к    
|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентамиПоДокументам.Остатки(, ДокументРасчетов <> &Ссылка И Организация = &Организация И ДоговорКонтрагента = &ДоговорКонтрагента И ОбъектРасчетов = &ОбъектРасчетов) КАК РасчетыСКонтрагентамиПоДокументамОстатки
//- Малышев Д.А. 2022-08-09, Заявка № 000000571
|		ПО РасчетыСКонтрагентамиПоДокументамОстатки.Организация = ОтражениеФактическихДанныхБюджетирования.Организация
|			И РасчетыСКонтрагентамиПоДокументамОстатки.ДоговорКонтрагента = ОтражениеФактическихДанныхБюджетирования.ДоговорКонтрагента
|			И РасчетыСКонтрагентамиПоДокументамОстатки.ОбъектРасчетов = ОтражениеФактическихДанныхБюджетирования.ОбъектРасчетов
|ГДЕ ОтражениеФактическихДанныхБюджетирования.Ссылка = &Ссылка
|";

Запрос.УстановитьПараметр("Ссылка", ДокОбъект.Ссылка);  
//+ Малышев Д.А. 2022-08-09, Заявка № 000000571 
Запрос.УстановитьПараметр("Организация", ДокОбъект.Организация);
Запрос.УстановитьПараметр("ДоговорКонтрагента", ДокОбъект.ДоговорКонтрагента);
Запрос.УстановитьПараметр("ОбъектРасчетов", ДокОбъект.ОбъектРасчетов);
//- Малышев Д.А. 2022-08-09, Заявка № 000000571
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
	СуммаЗадолженности = Выборка.СуммаЗадолженности;
	Если СуммаЗадолженности = 0 Тогда
		Возврат;
	КонецЕсли;
Иначе
	Возврат;
КонецЕсли;

Чего добились для себя

Мы исправляли логику проводок по Бух учету у реализаций и возвратов в 1С:УХ и потребовалось перепровести примерно 300 000 документов за первую половину 2022 года. Запустили проведение, получили что 100 000 документов провелось за 4 суток (все 300 000 просто не долждались, решили посмотреть в чем тормоза). В итоге внесли это исправление и после него 100 000 документов проводятся за 1.5 суток, вместо 4.

Выкладываю исправление, т.к. 1С:УХ стоит у многих, поэтому может пригодиться данное испавление.

Всем добра.

 
 Другие публикации автора

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. quazare 2801 10.08.22 17:02 Сейчас в теме
Это ты уточнил и увеличил количество измерений при связи таблиц? Да, это хороший типовой ход.

Похоже где-то подобные запросы делаются на скорую руку с первого раза

Слушай, неужели если еще заявки типа «убыстрить что-то»??? ))))))
2. sapervodichka 6185 10.08.22 17:11 Сейчас в теме
(1) добавлял только отбор в запрос. Измерения регистра и связи таблиц там все типовое. Заявки убыстрить как таковой не было, была заявка провести 300000 документов, чтобы скорректировать проводки. Но в разумные сроки, это не получалось. Решил посмотреть почему и вот на тебе, даже не поверил сначала что так в типовой УХ криво сделано и никто не исправляет (даже в крайних релизах УХ это чудо есть)
ybatiaev; RustIG; +2 Ответить
30. triviumfan 37 12.08.22 14:53 Сейчас в теме
(2)
даже не поверил

Не ну такой опытный, а до сих пор удивляешься! :) Да в любой конфе таких запросов можно сотню найти. И не важно, что УХ стоит такие денжища, процесс разработки все тот же)
31. sapervodichka 6185 12.08.22 16:59 Сейчас в теме
(30) с PostgresSQL будем чаще улыбаться, я так понял по комментам, что именно на нём болячки вылезать начинают
Дмитрий74Чел; +1 Ответить
52. Дмитрий74Чел 224 01.09.22 18:21 Сейчас в теме
(2) увы, авторы УХ это не авторы ЕРП. В ЕРП худо-бедно контроль за кодом выстроен. Такие ляпы почти не встречаются. А вот в УХ я такой "красоты" насмотрелся вдоволь.
3. quazare 2801 10.08.22 17:57 Сейчас в теме
Слушай, я не знаю ни одного документа в бухучете, который бы чето там рассчитывал для проводки. Все цифры на форме. Ну закрытие месяца не считается

Речь идет о бух учете???? Точно? Провдки по плану счетов?
6. sapervodichka 6185 10.08.22 18:14 Сейчас в теме
(3) проводок непосредственно не касается, правка ускоряет всю транзакцию проведения документа
4. quazare 2801 10.08.22 18:03 Сейчас в теме
Есть еще один лайфхак - когда ты делаешь перепроведение. Я так понимаю, изачально идет удаление проводок документа, а потом запись.

Я как-то заморочился и удалил их скулем за раз. А потом проводил - записывал проводки.
5. quazare 2801 10.08.22 18:07 Сейчас в теме
(4) но, это кропотливая работа...
7. sapervodichka 6185 10.08.22 18:16 Сейчас в теме
(5) пытливый ум, решение найдёт *)
8. RustIG 1607 10.08.22 19:27 Сейчас в теме
9. Glukamaster 5 10.08.22 20:12 Сейчас в теме
Соединять с виртуальной таблицей (по факту с вложенным запросом) не есть хорошо ибо более чем уверен, что там тупо нестет луп идет. Было бы правильно собрать данные во временные таблицы, проиндексировать по соединяемым полям, а потом эти временные таблицы соединять.
Alsegan; ybatiaev; spec8s; +3 Ответить
10. sapervodichka 6185 10.08.22 21:00 Сейчас в теме
(9) время выполнения после текущего исправления стало 0,01 секунды, поэтому дальше копать не стал
ybatiaev; +1 Ответить
29. Glukamaster 5 12.08.22 09:43 Сейчас в теме
(10) Вообще думаю повезло, ибо вероятнее оптимизатор сделал план запроса , в котором сначала отработал по индексу "Организация, ДоговорКонтрагента, ОбъектРасчетов", а потом выполнил условие ДокументРасчетов <> &Ссылка. А может такого не сделать и тупо перебирать записи. Но даже так будет быстрее работать, нежели в исходном варианте.
11. shard 271 10.08.22 21:49 Сейчас в теме
Статье плюс однозначно. Здесь хотя бы запрос короткий. В КА 2.5 запросы для формирования проводок попробуйте выцепить, был неприятно удивлен их размерами.
12. sapervodichka 6185 10.08.22 22:10 Сейчас в теме
(11) ну да, согласен, тут у меня скорее не исследовательская статья, а так сказать наткнулся на прикол
13. CheBurator 3079 10.08.22 22:55 Сейчас в теме
вопрос в том почему так криво написан запрос изначально?
м.б. исправленный вариант запроса будет неправильным при каких-нибудь других настройках ведения взаиморасчетов? а неисправленный исходный запрос - хоть и медленный но всегда правильный?
14. sapervodichka 6185 10.08.22 23:06 Сейчас в теме
(13) пока бездоказательно глаголешь, приводи контрпример и будем разговаривать )))
15. CheBurator 3079 10.08.22 23:20 Сейчас в теме
(14) я не настаиваю на истинности, я спрашиваю.
16. sapervodichka 6185 10.08.22 23:25 Сейчас в теме
(15) вот смотри, сам запрос маленький и выполняется тут же сразу (никуда дальше не передается). Исправление виртуальных параметров очевидное не требует экспертных знаний (т.к. в запросе уже есть эти отборы в соединении таблиц и значение полей берутся из ссылки на 1 документ).

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

Думаю они заметят его и починят.... так всегда было.
starik-2005; +1 Ответить
21. ivanov660 3728 11.08.22 07:25 Сейчас в теме
(16) Думаю, что проверяли на небольшой демонстрационной базе и на MS SQL. А MS SQL работает хорошо и скорее всего "пробрасывает" условия соединения внутрь виртуальной таблицы. Когда я анализировал подобные запросы, то было видно именно такое отличие между этими СУБД.
С другой стороны, если бы вендор писал оптимально и без ошибок, то не было бы необходимости в наших услугах.
starik-2005; sapervodichka; +2 Ответить
24. 3dice 14 11.08.22 07:45 Сейчас в теме
(16)Поверь, знание о параметрах виртуальных таблиц приравнивается к экспертным знаниям :)
44. starik-2005 2798 19.08.22 10:42 Сейчас в теме
(24)
о параметрах виртуальных таблиц
А я думал, что вообще отличать временные таблицы от виртуальных ныне только эксперты умеют )))
26. 3dice 14 11.08.22 07:51 Сейчас в теме
(15)Спрашивают с лохов. А в форумах интересуются. Тебе интересно, почему исправленный запрос работает быстрее?
23. 3dice 14 11.08.22 07:40 Сейчас в теме
(13)Глупости. В самом запросе в условии соединения ПО уже все написано. Но ПО это почти как ГДЕ.
17. CheBurator 3079 11.08.22 00:32 Сейчас в теме
(16) то есть можно сказать что тот кто писал исходный запрос - по квалификации ощутимо ниже среднего?
18. sapervodichka 6185 11.08.22 00:39 Сейчас в теме
(17) Конечно же так сказать нельзя, что ниже среднего. В 1С ниже среднего не берут. Это просто конкретный запрос из десятков тысяч оптимальных запросов в УХ, именно его разрабы 1С просто упустили из вида, им его поправить на раз.
Это я скорее о себе могу сказать, что-то средненькое. А ты только не скажи, что это ты этот запрос написал ))) а то я умру от смеха
19. CheBurator 3079 11.08.22 00:53 Сейчас в теме
(18) я на снеговика не прогаю, спи спокойно ;-)
.
Тут как раз вопрос о том, что значит "упустили из вида"...? Не подумали что будет большой объём данных и галабали на скорую руку? Не понимают как писать более-менее оптимально? Что-то иное?
.
Из исправления запроса я бы оценил что кардинально запрос не изменен, запрос не на пять экранов где реально можно налажать ненароком. То есть оптимизация запроса для среднего специалиста - очевидна. И при этом запрос исходный очень не оптимальный, т. Е. Не использованы основные принципы написания запроса...
sapervodichka; +1 Ответить
20. sapervodichka 6185 11.08.22 01:03 Сейчас в теме
25. 3dice 14 11.08.22 07:49 Сейчас в теме
(19)Судя по твоим рассуждениям, ты бы не стал править запрос, побоявшись что можешь еще где-то налажать :)
22. 3dice 14 11.08.22 07:36 Сейчас в теме
Красавчик. Отличная работа. Да, за неиспользование параметров виртуальных таблиц - точно расстрел.
27. muskul 11.08.22 08:34 Сейчас в теме
в 1с сегодня такого вагон и маленькая телешка. к сожалению
28. nicxxx 246 11.08.22 22:54 Сейчас в теме
(9) не надо всегда тупо следовать рекомендациям ЗАО 1С.
(21) в точку! я тоже исследовал - https://infostart.ru/1c/articles/880836/
Фича MSSQL - predicate pushdown. Соединение с виртуальной таблицей подхватывает параметр &Ссылка.
В Postgres такой фичи не было, не знаю как сейчас, поэтому ВТ собирает реально все данные, а там могут быть миллионы строк...
32. Tavalik 2857 12.08.22 17:12 Сейчас в теме
Такие разборы хорошо бы разработчикам конфигураций направлять. Универсальная почта для обращений v8@1c.ru. У команды "Управление холдингом" есть и своя почта - cpm@1c.ru. Все обращения рассматриваются в обязательном порядке.
sapervodichka; +1 Ответить
33. sapervodichka 6185 15.08.22 11:19 Сейчас в теме
(32)
cpm@1c.ru
Виталий, спасибо, скинул им
Прикрепленные файлы:
34. Alsegan 15.08.22 16:49 Сейчас в теме
(33)Надеюсь они прочтут комментарии и сделают через временную таблицу с Индексированием полей. (при доработке то понятно почему вы не исправляли - 1)работает , 2)больше кода контролировать при обновлении)
35. sapervodichka 6185 15.08.22 16:57 Сейчас в теме
(34) я то как раз исправил, правда не совсем понимаю почему некоторых просто параметры виртуальной таблицы не устраивают, и хотят прикрутить временную таблицу состоящую из 1 строки и её проиндексировать =)))
45. starik-2005 2798 19.08.22 10:49 Сейчас в теме
(35)
и хотят прикрутить временную таблицу состоящую из 1 строки и её проиндексировать
До сих пор некоторые 1С-нгеги всерьез полагают, что индексация бесплатна. Не так давно тут на просторах несколько добрых людей топили за то, что поиск нужно осуществлять ТОЛЬКО в индексированной таблице, потом умные существа с другой планеты провели тест, в котором поиск по индексированной таблице занимал 1 мс, а поиск на неиндексированной - 75 мс при количестве элементов около 1 кк (млн). И вроде бы вывод очевиден, да? Но оказалось, что индексация такой таблицы стоит 4,5 секунд, т.е. можно в ней 4500/75=60 раз найти без индекса что-то за то же время, за которое будет этот индекс построен. При том индекс занимает дополнительную память. Но никого это не интересует почему-то.
36. Dali 16.08.22 10:53 Сейчас в теме
(32) Я вас умоляю.... Поддержка 1с... У них принцип задолбать тебя вопросами и по возможности ничего не делать. Недавно в типовой обнаружил ошибку, отправил в 1с и началось:
А на последнем релизе ошибка есть?
А пришлите скриншоты и последовательность действий.
А пришлите свою базу.
Хотя и последовательность и отчет, формируемый 1С, приложил при обращении.
Спасибо ребята, никогда больше.
37. Tavalik 2857 16.08.22 15:27 Сейчас в теме
(36)
Ну это зря вы так, конечно...
sapervodichka; +1 Ответить
38. AHDP 8 18.08.22 11:21 Сейчас в теме
(0) Я правильно понимаю, что в конфигурации заложена иерархия Организация <- Договор <- Объект расчётов <- Документ?
Зачем в этом запросе вообще условия на организацию и договор?
39. sapervodichka 6185 18.08.22 13:00 Сейчас в теме
(38) индекс строится согласно порядку следования измерений в регистре, пропуская отбор по вышестоящим индексным полям замедляешь поиск
dandykry; +1 Ответить
40. AHDP 8 18.08.22 14:35 Сейчас в теме
(39) Измерения Объект расчётов и Документ должны быть проиндексированы.
41. sapervodichka 6185 18.08.22 19:35 Сейчас в теме
(40) В конфигурации УХ у данных измерений свойство Индексировать стоит "Не индексировать" поэтому индивидуальных индексов по этим полям нет.
42. AHDP 8 19.08.22 09:19 Сейчас в теме
(41)
Для MS не актуально, а слонику должно помочь. https://postgrespro.ru/docs/enterprise/14/sql-cluster
P.S. Меня интересовало условие в соединении.
53. sapervodichka 6185 01.09.22 19:51 Сейчас в теме
(42) поясни, пожалуйста, как ты понял, что ссылка на справку поможет, т.е. опиши как бы ты это применил пошагово?
43. scarabey2006 18 19.08.22 10:05 Сейчас в теме
Сделал как рекомендуется в публикации. Прибавки в скорости к сожалению не прибавило 13500 документов проводится чуть больше суток ( А уже был обрадовался, что вот оно решение оптимизации проведения.
46. starik-2005 2798 19.08.22 10:52 Сейчас в теме
(43)
Сделал как рекомендуется в публикации. Прибавки в скорости к сожалению не прибавило
А где замер производительности?
47. scarabey2006 18 19.08.22 11:58 Сейчас в теме
(46) У нас MS SQL
Прикрепленные файлы:
48. starik-2005 2798 19.08.22 12:00 Сейчас в теме
(47) Ну надо полный замер и искать там, что занимает много времени. Может в MS SQL что-то другое занимает все это время.
49. scarabey2006 18 19.08.22 12:17 Сейчас в теме
(48) Я понимаю что может в другом дело, но этот запрос отрабатывает одинаково и типовой и измененный
50. starik-2005 2798 19.08.22 12:48 Сейчас в теме
(49) Ну так выше даже писали, по какой причине - скул от мелкомягких эту ситуацию обрабатывает, фильтруя результат подзапроса.
51. scarabey2006 18 19.08.22 13:07 Сейчас в теме
(50) Надо искать дальше где оптимизировать можно (
sapervodichka; +1 Ответить
54. sapervodichka 6185 02.09.22 12:55 Сейчас в теме
В 1С ошибку приняли к исправлению
Прикрепленные файлы:
58. scarabey2006 18 01.12.22 10:33 Сейчас в теме
(54) в последнем релизе это уже исправлено ) даже в 17.23 видел, когда обновлялся
59. sapervodichka 6185 01.12.22 11:04 Сейчас в теме
(58) логично, я же им написал в августе, вот к осени и добавили исправление в релиз
55. Revachol 27.11.22 15:43 Сейчас в теме
А не правильнее было бы написать условие сразу так ("Организация = &Организация И ДоговорКонтрагента = &ДоговорКонтрагента И ОбъектРасчетов = &ОбъектРасчетов и ДокументРасчетов <> &Ссылка) исходя из структуры регистра?
sapervodichka; +1 Ответить
56. sapervodichka 6185 27.11.22 21:14 Сейчас в теме
(55) Я всегда считал что планировщик запроса при построении плана выполнения запроса выстраивает условия в нужном порядке (не зависимо от порядка, который разработчик написал), и далее этот план хранит в кеше, и использует как шаблон для повторного выполнение запроса. По порядку измерений писать условия, как ты написал - думаю правильнее будет, но выхлоп по скорости будет скорее всего тот же. Поэтому получается пофиг, но правильнее как ты говоришь (красивее точно).
57. Revachol 28.11.22 07:08 Сейчас в теме
(56)
планировщик запроса при построении плана выполнения запроса выстраивает условия в нужном порядке (не зависимо от порядка, который разработчик написал), и далее этот план хранит в кеше, и использует как шаблон для повторного выполнение запроса

Спасибо за ответ =) Покопаю эту тему)
60. Revachol 03.12.22 16:31 Сейчас в теме
(56)Дмитрий, да, ты был прав) Запрос №3,если нету "пробелов" в условии для использовании индекса - порядок не важен)
https://its.1c.ru/db/v8std/content/652/hdoc
Оставьте свое сообщение

См. также

Программные перечисления, ч.2: приемы кэширования при разработке Промо

Универсальные функции Механизмы платформы 1С Запросы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

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

30.10.2017    30776    unichkin    18    

Идентификатор объекта в запросе. Вы этого хотели?

Запросы Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Запросы Запросы Бесплатно (free) Бесплатно (free)

В платформе 8.3.22 появилась возможность получать идентификатор в запросе. Лично я ждал этого давно, но по итогу ждал большего. Что не так?

12.01.2023    5145    dsdred    13    

Практическая шпаргалка по новым возможностям языка запросов 1С

Механизмы платформы 1С Запросы Платформа 1С v8.3 Платформа 1С v8.3 Запросы Запросы Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В предлагаемой статье решил привести примеры применения новых возможностей языка запросов 1С, начиная с версии платформы 8.3.20.

21.11.2022    13587    quazare    33    

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020    8140    Eugen-S    25    

Нагрузочное тестирование в 1С:ERP

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Бесплатно (free) Бесплатно (free)

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

02.11.2022    3070    Tavalik    23    

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Универсальные обработки Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    8464    63    sapervodichka    84    

Новые возможности языка запросов в платформе 8.3.20

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Запросы Запросы Бесплатно (free) Бесплатно (free)

С платформы 8.3.20 анонсировали ряд изменений в языке запросов, с которыми интересно было повозиться на практике, что и было проделано. Результатом этих изысканий решил поделиться с вами.

27.09.2022    8118    zeltyr    17    

Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

От быстродействия запросов, которые обращаются к крупным таблицам, напрямую зависит скорость работы всей базы в целом. Артем Кузнецов, тимлид команды 1С в компании ООО «Финтех решения» на конференции Infostart Event 2021 Moscow Premiere рассказал, как оптимизировать производительность при поддержке больших систем. Показал, на что следует обращать внимание при код-ревью запросов, как оптимизировать RLS, виртуальные таблицы, индексы и условия, и как доработка архитектуры решения может ускорить работу базы.

29.08.2022    5184    Chernazem    44    

Как сделать запрос на изменение данных Промо

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Запросы Запросы Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    42389    m-rv    23    

Гарантированное проведение документов (подключаемое расширение)

Обработка документов Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Гарантированное проведение указанного в регистре сведений списка документов. Регистрируем документы к проведению с помощью произвольных отборов СКД в регистре сведений, далее запускаем фоновое проведение в нескольких потоках. Проведенные документы удаляются из регистра, по непроведенным регистрируются ошибки.

4 стартмани

11.08.2022    5469    13    sapervodichka    27    

Параметризация печатных форм под контрагентов (подключаемое расширение)

Печатные формы Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Расширение добавляет возможности параметризации печати для контрагентов. Подробнее описано здесь https://infostart.ru/1c/articles/1510459/

10 стартмани

05.08.2022    6059    8    sapervodichka    4    

Просмотр объектов очереди сообщений в 1С:Документооборот

Адаптация типовых решений Документооборот и делопроизводство Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

В базах с бесшовной интеграцией с 1С:Документооборот есть Регистр сведений "Очередь сообщений в 1С:Документооборот". Для пользователя он мало информативен. Расширение позволяет просматривать сообщение в человеческом виде. И понимать проблему до объекта.

2 стартмани

02.08.2022    6093    17    sapervodichka    4    

Выразить число как строку и дату как строку в запросе Промо

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

22.02.2015    146350    ildarovich    79    

Методика похудения для 1С – 100%

Свертка базы HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

28.07.2022    5246    1CUnlimited    37    

Экспертный кейс. История расследования одного небыстрого закрытия месяца в 1C:ERP. Пример неочевидных путей расследования в виде детективной истории

HighLoad оптимизация Механизмы платформы 1С Запросы Платформа 1С v8.3 Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Бесплатно (free) Бесплатно (free)

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

11.07.2022    5019    it-expertise    27    

Расчет хэш-функции в запросе Промо

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

20.03.2015    60251    ildarovich    39    

Производительный режим работы RLS

HighLoad оптимизация Роли и права Платформа 1С v8.3 Платформа 1С v8.3 8.3.14 8.3.14 8.3.6 8.3.6 8.3.8 8.3.8 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Комплексная автоматизация 2.х Бесплатно (free) Бесплатно (free)

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Каждый из режимов имеет свои преимущества и недостатки относительно другого. Основные из них будут рассмотрены в данном материале.

14.06.2022    5985    Neti    6    

Кратность в Юанях (CNY) 10 и 1

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Обратите внимание на обмены данными с Юанями. Кратность там меняется между 10 и 1, в зависимости от значения курса > 10 или < 10. Т.е. НЕ ВСЕГДА равна 1. А многие разработчики (в том числе и я) грешат, ставя Кратность = 1 по умолчанию в обменах и выгрузках. P.S. Идём на Восток, становимся хитрее.

10.06.2022    7737    sapervodichka    13    

Любовь. Быстродействие. 1С

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

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

26.05.2022    3753    vasilev2015    20    

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

Запросы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

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

24.07.2015    80693    Aleksey.Bochkov    39    

Оптимизация высоконагруженных конфигураций: история маленькой победы, или советы тем, кто столкнулся с проблемой впервые и не знает, что делать

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 Платформа 1С v8.3 8.3.14 8.3.14 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Россия Россия Бесплатно (free) Бесплатно (free)

Пост будет больше интересен руководителям отделов ИТ сопровождения или проектным менеджерам, перед которыми будет стоять задача решения проблемы деградации производительности баз данных 1С. Пост для тех, кому эта тема нова, нет особого опыта, и с ходу непонятно, с чего начать.

24.05.2022    3803    avolsed    15    

Несколько слов про платформенный механизм оптимизации RLS

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Смотрим, как работает платформенный механизм оптимизации RLS, сравним поведение на разных СУБД MS SQL, Postgres 11,13,14.

07.04.2022    3516    ivanov660    23    

Долго открывается конфигуратор Промо

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В ОС Windows Server 2012 бывает полезно выключать службу Dynamic Fair Share Scheduling (DFSS позволяет балансировать и распределять ресурсы между пользователями), чтобы повысить производительность 1С:Предприятие 8 в ряде случаев.

22.04.2015    47244    Gilev.Vyacheslav    1    

Почему после обновления Бухгалтерии в марте 2022 года отчеты стали такими медленными

HighLoad оптимизация Платформа 1С v8.3 Платформа 1С v8.3 Бухгалтерский учет Бухгалтерский учет 1С:Бухгалтерия 3.0 1С:Бухгалтерия 3.0 Бухгалтерский учет Бухгалтерский учет Бесплатно (free) Бесплатно (free)

Статья раскрывает причину, почему время формирования отчетов после обновления Бухгалтерии в марте 2022 сильно увеличилось. И рассказывает, как можно исправить ситуацию.

05.04.2022    4857    DBOdin_Lab    33    

Экспертный кейс. Расследование фатального замедления времени расчета себестоимости в 1С:ERP 2

HighLoad оптимизация Механизмы типовых конфигураций Запросы Платформа 1С v8.3 Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Бесплатно (free) Бесплатно (free)

При выполнении нагрузочного тестирования информационной системы на базе 1С:ERP для одного из клиентов с целью оценки возможности миграции системы на PostgreSQL и Astra Linux мы столкнулись с неприемлемым увеличением времени выполнения расчета себестоимости. Строго говоря, сценарий тестирования закрытия месяца не был выполнен вообще – он не укладывался в таймаут выполнения теста, 24 часа. По прошествии 18 часов всё ещё шло выполнение операции «Распределение затрат и расчет себестоимости». Более 16 часов выполнялся подэтап “Расчет партий и себестоимости. Этап. Расчет себестоимости: РассчитатьСтоимость”. Всё это время выполнялся запрос, который в текущей инфраструктуре клиента (СУБД MS SQL Server) выполняется чуть более 3 минут на аналогичных данных.

25.03.2022    5162    it-expertise    92