Как работать с большими пакетами запросов? Разбираем на примере формирования проводок в 1C:ERP

Прошли времена, когда запрос помещался на одну страницу. В любой современной типовой конфигурации используются огромные пакеты из десятков запросов, идут последовательные вызовы процедур, которые их формируют, выполняются фоновые задания.

Когда нужно сделать какую-то доработку или найти причину ошибки, разобраться в тексте такого запроса непросто.

Мы подготовили два видео, в которых объясняем, как работать с объемными запросами, и показываем, какие для этого есть инструменты.

В качестве примера разбираем формирование проводок по регламентированному учету в 1C:ERP – чтобы показать нюансы работы с очень большим и сложным запросом.

Это реальный кусок из курса, а не промо, чтобы ошеломить за 4 минуты. Поэтому в нем мы долго и детально (местами избыточно детально) разбираем работу сложного механизма – чтобы разобрался даже начинающий.

Общая длительность видео – 53 минуты.

Видео 1 – Особенности формирования проводок в 1C:ERP

Специалисты, работающие с 1С:Бухгалтерией, привыкли, что счета учета указываются непосредственно в документе. Можно настроить счета учета по умолчанию, но если пользователь изменит счет в документе, изменение попадет в проводки.

В 1C:ERP все по-другому. Счета учета в документах вообще не указываются. Необходимо настроить нормативно-справочную информацию, задать группы финансового учета для корректного формирования проводок.

Еще одно отличие заключается в моменте формирования проводок. В 1С:Бухгалтерии пользователь проводит документ – и сразу может посмотреть проводки.

В 1C:ERP при проведении документ не формирует сразу проводки по регламентированному учету – делается только отметка, что для этого документа нужно сформировать проводки. А затем при помощи регламентного задания формируются проводки для отмеченных документов. Либо можно вручную сформировать проводки для конкретного одиночного документа.

Если не знать, как устроен механизм проводок в 1C:ERP, при отладке запросов придется искать ошибки наугад, по шагам проходить программный код.

В видео при помощи отладчика разберемся, как технически формируются проводки. Пройдем по строкам программного кода, обратим внимание на ключевые моменты формирования проводок – какие методы вызываются, в каких общих модулях их искать, где расположены функции, возвращающие тексты запросов для конкретного документа.

В документации Вы этого не найдете : )

Ключевые моменты видео:

  • 00:00 – Введение
  • 00:58 – Особенности формирования проводок в 1С:ERP, отличия от конфигурации 1С:Бухгалтерия
  • 02:58 – Демонстрация механики отложенного формирования проводок в 1С:ERP при проведении документа
  • 05:24 – Изучение в отладчике механизма выбора счетов учета ТМЦ для подстановки в проводки
  • 06:12 – Поиск формы, показывающей проводки документа, в конфигураторе
  • 07:15 – Изучение программного кода обработки ОтражениеДокументовВРеглУчете
  • 08:22 – Подключение к отладке фоновых заданий
  • 08:44 – Изучение работы процедуры, формирующей движения по регистру Хозрасчетный для указанного документа (ОтразитьДокументВФоне)
  • 14:58 – Демонстрация механизма, выбирающего данные для формирование проводок (функция ЗапросДанных)
  • 17:44 – Изучение функции, возвращающей текст запроса для отражения документа в регламентированном учете (ТекстОтраженияВРеглУчете модуля менеджера документа ПриобретениеТовровУслуг)
  • 21:21 – Промежуточные выводы о работе механики формирования проводок в 1С:ERP

Видео 2 – Пример отладки запросов, формирующих проводки в 1C:ERP

При проведении документа приобретения материалов для одной позиции в проводки подставляется неправильный, по мнению пользователей, счет 41 (как для товаров), а для остальных поступивших материалов подставляется правильный счет 10.

Нужно разобраться при помощи отладчика, почему формируется неправильная проводка.

В предыдущем видео мы выяснили, где искать программный код, формирующий тексты запросов. Теперь остается отладить получившийся результирующий запрос.

Однако этот запрос настолько огромен, что в конструкторе не хватает места на экране, чтобы подписать имена отдельных запросов пакета. Чтобы облегчить задачу, воспользуемся подсистемой Инструменты разработчика.

Также рассмотрим удобный инструмент в 1C:ERP – обработку для тестирования формирования проводок. Она позволяет получить готовые тексты запросов для формирования проводок прямо в пользовательском режиме без использования отладчика! Не нужно вручную переносить в консоль запросов из отладчика текст каждого запроса, создающего временную таблицу – это удобно и существенно экономит время.

Ключевые моменты видео:

  • 00:00 – Использование Консоли запросов из Инструментов разработчика (портативный вариант)
  • 00:50 – Использование вызова функции режима отладки из конфигуратора
  • 03:38 – Демонстрация Консоли запросов для отладки и изучения запроса
  • 08:42 – Показ работы штатной команды 1С:ERP Тестировать создание проводок
  • 11:08 – Изучение работы обработки НастройкаОтраженияДокументовВРеглУчете
  • 13:15 – Отладка запросов, полученных в обработке НастройкаОтраженияДокументовВРеглУчете в Консоли запросов
  • 18:00 – Анализ движений документа по регистру накопления Себестоимость товара
  • 19:25 – Изменение группы финансового учета номенклатуры для решения задачи
  • 24:57 – Итоги. Особенности формирования проводок в 1C:ERP

На этом курсе Вы изучите все, что требуется знать каждому разработчику:

  • Полный синтаксис текста запросов – поля, операторы, функции, выражения, группировка и сортировка, итоги и т.д.
  • Работу с несколькими источниками / таблицами – соединения, объединения, вложенные запросы
  • Временные таблицы, пакетные запросы
  • Виртуальные таблицы – для регистров сведений, накоплений, расчетов и бухгалтерии
  • Методы и приемы написания и оптимизации запросов
  • А также много практических примеров и кейсов.
Программа, стоимость, условия и регистрация в группу: «Расширенный курс по разработке и оптимизации запросов в 1С»
  • 56 учебных часов
  • 42 практических задания
  • 4 месяца поддержки и ответов на вопросы
  • Пожизненный доступ к материалам курса

Комментарии / обсуждение (17):

  1. Ирина Кузнецова

    Очень полезное видео, Спасибо огромное! Недавно начала работать в ERP, запросы действительно огромнейшие, про кнопку не знала вообще, и думаю, что многие с ней точно не знакомы, обязательно поделюсь с коллегами. Курс отличный!

    • Анна Бортникова

      Доброго дня, Ирина! Рады, что материал оказался для Вас полезен! Благодарим, что делитесь знаниями с коллегами! :)
      И приглашаем Вас и ваших коллег на наш большой курс «Расширенный курс по разработке и оптимизации запросов в 1С» https://курсы-по-1с.рф/courses/1s-queries-advanced-course/

  2. Mike Frygin

    Ответ то я знал заранее:), для меня эта “боль” с ГФУ очень знакома:)
    Но смотреть сам материал было безумно интересно. Кнопка тестирования создания проводок – вообще топчик. Я упустил момент когда эта возможность появилась, увидел у Вас впервые, хотя в “зазеркалье” посматриваю. Что было бы еще интересно, это если бы в конце лекции прикладывалась текстовая шпаргалка, содержащая выводы, которые Вы озвучиваете при завершении. Что-то вроде маленького “итого” по теме, который в нужный момент можно открыть посмотреть, вспомнить куда и как идти, при необходимости с него перейти на эту страницу.

    • Василий Ханевич

      Добрый день!
      Рад, что материал оказался полезным.
      Успехов в применении его на практике и спасибо за предложение!

  3. SnowMan83

    Здравствуйте. Не в тему видео, но в тему курса. Готов ли автор дать ответ на такой вопрос. Как можно использовать соединение с конструкцией ПОДОБНО? Например, вот такая конструкция не вызывает ошибку
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1 КАК Справочник1
    ПО Справочник1.ПолеКлюч ПОДОБНО Справочник2.ПолеСодержащееКлюч
    но если добавлять туда % то сразу они выскакивают. Курсов по запросу имею несколько, а вот некоторые хитрости нигде не описаны. Добавляю в кавычках, без кавычек, с плюсами, с двойными кавычками, так и не сумел преодолеть. О том, что запрос не оптимален, понятие имею :)

    • Василий Ханевич

      Добрый день!
      Справа от оператора ПОДОБНО должен указываться литерал типа строка. Поэтому чтобы запрос точно работал корректно, предлагаю его переделать.
      Например, можно разделить получение данных на несколько шагов. Первым шагом выбрать из справочника 2 все значения, которые могут находиться справа от оператора ПОДОБНО. Затем в цикле по полученным значениям составить объединение запросов следующего вида:

      ВЫБРАТЬ
      ...
      Поле ПОДОБНО &Параметр1

      ОБЪЕДИНИТЬ ВСЕ

      ВЫБРАТЬ
      ...
      Поле ПОДОБНО &Параметр2

      ...

      Здесь Параметр1, Параметр2 и т.д. – это как раз те значения из справочника 2, которые могут находиться справа от оператора ПОДОБНО.

      • SnowMan83

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

        • Василий Ханевич

          Да, по смыслу это схожий способ.
          Можно сравнить на реальных данных 2 этих способа. И остановиться на более производительном и надежном.

  4. 1

    Страшно, очень страшно, мы не знаем что это такое…
    Спасибо за познавательное видео!

  5. Алексей

    Надо было уделить внимание действительно важным вещам: как/что делать когда нужная таблица в запросе распадается на 39 объеденных таблиц и какая тут методика поиска нужной таблицы. На видео это сделано методом “тыка”.
    Не раскрыта роль экспортной процедуры в менеджере документа. Вдруг не нужно смотреть эту всю портянку, а там все сразу будет понятно.

    • Василий Ханевич

      Добрый день!
      Согласен, интересные и важные вопросы.
      В этой статье и так достаточно длительные видео получились. Ответы на Ваши вопросы на отдельный материал тянут.
      Распишите, пожалуйста, Ваш опыт по этим вопросам подробнее. Уверен, для других слушателей он будет очень полезен.

  6. Анатолий

    Первое, что пришло в голову при виде различий в привязанных счетах – залезть в номенклатуру и сравнить правильную и неправильную. Потому что явно ошибка в карточке товара, при внесении данных. И это заняло бы пару минут, вместо часа просмотра огромной кучи кода и запросов.
    Я не профи и даже не среднего уровня программист. Но очевидно же, что ошибка не рандомная, а на конкретной номенклатуре. Если бы вылазила гдепопало, то уже надо было лезть в код и смотреть, откуда ноги растут.
    И вообще, если конфигурацию никто не менял, то явно ошибка при вводе исходных данных, и в большинстве случаев либо в карточке, либо в самом документе. Если конфигурацию меняли, шагать по изменённому коду.

    • Василий Ханевич

      Добрый день!
      А почему именно в номенклатуру залезть, а не в вид номенклатуры, в строку табличной части документа или в регистр сведений СчетаУчетаНоменклатуры, как в БП? :)
      Нужно же не наугад, а точно знать, как работает конфигурация.
      У нас задача всё-таки намного шире – разобраться, как работает механизм формирования проводок в ERP. А он очень специфичный. Поэтому изучаем этот механизм подробно, отладчиком проходим все методы, а также рассматриваем, как отлаживать громоздкие запросы на практике.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.