TGViewer
Е.БУДНИ программиста 1С | Роман Чумадин Е.БУДНИ программиста 1С | Роман Чумадин @e_budni_programmer · 6.25K subscribers
Post #515 4.89K
РУБРИКА «ЧёПоСтандартам»
Оптимизация использования оперативной памяти

Неоднократно попадались вопросы на собеседованиях типа "что тут не так в коде" и там какой-нибудь запрос с "Запрос.Выполнить().Выгрузить()" к какому-нибудь огромному справочнику. И вот тут есть засада, так как первым делом хочется сказать, что нужно делать через выборку, а не тут-то было... Согласно стандартам и тот и тот вариант будут не корректными.
#std725
2. При потенциально неограниченных выборках данных из ИБ следует получать данные из базы порциями фиксированного размера.
Например, неправильно:
...
Номенклатура = Запрос.Выполнить().Выгрузить();
Для каждого ПозицияНоменклатуры Из Номенклатура Цикл
...

Также неправильно:
....
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка,
...
РезультатЗапроса = Запрос.Выполнить();
// Обход результата запроса
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
....

Второй вариант близок к истине, но без искусственного ограничения на "ВЫБРАТЬ ПЕРВЫЕ 1000" это не имеет смысла.
#std725

Правильно ограничивать результат запроса искусственно:

ВсеОбработано = Ложь;
Пока Истина Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| Номенклатура.Ссылка,
....

// Обход порции результата запроса
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Обработка элемента выборки
// ...
КонецЦикла;

КонецЦикла;

Если сделать первыми двумя неправильными вариантами, то это приведет к тормозам из-за нехватки памяти, а возможно и к полному зависанию системы. А в корректном варианте данные будут выбираться порционно.

Также есть ещё один правильный вариант с отбором выборки: "Выборка = Справочники.Номенклатура.Выбрать(..., Отбор);"

P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std725
  • 👍 30
  • 🔥 7
  • ❤ 4
  • ✍ 2
  • 🤯 2
  • 👌 2
  • 💯 2
More from @e_budni_programmer
  1. Oct 1, 2026Post #612
  2. Sep 30, 2026Работу техподдержки 1С обычно редко обсуждают, пока все работает в штатном режиме. Но когд…
  3. Sep 24, 2026РУБРИКА «ЧёПоСтандартам» Оформление текстов запросов Хотел выбрать самые важные моменты из…
  4. Sep 22, 2026Всем привет! И снова про конференции) Прошла Жёлтая конфа, Кунг-Фу Митап в питере, на этот…
  5. Sep 17, 2026Post #607
  6. Sep 12, 2026Больше постов про ИИ?) Сейчас всё активнее пробую применять ИИ непосредственно в разработк…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →