Настройка шапки отчета 1с
Всем привет, всех с наступившим Новым 2020 годом! В данной статье я предлагаю вам разобрать такой интересный функционал как использование собственных макетов в системе СКД. Отмечу, что за свою достаточно продолжительную практику (порядка 15 лет), я, наверное, всего пару-тройку раз встречал в чужих отчетах (не в типовых) использование данной возможности.
Сообщество приветствует чистоту и оптимизацию исполняемого кода обработок или отчетов, но могу точно сказать по своему опыту, что в сотнях отчетах, прошедших через меня – я не встречал ни одного, который бы хотелось отности к категории "идеальный, по всем правилам", с которого бы хотелось взять пример. 99 % отчетов сделаны «на отвяжись» по принципу - работает, данные показывает, не важно сколько он там строится по времени. Но и многие пользователи даже не могут объяснить, как получается та или иная цифра в отчетах (особенно производственных). Хотя, система компоновки данных, по-моему мнению, - это даже пользовательский функционал в какой-то степени. Какие-либо «улучшения» отчета с использованием всех возможностей СКД – это что-то из ряда вон выходящее.
Ну да ладно. Давайте рассмотрим использование собственного макета в отчете на СКД. Надеюсь, что этот функционал будет полезен вам для использования в ваших разработках. Постараюсь описать как можно подробнее и проще - "на пальцах". Итак, начнем с подготовки самого отчета в СКД.
Подготовка отчета в СКД
Воспользуемся типовой конфигурацией Розница 2.2 на платформе предприятия 8.3.15.1700. Подготовим простой отчет для определения количества и суммы продаж по организации/кассе в разрезе дней за выбранный период.
Для этого напишем запрос по регистру накопления "Продажи" (обороты) в макете компоновки данных. Поскольку, в этом регистре нет данных о КассеККМ, с которой была совершена продажа, то мы левым соединением с регистратором получаем кассу продажи из документа. С условием, что документ-регистратор является отчетом розничных продаж. Так же я добавлю несколько вспомогательных полей, которые потребуются в отчете на основе собственного макета.
В общем виде набор данных запрос выглядит вот так:
На закладке "Ресурсы" определим какие из полей являются ресурсами и выберем выражение расчета этого поля по другим колонкам.
Рис.1. Определяем ресурсы отчета.
Далее, определим параметры данного отчета. В качестве "Периода" реализуем задействуем такую возможность СКД как тип "СтандартныйПериод" (можете здесь поставить "галочку" для дальнейшего использования в ваших СКД отчетах вне зависимости как вы будете их реализовывать). См. как это сделать:
Рис.2. Создаем параметр "Период" в отчете на основе дат начала и окончания.
Затем, в "Настройках" выбираем доступные поля и ресурсы для отображения отчета.
Рис.3. Создаем саму таблицу отчета с выбранными полями.
В пользовательских настройках отчета включаем созданный нами параметр "Период":
Рис.4. Включаем в пользовательские настройки параметр "Период".
Все, самое основное выполнено - этого достаточно, чтобы отчет выводил информацию. Отчет выглядит вот так:
Рис.5. Сформированный отчет в СКД в "базовом варианте".
Обычно, на этом все и заканчивается. Но, я продолжу и перехожу к работе с собственными макетами в следующем разделе.
Реализация собственного макета оформления. Подготовка настроек
Начну с того, что создам копированием новый вариант настройки отчета. Пусть он называется "Основной1". В общем виде эта настройка выглядит вот так:
Рис.6. Настройка отчета для собственного макета.
Распишу каждую строку данной настройки:
Период - этот параметр отвечает за день, на который будут создаваться отчеты по кассам. Далее, к этому параметру я "прикручу" дополнительные реквизиты и буду использовать его как "шаблон".
Касса, НомерОтчета, Магазин, ДатаОтчета (СводныйЗаголовок) - в разрезе этой группы параметров (своего рода "фильтр") я буду отбирать данные продаж номенклатуры.
Далее, идут строки (в скобках я присваиваю персональное имя (правой кнопкой - "Установить имя. ") каждой строке - ШапкаМ, СтрокаТаблицы, ИтогиТаблицы):
ДетальныеЗаписи (ШапкаМ)
ДетальныеЗаписи (СтрокаОтчета)
ДетальныеЗаписи (ИтогиТаблицы)
ДетальныеЗаписи - это "набор реквизитов", который будет использоваться в этом "блоке".
Наборы реквизитов для группировок такие:
Для (СводныйЗаголовок) - Касса, НомерОтчета, Магазин, ДатаОтчета,
для (ШапкаМ) - реквизиты отсутствуют,
для (СтрокаОтчета) - Номенклатура, КоличествоОборот, СтоимостьОборот,
для (ИтогиТаблицы) - КоличествоОборот, СтоимостьОборот.
Везде снимаем галку "Авто".
Реализация собственного макета оформления. Рисуем новый макет
Переходим на закладку "Макеты" и начнем создавать требуемый макет. В итоговом виде, он выглядит вот так:
Рис.7. Настройка отчета для собственного макета.
Опишу процесс создания этого макета.
Процесс создания печатной формы макета СКД не отличается от процесса создания печатных форм документов. Также есть параметры, шаблоны и текст. В данном примере, я использую параметры в таблице продаж, шаблоны - в шапке отчета.
Все, макет нарисован. Он выглядит так как нам нужно.
Следующим шагом, в окне Макет - Область я создаю записи о ранее созданных группировках, попутно указывая значения их параметров. Это выглядит вот так:
Рис.8. Добавлена группировка "СводныйЗаголовок" и заполнены параметры макета для этой группировки.
Рис.9. В группировке "ИтогиТаблицы" используем параметры "КоличествоОборот" и "СтоимостьОборот".
Рис.10. "СтрокаОтчета" - основная группировка отчета - Номенклатура, СтоимостьОборот, КоличествоОборот.
СводныйЗаголовок, ИтогиТаблицы, СтрокаОтчета являются "Макетами группировки". ШапкаМ - это "Макет заголовка группировки", Период - это "Параметр".
Далее, к каждому макету привязываем область (см. рис.10). Область можно "накликать", удерживая кнопку "Ctrl".
К параметру "Период" я привязал целый шаблон.
Так, печатная форма в СКД нарисована, макеты группировок добавлены и их параметры заполнены, области привязаны, протестируем обработку, перейдя к следующему разделу.
Тестирование задачи
Теперь, предлагаю протестировать задачу. В нашем СКД отчете "вшито" две настройки "Основная" и "Основная1" с использованием собственных макетов.
Проверим работоспособной каждой из них:
Запускаем предприятие, выбираем период и формируем отчет в настройке "Основная1" (с макетом), такая картина:
Рис.11. Отчет СКД с использованием макета.
В разрезе периода 01.08.2019 - 04.08.2019 (с общей выручкой), в разрезе касс (по выручке) и что наторговали и за сколько в разрезе каждой кассы.
Перевыбираем вариант настройки "Основная" и получаем уже эти же данные, но в другой компоновке, но без использования макета. Получилось вот так:
Рис.12. Отчет СКД без использования макетов. Период использует шаблон.
Данные совпали, все работает. Переходим к разделу "Выводы".
Выводы
В данной публикации я наглядно показал вам базовый принцип работы с макетами в СКД. Приведенный пример не сложный, но наглядно иллюстрирует алгоритм настройки, позволяющий из одних и тех же данных создать несколько вариантов отчета (в данном случае с использования макета и без него). Так же, пример будет полезен тем, кто хочет научиться строить отчеты в СКД с нуля, дорабатывать их, не разрушая их целостность на корню.
Еще раз хочу отметить, что функционал использования макетов я очень редко встречал в отчетах СКД других программистов. Обычно - это "основная" компоновка, а как она собирается - по каким данным - этого уже никто не помнит. Как смешно не звучит, но это реалии.
Рис.13. Выбор варианта настройки отчета.
Какой вывод можно сделать сразу (я осторожно напишу) - возможный частичный отказ от внешних печатных форм документов. Функционал макетов СКД позволяет создать печатную форму или группу печатных форм для документов конфигурации. Как вариант - это возможно запустить "поток" печатных форм документа или даже нескольких документов разного вида при условии корректного составления запроса или "правильной внешней" таблицы для передачи в СКД.
Отмечу, что макеты "накликиваются" без написания кода. Отсюда делаю еще один вывод - написанный запрос (переданная таблица) в СКД - это уже 90% решения вашей типовой задачи - будь то отчет или "поток" печатных форм.
За исключением запроса (язык запросов) - в примере нет программирования.
Еще один плюс - это возможно "засунуть" в параметр шаблон-конструкцию, как сделано на примере параметра "период", где я использую шаблон из макета.
Так. Пожалуй, Все. Пример использование макетов в СКД я описал из собственного опыта и постарался сделать данный материал как можно подробнее, надеюсь, что он вам будет полезен.
Было бы приятно, чтобы вы поддержали данную статью, в свою очередь постараюсь написать еще что-нибудь полезное и интересное для вас. Пусть эта статья будет для вас своего рода "шпаргалкой" для запоминания этого алгоритма, как и для меня в частности.
Спасибо, что дочитали статью до конца. Всем привет!
Предыдущие материалы
Так же, прошу посмотреть мои предыдущие статьи по использованию системы компоновки данных:
Откроем СКД выбранного отчета (в примере использую отчет из своей конфигурации для тестирования). Перейдём на вкладку «Настройки», создадим отчету на верхнем уровне новую группировку. Переместите её выше всех группировок . Результат .
Выделяем ранее созданную группировку . Активируем настройки «» и переходим на вкладку «Другие настройки» . В первом пункте «Макет оформления» выбираем значение «Без оформления» . Внизу списка ищем пункт «Вариант использования группировки» и выбираем значение «Дополнительная информация» . Результат .
Нами настроенной группировке задаем имя. Вызываем контекстное меню по созданной группировке и кликаем на пункт «Установить имя…» . В открывшемся окне вводим для примера «Заголовок» . Результат .
Переходим в окне СКД на вкладку «Макеты». Выбираем понравившеюся нам область и пишем в ячейку для примера «Это мой заголовок, отчет сформирован – [ТекущаяДата]» (в квадратных скобках слитно, задается параметр в шаблоне) . Вызываем свойства данной ячейки и задаем настройки. Заполнение – «Шаблон» . Шрифт - для примера «Arial, 14 с жирным начертанием» . Результат .
Добавляем новый макет группировки , при добавление выбираем вариант «Имя группировки» и нашу группировку «Заголовок» . Определяем область макета . Система автоматически сама определяет параметры в шаблоне, настраиваем параметр указав выражение – «ТекущаяДата()» .
Сохраняем, применяет, и смотрим в отчете.
До платформы 8.3.14 в СКД можно было только программно вывести картинку в макет. Теперь это возможно без кода! Достаточно ячейке определить картинку и она успешно выводится. Инструкция и результат ниже.
В этой статье разберем довольно популярный вопрос, с которым можно столкнуться не только в реальной работе, но и при устройстве на работу.
Чтобы было понятно, о чем далее пойдет речь, посмотрим на проблему глазами пользователя. Есть простейший отчет, построенный при помощи СКД, вид которого представлен на рис.1:
Рис. 1. Исходный демонстрационный отчет
Нам нужно, чтобы отчет имел заголовок «Отчет по продажам» с параметрами, которые бы заполнялись на основе произвольных данных. Для простоты, в нашем случае эти параметры заголовка будем заполнять из параметров самого отчета (Рис. 2):
Рис. 2. Требуемый вид отчета
На нашем курсе один из участников долго исследовал различные варианты, как можно добиться подобного результата, в результате чего и появился, на наш взгляд, интересный вопрос.
Вопрос
отрабатывает так, как надо.
В общем, комбинации строк дают разные результаты:
вообще ведет к ошибке , компоновка не происходит.
Я запутался в разных сущностях с одинаковыми именами и типами. Результата я добиваюсь, но нет чувства, что разобрался полностью. Не проясните?
Ответ
Здесь дело в двух моментах: значении параметра СтандартнаяОбработка (Истина или Ложь) и в значениях переменных, связанных с настройками компоновки.
СтандартнаяОбработка в коде не изменяется, значит, система будет формировать отчет автоматически. Нам нужно только обеспечить, чтобы в компоновщике содержались корректные настройки. Далее система самостоятельно получит эти настройки из компоновщика, выполнит все действия по компоновке отчета.
Поэтому работать надо именно с компоновщиком настроек:
Вы именно так и делаете, всё получается правильно.
СтандартнаяОбработка в коде установлена в значение Ложь. Значит, все действия по компоновке отчета нужно выполнить вручную (создать макет компоновки по схеме и настройкам компоновки, поработать с процессором компоновки и с процессором вывода результата компоновки данных в табличный документ).
У вас получается следующий код (не самые важные строки я отбросил):
Вы получили из компоновщика настройки. Они хранятся в переменной Настройки. Затем в компоновщике устанавливаете новый заголовок, но в переменной Настройки всё осталось без изменений. Это фактически две разные переменные – Настройки (без заголовка) и КомпоновщикНастроек.Настройки (с новым заголовком).
А макет компоновки вы получаете на основании переменной Настройки, где заголовок не установлен. Поэтому на выходе этот заголовок не выводится в отчете.
Попробуйте еще для закрепления поменять порядок строк:
В этом случае заголовок в отчете уже будет выводиться.
Таким образом, можно сделать следующие выводы:
- При использовании метода ПолучитьНастройки к “обычным” настройкам применяются пользовательские и фиксированные настройки из этого же компоновщика. В результате выполнения этого метода получаем переменную типа НастройкиКомпоновкиДанных. Это именно те настройки, с которыми и будет компоноваться отчет.
- Если нужно установить один параметр в настройках, то нет смысла отключать стандартную обработку. Если же необходимо отчет скомпоновать полностью вручную (например, предварительно подготовить таблицу с внешними данными, обработать ее, вывести ее в виде отчета), то тогда отключаем стандартную обработку и вручную прописываем все шаги формирования отчета.
Этим, пожалуй, и завершим разбор сегодняшнего вопроса. Как видите, казалось бы, такая простая задача, как вывод заголовка, которая по сути своей является вспомогательной при решении билетов, при должном рассмотрении является не такой и простой. Но мы надеемся, что после знакомства с нашим материалом у вас немного “просветлело” :)
Завтра разберем новый вопрос, в котором внимательная слушательница чуть не подловила нашего тренера, поэтому не переключайтесь!
Сегодня мы рассмотрим одну из самых частых задач, с которой сталкиваются специалисты по 1С – доработку отчета типовой конфигурации.
О чем эта статья
В статье рассмотрен пример доработки типового отчета «Расчетный листок» в конфигурации «Зарплату и Управление Персоналом 3.0». На данном примере показываются общие шаги разработчика, в случае если он слабо знаком с конкретной реализацией конкретного типового отчета на базе СКД.
Применимость
В материалах статьи в качестве примера используется конфигурация, «Зарплата и Управление Персоналом», редакции 3 3.0.25.122. Но от этого примеры доработки, продемонстрированные в видео, не стали устаревшими, т.к. акцент сделал именно на логике рассуждений разработчика перед которым поставлена подобного рода задача. Смело смотрите видео, это must have!
В качестве конфигурации выбрали “Зарплату и Управление Персоналом 3.0” – в силу следующих причин:
- Отчеты из ЗУП традиционно считаются сложными
- Иногда даже задача – понять, откуда берутся данные в отчет – вызывает у специалистов сложности.
Что конкретно мы будем делать
Это реальная задача из Мастер-группы – доработаем отчет “Расчетный листок” так, чтобы в шапке выводилась информация о дате приема сотрудника на работу.
Очень простая задача :)
Но есть одна сложность – информацию о дате приема типовой отчет не содержит, её нужно получать с помощью отдельного запроса.
И запрос этот нужно интегрировать в типовой отчет…
А параллельно мы разберем и приемы работы с СКД:
- Анализ программного кода типового отчета – определение точек минимального воздействия на конфигурацию
- Использование расширения языка запросов для системы компоновки данных – выражения в фигурных скобках
- Программное формирование отчета на СКД – доработку процедуры ПриКомпоновкеРезультата
- Вывод результата компоновки в коллекцию – дерево значений
- Доработку текста запроса типового отчета – получение связанной информации
- Работу с настройками компоновки – определение структуры, использование нескольких группировочных полей в одной группировке
- Использование макета – табличного документа при выводе отчета на СКД
- Отладку типового отчета, запущенного в фоновом режиме
Итак, поехали! 21 минута видео :)
Видео 1: Как за 10 минут понять логику формирования типового отчета
В этом уроке приступаем к решению задачи по модификации Расчетного листка в ЗУП 3.0.
Суть задачи состоит в том, чтобы вывести в отчет связанную информацию из других объектов – необходимо запросом получать дополнительные данные.
Но прежде, чем писать код, нужно найти точки минимального воздействия – чтобы внести в конфигурацию как можно меньше изменений.
В данном уроке мы показываем, как понять логику формирования типового отчета на СКД с программным заполнением полей и ручным выводом данных в табличный документ.
Видео 2: Как с помощью 2 строк кода изменить заполнение отчета
В уроке показано, как найти, где хранятся требуемые пользователю данные – это могут быть различные объекты системы. В этой задаче очень помогает умение читать объемные запросы.
В итоге задача решается с минимальными изменениями:
- Новая строка в макете
- Левое соединение в запросе
- Две строки в программном коде.
Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”.
Эта тема детально раскрыта в курсе:
Поддержка – 2 месяца. Объем курса – 34 учебных часа.
Не откладывайте свое обучение!
Комментарии / обсуждение (65):
Добрый день! Вопрос по УТ 11. В типовых отчётах добавляются доп. реквизиты. Вопрос: как их исключить из отчетов?
Подробнее.
Существует, примерно, 100 видов номенклатуры, к каждому из которых привязан свой набор доп. реквизитов от 5 до 10).
При изменении варианта отчета, где используется номенклатура, при раскрытии её, вываливается список всех доп. реквизитов. Жуткий тормоз. Можно ли сделать так, чтобы при отборе или добавлении поля, не выводились эти доп. реквизиты?
Добрый день!
Нет, поскольку это платформенный механизм – для справочника Номенклатура в конфигураторе настроены характеристики на уровне объектов метаданных. Поэтому они будут добавляться в список полей номенклатуры при работе с отчетами, динамическими списками, т.е. в механизмах, базирующихся на системе компоновки данных.
Рассмотрите вариант переноса доп. реквизитов в обычные реквизиты справочника Номенклатура. Это должно увеличить производительность описанных действий.
Раньше, помнится, надо было настраивать в СКД на закладке “Характеристики”, а сейчас, выходит, на Табл. часть “Доп. реквизиты” программист повлиять не может?
В УТ 11 не требуется заполнять закладку Характеристики в тексте запроса набора данных.
Дело в том, что в этой конфигурации настроены характеристики на уровне объектов метаданных. Например, можно в конфигураторе обратиться к справочнику Номенклатура, в контекстном меню выбрать пункт Характеристики:
Здесь указано, откуда система будет получать перечень характеристик и их значения.
СКД учитывает эту настройку, поэтому дополнительно прописывать характеристики в запросе не нужно.
По поводу переноса в обычне реквизиты. Дело в том, что у каждого вида номенклатуры свои доп. реквизиты и они не пересекаются. Это сколько же их будет?!
Можно на копии базы сделать тестовый пример, проверить производительность и все остальные аспекты, принять решение, стоит ли выполнять такие действия на рабочей базе.
Добрый день! Прошу помощи подскажите пожалуйста?
Клиент попросил доработать типовой отчет в БП 3.0 , конфигурация на поддержке. Было принято решение сделать отчет внешним, но столкнулся с проблемой…
Сохраняю отчет как внешний и пытаюсь открыть его через файл открыть и тут же выдается ошибка “не известный тип объекта метаданных, ВнешнийОтчет.ЗадолженностьПокупателейПоСрокамДолга”. Как победить эту ошибку? В УТ 11.4 таких проблем не возникало.
Добрый день!
Причина ошибки заключается в том, что у внешнего отчета или обработки в принципе нет модуля менеджера. А у отчета или обработки из конфигурации такой модуль присутствует.
В БП в модуле менеджера отчетов есть программный код, а в УТ – нет. Этим объясняется разница в поведении конфигураций.
При сохранении отчета или обработки во внешний файл модуль менеджера будет потерян. Поэтому нужно учесть этот момент, доработать внешний отчет, например, добавив нужные процедуры в модуль объекта.
Альтернативный вариант – создать расширение, в котором реализовать новый отчет, модуль менеджера в таком случае будет доступен.
>> Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”
А я так и не понял для чего используется такая конструкция?
Ведь на выходе такой запрос будет возвращать пустую таблицу с колонками.
А как тогда выбираются данные для этой таблицы?
Добрый день!
Этот текст запроса программно при компоновке отчета будет заменен на сложный запрос, который действительно извлекает данные из базы, а нем уже не будет конструкции ВЫБРАТЬ ПЕРВЫЕ 0.
Текст такого запроса формируется программно из отдельных кусочков, временных таблиц, зависит от различных условий, поэтому указать его непосредственно в отчете не получится.
Но в то же самое время нужно определить, какие поля набора данных должны быть в отчете. Для этого создается фиктивный текст запроса в наборе данных отчета. Он не будет выполняться, единственная его задача – описать поля отчета, а также типы данных этих полей.
Благодарю за ответ.
То, что это не запрос, а его “набросок” – это понятно.
Но не понятно назначение конструкции “ВЫБРАТЬ ПЕРВЫЕ 0”. Ведь если ее убрать (заменить на “ВЫБРАТЬ”), то ничего не изменится, т.к. этот запрос все равно не исполняется, а модифицируется из кода.
Да, конечно, не изменится. Но можно выделить 2 способа использования именно такой конструкции:
1. Она обеспечивает формирование пустого результата запроса с набором колонок нужного типа. Если использовать просто ВЫБРАТЬ, то в результате будут данные (одна строка с пустыми значениями).
2. Это может быть удобным маркером, признаком, что именно этот запрос нужно подменить. Потому что в обычном запросе для получения данных из базы такая конструкция точно не будет применяться.
Да. Действительно. Для получения пустой таблицы, указанного пользователем формата – весьма интересный прием.
Благодарю за ответы.
Пожалуйста. Обращайтесь:)
И приходите к нам на курс по СКД. В Мастер-группе отвечаем на Ваши вопросы по СКД.
Процедура Печать(ТабДок, Ссылка) Экспорт
// Макет = Документы.РасчетСтипендии.ПолучитьМакет(“Печать”);
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| РасчетСтипендии.Дата КАК Дата,
| РасчетСтипендии.Номер КАК Номер,
| РасчетСтипендииСтуденты.Студент КАК Студент,
| РасчетСтипендииСтуденты.Группа КАК Группа,
| РасчетСтипендииСтуденты.ТипСтипендии КАК ТипСтипендии,
| РасчетСтипендииСтуденты.НомерСеместра КАК НомерСеместра
|ИЗ
| Документ.РасчетСтипендии.Студенты КАК РасчетСтипендииСтуденты
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасчетСтипендии КАК РасчетСтипендии
| ПО РасчетСтипендииСтуденты.Ссылка = РасчетСтипендии.Ссылка
|ГДЕ
| РасчетСтипендии.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РасчетСтипендииРезультатыСдачи.НомерСтроки КАК НомерСтроки,
| РасчетСтипендииРезультатыСдачи.Предмет КАК Предмет,
| РасчетСтипендииРезультатыСдачи.РезультатСдачи КАК РезультатСдачи,
| РасчетСтипендииРезультатыСдачи.Студент КАК Студент
|ИЗ
| Документ.РасчетСтипендии.РезультатыСдачи КАК РасчетСтипендииРезультатыСдачи
|ГДЕ
| РасчетСтипендииРезультатыСдачи.Ссылка В(&Ссылка)”;
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть(“Заголовок”);
ОбластьИнформацияСтудента = Макет.ПолучитьОбласть(“ИнформацияСтудента”);
ОбластьРезультат = Макет.ПолучитьОбласть(“Результат”);
ОбластьРезультатыСдачиШапка = Макет.ПолучитьОбласть(“РезультатыСдачиШапка”);
ОбластьРезультатыСдачи = Макет.ПолучитьОбласть(“РезультатыСдачи”);
ОбластьЗаголовок.Параметры.Заполнить(Выборка);
ОбластьЗаголовок.Параметры.Дата = Формат(Выборка.Дата, “ДФ=dd.MM.yyyy”);
ТабДок.Вывести(ОбластьЗаголовок);
//ТабДок.Вывести(ОбластьРезультаты);
ОбластьИнформацияСтудента.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьИнформацияСтудента, Выборка.Уровень());
ТабДок.Вывести(ОбластьРезультат);
ТабДок.Вывести(ОбластьРезультатыСдачиШапка);
//Выборка = Выборка.РезультатыСдачи.Выбрать();
//Каждому студенту свои предметы
Выборка2.Следующий();
ОбластьРезультатыСдачи.Параметры.Заполнить(Выборка2);
ТабДок.Вывести(ОбластьРезультатыСдачи, Выборка2.Уровень());
Иногда в качестве заголовка отчета требуется задать что-нибудь сложное, вроде:
«Отчет за период с» + ДатаНачала + » по» + ДатаКонца
Задать его таким образом в настройках не получится. Придется сделать это программно следующим образом:
Код 1C v 8.х
also
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Посмотреть все результаты поиска похожих
Читайте также: