Открытие формы записи регистра сведений
Часто ли вам приходится программно открывать форму существующей записи регистра? Думаю, нет. А рецепт этот не тривиальный, оттого и забывается быстрее. 👆
Вот вам в копилку 2️⃣ варианта реализации: первый с "ручным" формированием ключа записи, второй более нативный, но там лишний серверный вызов. Выбирайте сами 😊
‼️Ключевой момент - при формировании структуры-ключа должны быть перечислены все измерения и период, если РС периодический. 😎
#код #разработка
Часто ли вам приходится программно открывать форму существующей записи регистра? Думаю, нет. А рецепт этот не тривиальный, оттого и забывается быстрее. 👆
Вот вам в копилку 2️⃣ варианта реализации: первый с "ручным" формированием ключа записи, второй более нативный, но там лишний серверный вызов. Выбирайте сами 😊
‼️Ключевой момент - при формировании структуры-ключа должны быть перечислены все измерения и период, если РС периодический. 😎
#код #разработка
🔥1
Картинка в колонке динамического списка
Картинка в колонке таблицы - удобный и красивый приём визуально проинформировать пользователя о факте согласования или наличии файла.
Если в обычных формах мы это делали в обработчике "При получении данных", то в управляемой форме всё делается намного проще:
📌 Данные в колонке (ПутьКДанным) - это по-прежнему индекс картинки в коллекции
📌 Вид элемента меняем на "Поле картинки"
📌 А вот сама коллекция теперь указывается в свойствах элемента колонки, а не всей таблицы 😃👍
#разработка #формы #юзабилити
Картинка в колонке таблицы - удобный и красивый приём визуально проинформировать пользователя о факте согласования или наличии файла.
Если в обычных формах мы это делали в обработчике "При получении данных", то в управляемой форме всё делается намного проще:
📌 Данные в колонке (ПутьКДанным) - это по-прежнему индекс картинки в коллекции
📌 Вид элемента меняем на "Поле картинки"
📌 А вот сама коллекция теперь указывается в свойствах элемента колонки, а не всей таблицы 😃👍
#разработка #формы #юзабилити
🔥1
Неочевидный момент оптимизации
❓Кейс:
На форме документа нужно раскрасить строки товаров в зависимости от их текущей активности, которая хранится в регистре сведений. Сделать, чтобы не тормозило
❗️Реализация:
1. При получении данных для каждой строки выполняется запрос и кешируется в соответствии, чтобы при следующем обращении не тратить время;
2. При открытии формы выполняем один запрос по всем товарам и кешируем весь результат
☹️Грабля:
На днях замерил открытие формы, оказалось, что при открытии много раз выполняется запрос к каждой строке, хотя не должен был. Всё должен взять на себя общий запрос
👆Баг:
Оказалось, что в регистре были данные не по всем товарам, и те из них, что не попали в отбор, не кешировались в соответствие (не оптимальный вариант)
😃Фикса:
Добавляем соединение данных документа и регистра, обрабатываем дополнительно отсутствующие индикаторы и выводим для них значение по умолчанию (оптимальный вариант)
👍
#разработка #оптимизация #запросы
❓Кейс:
На форме документа нужно раскрасить строки товаров в зависимости от их текущей активности, которая хранится в регистре сведений. Сделать, чтобы не тормозило
❗️Реализация:
1. При получении данных для каждой строки выполняется запрос и кешируется в соответствии, чтобы при следующем обращении не тратить время;
2. При открытии формы выполняем один запрос по всем товарам и кешируем весь результат
☹️Грабля:
На днях замерил открытие формы, оказалось, что при открытии много раз выполняется запрос к каждой строке, хотя не должен был. Всё должен взять на себя общий запрос
👆Баг:
Оказалось, что в регистре были данные не по всем товарам, и те из них, что не попали в отбор, не кешировались в соответствие (не оптимальный вариант)
😃Фикса:
Добавляем соединение данных документа и регистра, обрабатываем дополнительно отсутствующие индикаторы и выводим для них значение по умолчанию (оптимальный вариант)
👍
#разработка #оптимизация #запросы
🔥1
Пожалей СУБД
Сегодня очень простой совет, даже картинки не будет 🙂
Когда пишешь запрос, очень удобно покрутить его на рабочей базе. Ведь тогда видно реальную картину результата.
Но! 👆 Если выборка данных большая, а база очень многопользовательская, то высока вероятность конфликта в борьбе за ресурсы.
Дабы не грузить и без того нагруженную БД, ограничьте тестовую выборку ключевым словом ПЕРВЫЕ n.
#разработка #запросы
Сегодня очень простой совет, даже картинки не будет 🙂
Когда пишешь запрос, очень удобно покрутить его на рабочей базе. Ведь тогда видно реальную картину результата.
Но! 👆 Если выборка данных большая, а база очень многопользовательская, то высока вероятность конфликта в борьбе за ресурсы.
Дабы не грузить и без того нагруженную БД, ограничьте тестовую выборку ключевым словом ПЕРВЫЕ n.
#разработка #запросы
Чек-лист для нового объекта конфигурации
Добавил новый объект?
Отправлять в продакт не спеши!
Не подставляй своих коллег,
Чек-лист на этот случай держи!
1️⃣ Добавить в подсистемы. Они могут быть интерфейсные (управляемый интерфейс) и прикладные, не забываем про оба вида.
2️⃣ Разместить в интерфейсах (обычный интерфейс).
3️⃣ Раздать права необходимым ролям, убрать право интерактивного удаления у полных прав. При необходимости настроить RLS.
4️⃣ Прописать в планах обмена и правилах обмена.
Автор: @Benony0
#разработка #конфигурирование #чеклисты
Добавил новый объект?
Отправлять в продакт не спеши!
Не подставляй своих коллег,
Чек-лист на этот случай держи!
1️⃣ Добавить в подсистемы. Они могут быть интерфейсные (управляемый интерфейс) и прикладные, не забываем про оба вида.
2️⃣ Разместить в интерфейсах (обычный интерфейс).
3️⃣ Раздать права необходимым ролям, убрать право интерактивного удаления у полных прав. При необходимости настроить RLS.
4️⃣ Прописать в планах обмена и правилах обмена.
Автор: @Benony0
#разработка #конфигурирование #чеклисты
👍5
Полезные ресурсы для 1С-специалиста
Если ваша деятельность связана с 1С: Предприятием и вы задумываетесь о расширении профессионального кругозора или повышении своей квалификации, то в этой подборке ресурсов обязательно найдёте то, что вам надо.
#полезныересурсы
https://telegra.ph/Poleznye-resursy-dlya-1S-specialista-04-21-2
Если ваша деятельность связана с 1С: Предприятием и вы задумываетесь о расширении профессионального кругозора или повышении своей квалификации, то в этой подборке ресурсов обязательно найдёте то, что вам надо.
#полезныересурсы
https://telegra.ph/Poleznye-resursy-dlya-1S-specialista-04-21-2
Telegraph
Полезные ресурсы для 1С-специалиста
Если ваша деятельность связана с 1С: Предприятием и вы задумываетесь о расширении профессионального кругозора или повышении своей квалификации, то в этой подборке ресурсов обязательно найдёте то, что вам надо. ПОДЗАРАБОТАТЬ Фриланс.ру - пожалуй крупнейшая…
Кому нужны стандарты?
Как хорошо, что все мы разные, и код пишем тоже по-разному. Разношерстные модули делают конфу не скучной, разбираясь в чужом коде, учишься разным техникам оформления текстов. А поиск багов становится действительно увлекательным и творческим занятием!
#код #разработка
https://telegra.ph/Komu-nuzhny-standarty-07-01
Как хорошо, что все мы разные, и код пишем тоже по-разному. Разношерстные модули делают конфу не скучной, разбираясь в чужом коде, учишься разным техникам оформления текстов. А поиск багов становится действительно увлекательным и творческим занятием!
#код #разработка
https://telegra.ph/Komu-nuzhny-standarty-07-01
Telegraph
Кому нужны стандарты?
Зачем писать код в одном стиле всей команде? ✅ Во-первых, это повысит его а) сопровождемость, б) лёгкость освоения новыми сотрудниками, в) скорость проведения codereview и рефакторинг. Всё это напрямую влияет на снижение стоимости конечного продукта для бизнеса.…
Программное добавление строки в табличное поле
Задача:
Симитировать программное добавление строки в Дерево значений, которое лежит на форме и не привязано к ТЧ. Задача в том, чтобы у пользователя была полная иллюзия добавления строки в ТЧ: активизация редактирования новой строки с позиционированием в редактируемой ячейке колонки.
Решение:
Весь секрет - в последних двух строках представленной процедуры. При создании новой строки мы сразу имеем доступ к ее ID (который привязан к ней уже навсегда), и позиционируемся с помощью этого самого ID.
Для Таблицы значений всё то же самое, только строка добавляется проще:
ТабТовары.Добавить();
#код #разработка #интерфейсы #юзабилити
Задача:
Симитировать программное добавление строки в Дерево значений, которое лежит на форме и не привязано к ТЧ. Задача в том, чтобы у пользователя была полная иллюзия добавления строки в ТЧ: активизация редактирования новой строки с позиционированием в редактируемой ячейке колонки.
Решение:
Весь секрет - в последних двух строках представленной процедуры. При создании новой строки мы сразу имеем доступ к ее ID (который привязан к ней уже навсегда), и позиционируемся с помощью этого самого ID.
Для Таблицы значений всё то же самое, только строка добавляется проще:
ТабТовары.Добавить();
#код #разработка #интерфейсы #юзабилити
РольДоступна() vs ПравоДоступа()
Есть такой полезный метод РольДоступна(), его любят все, кто с ним знаком. Мне он тоже нравится - выручает всегда, когда невозможно настроить доступ на уровне конфигуратора, а зависимость от роли установить надо.
Но есть ряд ситуаций, когда из соображений чистоты архитектуры использовать этот метод не очень хорошо.
Пример: Есть справочники Контрагенты и Договоры, с разных набором прав для разных пользователей. На форме Договора доступ к одному из элементов нужно дать только пользователям, у которых есть право редактирования Контрагентов. Вот тут лучше применить метод ПравоДоступа() вместо перечисления всех возможных ролей через РольДоступна().
Если теперь изменится состав ролей, которым доступно редактирование Контрагентов, то в модуле формы Договора менять ничего не придётся, и модуль останется независимым от таких изменений.
#разработка #управлениедоступом
Есть такой полезный метод РольДоступна(), его любят все, кто с ним знаком. Мне он тоже нравится - выручает всегда, когда невозможно настроить доступ на уровне конфигуратора, а зависимость от роли установить надо.
Но есть ряд ситуаций, когда из соображений чистоты архитектуры использовать этот метод не очень хорошо.
Пример: Есть справочники Контрагенты и Договоры, с разных набором прав для разных пользователей. На форме Договора доступ к одному из элементов нужно дать только пользователям, у которых есть право редактирования Контрагентов. Вот тут лучше применить метод ПравоДоступа() вместо перечисления всех возможных ролей через РольДоступна().
Если теперь изменится состав ролей, которым доступно редактирование Контрагентов, то в модуле формы Договора менять ничего не придётся, и модуль останется независимым от таких изменений.
#разработка #управлениедоступом
На Инфостарте объявили конкурс лайфхаков. Вспомнил открытие прошлого года, которое сделал для себя. Не могу не продублировать здесь 🙂. Не относится напрямую к 1С, но очень помогает в работе.
С помощью Win+→ и Win+← можно расположить любое окно ровно на половине экрана с одной из сторон. Удобно, когда нужно быстро раскидать окна, чтобы видеть сразу несколько приложений. Команда циклична.
А если схватить окно мышкой за заголовок и "притащить" к одной из боковых границ экрана, то для другой стороны можно выбрать парное окно для размещения на экране. Эти два окна "сцепляются" друг с другом, границу их соединения можно перетаскивать, меняя площади, занимаемые каждым из них.
#лайфхак
С помощью Win+→ и Win+← можно расположить любое окно ровно на половине экрана с одной из сторон. Удобно, когда нужно быстро раскидать окна, чтобы видеть сразу несколько приложений. Команда циклична.
А если схватить окно мышкой за заголовок и "притащить" к одной из боковых границ экрана, то для другой стороны можно выбрать парное окно для размещения на экране. Эти два окна "сцепляются" друг с другом, границу их соединения можно перетаскивать, меняя площади, занимаемые каждым из них.
#лайфхак
Управление видимостью кнопок стандартных команд табличного поля
По умолчанию эти кнопки располагаются в командной панели, но доступа к ним из кода нет, поскольку их нет среди элементов формы.
Решается вопрос вытаскиванием на форму стандартных команд. При этом элемент кнопки автоматически подменяет кнопку по умолчанию (первая исчезает), а к новой кнопке появляется доступ из кода и в панели свойств.
#интерфейсы #формы #разработка
По умолчанию эти кнопки располагаются в командной панели, но доступа к ним из кода нет, поскольку их нет среди элементов формы.
Решается вопрос вытаскиванием на форму стандартных команд. При этом элемент кнопки автоматически подменяет кнопку по умолчанию (первая исчезает), а к новой кнопке появляется доступ из кода и в панели свойств.
#интерфейсы #формы #разработка
Как заблокировать стандартные команды табличного поля?
Всё просто. Снимите необходимые флажки в перечне команд, который открывается по ссылке свойства Состав команд.
Всё просто, да не совсем )). Кнопка и команда исчезнут, а вот действие горячих клавиш останется. Так что если, например, убираешь команду Скопировать, то не поленись установить Отказ = Истина; в обработчике ПриНачалеДобавления() для копируемой строки.
#разработка #формы #управляемыеформы
Всё просто. Снимите необходимые флажки в перечне команд, который открывается по ссылке свойства Состав команд.
Всё просто, да не совсем )). Кнопка и команда исчезнут, а вот действие горячих клавиш останется. Так что если, например, убираешь команду Скопировать, то не поленись установить Отказ = Истина; в обработчике ПриНачалеДобавления() для копируемой строки.
#разработка #формы #управляемыеформы
Быстрое прикрепление окон
В управляемом интерфейсе есть возможность прикрепить окно к одной из сторон приложения. Но не все знают, что это можно сделать одним щелчком мыши, просто перетаскивая закладку окна из панели открытых.
#формы #управляемыеформы #интерфейсы
Автор: @reborn85
В управляемом интерфейсе есть возможность прикрепить окно к одной из сторон приложения. Но не все знают, что это можно сделать одним щелчком мыши, просто перетаскивая закладку окна из панели открытых.
#формы #управляемыеформы #интерфейсы
Автор: @reborn85
Переключатель из кнопок
Если кнопки на командной панели объединить компактной группой и указать полукруглую форму, то получится весьма приятная на вид и удобная в использовании группа кнопок.
А добавив немного кода, такую группу кнопок можно использовать как альтернативный переключатель. Или выключатель :)
Нюанс в том, что сделать это можно только для группы кнопок командной панели.
#формы #управляемыеформы #интерфейсы
Если кнопки на командной панели объединить компактной группой и указать полукруглую форму, то получится весьма приятная на вид и удобная в использовании группа кнопок.
А добавив немного кода, такую группу кнопок можно использовать как альтернативный переключатель. Или выключатель :)
Нюанс в том, что сделать это можно только для группы кнопок командной панели.
#формы #управляемыеформы #интерфейсы
Расчленённый текст запроса
Хорошо, когда текст запроса всегда открывается в конструкторе, и при этом не ломается результат после его использования. Ещё лучше, если конструктор работает для всех ваших запросов. Даже сложных, которые собираются программно.
Один из случаев - это когда в двух частях текста описываются разные временные таблицы. Тогда встаёт вопрос наличия символа ";" между ними. Если добавлять точку с запятой в конец первой части, то после использования конструктора она слетает. А каждый раз помнить о ней не всегда получается.
Выход - добавлять ";" как отдельную часть текста. Тогда и конструктор, и результат остаются рабочими! 😎
#разработка #код #запросы
Хорошо, когда текст запроса всегда открывается в конструкторе, и при этом не ломается результат после его использования. Ещё лучше, если конструктор работает для всех ваших запросов. Даже сложных, которые собираются программно.
Один из случаев - это когда в двух частях текста описываются разные временные таблицы. Тогда встаёт вопрос наличия символа ";" между ними. Если добавлять точку с запятой в конец первой части, то после использования конструктора она слетает. А каждый раз помнить о ней не всегда получается.
Выход - добавлять ";" как отдельную часть текста. Тогда и конструктор, и результат остаются рабочими! 😎
#разработка #код #запросы
Защита кода от себя
Чтобы использовать контекстную подсказку к объекту, объявление которого находится за пределами модуля, мы пишем временное объявление, которое потом забываем удалить.
Если использовать инструкцию препроцессора со значением Ложь (как на картинке 👇), платформа сама об этом напомнит 🙃
А если хочется оставить строку-помощник, чтобы платформа не выдавала ошибки, напишите:
#Если Сервер и Не Сервер Тогда
#разработка #код #лайфхак
Чтобы использовать контекстную подсказку к объекту, объявление которого находится за пределами модуля, мы пишем временное объявление, которое потом забываем удалить.
Если использовать инструкцию препроцессора со значением Ложь (как на картинке 👇), платформа сама об этом напомнит 🙃
А если хочется оставить строку-помощник, чтобы платформа не выдавала ошибки, напишите:
#Если Сервер и Не Сервер Тогда
#разработка #код #лайфхак