Выгрузка обработчиков в "Конвертации данных"
Нюанс, который показывает важность не пренебрегать форматированием текста программного кода.
Если в тексте обработчика на одной строке с "Иначе" прописать вызов алгоритма, то при формировании модуля отладки получим вот такую красоту ))
Нюанс, который показывает важность не пренебрегать форматированием текста программного кода.
Если в тексте обработчика на одной строке с "Иначе" прописать вызов алгоритма, то при формировании модуля отладки получим вот такую красоту ))
Порядок элементов в КД
#Интеграция #Конвертация #Разработка
В "Конвертации данных" у ряда объектов есть реквизит "Порядок", который определяет приоритет использования. Например, если для обработки ПКС можно использовать несколько ПКО, а конкретное ПКО не указано в настройках, то будет использоваться то, у которого "Порядок" больше.
Нюанс в том, что приоритет выше, когда значение "Порядка" больше. Это может ввести в заблуждение, когда список ПКО отсортирован по порядку, и более "главные" элементы оказываются внизу.
#Интеграция #Конвертация #Разработка
В "Конвертации данных" у ряда объектов есть реквизит "Порядок", который определяет приоритет использования. Например, если для обработки ПКС можно использовать несколько ПКО, а конкретное ПКО не указано в настройках, то будет использоваться то, у которого "Порядок" больше.
Нюанс в том, что приоритет выше, когда значение "Порядка" больше. Это может ввести в заблуждение, когда список ПКО отсортирован по порядку, и более "главные" элементы оказываются внизу.
Сегодня обратим внимание на один момент, по поводу которого ходит много слухов и споров. Только потому, что задача всегда имеет несколько вариантов решения, и все они имеют своё право на существование.
Программная сборка текста запроса
#разработка #запросы
Какую бы методику не выбрал разработчик, его главная цель – сохранить возможность открыть (хотя бы открыть!) текст запроса в конструкторе запроса.
Запрос на первом рисунке в конструкторе открыть нельзя, будет ошибка.
Какие варианты решения существуют?
1. Подмена комментария-шаблона. В месте подмены оставляем комментарий с уникальной «меткой», а в дальнейшем коде модуля, при выполнении необходимых условий, производит подмену этой метки на нужных кусок текста.
Плюсы:
Запрос работает всегда, даже если подмена не производилась (не было необходимости);
Минусы:
Если забыться и отредактировать запрос в конструкторе, то все комментарии слетят.
2. Подмена фиктивного параметра. То же самое, только в качестве мести подставляем параметр с уникальным именем.
Плюсы:
Такой запрос можно редактировать в конструкторе, ничего не слетит;
Минусы:
Необходимо обслуживать дополнительные параметры: при отсутствии необходимости подмены, чем-то его инициализировать или подменять на пустую строку.
3. Подмена готовых участков текста. Более сложный вариант, когда подменяются целые области текста запроса. Может быть удобно, когда нужно переопределить большой фрагмент текста при выполнении редких условий. Посмотрим на примере переопределения текста временной таблицы (последний рисунок).
Плюсы:
Можно редактировать запрос в конструкторе без потери данных;
Можно «конструировать» достаточно сложные запросы;
Минусы:
При работе с многострочными блоками текста появляется сложность в соблюдении точного соответствия теста шаблону;
В сложных запросах может быть трудно сориентироваться с тем, какой результат получится на выходе.
А какими методами пользуетесь вы? Есть ли у вас свои «фишки» по работе со сложными запросами? ))
Программная сборка текста запроса
#разработка #запросы
Какую бы методику не выбрал разработчик, его главная цель – сохранить возможность открыть (хотя бы открыть!) текст запроса в конструкторе запроса.
Запрос на первом рисунке в конструкторе открыть нельзя, будет ошибка.
Какие варианты решения существуют?
1. Подмена комментария-шаблона. В месте подмены оставляем комментарий с уникальной «меткой», а в дальнейшем коде модуля, при выполнении необходимых условий, производит подмену этой метки на нужных кусок текста.
Плюсы:
Запрос работает всегда, даже если подмена не производилась (не было необходимости);
Минусы:
Если забыться и отредактировать запрос в конструкторе, то все комментарии слетят.
2. Подмена фиктивного параметра. То же самое, только в качестве мести подставляем параметр с уникальным именем.
Плюсы:
Такой запрос можно редактировать в конструкторе, ничего не слетит;
Минусы:
Необходимо обслуживать дополнительные параметры: при отсутствии необходимости подмены, чем-то его инициализировать или подменять на пустую строку.
3. Подмена готовых участков текста. Более сложный вариант, когда подменяются целые области текста запроса. Может быть удобно, когда нужно переопределить большой фрагмент текста при выполнении редких условий. Посмотрим на примере переопределения текста временной таблицы (последний рисунок).
Плюсы:
Можно редактировать запрос в конструкторе без потери данных;
Можно «конструировать» достаточно сложные запросы;
Минусы:
При работе с многострочными блоками текста появляется сложность в соблюдении точного соответствия теста шаблону;
В сложных запросах может быть трудно сориентироваться с тем, какой результат получится на выходе.
А какими методами пользуетесь вы? Есть ли у вас свои «фишки» по работе со сложными запросами? ))
БСП расширять - это вам не...
#разработка #расширения #БСП
С появлением в 8.3.11 возможности менять в расширении структуру данных, многие потирают руки в надежде получить счастье с конфигурацией поставщика "на замке". Но не спешите!
Есть одна досадная мелочь: БСП, при появлении нового объекта в расширении, пытается подключить его к модели сервиса, и требует указать для него значение разделителя области данных. Либо просто отказывается обновлять из-за них релиз. Да, при этом предлагает пути решения. Но!
1. В расширении нельзя поменять состав объектов в подписках на события;
2. В расширении нельзя изменить состав объектов для общих реквизитов.
Пока баг не пофиксили, выход такой:
1. В процедуру СвойстаКоллекцийОбъектовМетаданных() модуля менеджера справочника ИдентификаторыОбъектовМетаданных добавляем по строке для коллекций объектов, которые могут добавляться в расширении;
2. В процедуру КонтрольНеразделенныхДанныхПриОбновлении() общего модуля РаботаВМоделиСервиса добавляем наш объект в исключения.
#разработка #расширения #БСП
С появлением в 8.3.11 возможности менять в расширении структуру данных, многие потирают руки в надежде получить счастье с конфигурацией поставщика "на замке". Но не спешите!
Есть одна досадная мелочь: БСП, при появлении нового объекта в расширении, пытается подключить его к модели сервиса, и требует указать для него значение разделителя области данных. Либо просто отказывается обновлять из-за них релиз. Да, при этом предлагает пути решения. Но!
1. В расширении нельзя поменять состав объектов в подписках на события;
2. В расширении нельзя изменить состав объектов для общих реквизитов.
Пока баг не пофиксили, выход такой:
1. В процедуру СвойстаКоллекцийОбъектовМетаданных() модуля менеджера справочника ИдентификаторыОбъектовМетаданных добавляем по строке для коллекций объектов, которые могут добавляться в расширении;
2. В процедуру КонтрольНеразделенныхДанныхПриОбновлении() общего модуля РаботаВМоделиСервиса добавляем наш объект в исключения.
Элегантный вариант универсальной функции определения наличия реквизита с нужным именем у любого объекта.
Данная версия реализации приглянулась тем, что в качестве значения-индикатора автор использует случайный UUID вместо «Неопределено», как это делают обычно. Получается действительно универсально! Ну и вишенка на тортике - возможность затребовать совпадение типа реквизита ))
#разработка #код
Данная версия реализации приглянулась тем, что в качестве значения-индикатора автор использует случайный UUID вместо «Неопределено», как это делают обычно. Получается действительно универсально! Ну и вишенка на тортике - возможность затребовать совпадение типа реквизита ))
#разработка #код
Использование префикса для параметров функций
Это одно из правил, которое должно быть установлено в вашей команде, если вы хотите сделать свой код устойчивым к изменениям и легко сопровождаемым даже по истечении очень большого времени.
Почему префиксы у параметров так важны:
1. При достаточно большом объёме кода в процедуре, префикс однозначно сигнализирует, что вы имеете дело с параметром, и не придётся лезть в объявление процедуры. Это комфортно.
2. Используя префикс, вы ограничиваете область видимости параметра рамками только этой функции, и уверены, что не испортите значение глобальной переменной или реквизита формы с таким же именем. Кроме того, когда-нибудь функция может переехать в другой модуль, и её контекст изменится. Это безопасно.
3. Используйте префикс, даже если функция состоит из одной строки. Всегда есть вероятность, что код будет эволюционировать, и тогда станет актуальным п.1. Это надёжно.
#разработка #код
Это одно из правил, которое должно быть установлено в вашей команде, если вы хотите сделать свой код устойчивым к изменениям и легко сопровождаемым даже по истечении очень большого времени.
Почему префиксы у параметров так важны:
1. При достаточно большом объёме кода в процедуре, префикс однозначно сигнализирует, что вы имеете дело с параметром, и не придётся лезть в объявление процедуры. Это комфортно.
2. Используя префикс, вы ограничиваете область видимости параметра рамками только этой функции, и уверены, что не испортите значение глобальной переменной или реквизита формы с таким же именем. Кроме того, когда-нибудь функция может переехать в другой модуль, и её контекст изменится. Это безопасно.
3. Используйте префикс, даже если функция состоит из одной строки. Всегда есть вероятность, что код будет эволюционировать, и тогда станет актуальным п.1. Это надёжно.
#разработка #код
👍1
Веб-клиент - не тонкий клиент
Думаешь накидал элементов на форму, проверил в тонком клиенте - и всё?? Как бы не так! Теперь запусти веб-клиент в браузере и приготовься удивляться.
1. Картинка в подвале реквизита ТЧ.
Если нужны итоги в подвале, то наличие картинки в том же реквизите оставит от цифр одни засечки, остальное улетит за экран.
Решение: отказаться от картинки. Но если хочется красоты, перенесите её в соседнюю колонку.
2. Та же беда с кнопками в режиме "Надпись+картинка".
Решение: кнопка лечится явной установкой ширины в её свойствах.
3. Программная установка активной страницы. Установка через "ЭтаФорма.ТекущийЭлемент" в веб-клиенте игнорируется.
Решение: установить текущую страницу у самого элемента "Страницы"
#юзабилити #формы #вебклиент
PS. Кейсы обнаружены на платформе 8.3.10 и в браузере Chrome
Думаешь накидал элементов на форму, проверил в тонком клиенте - и всё?? Как бы не так! Теперь запусти веб-клиент в браузере и приготовься удивляться.
1. Картинка в подвале реквизита ТЧ.
Если нужны итоги в подвале, то наличие картинки в том же реквизите оставит от цифр одни засечки, остальное улетит за экран.
Решение: отказаться от картинки. Но если хочется красоты, перенесите её в соседнюю колонку.
2. Та же беда с кнопками в режиме "Надпись+картинка".
Решение: кнопка лечится явной установкой ширины в её свойствах.
3. Программная установка активной страницы. Установка через "ЭтаФорма.ТекущийЭлемент" в веб-клиенте игнорируется.
Решение: установить текущую страницу у самого элемента "Страницы"
#юзабилити #формы #вебклиент
PS. Кейсы обнаружены на платформе 8.3.10 и в браузере Chrome
Подстановка имени метаданного
Если вы реализуете универсальные функции, которые принимают в качестве параметра имя метаданного, то при её вызове используйте вместо строки свойство "имя" элемента коллекции метаданных. Это обезопасит ваш код в случае изменения имени объекта конфигурации - ошибка будет обнаружена уже на этапе синтаксического контроля.
#разработка #код
Если вы реализуете универсальные функции, которые принимают в качестве параметра имя метаданного, то при её вызове используйте вместо строки свойство "имя" элемента коллекции метаданных. Это обезопасит ваш код в случае изменения имени объекта конфигурации - ошибка будет обнаружена уже на этапе синтаксического контроля.
#разработка #код
Сообщения, оторванные от реальности
Частенько в сообщениях пользователю фигурируют названия элементов формы, благодаря которым легче ориентироваться в интерфейсе.
Но при доработке формы разработчик, как правило, забывает внести изменения в текст сообщения, из-за чего последний становится оторванным от реальности.
Чтобы этого избежать, используйте обращение непосредственно к заголовкам элементов, вместо того, чтобы прописывать их текстом.
#разработка #код #юзабилити
Частенько в сообщениях пользователю фигурируют названия элементов формы, благодаря которым легче ориентироваться в интерфейсе.
Но при доработке формы разработчик, как правило, забывает внести изменения в текст сообщения, из-за чего последний становится оторванным от реальности.
Чтобы этого избежать, используйте обращение непосредственно к заголовкам элементов, вместо того, чтобы прописывать их текстом.
#разработка #код #юзабилити
Отбор данных по узлу обмена в ПВД
Не раз уже встречал правила обмена, в которых данные отбираются запросом в ПВД. И везде, в каждом ПВД (!), почему-то прописан поиск по коду для получения узла. Интересно, что они будут делать при тиражировании конфы или использовании этих правил в тестовом контуре? 🤔 А там коды узлов могут быть другие 🙂
Ловите двойной лайфхак 😃
1️⃣ Используйте недокументированный параметр УзелДляОбмена, в нём всегда хранится ссылка на узел, по которому идёт обмен в данном контексте (виден глобально в рамках правил);
2️⃣ Храните ссылку на узел в параметре конвертации. Даже если что-то изменится, правку достаточно будет внести в одном месте!
PS. Использование параметра УзелДляОбмена может затруднить запуск обмена в режиме отладки, может поэтому он не документирован 😉
#интеграция #ковертация #разработка
Не раз уже встречал правила обмена, в которых данные отбираются запросом в ПВД. И везде, в каждом ПВД (!), почему-то прописан поиск по коду для получения узла. Интересно, что они будут делать при тиражировании конфы или использовании этих правил в тестовом контуре? 🤔 А там коды узлов могут быть другие 🙂
Ловите двойной лайфхак 😃
1️⃣ Используйте недокументированный параметр УзелДляОбмена, в нём всегда хранится ссылка на узел, по которому идёт обмен в данном контексте (виден глобально в рамках правил);
2️⃣ Храните ссылку на узел в параметре конвертации. Даже если что-то изменится, правку достаточно будет внести в одном месте!
PS. Использование параметра УзелДляОбмена может затруднить запуск обмена в режиме отладки, может поэтому он не документирован 😉
#интеграция #ковертация #разработка