1с скд изменить набор данных

Обновлено: 06.07.2024

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: меняем оформление

Автор уроков и преподаватель школы: Владимир Милькин

Ставим цель

  • Сделать копию отчёта с прошлого урока
  • Изменить его имя на "Урок4.erf"
  • Внести изменения в копию отчёта (сегодня разбираем примеры с условным оформлением)

Делаем копию отчёта с прошлого урока

Делаем копию отчёта с прошлого урока:

Переименовываем копию в "Урок4.erf":

Открываем базу "Гастроном" в конфигуратор:

Открываем отчёт "Урок4.erf":

В форме отчёта меняем имя на "Урок4" и открываем схему компоновки данных:

Давайте вспомним, как выглядит отчёт прошлого урока в режиме пользователя:

Сокращаем длину дробной части

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

Причиной этого послужило деление при нахождении среднего. Чтобы устранить этот недостаток укажем в настройках поля "СредняяКалорийность" формат вывода чисел, подразумевающий только 2 числа в дробной части.

Для этого переходим на закладку "Настройки", там выделяем пункт "Отчет", далее в самом низу выделяем закладку "Условное оформление" и нажимаем зелёный плюсик, чтобы добавить новую запись:

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

В открывшемся диалоге нажимаем зелёный плюсик, чтобы добавить поле:

Добавляем поле "СредняяКалорийность" (именно в нём выводится слишком много чисел в дробной части), получилось вот так:

Теперь переходим к настройке поля "Оформление":

Наша задача задать правильный числовой формат:

Указываем значение точности равное двум:

Получилось вот так:

Итоговая запись условного оформления выглядит так:

Сохраняем отчёт и открываем (конфигуратор закрывать не нужно) в режиме пользователя:

Отлично, теперь дробная часть округляется до 2 чисел.

Выводим итоги жирным шрифтом

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

Это также легко сделать при помощи условного оформления.

Переходим на закладку "Настройки", далее выделяем пункт "Цвет" (потому что мы делаем настройку оформления, которая будет относится только к группировке цвет), далее переходим на закладку "Условное оформление" и снова нажимаем зелёный плюсик:

В новой записи настраиваем пункт "Оформляемые поля" (кнопка многоточие) и выбираем поля "Вкус", "Калорийность" и "СредняяКалорийность":

Переходим к настройке поля "Оформление":

Здесь находим пункт "Шрифт" и также открываем его по кнопке многоточие:

Начертание шрифта настраиваем вот так:

Нажимаем "Ок" и ещё раз "Ок":

Получилось вот так:

Сохраняем отчёт и формируем в режиме пользователя:

Отлично, но не совсем. Хочется, чтобы жирным выводились только значения итогов напротив цветов, а у нас условное оформление применилось ещё и к заголовкам полей и к общим итогам. Исправим это.

Для этого возвращаемся к записи условного оформления, которую мы только что создали и настраиваем поле "Область использования":

Снимаем галки напротив "В общем итоге" и "В заголовке полей":

Снова сохраняем отчёт и формируем в режиме пользователя:

Выводим жирным шрифтом общие итоги

А теперь давайте добьёмся, чтобы вся общая строка итогов (включая слово "Итого") выводилась жирным шрифтом.

Для этого переходим на закладку "Настройки", выделяем пункт "Отчет" (применяем настройки в целом к отчёту), далее переходим на закладку "Условное оформление" и добавляем ещё одну запись (зелёная кнопка плюс):

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

Наконец, правильно настраиваем "Область использования" нашей записи:

Оставляем единственный пункт - "В общем итоге":

Получилось вот так:

Сохраняем отчёт и формируем в режиме пользователя:

Мы добились своего

Разукрашиваем фон заголовка полей и общие итоги

А что, если нам разукрасить фон заголовка полей и итоговой строки в зелёный цвет? А текст в белый?

Я покажу как легко это делается.

Вновь переходим на закладку "Настройки", выделяем пункт "Отчет", далее переходим на закладку "Условное оформление" и жмём зелёный плюсик, чтобы добавить ещё одну запись:

Сразу настраиваем "Область использования новой записи (оставляем только "В общем итоге" и "В заголовке полей"):

Далее переходим к полю "Оформление" новой записи, настраиваем цвет фона и цвет текста как на картинке ниже:

Получилось вот так:

Сохраняем отчёт и формируем в режиме пользователя:

Добавляем заголовок

Ну и в качестве завершающего приёма этого урока установим заголовок отчёта (мы это уже делали в прошлых уроках).

Для этого переходим на закладку "Настройки", выделяем пункт "Отчет", далее переходим на закладку "Другие настройки" и там настраиваем пункты "Выводить заголовок" и "Заголовок" вот так:

Сохраняем отчёт и формируем в режиме пользователя:

Эталонная обработка, после выполнения всех шагов этого урока

Войдите на сайт как ученик

Для учеников

Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

Аватар пользователя mykib.org

Возникла у меня необходимость в существующем отчете на СКД, имеющем набор данных - запрос, изменить тип набора данных с запроса на объект - таблицу значений. Но при смене типа набора данных слетели все поля, роли, ресурсы, оформление – в общем все слетело.

Погуглил и нашел способ – редактирование xml- файла схемы компоновки данных в текстовом редакторе. А почему бы не написать обработку для 1С, которая все сделает сама?

Предлагаю вместе создать такую обработку.

Итак, у нас xml – файл СКД, в котором присутствует набор данных – запрос (учтем, что в данном файле наборы данных могут быть не только на основании запросов, но и объектов, а также объединения). Файл получен, нажатием в конфигураторе кнопки «Сохранить схему в файл»:

Сохраниение СКД в файл

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

Добавим поля на форму

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

Процедура ЗаполнитьТЧ() рекурсивно формирует дерево наборов данных и создает колонки соответствующего элемента формы:

Для того, чтобы в нижней части обработки в поле РасшифровкаСтроки отображался текст запроса текущего набора данных (если, конечно, этот набор даных-запрос) используем событие ПриАктивацииСтроки нашего дерева:

При активации строки

Теперь можно в дереве указать какие наборы заменять (установка флажка в колонке «Пометка» и имя объекта, содержащего данные в колонке «Имя объекта»), например, так:

Выбераем те наборы, которые хотим заменить

Создадим кнопку «Сохранить СКД в файл как…», процедура, вызываемая по нажатию этой кнопки:

А вот и сама, так сказать, процедура-гвоздь программы ВыполнитьЗамену():

Наш результат

Все очень просто, Обработка (неуправляемые формы) прилагается – используйте.

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: делаем связь наборов данных

Автор уроков и преподаватель школы: Владимир Милькин

Ставим цель

  • Написать отчёт, который выводит клиентов и их любимые продукты. У каждого клиента есть любимый цвет, а у каждого продукта свой цвет - вот на основании этих цветов и нужно определять "любимость" продукта. К примеру, если у Андрея любимый цвет красный, то одним из его любимых продуктов будут помидоры (они красного цвета).
  • Применить в отчёте два набора данных. Первый набор - это данные из таблицы справочника "Клиенты". Второй - данные из таблицы справочника "Еда".
  • Осуществить связь этих двух наборов, чтобы в отчёте остались только любимые продукты для каждого из клиентов.

Создаем новый отчет

Открываем базу "Гастроном" в конфигураторе и через главное меню создаём новый отчет:

Вид документа - "Внешний отчет":

В форме нового отчёта указываем имя "Урок6" и нажимаем кнопку "Открыть схему компоновки данных":


Оставляем имя схемы по умолчанию:

Добавляем первый набор данных

В открывшейся схеме переходим на закладку "Наборы данных" и через зелёный плюсик выбираем "Добавить набор данных - запрос":


Добавился первый набор данных. Напишем запрос.

Вызываем конструктор запроса:


Указываем таблицу "Клиенты" и поля, которые требуется получить из запроса:

Получился такой текст запроса:


Добавляем второй набор данных

Выделяем мышкой пункт "Наборы данных".


. и добавляем ещё один набор данных - запрос:


Выделяем его (НаборДанных2) и снова вызываем конструктор запроса:


Указываем таблицу справочника "Еда" и поля, которые требуется получить из запроса:

Получился такой текст запроса:


Обратите внимание, что у нас сейчас в отчёте присутствуют два набора данных: НаборДанных1 и НаборДанных2. У каждого свой текст запроса и свои данные.

Делаем имена более наглядными

Для наглядности, давайте переименуем НаборДанных1 в Клиенты, а НаборДанных2 в Еда.

Сделайте это двойным щелчком по каждому из наборов:


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

В данный момент у набора "Клиенты" следующие поля: "Наименование" и "ЛюбимыйЦвет", а у набора "Еда": "Наименование" и "Цвет".

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

Выделяем набор "Клиенты" и меняем имена полей так:


Затем выделяем набор "Еда" и меняем имена полей так:


Вызываем конструктор настроек

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


Тип отчета - "Список. ":

Выбираем поля для отчета из обоих наборов:

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

Проверяем отчёт

Сохраняем отчет и формируем в режиме пользователя:


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

Но нам нужно из всех этих записей оставить только те у которых поле "ЛюбимыйЦветКлиента" равно полю "ЦветЕды":


Осуществляем связь двух наборов данных

Для этого осуществим связь двух наборов данных (Клиенты и Еда) по полям ЛюбимыйЦветКлиента и ЦветЕды.

Переходим на закладку "Связи наборов данных" и нажимаем на кнопку-плюсик, чтобы добавить новую связь:


Настраиваем параметры как на рисунке ниже:


Источник и приёмник связи. Ну тут всё понятно. Указываем первый набор (Клиенты) и второй набор (Еда) данных. Хочу обратить особое внимание, что связь будет осуществляться по принципу внешнего левого соединения (мы его проходили в теме запросов в прошлых модулях). Исходя из этого и нужно выбирать какой набор будет источником, а какой приёмником.

Выражение источник. Указываем здесь выражение или просто поле из набора данных источника (мы здесь указали поле ЛюбимыйЦветКлиента из набора Клиенты).

Выражение приемник. Указываем здесь выражение или просто поле из набора данных приёмника (мы здесь указали поле ЦветЕды из набора Еда).

Таким образом данная связь оставит из прошлого списка только те строки, у которых поле ЛюбимыйЦветКлиента равно полю ЦветЕды.

Сохраним отчёт и запустим в режиме пользователя:


Сделаю пояснение про поле "Условие связи", об которое так часто бьют свои копья начинающие программисты.

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

В этом случае для всех строк из источника связи перед осуществлением связи будет проверяться это выражение (условие связи). И если это выражение равно ИСТИНА, то будет предприниматься попытка установить связи этой строки со строками из приемника связи. Если же выражение равно ЛОЖЬ, то таких попыток предприниматься не будет.

Вот, к примеру, давайте поставим такую цель: сделать так, чтобы связь указанных нами наборов данных осуществлялась только, если клиента зовут "Андрей". То есть любимые продукты (если они есть) выводились только для Андрея, а для других клиентов - не выводились (даже если они есть).

Очень просто. Напишем в условии связи выражение ИмяКлиента = "Андрей":


Сохраним отчёт и сформируем в режиме пользователя:


Эталонная обработка, после выполнения всех шагов этого урока

Войдите на сайт как ученик

Для учеников

Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: меняем созданный отчет

Автор уроков и преподаватель школы: Владимир Милькин

На этом уроке мы научимся менять уже созданный на основе СКД отчёт.

Ставим цель

Целью этого урока будет:

  • Скопировать файл отчёта с прошлого урока "Урок1.erf".
  • Изменить имя скопированного отчёта на "Урок2.erf".
  • Открыть отчёт "Урок2.erf" в конфигураторе.
  • Внести изменения в схему компоновки данных.

Создаём копию отчёта с предыдущего урока

Вначале копируем отчёт предыдущего урока.

. и вставляем его на рабочий стол:

Далее переименовываем получившуюся копию.

Открываем копию в конфигураторе

Открываем базу "Гастроном" в конфигураторе:

Открываем в конфигураторе отчёт .

В открывшейся форме отчёта меняем имя на "Урок 2" и нажимаем кнопку "Открыть схему компоновки данных":

Вот она наша схема - в том виде как мы её настроили на прошлом уроке:

Меняем заголовки столбцов

Вы помните как выглядит этот отчёт в режиме пользователя? Вот так:

Давайте изменим нашу схему так, чтобы вместо "Наименование" выводилось "Имя", а вместо "Пол" выводилось "М/Ж".

Сделать это проще простого.

В схеме на закладке "Наборы данных" в области "Поля" устанавливаем галку и меняем заголовок соответствующих полей:

Сохраняем наш отчёт нажатием на значок дискета:

И вновь открываем его в режиме пользователя (при этом не забудьте закрыть предыдущий отчет) и нажимаем кнопку "Сформировать":

Заголовки колонок изменились нужным образом. Отлично

Меняем порядок столбцов

Но порядок колонок не совсем правильный. Давайте добьёмся того, чтобы колонка "Наименование" шла первой, "Пол" второй и "ЛюбимыйЦвет" третьей.

Для этого возвращаемся в конфигуратор (вообще не нужно было его закрывать) в нашу схему компоновки данных и переходим на закладку "Настройки".

В этой закладке прежде чем что-то делать всегда будем в начале выделять слово "Отчет" (шаг 2). Пока просто запомните это и делайте так всегда.

Выделив "Отчет" переходим (ниже) на закладку "Выбранные поля", выделяем там поле "Наименование" и при помощи стрелки перемещаем его наверх:

Получилось вот так:

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

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

Всё получилось. Порядок колонок теперь вполне логичный.

Меняем оформление и добавляем заголовок

Теперь давайте сделаем небольшое "украшательство" нашего отчёта и изменим его цветовое оформление.

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

Выбираем вместо основного вариант "Античный":

Теперь давайте добьёмся того, чтобы у нас в отчёте перед таблицей выводился заголовок "Наши клиенты".

Чтобы это сделать проматываем список других настроек вниз и устанавливаем поля "Выводить заголовок" и "Заголовок" как на рисунке ниже:

Сохраняем отчёт и открываем его в режиме пользователя:

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

Меняем сортировку

А ещё давайте сделаем, чтобы в нашем отчёте сначала шли женщины, а затем мужчины.

Для этого сделаем сортировку полю "Пол".

Снова возвращаемся к конфигуратору. Переходим на закладку "Настройки", выделяем "Отчет" и переходим на закладку (в самом низу) "Сортировка".

Там перетаскиваем поле "Пол" из первой колонки во вторую:

А также указываем для него направление сортировки "По убыванию":

Сохраняем отчёт, а затем формируем его в режиме пользователя:

Отлично, строки в отчёте отсортированы по полу: вначале идут женщины, а затем мужчины.

Эталонная обработка, после выполнения всех шагов этого урока

Войдите на сайт как ученик

Для учеников

Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

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