Персональный блог Игоря Антонова aka "spider_net"

1С:Предприятие

Подписаться на эту метку по RSS

Борьба с медленными запросами в 1С. Типичные проблемы

Борьба с медленными запросами в 1С. Типичные проблемы

На работе часто приходится проводить ревью кода и разбираться с проблемами в стиле «почему же тормозит запрос». Проблемы подобных тормозов чаще всего вызваны не оптимальными запросами к базе. Так уж получилось, что код нашей конфигурации разрабатывается почти 9 лет и за этот внушительный промежуток времени накопились запросы, которые нужно переписать. Они превосходно решают задачи, но при нынешнем объеме базы данных работают не так быстро, как хотелось бы.

Причин появления медленных запросов много. Где-то сами недоглядели, а где-то просто нельзя было сделать по-другому. Язык запросов 1С за это время совершенствовался, а наш код был написан в то время, когда, например, в нем отсутствовала возможность применять временные таблицы (как пример). Вот и получилось, что в свое время написали так, а сегодня этот код требует доработок. Для таких долгоиграющих проектов это нормально. Код стареет, появляются новые требования и без рефакторинга не обойтись.

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

Читать дальше

1С и JSON. Разбираемся с исключением


Рубрика: 1С:Предприятие -> Программирование
Метки: | | |
Просмотров: 1694
1С и JSON. Разбираемся с исключением

В платформе 8.3 появились нативные средства для работы с форматом JSON. Нет никакой необходимости использовать сторонние решения, если нативные инструменты работают быстрей и лучше. Мы много, где используем формат JSON и вот случайно столкнулись с небольшой проблемой. Итак, условие. Есть большой файл в формате JSON, который требуется конвертнуть в структуру. Для этого в платформе есть глобальный метод: «ПрочитатьJSON()».

У него много параметров, но в большинстве случае разработчику интересны 1-й (менеджер чтения JSON) и 3-й ИменаСвойствСоЗначениямиДата (Строка, Массив, ФикированныйМассив). С первым все понятно, а вот третий позволяет нам избавиться от необходимости самостоятельно преобразовывать значения типа Дата из строки. Достаточно подготовить массив с именами свойств типа «Дата» и все черную работу метод сделает самостоятельно.

Читать дальше

Конвертация данных. Как сделать чтобы документ при переносе записывался, а не проводился


Рубрика: 1С:Предприятие -> Программирование
Метки: | | |
Просмотров: 1065
Конвертация данных. Как сделать чтобы документ при переносе записывался, а не проводился

Отвечаю на вопросы, поступившие на email за время отпуска. Вопросов пришло много, поэтому отвечать буду постепенно. Ответы, которые могут быть интересны многим, буду публиковать, прям на блоге. Итак, вот, на мой взгляд, интересный вопрос. Цитирую дословно:

«Прочитал вашу статью по конвертации данных. Спасибо за хорошее разъяснение. Начал пробовать создать свою конвертацию и столкнулся с проблемой. Что требуется сделать, что загружаемые документы автоматически не проводились при загрузке в базу приемник? Требуется где-то поставить какой-то флажок?».

Читать дальше

Поиск циклических ссылок в 1С:Предприятие 8.3.10


Рубрика: 1С:Предприятие -> Программирование
Метки: | |
Просмотров: 1331
Поиск циклических ссылок в 1С:Предприятие 8.3.10

Грядущий релиз платформы «1С:Предприятие» 8.3.10 должен включить множество интересных новинок, и одной из интересных для разработчика наверняка станет встроенный инструмент поиска циклических ссылок. Наличие в коде циклических ссылок - серьезный удар по потребляемым ресурсам. С виду невинный код, может запросто сожрать гигабайты оперативной памяти и проблему будет не так просто обнаружить.

Время жизни объектов в платформе «1С:Предприятие 8» определяется стратегией на основе подсчета ссылок (reference counting). Идея проверена временем и предельна проста. Для каждого объекта есть некий счетчик. При создании ссылки на объект – значение счетчика увеличивается на единицу. При удалении ссылки – наоборот, уменьшается. Как только счетчик становится равен нулю, платформа выполняет удаление объекта и занимаемая им память освобождается. Все достаточно просто. Проблемы начинаются, когда объекта ссылаются друг на друга – появляется циклическая ссылка.

Читать дальше

1С:Предприятие 8.3. Маленькая, но полезная настройка редактора кода. Добавляем подсветку выделенных идентификаторов кода


Рубрика: 1С:Предприятие -> Программирование
Метки: | | |
Просмотров: 1302
1С:Предприятие 8.3. Маленькая, но полезная настройка редактора кода. Добавляем подсветку выделенных идентификаторов кода

По долгу службы мне приходится работать сразу в нескольких редакторах/IDE: 1С:Предприятие 8.3, Atom, Visual Studio и PhpStorm. Во всех перечисленных средах, по умолчанию активирована настройка, выделяющая одинаковые идентификаторы кода. Например, пишу я какую-то процедуру или объявляю переменную. Теперь я хочу быстренько подсветить имя переменной во всем написанном мной коде. В Visual Studio/Atom/PhpStorm мне достаточно сделать по ней дабл клик и редактор сразу выполнит подсветку. Таким образом, взглянув на код я сразу могу увидеть, где именно используется переменная/идентификатор.

Подобной фичи долгое время не было в редакторе кода «1С:Предприятие 8». Выполнять аналогичную операцию приходилось с помощью поиска.

Читать дальше

1С:Предприятие 8.3. Маленький трюк, упрощающий поиск документации


Рубрика: 1С:Предприятие -> Программирование
Метки: | |
Просмотров: 872
1С:Предприятие 8.3. Маленький трюк, упрощающий поиск документации

Я занимаюсь разработкой под платформу «1С:Предприятие 8» уже почти 8 лет и за это время успел перечитать/переварить мегабайты различной документации. Инфостарт, ИТС, книги – верные друзья современного разработчика. На мой взгляд, с поставкой документации у 1С всегда получалось не очень хорошо. Возьмем основной и максимально актуальный источник – «ИТС». Я пользуюсь этим порталом давно и более-менее приловчился, но по первости это было просто невыносимо. Вы пользовались MSDN или MDN (Mozilla developer network)? Это более крутые порталы и они хранят гораздо больше информации, но найти ее значительно легче, чем на «ИТС».

Читать дальше

Хранилище конфигурации. Выборочное сравнение

Хранилище конфигурации. Выборочное сравнение

Если вы используете «Хранилище конфигурации» (я надеюсь, что используете) при разработке под платформу «1С:Предприятие», то вам наверняка приходится частенько искать версию конфигурации, в которой были внесены определенные изменения в объект метаданных (например, справочник «Контрагенты»). Задача тривиальная, но при этом приходится многократно выполнять сравнение разных версий конфигурации. На «жирных» конфигурациях и при большом количестве версий, эта процедура может затянуться надолго.

Читать дальше