Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час

Публикация № 864434

Разработка - Практика программирования

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

Я поделюсь опытом, как сложное сделать простым: как сократить (и даже отказаться) от написания кода при выводе отчетов.

«Лучше день потерять, потом за 5 минут долететь…» – это на 100% про систему компоновки данных. Механизмы компоновки многим непонятны – не очевидно, что это, зачем это нужно и как работает. Но в компоновке надо разбираться, потому что она открывает очень интересные возможности.

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

 

Как избежать вывода отчета «кодом»

Начнем с первого вопроса – как избежать того, чтобы выводить отчет «кодом», как сделать его на компоновке, не прибегая к сложным запросам.

 

Вывод для проекта пройденных и предстоящих контрольных точек

Приведу пример из личного опыта. В нашей компании отдел разработки автоматизирован на системе 1С:СППР – это система фактического учета задач. Каждая задача делится на контрольные точки, и разработчик при ее выполнении отмечает, что контрольная точка пройдена.

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

Когда я отдал отчет на разработку, разработчик ответил мне, что на это нужно минимум полдня работы. Я очень удивился, потому что, на мой взгляд, это делается за 10-15, может быть, 20 минут. Начал разбираться.

Оказалось, что разработчик хотел в процедуре «ПриКомпоновкеРезультата» составить таблицу значений с этапами, обработать ее в цикле (для определения того, пройден этап или еще нет), а в одной из колонок будет в виде текста скомпонованы нужные мне этапы. Результат в свою очередь подать на вход компоновки с помощью набора данных вида «Набор-объект».

 

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

На самом деле, эта задача очень просто решается с помощью компоновки данных. Для ее решения нужно всего две строчки кода.

  • Готовим данные путем объединения запросов – выбираем все необходимые контрольные точки и технические проекты.

 

И с помощью функций «СоединитьСтроки» и «ТаблицаЗначений» выводим пройденные и предстоящие этапы в качестве отдельных полей-ресурсов.

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

Что делает функция «ТаблицаЗначений»? Эта функция по детальным записям собирает таблицу значений, которую можно подать на вход функции «СоединитьСтроки». Таким образом, получается нужная строка с переносами.

 

ABC-анализ разработчиков в разрезе ошибок

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

Что это значит? Берем разработчиков, упорядочиваем по количеству ошибок. Первые 20% этого списка – хорошие разработчики, «косячат» мало., следующие 30% – середнячки, и оставшиеся 50% – самые «косячники».

На компоновке эта задача решается очень просто – за пять или семь минут. Хотя, казалось бы – надо упорядочить таблицу, как-то посчитать эти классы, где-то их зафиксировать... На самом деле, ничего этого не надо.

Первый вариант

Мы прямо в ресурсе вызываем функцию общего модуля, которой на вход подаем результат встроенной в СКД функции «ГрупповаяОбработка».

Что делает функция «ГрупповаяОбработка»? Она возвращает все значения группировок в виде таблицы значений. Таким образом, при вызове функции общего модуля можно получить доступ к соседним строкам, чтобы определить класс ABC на основании количества ошибок.

Это первый путь, он длинный. Есть путь еще короче.

 

Второй вариант

В компоновке уже есть встроенная функция «КлассификацияABC», которая позволяет рассчитать класс на основе переданных параметров.

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

 

Другие функции СКД

На примере функций «ТаблицаЗначений» и «ГрупповаяОбработка» уже можно решить много задач, которые на запросах решаются довольно сложно.

Но кроме этого в компоновке есть еще очень много функций на любой специфический вкус – даже встроенные функции для статистического анализа.

 

Как эффективно применить СКД в коде

Почему-то я редко встречаю применение СКД вне отчетов, хотя этот инструмент очень интересный и мощный и позволяет сэкономить строки кода.

Упрощение применения СКД в коде

На слайде показан пример, который я взял из «Яндекса», написав запрос: «Как вывести результат компоновки в таблицу значений». Где здесь оптимизация? Ведь нужно написать кучу кода. Как с помощью этого можно что-то оптимизировать?

Ответ очень простой – используйте свои библиотеки.

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

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

 

Особенности использования СКД в коде

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

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

На слайде приведен пример, где для каждой номенклатуры в цикле создается компоновщик настроек, для него устанавливается параметр «Номенклатура», и выгружается результат.

Если посмотреть замер производительности, мы увидим, что 90% времени уходит на формирование макета компоновки. Что это такое?

 

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

Оптимизируется очень просто. Создание макета можно вынести за пределы цикла. Сам макет можно закешировать – он сериализуется. Можно положить его в регистр сведений в хранилище и оттуда при необходимости переиспользовать. А параметры можно устанавливать уже не в компоновщик настроек, а в макет компоновки данных – от этого результат не поменяется.

Таким образом, мы увидим привычную нам картину, когда основное время уходит на чтение данных и на работу с базой.

 

Советы по разработке собственных фреймворков

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

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

 

Примеры упрощения популярных задач

Еще несколько примеров популярных задач, с которыми, так или иначе, сталкивается большинство разработчиков.

 

Накопительный итог

Первая задача – это накопительный итог. Я думаю, каждый сталкивался с ситуацией, когда нужно посчитать значение параметра накопительным итогом. Например, когда в первом периоде у нас было затрачено 10 человеко-часов и во втором периоде – 10 человеко-часов. И при выводе значения трудозатрат для второго периода нам нужно показывать, сколько всего было потрачено времени.

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

ГДЕ ТехПроект = ТехПроект И Период >= Период

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

В компоновке эта задача решается элементарно – с помощью функции «ВычислитьВыражение»:

ВычислитьВыражение("Сумма(Трудозатраты)", , , "Первая", "Текущая", , , )

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

 

Предлагаю сравнить время выполнения запроса и компоновки. Параметры тестового стенда приведены на слайде – это два слабеньких сервера, на одном из них 1С-сервер, на втором SQL-сервер.

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

  • первый тест – это месячный объем;
  • второй тест – это двухмесячный объем и т.д.

Каждый тест проводился по 10 тыс. раз. Результирующее время было усреднено.

На графике видно, что разницы между СКД и запросами практически нет. А если нет разницы, зачем писать сложные запросы, когда можно решить задачу с помощью компоновки всего в одну строчку.

 

Курсы валют на конец месяца

Следующая задача – это получение курсов валют на конец периода, т.е. поиск ближайшего значения.

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

На компоновке эта задача решается очень просто. Мы делаем два набора.

  • В первом производим получение периодов;
  • Во втором – делаем запрос среза последних;
  • Для этих двух наборов делаем соединение с параметром «Период», используя его в качестве параметра виртуальной таблицы для второго запроса.

В результате, на каждую строчку таблицы периодов будет выполнен запрос со срезом последних. Фактически, это получается запрос в цикле, причем, без кода. Мы не пишем цикл, не заполняем таблицу. Просто делаем два «Набора-запроса» и соединение между ними с передачей параметров – ничего сложного.

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

Другая интересная особенность компоновки состоит в том, что при соединении наборов данных есть возможность использования списка параметров. Это – очень интересный флажок. Если вы его ставите, то значения выражений источников передаются в подчиненный набор в виде списка значений по 1000 записей.

Это – очень интересная возможность. Если у вас в компоновке используется несколько соединений, с помощью списка значений можно ограничить выборку из подчиненного набора.

Применение СКД позволяет сэкономить множество строчек кода:

  • «ВычислитьВыражение» упрощает расчет накопительного итога;
  • Очень удобно использовать подзапросы;
  • Используя свои библиотеки, мы намного удобнее работаем с компоновкой, чем, если бы работали напрямую с этими объектами.

 

Как искать ошибки в СКД?

Итак, мы научились использовать функции в компоновке, но что-то пошло не так. Как искать в компоновке ошибки?

Часто бывает, что сообщение с информацией, которое выдает компоновка, не информативно, и непонятно, что система от разработчика хочет.

 

Рассмотрим простой пример. Допустим, есть запрос, который из справочника технических проектов выбирает проекты и их заказчиков. Запрос простой, всего три строчки.

 

 

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

Давайте посмотрим, что получается в макете компоновки.

Как я уже упоминал, макет компоновки – это наложение настроек на схему компоновки. Обратите внимание, что компоновка из нашего простого запроса в макете построила целых три набора – она сама добавила два дополнительных набора для иерархического отбора.

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

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

 

Заключение

Мы поговорили о том, как:

  • Вывести отчет СКД несмотря на сложные потребности
  • Вместо кода использовать функции СКД
  • Применять СКД не только для отчетов
  • Решать некоторые из популярных задач с помощью СКД
  • Искать ошибки в СКД

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

Изучайте СКД – это поможет вам сделать свой код совершеннее!

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY.

Приглашаем вас на новую конференцию INFOSTART EVENT 2019 INCEPTION.

376

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Dzenn 345 03.09.18 09:44 Сейчас в теме
Что один будет делать 20 минут, другой будет делать три дня, и это нормально.
IvanGorbunov; IvanovAV; jaroslav.h; milov.aleksey; user621724_Dimav1979; alex-l19041; kadild; portwein; ivanov660; +9 Ответить
2. karpik666 2717 03.09.18 10:50 Сейчас в теме
Супер, обязательно схожу на выступление в этом году.
SergeyN; kadild; +2 Ответить
3. bulpi 157 03.09.18 11:35 Сейчас в теме
Плохо, что нет толковых книг с примерами по этим вопросам. Или я их не знаю.
IvanovAV; eeeio; kadild; +3 Ответить
4. qwinter 605 03.09.18 11:43 Сейчас в теме
5. dreamcreal 04.09.18 01:04 Сейчас в теме
6. HAMMER_59 186 04.09.18 07:45 Сейчас в теме
"Вот, всего две строчки кода!"
На днях писал обработку заполнения для документа "Бухгалтерская операция", для различных конфигураций, в т.ч. для КА 1, и БП 2, в которых обработки заполнения не поддерживаются. Пришлось искать альтернативные варианты, сделал через внешнюю печатную форму.
С заполнением трудностей не возникло, а вот как обновить данные после заполнения на форме. Всего три строчки кода :), но именно на эти три строчки кода ушло больше всего времени.
7. SergeyN 625 04.09.18 09:26 Сейчас в теме
(6)
С заполнением трудностей не возникло, а вот как обновить данные после заполнения на форме. Всего три строчки кода :), но именно на эти три строчки кода ушло больше всего времени.


Напоминает старый анекдот про "1$ за удар, 999$ за то, что знаю куда ударить". Для этого мы здесь и делимся знаниями, что бы экономить время на "на три строчки кода" ))
OlegTor; milov.aleksey; +2 Ответить
20. Lapitskiy 902 03.10.18 23:08 Сейчас в теме
8. Pwnish3r 05.09.18 13:33 Сейчас в теме
В результате, на каждую строчку таблицы периодов будет выполнен запрос со срезом последних. Фактически, это получается запрос в цикле, причем, без кода. Мы не пишем цикл, не заполняем таблицу. Просто делаем два «Набора-запроса» и соединение между ними с передачей параметров – ничего сложного.

Эту же задачу можно решить в 1 корреляционный запрос.
9. SergeyN 625 05.09.18 13:57 Сейчас в теме
(8)
ожно решить в 1 корреляционный



Можно. Сравнительные замеры корреляционного запроса делали? По моему опыту для больших таблиц - намного медленнее, чем приведенные примеры.
12. s_vidyakin 05.09.18 18:38 Сейчас в теме
(9) Разве корреляционные запросы поддерживаются 1С ??
13. SergeyN 625 05.09.18 21:54 Сейчас в теме
(12) Да. Такой вариант вполне рабочий:


ВЫБРАТЬ
	РеализацияТоваровУслуг.Ссылка КАК Ссылка,
	РеализацияТоваровУслуг.СуммаДокумента / КурсыВалют.Курс КАК СуммаДокумента
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
		ПО (КурсыВалют.Валюта = &ВалютаОценки)
			И (КурсыВалют.Период В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					Фильтр.Период
				ИЗ
					РегистрСведений.КурсыВалют КАК Фильтр
				ГДЕ
					Фильтр.Период <= РеализацияТоваровУслуг.Дата
				УПОРЯДОЧИТЬ ПО
					Фильтр.Период УБЫВ))
Показать



В условии отбор по таблице из вышстоящего запроса.
15. kalyaka 511 03.10.18 11:26 Сейчас в теме
(12) поддерживаются только для операции В, вот цитата из справки:
Заметим, что из запроса операции В возможно обращение к полям таблиц, которые встречались во внешнем запросе до появления операции
10. Бубузяка 62 05.09.18 14:46 Сейчас в теме
Очень позитивная статья. Спасибо.
11. Terve!R 05.09.18 16:54 Сейчас в теме
Спасибо, интересно!
Только фреймворков для скачивания не хватает.
Все свелось к "посмотрите как круто я могу". А кто сможет это повторить, кроме Вас?)
Arxxximed; Дмитрий74Чел; echo77; jaroslav.h; +4 1 Ответить
14. SergeyN 625 05.09.18 21:57 Сейчас в теме
(11) см модули

ФинансоваяОтчетностьСервер

КомпоновкаДанныхСервер


в типовых УТ11, КА2, ЕРП2

Начать можно с адаптации под ваши задачи функций из этих модулей.
16. nytlenc 03.10.18 16:01 Сейчас в теме
17. echo77 1094 03.10.18 19:13 Сейчас в теме
(16) Добавьте в мемориз, читайте по частям. Я тоже не осилил с первого раза :-)
18. echo77 1094 03.10.18 19:17 Сейчас в теме
(0) Замеры Подзапросов в СКД и запросов в цикле показали почти одинаковые результаты - не мудрено, и тут и там по сути запрос в цикле.
Вот эта (https://infostart.ru/public/77568/) статья хорошая - объясняется как получить срез на каждую дату в запросе. Кстати, ее писал владелец ресурса http://1cskd.ru/. В итоге, я делаю срезы на каждую дату в запросе и научил всех своих коллег делать так же.
Знать возможности СКД - это очень хорошо, но не обязательно их все применять.
Посмотрите мои статьи по СКД тоже.
Arxxximed; +1 Ответить
19. Lapitskiy 902 03.10.18 23:07 Сейчас в теме
Отличная статья с примерами. Годится как пособие по СКД.
Есть одно "но" - автор грешит упрощениями типа "5 минут". Видимо работы с крупными компаниями или проектами/конфигурациями нет или мало.
Сейчас чтобы понять, "а что там в УТ 11" :) это надо полдня сидеть над кодом, а потом на всякий случай отдать на тестирование.
Еще момент - а процесс обсуждения и ознакомления разработчика с ТЗ - почему его не включаете? Есть такие "спецы" по объяснению ТЗ - чтобы их понять, потребуется также полдня.
bocharovki; Daynestro07; Atilla9999; +3 Ответить
21. fly_men 05.10.18 10:48 Сейчас в теме
Спасибо за опыт, одной граблей меньше.
22. unichkin 1199 07.10.18 22:51 Сейчас в теме
Обычная история.. Все это зависит от опыта программиста, и особенно - от его желания "сделать лучше". Далеко не каждый относится к задачам как к экзамену своих способностей, где нужно подумать \ решить наиболее оптимально.. Совсем недавно переделывал за одним товарищем - то, что он писал три дня (и не работало) - я налабал за ~5 часов, и взлетело. Все дело в опыте, и желании качественно решать задачи.
В такой статье неплохо бы упомянуть о консоли СКД из инструментов разработчика - где можно быстро и удобно разработать запрос и схемы отчета. Главное - возможность "на лету" видеть запрос, который генерирует СКД. У меня уже сложился некий тех. процесс - если нужен отчет на СКД, схему я разрабатываю именно там, уже потом добавляю ее в отчет, и при необходимости рисую формы и прочее.
23. ids79 4094 25.06.19 21:41 Сейчас в теме
Первую задачу можно еще решить использую функцию "ВычислитьВыражениеСГруппировкойТаблицаЗначений". Результат аналогичный получится.
24. strek_ivan 61 30.08.19 15:35 Сейчас в теме
И ведь всё актуально и по сей день!
25. vpaoli 28 02.09.19 18:00 Сейчас в теме
картинки мелкие и не читаются, жаль
26. seka09 4 15.10.19 14:09 Сейчас в теме
То что выполнялось у меня на скд 15 мин, запросом пару часов выполнялось. Я не согласен что разницы нет выполнения запроса или скд. Разница очень большая. Для больших объемов данных скд как раз и необходимо.
Оставьте свое сообщение

См. также

Немного про СКД. Характеристики и проверка пустого отчета 70

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пример использования характеристик в СКД и программная работа с ними. А также описание проверки результата отчета на заполненность.

10.10.2019    2237    YPermitin    7       

Полезняшки по СКД и построителям. Просто код 39

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Универсальные функции

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    2348    Yashazz    39       

Две схемы СКД в одном отчете с пользовательскими параметрами 15

Статья Программист Нет файла v8::СКД Россия Бесплатно (free) Практика программирования

Простая реализация разных по типу отчетов в одном. Применение нескольких схем компоновки с корректной передачей пользовательских параметров.

10.10.2019    1253    evgeni-red    6       

Три способа создания одного отчета на СКД 75

Статья Программист Нет файла v8 v8::СКД ERP2 УТ11 КА2 Бесплатно (free) Практика программирования

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

08.10.2019    3418    ids79    19       

СКД. Отчеты с картинками 176

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    4549    YPermitin    24       

СКД не только для отчетов 139

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

18.09.2019    6849    YPermitin    31       

Агрегатные функции СКД, о которых мало кто знает 316

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    9920    ids79    42       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 241

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    10310    ids79    24       

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 126

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    9219    ids79    6       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 134

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования Разработка

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    8649    ids79    24       

Пользовательские настройки системы компоновки данных 85

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

Работа с отчетами в пользовательском режиме, формы отчетов. Понятие пользовательских настроек в отчетах на СКД. Определение состава пользовательских настроек для разделов в целом и для отдельных элементов, для всего отчета и для отдельных группировок. Видимость функциональных опций в отчетах на СКД.

09.07.2019    6173    ids79    0       

"Меньше копипаста!", или как Вася универсальную процедуру писал 170

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    6189    SeiOkami    48       

Работа с настройками системы компоновки данных 98

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

02.07.2019    9433    ids79    8       

Создание отчетов с помощью СКД - основные понятия и элементы 192

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    17345    ids79    16       

Не провоцируйте СКД, или пример "как не надо" 50

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Пример того, что не нужно использовать в запросах, чтобы не провоцировать СКД.

10.06.2019    7253    SeiOkami    90       

Еще один способ нестандартной расшифровки отчета. Без использования обработчиков формы. Для ленивых 90

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

16.05.2019    5610    tusv    55       

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 91

Статья Программист Нет файла v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования Работа с интерфейсом Разработка

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

14.05.2019    7342    Viktor_Ermakov    6       

Разворачивание таблицы свойств и значений по колонкам через СКД 18

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

СКД! Юниоры 1С начинают паниковать, когда слышат эту аббревиатуру. Хороший пример, упрощающий жизнь начинающему разработчику, представлен ниже.

12.05.2019    3558    Eret1k    0       

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    4782    m-rv    2       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    7314    m-rv    16       

"Склеивание" отчетов на СКД 23

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования Разработка

Методика программного объединения данных нескольких отчетов в итоговый сводный. По ссылке опубликован пример на реальных данных и код отчета: https://infostart.ru/public/1017891/

10.03.2019    4532    bivmail    2       

Добавление отчетов в типовые конфигурации 1С 201

Статья Программист Нет файла v8::УФ v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

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

07.03.2019    23110    ids79    32       

Программная обработка данных отчета, полученных с помощью запроса, с выводом измененных данных в СКД 29

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Разработка

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

17.02.2019    4118    srub    10       

Информирование пользователя. Работа с объектом «СообщениеПользователю» 249

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Различные варианты и нюансы использования объекта СообщениеПользователю и другие способы информирования пользователя: без привязки к какой-либо форме и с выводом сообщения в отдельном окне.

15.02.2019    16891    ids79    34       

Вывод результата компоновки в таблицу и дерево значений 29

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

14.02.2019    4005    kasper076    5       

Ещё раз о суммировании группировок в СКД 59

Статья Программист Нет файла v8 v8::СКД 1cv8.cf УУ Производство готовой продукции (работ, услуг) Бесплатно (free) Практика программирования Разработка

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

11.02.2019    6661    Dioneo    17       

Еще раз о расшифровке для СКД 22

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования

Программное управление расшифровкой для отчета, сформированного с помощью Системы Компоновки Данных.

27.12.2018    4975    scientes    2       

Заголовок с параметром в отчете СКД 30

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования

Статья, как сделать заголовок с параметром в отчете СКД.

19.12.2018    5412    user913680    16       

Новый подход к обмену данными EnterpriseData 203

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

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

14.12.2018    21354    ids79    72       

Установка собственных значений полей при программном выводе отчета СКД по имени поля (по принципу "как в макете") 15

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования

При программном выводе отчета на СКД возникает задача заполнить поля своими значениями. Но при поэлементном выводе отчета параметры "обезличены" как П1, П2, П3, ... Как узнать в какое "П" содержит нужное поле и куда устанавливать значение? Статья поможет программистам начинающим освоение СКД и перешедшим на СКД с "макета" ответить на эти вопросы на примере готового решения.

23.11.2018    4950    lmnlmn    0       

Дополнительные реквизиты в типовом отчете и их отсутствие 18

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пара Лайфхаков, случайно найденных, когда было лень запускать конфигуратор. Отбор при отсутствии дополнительного реквизита.

18.11.2018    4695    dyuha    0       

Программное заполнение пользовательских параметров и отборов СКД 135

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

13.11.2018    19551    Unk92    18       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 126

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    20789    ids79    40       

Перевод конфигурации на 8.3.13 17

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования

Опыт решения проблем. 1. Проблема с СКД преобразованием запроса при отключении режима совместимости:

06.11.2018    5507    serferian    26       

Вспомогательные инструкции в коде 1С 104

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    20407    tormozit    100       

Как легко в СКД сделать переключатель: рубли, тыс. руб., млн. руб. 72

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

07.08.2018    8328    SayDimas    15       

Повышаем эффективность разработки правил обмена 123

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    19276    olegtymko    47       

Как сделать запрос на изменение данных 75

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    21140    m-rv    21       

О важности псевдонимов полей во временных таблицах и отборах на СКД для производительности 26

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования

Рассмотрена важность правильного указания псевдонимов полей временных таблиц запроса СКД, на которые могут накладываться отборы

29.05.2018    5816    tata_1211    17       

Строим графы средствами 1С (без GraphViz) 42

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    16934    slozhenikin_com    19       

Расчет с помощью СКД остатков регистра по реквизиту регистратора 16

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

18.05.2018    4490    bomber99544    12