Пожалей СУБД
Сегодня очень простой совет, даже картинки не будет 🙂
Когда пишешь запрос, очень удобно покрутить его на рабочей базе. Ведь тогда видно реальную картину результата.
Но! 👆 Если выборка данных большая, а база очень многопользовательская, то высока вероятность конфликта в борьбе за ресурсы.
Дабы не грузить и без того нагруженную БД, ограничьте тестовую выборку ключевым словом ПЕРВЫЕ 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
Переключатель из кнопок
Если кнопки на командной панели объединить компактной группой и указать полукруглую форму, то получится весьма приятная на вид и удобная в использовании группа кнопок.
А добавив немного кода, такую группу кнопок можно использовать как альтернативный переключатель. Или выключатель :)
Нюанс в том, что сделать это можно только для группы кнопок командной панели.
#формы #управляемыеформы #интерфейсы
Если кнопки на командной панели объединить компактной группой и указать полукруглую форму, то получится весьма приятная на вид и удобная в использовании группа кнопок.
А добавив немного кода, такую группу кнопок можно использовать как альтернативный переключатель. Или выключатель :)
Нюанс в том, что сделать это можно только для группы кнопок командной панели.
#формы #управляемыеформы #интерфейсы
Расчленённый текст запроса
Хорошо, когда текст запроса всегда открывается в конструкторе, и при этом не ломается результат после его использования. Ещё лучше, если конструктор работает для всех ваших запросов. Даже сложных, которые собираются программно.
Один из случаев - это когда в двух частях текста описываются разные временные таблицы. Тогда встаёт вопрос наличия символа ";" между ними. Если добавлять точку с запятой в конец первой части, то после использования конструктора она слетает. А каждый раз помнить о ней не всегда получается.
Выход - добавлять ";" как отдельную часть текста. Тогда и конструктор, и результат остаются рабочими! 😎
#разработка #код #запросы
Хорошо, когда текст запроса всегда открывается в конструкторе, и при этом не ломается результат после его использования. Ещё лучше, если конструктор работает для всех ваших запросов. Даже сложных, которые собираются программно.
Один из случаев - это когда в двух частях текста описываются разные временные таблицы. Тогда встаёт вопрос наличия символа ";" между ними. Если добавлять точку с запятой в конец первой части, то после использования конструктора она слетает. А каждый раз помнить о ней не всегда получается.
Выход - добавлять ";" как отдельную часть текста. Тогда и конструктор, и результат остаются рабочими! 😎
#разработка #код #запросы
Защита кода от себя
Чтобы использовать контекстную подсказку к объекту, объявление которого находится за пределами модуля, мы пишем временное объявление, которое потом забываем удалить.
Если использовать инструкцию препроцессора со значением Ложь (как на картинке 👇), платформа сама об этом напомнит 🙃
А если хочется оставить строку-помощник, чтобы платформа не выдавала ошибки, напишите:
#Если Сервер и Не Сервер Тогда
#разработка #код #лайфхак
Чтобы использовать контекстную подсказку к объекту, объявление которого находится за пределами модуля, мы пишем временное объявление, которое потом забываем удалить.
Если использовать инструкцию препроцессора со значением Ложь (как на картинке 👇), платформа сама об этом напомнит 🙃
А если хочется оставить строку-помощник, чтобы платформа не выдавала ошибки, напишите:
#Если Сервер и Не Сервер Тогда
#разработка #код #лайфхак
Выделение идентификаторов
Сёрфинг по локальным переменным модуля будет комфортнее, если в параметрах системы установить расцветку для "Текущего идентификатора" и "Выбранного идентификатора".
В платформе до версии 8.3.16 эта настройка по умолчанию отключена.
#администрирование #код #лайфхак
Сёрфинг по локальным переменным модуля будет комфортнее, если в параметрах системы установить расцветку для "Текущего идентификатора" и "Выбранного идентификатора".
В платформе до версии 8.3.16 эта настройка по умолчанию отключена.
#администрирование #код #лайфхак
На что обратить внимание, если тормозят запросы?
✅ Выбирай только нужные данные. Каждое выбранное поле - это новая колонка полученной таблицы, а значит увеличение объема памяти и времени на обработку. И никогда не используй выборку с помощью звёздочку ("*" = все поля таблицы) - можно нарваться на сильно составные поля или поля с недопустимым типом. Либо на них нарвется тот, кто будет дорабатывать конфу после тебя
✅ Избегай лишних обращений через точку. Так ты неявно обращаешься к другой таблице БД, и при переводе запроса на язык SQL 1С-ка делает из такой конструкции дополнительное левое соединение
✅ Лучше временная таблица, чем вложенный запрос или виртуальная таблица. Так ты помогаешь транслятору SQL "перевести" текст запроса наиболее оптимальным образом
✅ Уничтожай ненужные временные таблицы в пакете запросов. Освобождая память, которую занимает результат запроса, можно значительно уменьшить время на его обработку
✅ Используй индексы. Поля ВТ, по которым в следующих запросах пакета таблица будет фильтроваться или присоединяться, принято индексировать. Но это не панацея, каждый случай нужно тестировать. Бывает, что после добавления индекса скорость падает
✅ Накладывай условия в параметрах виртуальной таблицы регистра, а не в секции ГДЕ. Просто прими за аксиому и делай так всегда. Но только условия должны накладываться на измерения и их реквизиты.
(продолжение следует...)
#запросы #оптимизация
✅ Выбирай только нужные данные. Каждое выбранное поле - это новая колонка полученной таблицы, а значит увеличение объема памяти и времени на обработку. И никогда не используй выборку с помощью звёздочку ("*" = все поля таблицы) - можно нарваться на сильно составные поля или поля с недопустимым типом. Либо на них нарвется тот, кто будет дорабатывать конфу после тебя
✅ Избегай лишних обращений через точку. Так ты неявно обращаешься к другой таблице БД, и при переводе запроса на язык SQL 1С-ка делает из такой конструкции дополнительное левое соединение
✅ Лучше временная таблица, чем вложенный запрос или виртуальная таблица. Так ты помогаешь транслятору SQL "перевести" текст запроса наиболее оптимальным образом
✅ Уничтожай ненужные временные таблицы в пакете запросов. Освобождая память, которую занимает результат запроса, можно значительно уменьшить время на его обработку
✅ Используй индексы. Поля ВТ, по которым в следующих запросах пакета таблица будет фильтроваться или присоединяться, принято индексировать. Но это не панацея, каждый случай нужно тестировать. Бывает, что после добавления индекса скорость падает
✅ Накладывай условия в параметрах виртуальной таблицы регистра, а не в секции ГДЕ. Просто прими за аксиому и делай так всегда. Но только условия должны накладываться на измерения и их реквизиты.
(продолжение следует...)
#запросы #оптимизация
Ты можешь сам сменить пароль!
Если ты работаешь с хранилищем конфигурации и хочешь сменить свой пароль, не нужно бежать к админу или архитектору. Сделай это сам!
Да-да, независимо от того, какие у тебя права! Заходишь в Администрирование хранилища, открываешь свою учётку и меняешь пароль. Вуаля! 😃
При минимальных правах на действия с хранилищем, это единственное, что остаётся доступным всегда.
#администрирование #лайфхак
Если ты работаешь с хранилищем конфигурации и хочешь сменить свой пароль, не нужно бежать к админу или архитектору. Сделай это сам!
Да-да, независимо от того, какие у тебя права! Заходишь в Администрирование хранилища, открываешь свою учётку и меняешь пароль. Вуаля! 😃
При минимальных правах на действия с хранилищем, это единственное, что остаётся доступным всегда.
#администрирование #лайфхак