TGViewer
Channel Public Channel
Жёлтый чайник 1С (Черненко Виталий)

Жёлтый чайник 1С (Черненко Виталий)

@juniorones

Только настоящий джедай сможет сдержать гнев и познать Силу Желтого программирования.

Make IT, not war

По всем вопросам: @SeiOkami

https://github.com/SeiOkami
https://seiokami.github.io/
https://infostart.ru/profile/309462/
Subscribers
5.3K
Photos
200
Videos
3
Links
214

Showing posts older than #560 · Back to latest

Older Posts 18 shown
Post #559 5.73K
Жёлтый чайник 1С (Черненко Виталий) Photo
  • 🔥 12
  • 👍 8
  • 🤯 3
Post #557 4.03K
❗️ Острожнее с Асинх!

Серию постов про нюансы Асинх методов начинаем с асинхронных процедур.
😁 Если коротко, то не создавайте их

У асинхронных процедур есть очень неприятный нюанс. Их невозможно Ждать. ⏲
Так как процедуры не возвращают результат, то и Ждать их результата невозможно.

💬Например, у нас есть процедура, которая заполняет дерево на форме.
Заполняет она его из файла, предварительно асинхронно проверяя его существование при помощи Ждать Файл.СуществуетАсинх()
❗️ Такую процедуру нельзя вызвать и подождать.
Нельзя где-то в коде вызвать вашу процедуру "ЗаполнитьДеревоИзФайла", а сразу после что-то пытаться сделать с этим самым деревом. Потому что оно ещё не будет заполнено.

💡 Поэтому, если вы создаёте асинхронную процедуру (метод, который ничего не должен возвращать), то подумайте хорошенько... и сделайте её Функцией.
Пусть лучше ваш метод бессмысленно вернёт Неопределено или Истина. Зато тогда его можно будет подоЖдать

👍 Кстати, ещё хорошей практикой будет в конце названия метода добавить "Асинх". Тогда разработчик, который вызывает метод, точно поймёт, что он асинхронен.
Заботьтесь о тех, кто будет работать с вашим кодом после вас ❤️

_____________
@JuniorOneS
  • 👍 44
  • 🔥 11
  • ❤ 2
  • 😱 1
Post #556 3.44K
Жёлтый чайник 1С (Черненко Виталий) Photo
  • 🤯 24
  • 😁 9
  • 👍 4
Post #555 3.14K
  • 🤔 7
Post #554 3.73K

Forwarded from Магнит IT

🧲 ➕ 🤠 Infostart Event 2023

По сложившейся традиции от Магнита подаём доклады на ежегодную конференцию Infostart Event
И голосование уже открыто:

➖ Айдар Сафин
«OpenSearch для 1Сников. Как использовать бесплатный ElasticSearch не теряя времени, нервы и качество»

➖ Александр Пузаков
«Закон Конвея, или Почему 1С [пока] не захватила гигантские корпорации»

Интересна тема доклада?
Поддержите коллег своим голосом на сайте
  • 👍 13
  • 🔥 9
Post #553 4.28K
↔️ Контакт между формой и ПриПолученииДанныхНаСервере()

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

😁 Ну и по классике напомню, что описанное выше не совсем очевидное поведение и имеет множество нюансов, поэтому использовать нужно с особой осторожностью и только при отсутствии других "нормальных" методов реализовать вашу потребность
  • 👍 32
  • 🔥 13
  • 🤔 3
Post #550 3.77K
А какой самодельный конструктор объектов попадался на глаза? И может какой даже используете сами?
  • 🤔 13
  • 👍 7
  • 💩 7
Post #549 4.12K
Примеры использования новых возможностей 1С

🧑‍🏫 Не многие знают, но на странице релиза платформы есть ещё и файл с демо-базой, которая, как предполагается, содержит в себе примеры использования новых возможностей.
Так оно и есть, но делается это словно для галочки. Примеры часто скудные, наполнены коричневым кодом и не раскрывают и половины важных нюансов, с которыми разработчику придётся столкнуться самостоятельно.

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

Поэтому объединил несколько инструментов из постов:
➖ Работа с буфером обмена (8.3.24+)
➖ Регулярные выражения (8.3.23+)
➖ Основной макет СКД для пользователя (8.3.22+)

😺 И поместил в единый репозиторий ExamplesOneS

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

В репозитории буду собирать примеры и инструменты по заинтересовавшим новым возможностям платформы. Сюда можно кидать ошибки и предложения.

➡️ В общем, если появится необходимость в использовании какой-то новой возможности, то можно, помимо справки и ИТС, заглянуть в репозиторий. А вообще изучать их лучше начинать заранее. И когда придёт время использовать новую фишку на проде, то вы уже будете знать как её правильно "готовить".

Всем мира и хороших выходных 👍
________________
@JuniorOneS
  • 🔥 24
  • 👍 18
  • ❤ 7
  • 👌 1
Post #548 3.61K
Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

🧐 Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать.
⚒ Ковырнем как можно глубже и половим баги и нюансы.

Статья на Инфостарт...

Поддержка статьи "плюсами" радует автора и даёт понять, что информация была интересной 😊
  • 🔥 20
  • 👍 16
Post #547 4.34K
1Сный LOCK() в коде

В платформе есть метод ЗаблокироватьДанныеДляРедактирования()
Он позволяет дать базе понять, что вы как-то собираетесь изменять данные. И если другой сеанс попытается сделать тоже самое с переданными в метод данными, то получит ошибку и поймёт, что они заблокированы.

На вход данный метод получает параметры:
➖ Ключ - Ссылка на объект, который должен быть заблокирован, или ключ записи независимого регистра сведений, которая должна быть заблокирована.
➖ ВерсияДанных - Версия блокируемого объекта в формате Base64
➖ ИдентификаторФормы - Уникальный идентификатор формы

Но интересные нюансы обнаружил ansverrr :
➖ Идентификатор не обязан быть привязан к форме
➖ В качестве ключа данных можно передавать несуществующие данные или даже просто пустую ссылку

В совокупности это позволяет использовать метод в качестве этакой пародии на межсеансовый lock()

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

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

Блокировать не обязательно пустую ссылку. Можно и заведомо несуществующую. Например, с идентификатором 99999999-9999-9999-9999-999999999999 или 01234567-8901-2345-6789-012345678901

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

Но это не мешает нам проводить с ними эксперименты забавы ради 😁
  • 👍 29
  • 🔥 15
  • ❤ 1
Post #546 4.08K
Магнит IT Обзор ряда новых возможностей платформы 8.3.22 Мы перешли на платформу 8.3.22, изучили новые возможности, просмотрели имеющиеся обзоры и решили сделать свой с дополнениями про нюансы, о которых особо не говорят. В этом выпуске: - Общее оформление отчетов…
Основной макет оформления отчетов индивидуально для пользователя (8.3.22).

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

Статья на Инфостарт

Плюсы в поддержку автора не возбраняются 😁
  • 👍 22
  • 🔥 8
Post #545 3.68K

Forwarded from Магнит IT

Обзор ряда новых возможностей платформы 8.3.22

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

В этом выпуске:
- Общее оформление отчетов (и индивидуально для пользователя)
- Генератор случайных паролей и чисел
- Получение УИД в запросах, СКД, ДС
- Проверка колонок таблицы формы (и их баги)
- Документ PDF
- Развитие аутентификации (JWT-токены)
- Расширения конфигурации
- Система взаимодействия
- И прочие мелочи

Смотреть видео обзор

Спикеры: Черненко Виталий, Сафин Айдар, Пузаков Александр
YouTube Новые возможности платформы 1С 8.3.22 Изучим новые возможности платформы 1С 8.3.22 Рассмотрим нюансы и баги нового функционала. Спикеры: Черненко Виталий, Сафин Айдар, Пузаков Александр 00:00 - Введение 01:18 - Генератор случайных паролей 04:36 - Генератор случайных чисел 07:26 - Оформления…
  • 👍 14
  • 🔥 5
  • ❤ 1
Post #544 3.29K
Каждый может научиться программировать правильно и быстро. Просто о сложном.
Для этого существует канал🔋🔋🔋 https://t.me/quazareline
Автор пишет статьи с разбором возможностей БСП и шпаргалками по ним.
Telegram Практика сложного кода ✅ Методы кодинга 1с - БСП, СКД, конвертация и мобильные приложения 📖📚📕 ✅ примеры и статьи 📘🗂️🧑🏼‍💻 @quazarefeedback_bot - по всем вопросам 👩‍💼🧑‍💼🧑‍🏫
  • 👍 9
Post #543 4.07K
Жёлтый чайник 1С (Черненко Виталий) Что произойдет при выполнении команды?
  • 👍 10
  • 🔥 10
  • 🤯 9
  • 🗿 1
Post #542 3.27K
Что произойдет при выполнении команды?
  • 🤯 15
  • 👍 3
  • 🔥 1
Post #541 4.45K
Жёлтый чайник 1С (Черненко Виталий) Реестр каналов по 1С Так вышло, что я подписываюсь на все каналы тематик, которые мне интересны. Одна из таких тем - 1С. Даже если канал из трёх с половиной подписчиков, я всё равно добавляю его себе и становлюсь четвёртым (шутка про половину подписчика)…
🟡➕💬 Мир 1С в Телеграм

В Телеграм появилась новая функция. Можно поделиться своими "папочками" со списком каналов и чатов. И в продолжение темы реестра 1С каналов выкладываю ссылки на такие общие папки:

➖ Каналы по 1С
➖ Чаты по 1С

Именно такие списки с ресурсами у меня в Телеграм. Иногда могут в чатах попадаться и каналы. К сожалению, не всем можно поделиться, поэтому общий список всё равно остаётся в реестре каналов и чатов телеграмм. Там есть описания, контакты, поиск по тегам и так далее.

А если вашего канала нет в реестре, то пишите @SeiOkami

__
@JuniorOneS
  • 👍 20
  • 🔥 8
Post #540 3.56K
🔑 ГенераторСлучайныхПаролей в 1С

В 8.3.22 появился объект ГенераторСлучайныхПаролей
Объект простой и похож на старый добрый ГСЧ. Но позволяет получить не число, а пароль для пользователя.

На самом деле, можно найти разные готовые решения по программной генерации паролей. Например, в БСП есть Пользователи.СоздатьПароль(). А теперь есть возможность использовать объект платформы без лишнего кода.

Но как всегда есть "но"...

❌Не используются спец-символы
Очень странно, но пользователи 1С, видимо, не привыкли использовать в паролях подчеркивания, точки и так далее. Только буквы и цифры.

❌Не используется кириллица
А как вы считаете, нужна ли кириллица в пароле?

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

✔️Параметр "Запоминающийся пароль"
Значение данного параметра определяет, будут ли сгенерированы простые для запоминания пароли или нет.
Не сказал бы, что получаемые пароли легко запоминаются. Но в целом результат более читабелен. Хоть и менее безопасен, потому что периодически попадаются какие-то слова и имена.

😁
________________
@JuniorOneS
  • 😁 31
  • 🤣 23
  • 👍 15
  • 🔥 4
Older posts →
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 →