TGViewer
Жёлтый чайник 1С (Черненко Виталий) Жёлтый чайник 1С (Черненко Виталий) @juniorones · 5.3K subscribers
Post #553 4.28K
↔️ Контакт между формой и ПриПолученииДанныхНаСервере()

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

💿 Вы можете помнить, что в "обычных" формах было событие ПриВыводеСтроки(), которое позволяло оформить строки таблицы и как-то наполнить данными

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


💡Нельзя ли? Конечно, можно!

И в этом нам поможет структура, которая доступна по адресу:

ДинамическийСписок.КомпоновщикНастроек.Настройки.ДополнительныеСвойства

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ДинамическийСписок.КомпоновщикНастроек.Настройки
.ДополнительныеСвойства.Вставить("Кэш", Новый Соответствие);

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ДинамическийСписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)

Кэш = Настройки.ДополнительныеСвойства.Кэш;

КонецПроцедуры

✔️ Такая коллекция будет едина между вызовами события, а значит её можно использовать в качестве кэша и ускорять получения доп. данных списка. Но ещё эта коллеция будет доступна в других методах формы. Таким образом, к примеру, у нас реализован функционал по сбору истории отборов ДС. Позволяет в любой момент включить сбор статистики и потом проанализировать какие отборы\сортировки\группировки устанавливают пользователи и как им можно облегчить жизнь.

❌ К сожалению, нельзя передать напрямую сложные данные. Они либо упадут в ошибку, либо их изменения не будут доступны на клиенте. Например, можно передать напрямую ДанныеФормыКоллекция, но после открытия она отвяжется от формы и будет независимой коллекцией, а значит изменения на форме отображаться не будут.

✔️ Но зато можно передать адрес временного хранилища. И с заданной периодичностью его извлекать и как-то обрабатывать.

😁 Ну и по классике напомню, что описанное выше не совсем очевидное поведение и имеет множество нюансов, поэтому использовать нужно с особой осторожностью и только при отсутствии других "нормальных" методов реализовать вашу потребность
  • 👍 32
  • 🔥 13
  • 🤔 3
More from @juniorones
  1. Sep 7, 2026🤖 1С-разработка с ИИ По советам прошел обучение на курсе Владимира Харина. Могу сказать,…
  2. Jul 15, 2026Post #768
  3. Jun 11, 2026🚀 Записался на вахту 18 июня стартует уже третий поток у Владимира Харина на курсе «1С-ра…
  4. Jun 5, 2026Нашел себе новое задротское хобби (а планировал пойти в спортзал) - ардуино. Давно погляды…
  5. Jun 1, 2026📈 Оптимизация настроек СКД 🧲😺 Внутри Магнита огромный лес легаси кода. И иногда мы им д…
  6. Apr 27, 2026⚫️️️️️️️️️️️️️️️️️️️️️️ 1С DAY от MAGNIT TECH: погружение в практику и технологии! ️️️️Вст…
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 →