1с в консоли запроса результат есть в конфигураторе нет

Обновлено: 07.07.2024

Здравствуйте. В собственной конфигурации для разных лелей - сделать выборку, новый отчет и т.д. активно пользовался консолью запросов. Текущая версия платформы - 8.3.15.1565. В текущей версии платформы запускаю ИБ, открываю консоль и пытаюсь запустить Конструктор запроса и получаю ошибку:
ошибка инициализации модуля: ВнешняяОбработка.QueryWizard.Форма.QueryWizard.Форма
по причине:
<ВнешняяОбработка.QueryWizard.Форма.QueryWizard.Форма(12791, 19)>: Процедура или функция с указанным именем не определена (StrFind)
PointPosition = <<?>>StrFind(Type.Value, ".");

проверил на типовой конфе -есть доступ к Документообороту, все открывается, запрос создается. Что не так с собственной конфой? как решить проблему? помогите пожалуйста.

Добавлено через 10 минут
открыл консоль в конфигураторе , запустил отладку и ме вывалились ошибки:
ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1260,22)> : Процедура или функция с указанным именем не определена (СтрНайти)
ПозицияОкончание = <<?>>СтрНайти(ТекстИнформацияОМестеОшибки, ")>"); (Проверка: Тонкий клиент)
: Процедура или функция с указанным именем не определена (СтрРазделить)
НаборВерсий =<<?>>СтрРазделить(СистемнаяИнформация.ВерсияПриложения, "."); (Проверка: Тонкий клиент)
: Процедура или функция с указанным именем не определена (СтрРазделить)
НомерКолонкиИСтроки = <<?>>СтрРазделить(Сред(ТекстИнформацияОМестеОшибки, 1, ПозицияОкончание - 1), ","); (Проверка: Тонкий клиент)
: Процедура или функция с указанным именем не определена (СтрСоединить)
ВерсияПриложения = ТипЧисло.ПривестиЗначение(<<?>>СтрСоединить(НаборВерсий)); (Проверка: Тонкий клиент)
: Процедура или функция с указанным именем не определена (СтрНайти)
ПозицияТочка = <<?>>СтрНайти(ВРег(ТекстЗапроса), Точка); (Проверка: Тонкий клиент)
В языке 1с не нашел таких функций. что делать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

РИБ на собственной конфигурации
Здравствуйте. Встала задача организации распределенной базы схемы - одноуровневая звезда.

Печатная форма обработки собственной конфигурации
Здравствуйте. В собственной конфигурации есть обработка с реквизитами: Началопериода,КонецПериода.

Создание собственной конфигурации по расчету зарплаты
Итак. Доброго времени суток всем пользователям этого раздела! Столкнулся я с такими проблемами.

Ошибка RLS для документа в собственной конфигурации 1с8.3
Здравствуйте. Делаю конфу на 1с 8.3. Добавил справочник Сотрудники со стандартными реквизитами и.

Отчеты на СКД в типовых решениях частенько сделаны очень сложно. Чтобы понять, почему они выдают какой-то результат, необходимо взять запросы наборов данных или схему компоновки данных целиком и "перебраться" с ними в консоли запросов или консоли отчетов СКД, указав значения всех параметров. Но беда в том, что готового запроса или схемы компоновки в конфигураторе нет, т.к. сложные отчеты собираются программно по кусочкам, а параметров много и к тому же часть параметров устанавливается функциями общих модулей, модулей менеджеров и т.п.

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

Подключаем расширение, перезапускаемся, появляется подсистема "Отладка СКД"

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


Посмотрим наименования наборов данных в схеме компоновки данных:

-"ОсновнойНабор"(запрос);

- "ПросроченнаяЗадолженность" (таблица значений);

- "ДанныеПервичныхДокументов" (запрос).


I Шаги для перехода к отладке отчета в консоле запросов

  1. Определим, где ставить точку остановки, используя замер производительности.
  2. В указанной точке вызовем функцию для получения структуры запроса одного из набора данных с параметрами.
  3. Перейдём в консоль запросов и выполним запрос.

1. Определяем место точки остановки отладки в Конфигураторе

В конфигураторе в разделе "Отладка" подключаемся к серверному сеансу для отладки. Будем "ловить" место, где, в конечном итоге, выполняется отчет. Не забываем в разделе "Автоматическое подключение" подключится к фоновым заданиям, т. к. отчеты на СКД "любят" выполняться фоновыми заданиями.


Включаем "Замер производительности" и нажимаем "Сформировать" в отчете. Отключаем "Замер производительности", смотрим и ищем нужное место


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

2. Получаем запрос с установленными параметрами в виде XML

Для того, чтобы получить в итоге конечный запрос, необходимо иметь "Схему компоновки данных" и "Компоновщик настроек данных" (точнее Настройки компоновщика). Внимательно посмотрев текст модуля в месте точки остановки, видим эти переменные. Включаем Табло отладки и пишем:


ОтладкаСКД.ЗапросВСтрокуXML(ОтладкаСКД.ПолучитьЗапросНабора(СхемаКомпоновкиДанных,КомпоновщикНастроек,"ОсновнойНабор"))

Видим, что в 1-ой записи получили запрос набора данных "ОсновнойНабор" (тип "Запрос"), а во 2-ой тот же запрос набора данных "ОсновнойНабор" (тип "Запрос") в XML.

Копируем строку XML и запускаем консоль запросов

3. В "Консоле запросов" выполняем запрос

Вставляем скопированную строку XML в текст запроса (хотя это не совсем текст запроса, но это трюк консоли) и нажимаем в "Еще" "Заполнить из XML"


И о чудо ! Строка ХМL превратилась в текст запроса и в параметры с установленными значениями.

Если всё это делать "руками", то установка значений параметров займёт много времени с одной стороны, а с другой можно легко пропустить какое-либо значение в параметрах, например в списках, что приведёт к неверному (другому) результату запроса.

Запрос выполнился, всё работает, дальше уже разбираемся с запросом.


II Шаги для перехода отлаживать отчет в консоли отчетов СКД

  1. Определим, где ставить точку остановки, используя замер производительности.
  2. В указанной точке вызовем функцию для получения схемы компоновки в XML и настроек компоновщика в XML.
  3. Перейдём в консоль отчетов СКД и добавим там отчет, вариант отчета.

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

Этот шаг ничем не отличается от ранее описанного для работы с консолью запросов

2.Получение схемы компоновки данных и настроек компоновщика в XML

Поставив точки остановки и остановившись при выполнении отчета, пишем в "Табло отладки"


Получаем 2 строки XML:

- Схема компоновки данных

- Настройки компоновщика (вариант отчета)

Копируем эти строки в 2 файла. Создаём здесь в конфигураторе 2 текстовых файла и сохраняем например "СхемаСКД.txt" и "НастройкиСКД.txt"

3. Консоль отчетов СКД и добавим там отчет, вариант отчета.

Открывает стандартную консоль отчетов СКД с ИТС

Добавляем "Вариант отчета" и кнопку "Ещё-Загрузить настройки", выбираем файл ""НастройкиСКД.txt"


Всё готов отчет, все параметры и настройки заданы.


. Конкретно в этом отчете есть дополнительный набор в виде таблицы значений, поэтому отчет не выполнится. Но это уже нюансы этого отчета. Чуть ниже сделана небольшая доработка, чтобы можно было в консоли отчетов СКД работать и с внешними наборами данных (таблицами значений)

08.01.2019 Добавлена возможность в консоли отчетов СКД загружать данные внешних наборов данных, используемых в схеме СКД

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

Как это делаем по шагам:

1. Отладкой находим место, где эти таблицы внешних наборов собираются и передаются на выполнение.

В том же модуле БухгалтерскиеОтчетыВызовСервера, где мы нашли метод выполнения макета компоновки, чуть ниже находим строку, в которой передаются внешние наборы данных на выполнение процессору компоновки, ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, и переменную ВнешниеНаборыДанных, эта структура в которой содержатся таблицы для внешних наборов


2. Выгружаем эти таблицы в XML

С помощью функции ОтладкаСКД.ВнешниеНаборыДанныхВXML , конвертируем переменную ВнешниеНаборыДанных в XML. Сохраняем эту строку в текстовый файл, например ВнешниеНаборыСКД.txt


3. Загружаем внешние наборы данных в консоль , выполняем отчет.

Теперь возвращаемся в консоль отчетов СКД из расширения и вызываем пункт "Внешние наборы данных" и выбираем файл ВнешниеНаборыСКД.txt




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

Закрываем окно и нажимаем НАКОНЕЦ "Сформировать" и отчет формируется.


16.01.2019 Добавлена в расширение для отладки отчетов функция, которая позволяет во время отладки в Конфигураторе выгрузить отлаживаемый отчет во внешний отчет (в файл) со всеми настройками в момент точки остановки:

ОтладкаСКД.Клиент.СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету = Неопределено, ДанныеСКД)

. Внимание: Данная функция работает только для сеанса "Толстый клиент"

Например, чтобы выгрузить отчет в файл внешнего отчета необходимо в отладке вычислить выражение:

Далее отчет можно запускать как отдельный внешний отчет.

ИТОГ: С помощью функций расширения "ОтладкаСКД" можно быстро начать отлаживать довольно сложные отчеты СКД в различных консолях или просто разобраться в ситуации прямо в отладке.

На текущий момент перечень функций в расширении:

Функция ПолучитьМакетаКД - Возвращает макет выполнения компоновки данных

Функция ПолучитьЗапросНабора - Возвращает запрос с текстом запроса и значениями параметров из компоновщика

Функция ПолучитьЗапросыНаборов - Возвращает структура запросов всех наборов данных с примененными настройками и значениям параметров компоновщика

Функция ПолучитьРезультатЗапросаНабора - Возвращает результат запроса набора данных с примененными настройками и параметрами компоновщика

Функция ПолучитьРезультатыЗапросовНаборов - Возвращает структуру результатов запросов всех наборов данных схемы компоновки данных с примененными настройками компоновщика

Функция ТабДокВXML - Возвращает результат выполнения СКД в табличный документ в XML, далее табличный документы можно получить обработкой "Табличный документ(Отладка СКД)", включенной в расширение

Функция ПолучитьТабДок - Возвращает результат выполнения СКД в табличный документ

Функция ПолучитьТЗ - Возвращает результат выполнения СКД в таблицу значений

Функция ПолучитьДЗ - Возвращает результат выполнения СКД в дерево значений

ВнешниеНаборыДанныхВXML - возвращает таблицы для внешних наборов данных в XML

СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету, ДанныеСКД) - выгружает во внешний отчет отлаживаемый отчет со всеми настройками.

включены вспомогательные функции из БСП также (в БСП они в общем модуле ОбщегоНазначения) для конфигураций без БСП:

Функция ЗначениеВСтрокуXML

Функция ЗначениеИзСтрокиXML

Функция ЗапросВСтрокуXML

Ещё чуть-чуть доработана "Консоль запросов", добавлено при создании параметров поддержка типов "Массив", "Список значений", "Стандартный период". Без этого может выдавать ошибку по кнопку "Заполнить из XML" при определенных параметрах компоновщика.

Доброго времени суток!
Собственно проблема в следующем, есть запрос, который возвращает дату приема на работу и дату увольнения сотрудника если (прием / увольнение) регистрируются текущим днем. В Консоли запрос отрабатывает как положено, т.е. если есть регистратор на текущую дату.
При помещении данного запроса в модуль обработки запрос не отрабатывает.
Естественно просмотрел параметры которые передаются в запрос в модуле (Текущая дата - ТекущаяДата(); ДатаУвольнения - ТекущаяДата()+3600*24 т.к. в кадровую историю период пишется не по дате регистратора, а следующим днем; СписокДолжностей - Список значений в который записываются должности из справочника должности организаций, только в том случае если должность найдена. Список не пустой, должность уволенного сотрудника есть в данном списке при выполнении кода.)
Собственно вопрос, в связи с чем может возникнуть данная проблема? за последние 2 дня голову сломал, перепроверил и типы значений и параметры на пустоту, все нормально. (Запрос для зуп 2.5 типовой)

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Регулярка findstr отрабатывает на одном файле, но не отрабатывает на другом
Приветствую ! Сижу, ругаюсь матом в голос потому, что регулярка срабатывает на одном текстовом.

Не отрабатывает try
всем привет. может кто подсказать что не так в коде: kod := edit1.Text; org :=.

Почему обращение идет к срезу последних, если интересуют конкретные записи? ?
Это пропущено при копировании для вставки сюда или упущено в коде?

Решение

polax, нет, выполнить не забыл. Сюда не вставил.
Разобрался в чем проблема, параметры дат нужно привести к началу дня, тогда запрос отрабатывает как нужно.
Проблема была в параметре
Добавлено через 23 секунды
Всем спасибо за участие.


Не отрабатывает функция
Добрый, Собственно делал свое меню и проблема в том что при нажатии на кнопку ничего не.

Почему while не отрабатывает
Доброго времени суток! Подскажите пожалуйста, почему в моем коде не отрабатывается цикл while.

Не отрабатывает putExtra
не перекидывает результат условия на текст вью назначенного активити.

Не отрабатывает MainActivity
Здравствуйте! В общем, в моем приложении есть два Frament и Main Activity. В Main Activity.

Вопрос

Добрый день, помогите разобраться! Почему в консоли запросов я не могу вызвать конструктор в месте, которое я указал на снимке экрана?

Реализация услуг и прочих активов

(нажмите, чтобы увеличить картинку)

Ответ

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

Что можно сделать для обхода:

  • Написать фрагмент запроса в редакторе произвольного выражения вручную. Например, вот так:
  • Открыть конструктор запроса в конфигураторе, там обычный конструктор запроса, эта возможность будет доступна.
  • Воспользоваться консолью запросов, которая использует обычный, классический конструктор запросов. Правда работать такой вариант будет только в толстом клиенте.
Это пример разобранного вопроса из Мастер-группы курса
Разработка и оптимизация запросов в 1С:Предприятие 8.3 .

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

В самой свежей версии консоли с ИТС добавили эту команду, но работает она только при полностью пустом поле.

Добрый день!
Уточню. Здесь дело не только в самой консоли запросов с сайте ИТС, но и в используемой платформе.
Потому что, например, если консоль открыть в базе под платформой 8.3.13, то команда для открытия конструктора запроса будет просто недоступна в окне редактирования произвольного выражения:

8.3.13

8.3.16

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

Не получится вот в такой ситуации открыть вложенный конструктор запроса:

Выражение

Ошибка

Возникнет ошибка:

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