Информируем пользователя красиво
На что только не пойдёшь ради того, чтобы сделать пользователя счастливым! Можно даже написать чуть больше кода, чтобы его общение с программой было более приятным.
(Автор: @antonov_i)
#Юзабилити #Разработка
На что только не пойдёшь ради того, чтобы сделать пользователя счастливым! Можно даже написать чуть больше кода, чтобы его общение с программой было более приятным.
(Автор: @antonov_i)
#Юзабилити #Разработка
Telegraph
Информируем пользователя красиво
Далеко не все 1С-разработчики следят за появлением нового API в платформе, и продолжают решать задачи по-старинке. Например, требуется сообщить пользователю важную информацию при выполнении действия в модуле объекта (говорим про управляемое приложение), так…
Повышаем производительность, ограничивая пользователей
Чем меньше выбор действий, тем меньше возможностей наделать глупостей. Это справедливо и при работе пользователей с программой. А иногда дополнительные ограничения могут спасти от тормозов целую корпоративную систему.
(Автор: @Benony0)
#Оптимизация #Разработка
Чем меньше выбор действий, тем меньше возможностей наделать глупостей. Это справедливо и при работе пользователей с программой. А иногда дополнительные ограничения могут спасти от тормозов целую корпоративную систему.
(Автор: @Benony0)
#Оптимизация #Разработка
Telegraph
Повышаем производительность, ограничивая пользователей
Одной из первых инструкций в "Руководстве пользователя" по работе с формами является описание назначения кнопок ОК, Записать и Закрыть. Однако на деле лишь малая часть пользователей, после просмотра (без редактирования) элемента справочника или документа…
👍5
Визуализация дерева проекта в EDT
Когда первый раз открываешь EDT, глаза разбегаются от множества значков и ярлычков, которыми теперь пестрит дерево метаданных. С наскоку и не поймёшь, какой что означает. Этот микрогайд поможет тебе обрести уверенность.
(Автор: @Benony0)
#EDT #Конфигурирование
Когда первый раз открываешь EDT, глаза разбегаются от множества значков и ярлычков, которыми теперь пестрит дерево метаданных. С наскоку и не поймёшь, какой что означает. Этот микрогайд поможет тебе обрести уверенность.
(Автор: @Benony0)
#EDT #Конфигурирование
Telegraph
Визуализация дерева проекта в EDT
Дерево проекта в EDT, в отличие от дерева метаданных конфигуратора, приобрело целый ряд дополнительных визуальных элементов, сигнализирующих о состоянии того или иного объекта конфигурации. Роль каждого из них далеко не всегда очевидна при первом знакомстве…
Режим разрешения отладки
Досадно бывает, когда нужно запустить отладку, а текущий сеанс закрывать не хочется. А если действует доменная windows-аутентификация, то отладку вообще не запустить. Но выход есть!
(Автор: @Benony0)
#Отладка #Конфигурирование
Досадно бывает, когда нужно запустить отладку, а текущий сеанс закрывать не хочется. А если действует доменная windows-аутентификация, то отладку вообще не запустить. Но выход есть!
(Автор: @Benony0)
#Отладка #Конфигурирование
Telegraph
Режим разрешения отладки
Иногда бывает так, что пользовательский сеанс запущен, открыто множество окон на интересующем тестовом случае, и тут понимаешь, что ты забыл включить режим отладки. Что делать? Можно конечно закрыть сеанс и запустить отладку из конфигуратора из меню «Отладка…
👍1
Правила сравнения/объединения для каждой строки кода
Для тех, кому мало штатных возможностей платформы при сравнении/объединении, вносим немного магии в процесс управления кодом.
(Автор: @Benony0)
#Конфигурирование #Разработка
Для тех, кому мало штатных возможностей платформы при сравнении/объединении, вносим немного магии в процесс управления кодом.
(Автор: @Benony0)
#Конфигурирование #Разработка
Telegraph
Правила сравнения/объединения для каждой строки кода
При сравнении/объединении конфигураций очень удобно пользоваться инструментом настройки объединения, который позволяет указать правила слияния кода для каждого метода. Но иногда бывает необходимо настроить правила объединения для каждой строки кода. В этом…
Интернациональная интеграция
Сегодня немного о подводных камнях обмена между конфами на разных языках.
(Автор: @PetrTsap)
#интеграция #разработка
Как работать с Конвертацией Данных, если необходимо связывать конфигурации, работающих в разных режимах использования встроенного языка.
Конвертация Данных это замечательный инструмент, очень сильно упрощающий работу по связыванию баз меж собой. Но если вы попробуете выгрузить метаданные из нерусскоязычной конфигурации в русскоязычную, загрузка описаний в КД вылетит с платформенной ошибкой чтения XML. В принципе, эта ситуация является багом, который до сих пор не исправили, но есть метод, позволяющий обойти эту проблему и добиться приемлемого результата.
Как всем известно, одним из основных свойств конфигурации является "Вариант встроенного языка". По умолчанию он привычный русский, но некоторые конфигурации могут быть написаны и исполняться на английском. Метаданным строго говоря вообще неважно, на каком они языке, а вот для ключевых лексем языка применяется два равноправных варианта. При этом, они применяются равноправно, поэтому вы легко можете написать:
If Чтото Then
КонецЕсли;
И эта конструкция будет работать в любой конфигурации при любом режиме встроенного языка. За что же отвечает это свойство? А вот например, ЧтениеXML будет ожидать значения системных перечислений, соответствующих языку выполнения конфигурации. То есть, в применении к КД, оно ожидает увидеть для конкретного объекта ВидИерархии.ИерархияЭлементов или ВидИерархии.ИерархияГруппИЭлементов. Обработка описания же, запущенная в режиме английского языка, выгружает HierarchyType.HierarchyOfItems / HierarchyType.HierarchyFoldersAndItems
Таким образом, легко написать принудительное приведение типов данных и системных перечислений, создаваемых в "английских" конфигурациях и получить свободное использование Конвертации Данных для международных задач.
Присоединяйтесь к нам в проекте улучшения Конвертации Данных! https://github.com/ha1s/ConversionPlus
Сегодня немного о подводных камнях обмена между конфами на разных языках.
(Автор: @PetrTsap)
#интеграция #разработка
Как работать с Конвертацией Данных, если необходимо связывать конфигурации, работающих в разных режимах использования встроенного языка.
Конвертация Данных это замечательный инструмент, очень сильно упрощающий работу по связыванию баз меж собой. Но если вы попробуете выгрузить метаданные из нерусскоязычной конфигурации в русскоязычную, загрузка описаний в КД вылетит с платформенной ошибкой чтения XML. В принципе, эта ситуация является багом, который до сих пор не исправили, но есть метод, позволяющий обойти эту проблему и добиться приемлемого результата.
Как всем известно, одним из основных свойств конфигурации является "Вариант встроенного языка". По умолчанию он привычный русский, но некоторые конфигурации могут быть написаны и исполняться на английском. Метаданным строго говоря вообще неважно, на каком они языке, а вот для ключевых лексем языка применяется два равноправных варианта. При этом, они применяются равноправно, поэтому вы легко можете написать:
If Чтото Then
КонецЕсли;
И эта конструкция будет работать в любой конфигурации при любом режиме встроенного языка. За что же отвечает это свойство? А вот например, ЧтениеXML будет ожидать значения системных перечислений, соответствующих языку выполнения конфигурации. То есть, в применении к КД, оно ожидает увидеть для конкретного объекта ВидИерархии.ИерархияЭлементов или ВидИерархии.ИерархияГруппИЭлементов. Обработка описания же, запущенная в режиме английского языка, выгружает HierarchyType.HierarchyOfItems / HierarchyType.HierarchyFoldersAndItems
Таким образом, легко написать принудительное приведение типов данных и системных перечислений, создаваемых в "английских" конфигурациях и получить свободное использование Конвертации Данных для международных задач.
Присоединяйтесь к нам в проекте улучшения Конвертации Данных! https://github.com/ha1s/ConversionPlus
GitHub
GitHub - ha1s/ConversionPlus: Open-source project: Convertion + OneScript + Git
Open-source project: Convertion + OneScript + Git. Contribute to ha1s/ConversionPlus development by creating an account on GitHub.
Количественно-суммовой учёт в типовых решениях
#БСП #СКД
Иногда пользователю необходимо внести корректировку остатка суммы в регистре с количественно-суммовым учётом, но с нулевым количеством (эдакая переоценка остатка). Что он делает? Находит первый подходящий документ, который готов провестись с нулевым количеством, и пользуется его услугами. Но когда затем формируется отчёт, то в нём не оказывается оборотов с заветными цифрами, хотя на сальдо они есть.
Всё дело в том, что в стандартных отчётах по умолчанию установлен фильтр на движения с пустым количеством. И чтобы увидеть данные во всей красе, нужно зайти в расширенные настройки и отключить это ограничение.
#БСП #СКД
Иногда пользователю необходимо внести корректировку остатка суммы в регистре с количественно-суммовым учётом, но с нулевым количеством (эдакая переоценка остатка). Что он делает? Находит первый подходящий документ, который готов провестись с нулевым количеством, и пользуется его услугами. Но когда затем формируется отчёт, то в нём не оказывается оборотов с заветными цифрами, хотя на сальдо они есть.
Всё дело в том, что в стандартных отчётах по умолчанию установлен фильтр на движения с пустым количеством. И чтобы увидеть данные во всей красе, нужно зайти в расширенные настройки и отключить это ограничение.
Выгрузка обработчиков в "Конвертации данных"
Нюанс, который показывает важность не пренебрегать форматированием текста программного кода.
Если в тексте обработчика на одной строке с "Иначе" прописать вызов алгоритма, то при формировании модуля отладки получим вот такую красоту ))
Нюанс, который показывает важность не пренебрегать форматированием текста программного кода.
Если в тексте обработчика на одной строке с "Иначе" прописать вызов алгоритма, то при формировании модуля отладки получим вот такую красоту ))
Порядок элементов в КД
#Интеграция #Конвертация #Разработка
В "Конвертации данных" у ряда объектов есть реквизит "Порядок", который определяет приоритет использования. Например, если для обработки ПКС можно использовать несколько ПКО, а конкретное ПКО не указано в настройках, то будет использоваться то, у которого "Порядок" больше.
Нюанс в том, что приоритет выше, когда значение "Порядка" больше. Это может ввести в заблуждение, когда список ПКО отсортирован по порядку, и более "главные" элементы оказываются внизу.
#Интеграция #Конвертация #Разработка
В "Конвертации данных" у ряда объектов есть реквизит "Порядок", который определяет приоритет использования. Например, если для обработки ПКС можно использовать несколько ПКО, а конкретное ПКО не указано в настройках, то будет использоваться то, у которого "Порядок" больше.
Нюанс в том, что приоритет выше, когда значение "Порядка" больше. Это может ввести в заблуждение, когда список ПКО отсортирован по порядку, и более "главные" элементы оказываются внизу.
Сегодня обратим внимание на один момент, по поводу которого ходит много слухов и споров. Только потому, что задача всегда имеет несколько вариантов решения, и все они имеют своё право на существование.
Программная сборка текста запроса
#разработка #запросы
Какую бы методику не выбрал разработчик, его главная цель – сохранить возможность открыть (хотя бы открыть!) текст запроса в конструкторе запроса.
Запрос на первом рисунке в конструкторе открыть нельзя, будет ошибка.
Какие варианты решения существуют?
1. Подмена комментария-шаблона. В месте подмены оставляем комментарий с уникальной «меткой», а в дальнейшем коде модуля, при выполнении необходимых условий, производит подмену этой метки на нужных кусок текста.
Плюсы:
Запрос работает всегда, даже если подмена не производилась (не было необходимости);
Минусы:
Если забыться и отредактировать запрос в конструкторе, то все комментарии слетят.
2. Подмена фиктивного параметра. То же самое, только в качестве мести подставляем параметр с уникальным именем.
Плюсы:
Такой запрос можно редактировать в конструкторе, ничего не слетит;
Минусы:
Необходимо обслуживать дополнительные параметры: при отсутствии необходимости подмены, чем-то его инициализировать или подменять на пустую строку.
3. Подмена готовых участков текста. Более сложный вариант, когда подменяются целые области текста запроса. Может быть удобно, когда нужно переопределить большой фрагмент текста при выполнении редких условий. Посмотрим на примере переопределения текста временной таблицы (последний рисунок).
Плюсы:
Можно редактировать запрос в конструкторе без потери данных;
Можно «конструировать» достаточно сложные запросы;
Минусы:
При работе с многострочными блоками текста появляется сложность в соблюдении точного соответствия теста шаблону;
В сложных запросах может быть трудно сориентироваться с тем, какой результат получится на выходе.
А какими методами пользуетесь вы? Есть ли у вас свои «фишки» по работе со сложными запросами? ))
Программная сборка текста запроса
#разработка #запросы
Какую бы методику не выбрал разработчик, его главная цель – сохранить возможность открыть (хотя бы открыть!) текст запроса в конструкторе запроса.
Запрос на первом рисунке в конструкторе открыть нельзя, будет ошибка.
Какие варианты решения существуют?
1. Подмена комментария-шаблона. В месте подмены оставляем комментарий с уникальной «меткой», а в дальнейшем коде модуля, при выполнении необходимых условий, производит подмену этой метки на нужных кусок текста.
Плюсы:
Запрос работает всегда, даже если подмена не производилась (не было необходимости);
Минусы:
Если забыться и отредактировать запрос в конструкторе, то все комментарии слетят.
2. Подмена фиктивного параметра. То же самое, только в качестве мести подставляем параметр с уникальным именем.
Плюсы:
Такой запрос можно редактировать в конструкторе, ничего не слетит;
Минусы:
Необходимо обслуживать дополнительные параметры: при отсутствии необходимости подмены, чем-то его инициализировать или подменять на пустую строку.
3. Подмена готовых участков текста. Более сложный вариант, когда подменяются целые области текста запроса. Может быть удобно, когда нужно переопределить большой фрагмент текста при выполнении редких условий. Посмотрим на примере переопределения текста временной таблицы (последний рисунок).
Плюсы:
Можно редактировать запрос в конструкторе без потери данных;
Можно «конструировать» достаточно сложные запросы;
Минусы:
При работе с многострочными блоками текста появляется сложность в соблюдении точного соответствия теста шаблону;
В сложных запросах может быть трудно сориентироваться с тем, какой результат получится на выходе.
А какими методами пользуетесь вы? Есть ли у вас свои «фишки» по работе со сложными запросами? ))
БСП расширять - это вам не...
#разработка #расширения #БСП
С появлением в 8.3.11 возможности менять в расширении структуру данных, многие потирают руки в надежде получить счастье с конфигурацией поставщика "на замке". Но не спешите!
Есть одна досадная мелочь: БСП, при появлении нового объекта в расширении, пытается подключить его к модели сервиса, и требует указать для него значение разделителя области данных. Либо просто отказывается обновлять из-за них релиз. Да, при этом предлагает пути решения. Но!
1. В расширении нельзя поменять состав объектов в подписках на события;
2. В расширении нельзя изменить состав объектов для общих реквизитов.
Пока баг не пофиксили, выход такой:
1. В процедуру СвойстаКоллекцийОбъектовМетаданных() модуля менеджера справочника ИдентификаторыОбъектовМетаданных добавляем по строке для коллекций объектов, которые могут добавляться в расширении;
2. В процедуру КонтрольНеразделенныхДанныхПриОбновлении() общего модуля РаботаВМоделиСервиса добавляем наш объект в исключения.
#разработка #расширения #БСП
С появлением в 8.3.11 возможности менять в расширении структуру данных, многие потирают руки в надежде получить счастье с конфигурацией поставщика "на замке". Но не спешите!
Есть одна досадная мелочь: БСП, при появлении нового объекта в расширении, пытается подключить его к модели сервиса, и требует указать для него значение разделителя области данных. Либо просто отказывается обновлять из-за них релиз. Да, при этом предлагает пути решения. Но!
1. В расширении нельзя поменять состав объектов в подписках на события;
2. В расширении нельзя изменить состав объектов для общих реквизитов.
Пока баг не пофиксили, выход такой:
1. В процедуру СвойстаКоллекцийОбъектовМетаданных() модуля менеджера справочника ИдентификаторыОбъектовМетаданных добавляем по строке для коллекций объектов, которые могут добавляться в расширении;
2. В процедуру КонтрольНеразделенныхДанныхПриОбновлении() общего модуля РаботаВМоделиСервиса добавляем наш объект в исключения.