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

Публикация № 1675646 14.06.22

Приемы и методы разработки - СКД

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

Что это такое

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

Суть решения

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

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

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

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

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

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

Наименование Файл Версия Размер
Тестовая задача: таблица умножения на СКД:

.erf 9,30Kb
64
.erf 9,30Kb 64 Скачать бесплатно

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lunjio 64 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 21 15.06.22 07:49 Сейчас в теме
8. serverstar 31 23.06.22 16:08 Сейчас в теме
(1) улыбнул ваш коммент. согласна с вами. но иногда нужны простые маленькие задачки для быстрой практики )
2. пользователь 14.06.22 15:50
Сообщение было скрыто модератором.
...
3. rusmil 250 14.06.22 19:24 Сейчас в теме
Спасибо за видео и подробное объяснение, просто, четко и по делу. Выкладывайте еще видео по СКД!
4. пользователь 14.06.22 20:30
Сообщение было скрыто модератором.
...
6. scientes 279 15.06.22 15:43 Сейчас в теме
Текст запроса, для генерации набора чисел, вместе с запросом на расчет произведения.
Функция ПолучитьЗапросомНаборЧисел(Знач Основание=4,Знач Степень=2)
	
	
	Начало="ВЫБРАТЬ 0 КАК Цифра 
	        |ПОМЕСТИТЬ мБаза";
	для н=1 по Основание-1 цикл
	 Начало=Начало+"
	 |
	 |ОБЪЕДИНИТЬ ВСЕ
     |
     |ВЫБРАТЬ
     |	"+формат(н,"ЧГ=0")
	конеццикла;
	Начало=Начало+"
     |;
     |
     |////////////////////////////////////////////////////////////­////////////////////
	 |";

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

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


Данный запрос можно подсунуть схеме компоновки данных в процедуре ПриКомпоновкеРезультата
7. Johnson1987 22 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. Они просто положительные целые числа.
Оставьте свое сообщение

См. также

Таблица умножения, деления на СКД, управляемые формы (пример тестового задания)

Подготовка к аттестации СКД v8 Абонемент ($m)

Пример тестового задания и его реализации. Протестировано на версии платформы 8.3.18.1289.

1 стартмани

30.05.2022    1494    5    Johnson1987    13    

Вывод полей в нужной колонке в Системе Компоновки Данных

СКД v8 1cv8.cf Россия Бесплатно (free)

Примеры к статье "Вывод полей в нужной колонке в Системе Компоновки Данных"

01.07.2009    20694    918    IronDemon    12