Передача результата запроса в таблицу управляемой формы. Мой алгоритм.
В результате мною коллегам был предложен следующий алгоритм.
В общем модуле, который доступен и серверу и управляемой форме (у меня модуль называется ОбщегоНазначенияКлиентСервер) создаем функцию ВыполнитьЗапросВТаблицу. Она будет выполнять полученный запрос, делать обход результата запроса, формировать структуру из каждой строки результата и каждую заполненную структуру добавлять в массив.
В управляемой форме нам понадобится одна функция на &НаСервере на всю форму, которая будет вызывать функцию общего модуля и передавать ей параметры, потому что из процедуры или функции &НаКлиенте управляемой формы сделать это не получается.
Далее нам нужна еще одна процедура на управляемой форме &НаКлиенте, с помощью которой мы будем полученный результат вставлять в таблицу на форме.
Все. Подготовительная часть закончена. После этого для заполнения таблицы значений на управляемой форме результатом запроса нужно в коде вписать вызов последней процедуры следующим образом:
Важно: Запрос должен быть составлен таким образом, чтобы возвращаемый результат был структурно идентичен нашей таблице значений, то есть типы значений колонок в результате запроса должны совпадать с типами значений колонок нашей таблицы значений и имена колонок в результате запроса должны совпадать с именами колонок таблицы значений.
Вот такой вот алгоритм. Код разжевывать не буду, по-моему там и так все понятно. Мега-гуру просьба не пинать сильно.
Простой вывод результата запроса в табличный документ
Неоднократно наблюдал и наблюдаю картину когда для отладки запроса его результат выводят в табличный документ. При этом создают макет. Определяют области и параметры и т.п. Ниже показан код с помощью которого можно выводить любой результат запроса в табличный документ не определяя макет.
Специальные предложения
Можно сделать проще, обойтись без всяких циклов и выборок
А еще проще, как я обычно отлаживаю запросы.
Спасибо большое за пример, сегодня пригодилось в работе
Кстати одна строчка пропущена, надо бы добавить
А если еще добавить
то даже расшифровка получается, вообще супер удобно
Ааааа не экономьте на пробелах!!
Обновление 03.01.14 14:47
Код открыт Не указано
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
12.12.2020 4314 Eugen-S 23
Инкремент, модуль и прочая магия, которая скрыта под символом «?»
21.10.2021 7138 SeiOkami 39
Полезные примеры СКД, ч.2
Еще несколько примеров решения задач в СКД.
06.04.2021 10477 Neti 8
Обзор полезных методов БСП 3.1.4
25.03.2021 39406 rayastar 51
Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)
27.01.2016 85513 Serginio 115
Звуковое управление в 1С 8.3
В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.
16.03.2021 7083 velemir 33
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions
28.12.2020 8786 comol 31
Базовые вещи БСП, которые облегчат жизнь программисту 1С
В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.
30.08.2020 19926 quazare 34
Использование программных перечислений, ч.1: строковые константы Промо
Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?
10.12.2016 41046 unichkin 74
Форма выбора (подбор) в управляемых формах
Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.
08.05.2020 76280 user5300 19
Программная работа с настройками СКД
Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.
27.01.2020 64715 ids79 26
[СКД] Программное создание схемы компоновки данных
Сделаем отчет на СКД полностью программно, без использования макета «схема компоновки данных».
15.01.2020 43199 John_d 22
Вспомогательные инструкции в коде 1С Промо
Помогаем редактору кода 1С помогать нам писать и анализировать код.
15.10.2018 36033 tormozit 106
Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения
Собрал информацию о событиях/подписках/расширениях в одном месте.
30.12.2019 34881 kuzyara 38
25.12.2019 8396 brooho 19
Полезные процедуры и функции для программиста
Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.
07.10.2019 39477 HostHost 41
Оформление и рефакторинг сложных логических выражений Промо
В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.
20.09.2012 82767 tormozit 131
Таблица значений. Нюансы
Обзор некоторых аспектов использования общеизвестного инструмента 1С.
01.10.2019 52574 Yashazz 56
[Шпаргалка] Программное создание элементов формы
Программное создание практически всех популярных элементов формы.
06.09.2019 100776 rpgshnik 75
Агрегатные функции СКД, о которых мало кто знает
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
05.09.2019 76945 ids79 56
Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо
Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.
11.07.2007 54287 tormozit 51
Регистры бухгалтерии. Общая информация
Общая информация о внутреннем устройстве регистров бухгалтерии.
05.09.2019 46172 YPermitin 25
Три костыля. Сказ про фокусы в коде
Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.
03.09.2019 30122 YPermitin 81
Иерархия без «В ИЕРАРХИИ»
Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи «Уровни, глубина, прародители, циклы и аналоги запросом» [https://infostart.ru/public/160707/].
22.08.2019 14973 ildarovich 24
Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо
Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки
10.09.2017 51071 tormozit 74
Отслеживание выполнения фонового задания
Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.
17.08.2019 44940 ids79 22
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.
08.08.2019 150259 ids79 75
Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
02.08.2019 60115 avalakh 26
Выгрузка документа по условию Промо
Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.
25.04.2019 17982 m-rv 3
Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.
26.07.2019 104503 ids79 17
Обработчики событий при записи объектов. Зачем и что за чем?
Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта. Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.
Выгрузка запроса в таблицу значений
Помогите пжл. разобраться с кодом, что-то не могу понять в чем ошибка:
ЭлементыФормы.ТЗ.СоздатьКолонки();
ЭлементыФормы.ТЗ.Колонки.Добавить(«Контрагент»);
ЭлементыФормы.ТЗ.Колонки.Добавить(«Договор»);
ЭлементыФормы.ТЗ.Колонки.Добавить(«Сумма»);
ЭлементыФормы.ТЗ.Колонки.Добавить(«СверхДоговора»);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«НашиДоговорыКонтрагентов», СсылкаНаОбъектДог);
//Запрос.УстановитьПараметр(«ДатаНач», ТекДокумент.Дата);
//Запрос.УстановитьПараметр(«ДатаКон», ТекДокумент.Дата);
Запрос.Текст =
«ВЫБРАТЬ
| НашиДоговорыКонтрагентов.Организация,
| НашиДоговорыКонтрагентов.СверхДоговора,
| НашиДоговорыКонтрагентов.СрокДействия,
| НашиДоговорыКонтрагентов.Владелец КАК Контрагент,
| НашиДоговорыКонтрагентов.Сумма,
| НашиДоговорыКонтрагентов.Часов,
| НашиДоговорыКонтрагентов.ДоговорОбслуживания,
| НашиДоговорыКонтрагентов.Ссылка
|ИЗ
| Справочник.НашиДоговорыКонтрагентов КАК НашиДоговорыКонтрагентов»;
Для каждого Строка из ТЗ Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Контрагент = Запрос.Контрагент;
НоваяСтрока.Договор = Запрос.Ссылка;
НоваяСтрока.Сумма = Запрос.Сумма;
НоваяСтрока.СверхДоговора = Запрос.СверхДоговора;
КонецЦикла;
выдает ошибку
<Форма.Форма.Форма(45)>: Поле объекта не обнаружено (Контрагент)
НоваяСтрока.Контрагент = Запрос.Контрагент;
Как выгрузить результат запроса
|