Обработать результат запроса 1с

Обновлено: 07.07.2024

Добрый день дорогие форумчане))) .
Всех с наступившим новым годом.

Очень нужна любая помощь в следующем:

Есть задача по условию которой, при входе в систему, должна производиться проверка пользователя, является ли он администратором. Если является, то доп. проверки к этому пользователю не применяются. (Администратор - соответствующий булевский реквизит на форме элемента справочника "Пользователи"). Предполагал решить задачу след. образом:

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

Попытался реализовать это следующим запросом:

Но данная функция всегда возвращает ложь даже если имена пользователя совпадают.
Консолью запросов проверял, запрос отбирает всех нужных пользователей.
Проверял код отладкой, Выборка Детальные записи, содержит только 1-й элемент отбора т.е. если по результату запроса отбираются Администратор и Администратор1, то выборка хранит в себе только 1-е значение. Помогите пожалуйста заставить работать эту функцию.
За ранее безмерно благодарен. __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Мобильное приложение, нужен дельный совет
ДОбрый вечер, на носу дипломная работа, как вариант предложили написать мобильное приложение на 1с.

Нужен дельный совет
Здравствуйте участники форума. Сложилась патовая ситуация. Работаю в маленькой фирме(около 10.

Нужен дельный совет
heur trojan.win32.generic мой самый ненавистный вирус, сегодня мой домен подвергся атаке данной.

Нужен дельный совет
Вообщем есть Домен на Windows 2003 r2 есть Wi-fi рутер с антенной на 200 метров, все дело.

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

Этот код будет работать только в случае если у тебя ОДИН "Администратор" в базе

Добавлено через 1 минуту
enduromen, лучше отрулить ролями (Администратор и Пользователь)
не нужен ни запрос ни флаг булево в справочнике

Dethmontt, спасибо большое.
Если не сложно, объясните пожалуйста, почему данный код будет работать если в базе один администратор? Я нуб пока тяжеловато соображать.
Если правильно понимаю то при таком написании в любом случае выбираются все элементы справочника у которых "Администратор"-истина и "ИмяПользователя" должно сравниваться с наименованием каждого элемента.

По поводу варианта с ролями, спасибо, обязательно запомню на будущее.

Добавлено через 29 минут
Коллеги, нашел в чем проблема)
Ситуация была в следующем:
У меня в БД в справочнике "Пользователи", среди прочих, у двух элементов реквизит "Администратор" возведен в Истина. Как следствие, текущее имя пользователя сравнивается с наименованием каждого из элементов. Соответственно возвращаемых значений тоже будет 2 Истина и Ложь, поэтому функция всегда и возвращала ложь.

Консоль запросов 9000 задумана как простой, удобный и эффективный инструмент, который работает на любой операционной системе и любой конфигурации без ее модификации, без возни с расширениями. Пришел, достал из кармана (или яндекс-диска :) - запустил и работаем!

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

Сама обработка кодом реализована достаточно просто. Нужно открыть страницу "Алгоритм", разместить код, выбрать метод выполнения и запустить. В зависимости от метода выполнения, может отображаться прогресс-бар внизу или рядом с кнопкой запуска. Или совсем отсутствовать, если выбранный режим не поддерживает отображения прогресса.

Консоль запросов 9000 - обработка результата запроса кодом

Давайте рассмотрим режимы запуска кода в консоли запросов 9000 подробнее.

Простое выполнение

Построчно без индикации


Построчно с индикацией

В отличие от "Построчно без индикации", на клиенте виден прогресс выполнения, прошедшее время выполнения, прогноз на оставшееся время.

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

При необходимости можно прервать выполнение нажатием Ctrl+Break. Но за удобство есть плата - для каждого обновления прогресса происходит серверный вызов. Это происходит с периодом, установленным в "Опциях", по умолчанию там стоит одна секунда. Для уменьшения потерь времени на индикацию этот период можно увеличить.


Простое в фоне (БСП 2.3)

Код пишется точно так же, как и в первом варианте, доступна переменная Выборка.

Но, в отличие от первого варианта тут есть бонус - можно организовать прогресс. Для этого нужно использовать вызов процедуры СообщитьПрогресс.


Код с прогрессом в этом варианте выглядит так.

Разберем этот код. Для отображения прогресса потребуется счетчик обработанных записей (й), количество записей всего (КоличествоВсего) и время начала выполнения (ВремяНачалаВМиллисекундах). Все эти значения достаточно указать при вызове СообщитьПрогресс, и на клиенте появится прогресс выполнения. Еще для СообщитьПрогресс нужен служебный параметр ПризнакПрогресса, он уже есть в контексте выполнения, его нужно просто передать без изменений. В приведенном примере СообщитьПрогресс вызывается один раз на 10 обработанных записей, что бы отображение прогресса не тормозило основную обработку. Если записи обрабатываются быстро, можно увеличить это значение и вызывать СообщитьПрогресс один раз на 100 или даже 1000 записей.
Это вариант следует использовать, если не устраивает простой построчный обход результата. А если устраивает - тогда используем следующий вариант, где обход и отображение прогресса уже реализовано.


Построчно в фоне с индикацией (БСП 2.3)

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


Ну а что бы не забыть, как работает какой вариант, тут же есть кнопка Справка, где кратко и с примерами описаны все пять режимов работы.

СДРКонсольЗапросовХ – инструмент для программиста, позволяющий создавать и отлаживать запросы для баз 1С 8.3, а также обрабатывать результаты запросов (тонкий, толстый, web клиент). Не зависит от конкретной конфигурации, никаких БСП.

Работает с современными конфигурациями 1С с запретом на использование модальности и синхронных вызовов. Для конфигураций, использующих БСП, есть возможность подключения обработки к справочнику "ДополнительныеОтчетыИОбработки".

Видео инструкции по работе с консолью можно посмотреть здесь

Если Вас заинтересовала эта обработка, то рекомендую обратить внимание на Навигатор по базе данных 1С 8.3

В плане интерфейса использована классическая схема: дерево запросов, запрос и результаты запроса.

Особенности

  • Работает с современными конфигурациями 1С (с запретом на использование модальности и синхронных вызовов)
  • Заточена на интерфейс «Такси» - мало место для работы по сравнению с неуправляемыми формами (поэтому экономим место: можно погасить дерево запросов, результаты запроса и вообще ничего лишнего стараемся не показывать)
  • Оптимизирован обмен данными между клиентом и сервером
  • Не содержит избыточного функционала, редко используемого в практической работе
  • Для всех форм обработки установлен вариант масштаба "Компактный". Если кому то это не нравится и хочется использовать платформенную кнопку "Изменить масштаб", то надо в конфигураторе для всех форм обработки установить вариант масштаба "Авто".

Работа с деревом запросов

  • Запросы хранятся в виде дерева (как обычно)
  • Можно сохранить или загрузить все дерево запросов (в файл или из файла)
  • Можно сохранить отдельную веточку запросов в файл
  • Можно подгрузить в отдельную ветку запросов запросы из файла
  • Можно копировать запросы (вместе с параметрами и таблицами МВТ) или перетаскивать их в другие ветки дерева
  • ВАЖНО: корень дерева не предназначен для работы с запросом

Работа с текстом запроса

  • Поддержка пакета запросов
  • Можно выполнить весь пакет, либо только выделенную часть пакета
  • В поля выборки можно вставить специальное поле, чтобы вместо ссылки выводился GUID
  • В пакет запроса можно вставить специальный разделитель, чтобы выполнение пакета остановилось на этом месте
  • Выделенную часть запроса можно закомментировать, раскомментировать или преобразовать в строку для вставки в код скрипта 1С

Параметры запроса

  • В параметрах запроса кроме стандартных, может быть таблица значений, граница, момент времени, уникальный идентификатор
  • В параметре можно указать битую ссылку (ссылку не несуществующий объект)
  • В качестве параметру можно указать выражение на языке 1С, которое будет вычисляться перед выполнением запроса
  • Можно скопировать выбранные параметры из одного запроса в другой
  • Можно редактировать таблицу значений, являющуюся параметром запроса

Таблицы МВТ

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

Результаты запроса

  • Результаты запроса оформляются в виде таблицы значений или дерева значений
  • Временные таблицы пакета запроса также оформляются в виде таблицы значений (по желанию)
  • Есть возможность показывать итоги по числовым колонкам таблицы результатов или временных таблиц
  • Есть возможность показывать итоги для выделенных строк по числовым колонкам таблицы результатов или временных таблиц
  • Кликнув мышкой по ячейки результирующей таблицы значений можно открыть значение в стандартной форме (если там находится ссылка на объект)
  • Можно открыть значение ячейки таблицы в специальной форме, предоставляющей доступ ко всем реквизитам объекта (Редактор объектов информационной базы 8.3 – встроен в консоль запросов). Как самостоятельно встроить более новую версию "Редактора объектов" описано здесь.
  • В специальной форме можно открыть не только ссылочный объект, но и хранилище значения (поддерживаются массив, список значений, структура, соответствие, таблица значений, табличный и текстовый документ)
  • Можно загрузить таблицу результатов запроса в параметр запроса либо сохранить в файл
  • Можно загрузить таблицу результатов запроса в менеджер временных таблиц запроса
  • Можно выгрузить ссылочные объекты из произвольной колонки результатов запроса в формате XML (для последующей загрузки в базу). Для обмена данными можно использовать файлы или строку, передаваемую через буфер обмена.

Сохранение запросов из отладчика

  • Есть возможность остановиться в отладчике и сохранить запрос с параметрами и временными таблицами в файл, который затем можно подгрузить в консоль для отладки.
  • Есть возможность остановиться в отладчике и сформировать XML-представление запроса с параметрами и временными таблицами, из которго в консоли можно сформировать запрос для отладки (передается через буфер обмена без использования промежуточных файлов)
  • Функция общего модуля для сохранения запроса из отладчика прилагается, пример вызова: омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос, "D:\1Cv8\Запросы\000") или омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос) - формирует XML-представление запроса
  • В функцию сохранения запроса в качестве первого параметра можно передать Запрос или МакетКомпоновкиДанных
Функция для перехвата запроса из отладчика (актуальный текст функции приведен на закладке "Настройки" обработки)

Для обработки результатов запроса есть закладка «Алгоритмы»

  • в Web клиенте выполнить алгоритм можно только на стороне сервера
  • Алгоритм – это код на языке 1С
  • Алгоритмы хранятся в виде дерева, функционал аналогичен дереву запросов
  • ВАЖНО: корень дерева не предназначен для работы с алгоритмом
  • Алгоритмы могут выполнятся как на стороне сервера, так и на стороне клиента; имеют доступ к результатам запроса, можно указать дополнительные параметры (число, дата, ссылка и т.д.)
  • В консоль встроены примеры реализации алгоритмов на стороне сервера и клиента. В примере для клиента обратите внимание на строки «//--- Сервер:старт» и «//--- Сервер:финиш» - код между этими строками будет выполняться на сервере.

Видео инструкции по работе с консолью можно посмотреть здесь

Некоторые примеры скриншотов


Здесь в том числе приведен текст функции общего модуля для перехвата запроса в отладчике


Просмотр и редактирование параметра типа "ТаблицаЗначений"


Если использовать нестандартную форму для выбора типа параметра, то выбор организован более интелектуально - типы объектов не сваливаются в одну кучу, а разбиты по категориям


Вывод уникального идентификатора объекта в результатах запроса

Просто в псевдониме поля надо добавить строку "__GUID__" (во временных таблицах и при выгрузке в дерево значений игнорируется)


Предлагаем рассмотреть инструмент, предназначенный для упрощения построения запросов в 1С. Он называется конструктором запросов. Как его запустить? Чем именно он помогает пользователю? Давайте разберемся вместе!

Для запуска конструктора запросов можно щёлкнув правой кнопкой мышь в любое место программного кода и выбрать «Конструктор запроса…».

Конструктор запроса 1С

Так же конструктор запроса используется в схеме компоновки данных при построении отчёта. Рассмотрим конструктор запросов на примере отчёта из статьи про СКД. Для этого в схеме компоновки данных нажимаем «Конструктор запроса…»

Конструктор запроса 1С

Вкладка «Таблицы и поля»

На этой вкладке мы выбираем поля значения которых нам надо получить в запросе. В левой части экрана представлены объекты конфигурации из которых можно получать данные (справочники, документы, регистры и тд.).

Конструктор запроса 1С

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

Конструктор запроса 1С

В правой части экрана расположены поля, которые мы выбрали в запрос.

Конструктор запроса 1С

Вкладка «Группировка»

На этой вкладке можно выбрать поля которые необходимо сгруппировать или суммировать. Группируемы поля необходимо добавить в поле «Группируемое поле», суммируемые поля в «Суммируемое поле».

Конструктор запроса 1С

Вкладка «Условия»

На данной вкладке мы задаем значения условий. В нашем примере необходимо было выбрать все элементы справочника «Номенклатура» имеющие определённый тип номенклатуры. В левой части экрана расположены поля которые можно выбрать для установления условия. Выбор производится двойным кликом. Или можно нажать кнопку «Добавить».

Конструктор запроса 1С

Вкладка «Дополнительно»

«Тип запроса» позволяет установить тип получаемого результата. Доступные варианты «Выборка данных», «Создание временной таблицы», «Уничтожение временной таблицы».

Конструктор запроса 1С

Вкладка «Объединения\псевдонимы»

На данной вкладке можно задать псевдонимы для выбранных нами полей. В случае, если у нас несколько запросов, то здесь же устанавливается объединение.

Как использовать конструктор запроса в 1С?

Вкладка «Порядок»

На данной вкладке можно выбрать порядок, по которому будет проходить сортировка результатов запроса.

Как использовать конструктор запроса в 1С?

Вкладка «Компоновка»

Служебная вкладка, определяющая поля СКД. Подробно её рассмотрим в отдельной статье.

Как использовать конструктор запроса в 1С?

Вкладка «Пакет запросов»

На данной вкладке отображаются все наши пакеты запросов.

Как использовать конструктор запроса в 1С?

Отдельно стоит упомянуть кнопку «Запрос», доступную на всех вкладках «Конструктора запросов». Она предназначена для просмотра и изменения текста запроса.

Как использовать конструктор запроса в 1С?

Конструктор запроса с обработкой результата

Разновидность конструктора запросов, используемая в программном коде.

Когда мы используем «Конструктор запроса», то необходимо самостоятельно записывать программный код для выполнения запроса и действий совершаемых с полученным результатом запроса. Для «Конструктора запроса с обработкой результат» программный код работы с запросом формируется автоматически.

Для запуска конструктора необходимо в любом месте программного кода кликнуть правой кнопкой мыши и выбрать из контекстного меню «Конструктор запроса с обработкой результата».

Как использовать конструктор запроса в 1С?

Первая вкладка «Конструктора запроса с обработкой результата» предназначена для выбора типа обработки. Мы можем выводить результат в табличный документ или диаграмму, или просто добавить код для обхода результата. Чаще всего выбирают значение «Обход результата».

Как использовать конструктор запроса в 1С?

Остальные вкладки «Конструктора запроса с обработкой результата» аналогичны «Конструктору запроса».

После завершения работы конструктора в программном коде появляется часть кода созданная «Конструктором запроса с обработкой результата». Она выделена комментариями «

Решать вопросы самостоятельно или пользоваться услугами специалистов?

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

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

Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы наши сотрудники сориентировали по стоимости работ, подобрали оптимальное решение и рассказали, как начать сотрудничество. Ждем вас!

Читайте также: