Тестовая задача: таблица умножения на СКД

14.06.22

Разработка - СКД

Альтернативное решение предложенной задачи.

Скачать файлы

Наименование Файл Версия Размер
Тестовая задача: таблица умножения на СКД:
.erf 9,30Kb
94
.erf 9,30Kb 94 Скачать бесплатно

Что это такое

В этой публикации //infostart.ru/public/709735/ автором была предложена интересная тестовая задача и её реализация. Задача такая – разработать отчет на СКД, в котором вывести таблицу умножения. Задача действительно тестовая, я бы даже сказал – фановая, так как в работе мы не каждый день рисуем таблицу умножения, но несколько интересных приемов придется применить при её решении.

Суть решения

Автор в своей публикации использовал в СКД два набора данных Объект, которые используют для заполнения таблицу значений – таблица заполняется алгоритмически простым циклом от A до B.

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

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

 
 Обработка расшифровки

Тестировалось на платформе 8.3.16.1224.

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 руб.

02.09.2020    102169    565    385    

612

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

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    2217    ProgrammingStore    13    

49

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    4171    10    kalyaka    4    

82

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    3267    KVIKS    15    

76

Гибкие отборы через СКД на управляемых формах. Демо-обработка

СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

07.06.2023    4640    26    quazare    7    

46

Вывод элементов иерархии верхнего уровня на СКД

СКД Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

06.06.2023    4283    echo77    6    

72

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

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

07.02.2023    5591    quazare    8    

38
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lunjio 65 14.06.22 13:16 Сейчас в теме
Ildarovich слезу пустил от грусти, насколько сейчас "сложные" задачи решают программисты...
serverstar; sergelemon; papami; mmoozzgg; flanchev; akR00b; tindir; Lancelot-2M; maksa2005; ubnkfl; ardn; json; ZOMI; morin; Evg-Lylyk; +15 Ответить
5. akR00b 22 15.06.22 07:49 Сейчас в теме
(1) в голос)
serverstar; +1 Ответить
8. serverstar 43 23.06.22 16:08 Сейчас в теме
(1) улыбнул ваш коммент. согласна с вами. но иногда нужны простые маленькие задачки для быстрой практики )
2. пользователь 14.06.22 15:50
Сообщение было скрыто модератором.
...
3. rusmil 262 14.06.22 19:24 Сейчас в теме
Спасибо за видео и подробное объяснение, просто, четко и по делу. Выкладывайте еще видео по СКД!
4. пользователь 14.06.22 20:30
Сообщение было скрыто модератором.
...
6. scientes 288 15.06.22 15:43 Сейчас в теме
Текст запроса, для генерации набора чисел, вместе с запросом на расчет произведения.
Функция ПолучитьЗапросомНаборЧисел(Знач Основание=4,Знач Степень=2)
	
	
	Начало="ВЫБРАТЬ 0 КАК Цифра 
	        |ПОМЕСТИТЬ мБаза";
	для н=1 по Основание-1 цикл
	 Начало=Начало+"
	 |
	 |ОБЪЕДИНИТЬ ВСЕ
     |
     |ВЫБРАТЬ
     |	"+формат(н,"ЧГ=0")
	конеццикла;
	Начало=Начало+"
     |;
     |
     |////////////////////////////////////////////////////////////­////////////////////
	 |";

	
	Шаблон="ВЫБРАТЬ
	      |	мБазаЛев.Цифра * &Основание + мБазаПрав.Цифра КАК Цифра
	      |ПОМЕСТИТЬ мНабор
	      |ИЗ
	      |	мБаза КАК мБазаЛев,
	      |	мБаза КАК мБазаПрав
	      |;
	      |
	      |////////////////////////////////////////////////////////////­////////////////////
	      |УНИЧТОЖИТЬ мБаза
	      |;
	      |
	      |////////////////////////////////////////////////////////////­////////////////////
	      |ВЫБРАТЬ
	      |	мНабор.Цифра
	      |ПОМЕСТИТЬ мБаза
	      |ИЗ
	      |	мНабор КАК мНабор
	      |;
	      |
	      |////////////////////////////////////////////////////////////­////////////////////
	      |УНИЧТОЖИТЬ мНабор
		  |;
		  |
	      |////////////////////////////////////////////////////////////­////////////////////
		  |";
	//получили  исходный набор
	
	Текст="";
	для н=1 по 2 цикл
		Текст=Текст+СтрЗаменить(Шаблон,"&Основание",Формат(Основание,"ЧГ=0"));
		Основание=Основание*Основание;
	конеццикла;	
	
	
	Текст=Начало+Текст+"ВЫБРАТЬ
	                   |	мБаза.Цифра
	                   |ПОМЕСТИТЬ мВыборка
	                   |ИЗ
	                   |	мБаза КАК мБаза
	                   |ГДЕ
	                   |	мБаза.Цифра >= &A И мБаза.Цифра <= &B
	                   |;
	                   |
	                   |////////////////////////////////////////////////////////////­////////////////////
	                   |ВЫБРАТЬ
	                   |	мВыборка1.Цифра КАК Л,
	                   |	мВыборка.Цифра КАК П,
	                   |	мВыборка1.Цифра * мВыборка.Цифра КАК Результат
	                   |ИЗ
	                   |	мВыборка КАК мВыборка1,
	                   |	мВыборка КАК мВыборка";

	
	 возврат Текст;
конецФункции	
Показать


Данный запрос можно подсунуть схеме компоновки данных в процедуре ПриКомпоновкеРезультата
7. Johnson1987 26 16.06.22 17:45 Сейчас в теме
Автор настаивает, что это является решением задачи из моей публикации (https://infostart.ru/public/709735/)

Мой комментарий касается опубликованного в "решении" видео, в котором автор подробно показывает свой метод решения.
Отчет под постом не смотрел.
Итак, по тексту запроса СКД:
ВТ "Числа" -Выборка 0-9,
ВТ "Цифры" - Выборка 0-99
ВТ "Данные" - видимо, должна давать диапазон цифр для заголовков строк и колонок, чтобы на пересечении давать произведение.
Но тут ошибка.

Из-за ограничения ВТ "Цифры" разброс между &A и &B может составлять не более 99.
Если поставить &A = 100, &B = 300,
то ВТ "Данные" будет содержать цифры в диапазоне 100 - 199;

Еще вы в своем видео упоминаете "таблицу Пифагора".
Но её диапазон строк/колонок 1-9.
Хотя у вас в таблице "Цифры" уже определен размер максимального разброса между A и B равный 0-99.
В изначальной постановке задачи нет ограничений на диапазон между цифрами A и B. Они просто положительные целые числа.
Оставьте свое сообщение