Проект "Доминикана", решение первой задачи

15.05.13

Разработка - Подготовка к аттестации

Многим было интересна первая задача, которую отправили разработчикам для тестирования на проект Доминикана. В этой публикации я покажу вам само задание, а также решение. Сразу скажу, что решение не идеальное. Проект Доминикана поставил мне оценку - 3 балла. Если будут предложения об ускорении, то с радостью их рассмотрю.

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

Наименование Файл Версия Размер
Результат.dt
.dt 125,71Kb
66
.dt 125,71Kb 66 Скачать

Добрый день Коллеги.

Многим было интересна первая задача, которую отправили разработчикам для тестирования на проект Доминикана. В этой публикации я покажу вам самое задание, а так же решение. Сразу скажу, что решение не идеальное. Проект Доминикана поставил мне оценку - 3 бала. Если будут предложения об ускорении, то с радостью их рассмотрю.

Итак Задача:

Есть регистр сведений «Остановки по маршруту» в котором хранится информация о расстоянии от начальной до конечной остановки.

Регистр сведений

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

Отчет представляет собой прямоугольный треугольник, на гипотенузе названия остановок по порядку. На пересечении горизонтальной и вертикальной линии от двух остановок заполнено значение, равное расстоянию между этими остановками. Например, расстояние между «Борок» и «Мологино» 6,3 км (Рисунок №2).

Важно: Отчет должен быть разработан без программного кода при помощи набора данных – Запрос. Текст запроса должен быть один.

Отчет Таблица расстояний

Рис. №2 Отчет «Таблица расстояний».

 

Внимание, перед тем как читать дальше я рекомендую попробовать самостоятельно решить данную задачу.

Скачайте DT файл, создайте новый отчет, в котором постарайтесь решить самостоятельно задачу. Обещаю решение не оставит вас равнодушными.

 

 

Решение задачи:

Создаем текст запроса:

ВЫБРАТЬ
ОстановкиПоМаршруту.Остановка КАК Остановка,
ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута КАК РасстояниеОтНачалаМаршрута
ПОМЕСТИТЬ ВТМаршрут
{ВЫБРАТЬ
Остановка.*,
РасстояниеОтНачалаМаршрута}
ИЗ
РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту
ГДЕ
ОстановкиПоМаршруту.Маршрут = &Маршрут
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстановкиПоМаршруту.Остановка КАК Остановка,
СУММА(1) КАК ПорядковыйНомер
ПОМЕСТИТЬ ВТПорядковыеНомера
ИЗ
РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту
ЛЕВОЕ СОЕДИНЕНИЕ ВТМаршрут КАК ВТМаршрут
ПО (ВЫБОР
КОГДА ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута >= ВТМаршрут.РасстояниеОтНачалаМаршрута
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ)
ГДЕ
ОстановкиПоМаршруту.Маршрут = &Маршрут

СГРУППИРОВАТЬ ПО
ОстановкиПоМаршруту.Остановка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТПорядковыеНомераДополнительный.Остановка КАК ОстановкаОтправление,
ВТПорядковыеНомераОсновной.Остановка КАК ОстановкаПрибытие
ПОМЕСТИТЬ ВТВозможныеМаршруты
ИЗ
ВТПорядковыеНомера КАК ВТПорядковыеНомераОсновной
ЛЕВОЕ СОЕДИНЕНИЕ ВТПорядковыеНомера КАК ВТПорядковыеНомераДополнительный
ПО ВТПорядковыеНомераОсновной.ПорядковыйНомер > ВТПорядковыеНомераДополнительный.ПорядковыйНомер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТВозможныеМаршруты.ОстановкаОтправление,
ВТВозможныеМаршруты.ОстановкаПрибытие,
ВТМаршрутТочкаНачала.РасстояниеОтНачалаМаршрута КАК РасстояниеОтНачалаМаршрутаОтправление,
ВТМаршрутТочкаОкончания.РасстояниеОтНачалаМаршрута КАК РасстояниеОтНачалаМаршрутаПрибытие
ПОМЕСТИТЬ ВТРасстояния
ИЗ
ВТВозможныеМаршруты КАК ВТВозможныеМаршруты
ЛЕВОЕ СОЕДИНЕНИЕ ВТМаршрут КАК ВТМаршрутТочкаНачала
ПО ВТВозможныеМаршруты.ОстановкаОтправление = ВТМаршрутТочкаНачала.Остановка
ЛЕВОЕ СОЕДИНЕНИЕ ВТМаршрут КАК ВТМаршрутТочкаОкончания
ПО ВТВозможныеМаршруты.ОстановкаПрибытие = ВТМаршрутТочкаОкончания.Остановка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
ВТПорядковыеНомера.ПорядковыйНомер КАК ПорядковыйНомер,
ВТПорядковыеНомера.Остановка
ПОМЕСТИТЬ ВТПерваяОстановка
ИЗ
ВТПорядковыеНомера КАК ВТПорядковыеНомера

УПОРЯДОЧИТЬ ПО
ПорядковыйНомер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
ВТПорядковыеНомера.ПорядковыйНомер КАК ПорядковыйНомер,
ВТПорядковыеНомера.Остановка
ПОМЕСТИТЬ ВТПоследняяОстановка
ИЗ
ВТПорядковыеНомера КАК ВТПорядковыеНомера

УПОРЯДОЧИТЬ ПО
ПорядковыйНомер УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТРасстояния.ОстановкаОтправление КАК ОстановкаОтправление,
ВТРасстояния.ОстановкаПрибытие КАК ОстановкаПрибытие,
ЕСТЬNULL(ВТРасстояния.РасстояниеОтНачалаМаршрутаПрибытие, 0) - ЕСТЬNULL(ВТРасстояния.РасстояниеОтНачалаМаршрутаОтправление, 0) КАК Расстояние,
ПорядковыйНомерОстОтправление.ПорядковыйНомер КАК ПорядковыйНомерОтправление,
ПорядковыйНомерОстПрибытие.ПорядковыйНомер КАК ПорядковыйНомерПрибытие
{ВЫБРАТЬ
ОстановкаОтправление.*,
ОстановкаПрибытие.*,
Расстояние,
ПорядковыйНомерОтправление,
ПорядковыйНомерПрибытие}
ИЗ
ВТРасстояния КАК ВТРасстояния
ЛЕВОЕ СОЕДИНЕНИЕ ВТПорядковыеНомера КАК ПорядковыйНомерОстОтправление
ПО ВТРасстояния.ОстановкаОтправление = ПорядковыйНомерОстОтправление.Остановка
ЛЕВОЕ СОЕДИНЕНИЕ ВТПорядковыеНомера КАК ПорядковыйНомерОстПрибытие
ПО ВТРасстояния.ОстановкаПрибытие = ПорядковыйНомерОстПрибытие.Остановка
ГДЕ
НЕ ВТРасстояния.ОстановкаОтправление ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ВТПерваяОстановка.Остановка,
ВТПерваяОстановка.Остановка,
NULL,
ВТПерваяОстановка.ПорядковыйНомер,
ВТПерваяОстановка.ПорядковыйНомер
ИЗ
ВТПерваяОстановка КАК ВТПерваяОстановка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ВТПоследняяОстановка.Остановка,
ВТПоследняяОстановка.Остановка,
NULL,
ВТПоследняяОстановка.ПорядковыйНомер,
ВТПоследняяОстановка.ПорядковыйНомер
ИЗ
ВТПоследняяОстановка КАК ВТПоследняяОстановка

 

Далее переходим к корректировке настроек СКД

На Рис. 3

Рис. 3

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

Делаем упорядочивание представления:

Для реквизита ОстановкаОтправление - ПорядковыйНомерОтправление возр

Для реквизита ОстановкаПрибытие - ПорядковыйНомерПрибытие возр

 

Для реквизита Расстояние делаем набор свойств как на рисунке. Рис. 4.

Рис. 4

А именно Размещение - Обрезать.

И минимальная и максимальная ширина равная - 9.12

 

На этом настройка набора данных завершена

Настройка ресурсов:

Рис. 5

Рис. 5

Создаем ресурс - Расстояние

В выражении пишем:

Выбор Когда Представление(ОстановкаОтправление) = Представление(ОстановкаПрибытие) Тогда Представление(ОстановкаОтправление) Иначе  Сумма(Расстояние) Конец

 Рассчитываем по группировкам ОстановкаОтправление, ОстановкаПрибытие.

Макеты:

Рис. 6

Рис.6,

Рис. 7 

Рис. 7

Пожалуй самое сложное было добиться результата.

Были созданы макет для группировки ОстановкаОтправления

Рис. 8

(Рис.  8)

Были созданы макет для группировки ОстановкаПрибытия (Рис.  9)
В качестве области для вывода были выбраны для Группировки Остановка отправления поле шириной - 1
Для группировки Остановка прибытия - максимально минимальное значение, что-то около 0.03
Если посмотрите внимательно на Рис. 7 почти не видно ячейки R4C1.

Настройка параметров:
Рис. 10
Рис. 10
Параметр уже был получен из запроса, я сделал запрет незаполненных значений и использование - всегда.

Настройки вывода отчета.

На

Рис. 11

Рис. 11

показано, что была использована для представления Таблица

Ресурс - Расстояние

Строки - Остановка прибытия

Колонки - Остановка отправления

 

Настраиваем внешний вид

Рис. 12

Рис. 12,

Рис. 13

Рис. 13

Отключаем вывод итогов

Делаем заголовок- Таблица расстояний

Указываем что надо выводить параметры 

 

Заканчиваем настройку.

Делаем условное оформление.

Рис. 14

Рис. 14

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

И указываем что стиль границы сверху - будет без линии для тех полей, где Расстояние = ""

Рис. 15

Рис. 15

 

Вот собственно и все. В результате у меня получилась:

Рис. 16

Рис. 16

Это мой способ решения. На решение ушло около 3-х часов.

С радостью рассмотрю предложения по упрощению и улучшению данного решения.

См. также

Запросы 1С OnLine. Интерактивная обучающая программа.

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

Интерактивное изучение языка запросов с самого начала: - 50 практических заданий с различным уровнем сложности; - Методические материалы по практике написания запросов; - Описание назначения таблиц и индексов 1С Предприятие 8; - Методика решения реальных задач запросом 1С; - Автоматическая система проверки решений с указанием ошибок; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Подходит для начинающих и действующих разработчиков 1С

1800 руб.

11.02.2014    73728    677    13    

165

Оптимизация запросов 1С - от теории к практике

Подготовка к аттестации Запросы Конфигурации 1cv8 Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1800 руб.

06.07.2015    70733    118    9    

128

Как я готовилась к экзамену на Специалиста по платформе 1С

Подготовка к аттестации Платформа 1С v8.3 Россия Бесплатно (free)

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

14.03.2024    7586    PROSTO-1C    38    

68

Как я стал Экспертом по технологическим вопросам за 3 месяца. Часть 2 (обновлена)

Подготовка к аттестации Бесплатно (free)

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам. Часть 2.

04.02.2024    5387    shuhratsj    16    

70

Как я стал Экспертом по технологическим вопросам за 3 месяца

Подготовка к аттестации Бесплатно (free)

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам за 3 месяца. Часть 1.

29.01.2024    12622    shuhratsj    102    

152

1С: Специалист-консультант ЗУП 8. Решения из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023. Часть 6

Подготовка к аттестации Зарплата Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Часть шестая. Делюсь сквозным решением 15-ти задач из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023.

5 стартмани

01.12.2023    1249    15    Ocherkcons    0    

6

1С: Специалист-консультант ЗУП 8. С чего начать решение билета на экзамене? Актуальность: ноябрь 2023 года

Подготовка к аттестации Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Делюсь наработками из опыта подготовки к экзамену на получение сертификата 1С:Специалист-консультант по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“. Первые минуты на экзамене.

17.11.2023    2136    Ocherkcons    0    

6

Материал для подготовки к экзамену "Специалист по платформе 1С: предприятие 8.3" (2024)

Подготовка к аттестации Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Откройте для себя уникальную возможность — сдачи экзамена «1С: Специалист по платформе 1С: предприятие 8.3» с первого раза! Предлагаемый материал поможет вам при подготовке к экзамену!

10 стартмани

30.10.2023    7330    76    user1948557    20    

41
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. anton.fly7 173 15.05.13 12:17 Сейчас в теме
2. _Ramzes 125 15.05.13 12:30 Сейчас в теме
Спасибо. получилось самостоятельно решить задачу?
3. dmpas 417 15.05.13 13:22 Сейчас в теме
На днях другу помогал решать эту задачку. Как-то у нас гораздо прощё всё это получилось: и запрос без временных таблиц - в одно соединение, и без макетов полей.
4. tango 506 15.05.13 13:23 Сейчас в теме
прочитал, скачал, сходил покурить.
уточняющий вопрос:
Отчет должен быть разработан без программного кода

настройки схемы СКД не считаются программным кодом?
пока потратил на покурить, подумалсо, что текстом запроса можно вытащить саму и только табличку регистра, остальное сделать СКД, нет?
5. _Ramzes 125 15.05.13 13:38 Сейчас в теме
(4) tango, честно, не знаю. Я сделал как мог.
6. tango 506 15.05.13 13:44 Сейчас в теме
эх, пойду еще покурить. давненько не брал я в руки скд :)
7. 0tto 15.05.13 14:51 Сейчас в теме
Имхо, замудрил с решением:
достаточно соединиться с регистром (сделать декартово произведение)
далее рассчитать разность между городами - как разность.
Если разность положительная или равна 0 - оставляем,
отрицательная - зануляем,
если равна 0, и города равны то ставим город
типа такого:

ВЫБРАТЬ
ОстановкиПоМаршруту.Остановка,
ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута
ПОМЕСТИТЬ Т
ИЗ
РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту
ГДЕ
ОстановкиПоМаршруту.Маршрут = &Маршрут
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
Т1.Остановка КАК Остановка1,
Т2.Остановка КАК Остановка2,
ВЫБОР
КОГДА Т1.РасстояниеОтНачалаМаршрута - Т2.РасстояниеОтНачалаМаршрута > 0
ТОГДА Т1.РасстояниеОтНачалаМаршрута - Т2.РасстояниеОтНачалаМаршрута
КОГДА Т1.РасстояниеОтНачалаМаршрута - Т2.РасстояниеОтНачалаМаршрута < 0
ТОГДА 0
КОГДА Т1.РасстояниеОтНачалаМаршрута - Т2.РасстояниеОтНачалаМаршрута = 0
ТОГДА Т1.Остановка
КОНЕЦ КАК Расстояние
ИЗ
Т КАК Т1,
Т КАК Т2
Показать


Ну и в оформлении ставим если "( Расстояние Равно "0" ИЛИ Остановка1 Равно Остановка2 )" то устанавливаем стиль границы + ограничиваем максимальную ширину для всех столбцов, и отсортировать по расстоянию
8. BorisMor 310 15.05.13 17:18 Сейчас в теме
Не стал с макетами париться. Все таки тестовое задание.
Запрос такой:
ВЫБРАТЬ
	Начальная.Маршрут,
	Начальная.Остановка КАК Остановка,
	Конечная.Остановка КАК ДоОстановки,
	Конечная.РасстояниеОтНачалаМаршрута - Начальная.РасстояниеОтНачалаМаршрута КАК Растояние,
	Начальная.РасстояниеОтНачалаМаршрута КАК РастНач,
	Конечная.РасстояниеОтНачалаМаршрута КАК РастКон,
	Конечная.Остановка КАК СтрДоОстановки
ИЗ
	РегистрСведений.ОстановкиПоМаршруту КАК Начальная
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстановкиПоМаршруту КАК Конечная
		ПО (Конечная.РасстояниеОтНачалаМаршрута - Начальная.РасстояниеОтНачалаМаршрута >= 0)

УПОРЯДОЧИТЬ ПО
	РастНач,
	РастКон
Показать

Сам отчет http://yadi.sk/d/4CfzXviH4rXcu
10. tango 506 15.05.13 18:26 Сейчас в теме
(8) BorisMor,
ПО Начальная.РасстояниеОтНачалаМаршрута <= Конечная.Остановка

упс
BorisMor; +1 Ответить
12. BorisMor 310 15.05.13 21:48 Сейчас в теме
20. mixqn 16.05.13 12:33 Сейчас в теме
(8) BorisMor, у меня приблизительно такое же решение. получил за него 4.
21. pahich 723 16.05.13 12:52 Сейчас в теме
(20) mixqn, за что балл снизили?
22. mixqn 16.05.13 13:04 Сейчас в теме
(21) pahich, ну так внешний вид не 1 в 1.
в моем решение правильный по сути только сам запрос (вашу обработку скачал, внешний вид примерно как у меня - табличка, внутри которой треугольник, а надо чистый треугольник получить).
оформление я не сделал. вот собственно за это и минус балл.
25. tango 506 16.05.13 13:31 Сейчас в теме
(22) mixqn, оформление, если рука не набита, сожрет времени больше, чем запрос
27. mixqn 16.05.13 13:34 Сейчас в теме
(25) tango, согласен, я об этом честно написал в письме, приложенном к решению - мол не делал такого, не знаю, как сделать.
(26) tango, ну его не долго добавить :) +2 строки в запросе и поле в форме. в приложенной базе всего 1 маршрут, поэтому сработало так.
9. tango 506 15.05.13 18:25 Сейчас в теме
да, один раз слева все-таки придется
вычисляемыми/пользовательскими полями фигня получается хуже алгоритмической обработки
11. aavolkoff 72 15.05.13 19:41 Сейчас в теме
Зачем здесь вообще соединения? Результат нужный можно получить прямым запросом к регистру. Можно спорить о том - класть ли во временную таблицу результат запроса к регистру или оптимизатор скулевский (файлово-одинэсовский) сам неплохо справится с кэшированными данными из таблицы.
13. pahich 723 15.05.13 23:16 Сейчас в теме
(11) aavolkoff, и как без соединений решить задачу?
15. aavolkoff 72 16.05.13 01:07 Сейчас в теме
(13)(14)
Что будет, если одним запросом получить одни и те-же данные из одной из той-же таблицы (регистра), обратившись к ней 2 раза?
16. pahich 723 16.05.13 08:13 Сейчас в теме
(15) aavolkoff, и что же будет, если к ним обратиться без соединений?
14. _Ramzes 125 15.05.13 23:42 Сейчас в теме
(11) покажите запрос, скорее всего я такого варианта не встречал еще
17. tango 506 16.05.13 10:13 Сейчас в теме
(11) aavolkoff, соединение здесь - самый простой способ решить обратную задачу нарастающего итога
18. aavolkoff 72 16.05.13 10:38 Сейчас в теме
(17)(16)(13)
Чем левое соединение проще декартова произведения? В чем заключается "простота"?
19. 0tto 16.05.13 11:56 Сейчас в теме
У меня такое решение
Прикрепленные файлы:
ТаблицаРасстояний.erf
24. tango 506 16.05.13 13:29 Сейчас в теме
(19) 0tto, хи-хи
Прикрепленные файлы:
28. 0tto 16.05.13 14:56 Сейчас в теме
(24) Параметр нужно задать
Я не знаю на что сдал, но меня пригласили на проект.
Будет он кстати далеко не в Доминикане:) несмотря на название проекта
Прикрепленные файлы:
30. pahich 723 16.05.13 15:39 Сейчас в теме
(28) 0tto, а где будет проходить? в москве? :)
31. 0tto 16.05.13 15:56 Сейчас в теме
(30) pahich, нет в дальнем забугорье :) точное место не пишу, так как если бы организаторы хотели сами написали)
32. tango 506 16.05.13 15:59 Сейчас в теме
(31) 0tto, а личное можно? как решили коллизию с текущей занятостью? вообще, на что жить собираетесь во время проекта?
34. 0tto 16.05.13 16:07 Сейчас в теме
(32) tango, А кто сказал что я согласился? :) Мне только прислали предложение.
А так оплата на проекте достаточно нормальная, я бы очень сильно не потерял.
35. BorisMor 310 16.05.13 16:17 Сейчас в теме
(34) 0tto, да надо соглашаться!
Надо что бы в жизни было что вспомнить)
36. tango 506 16.05.13 16:24 Сейчас в теме
(35) BorisMor, не все воспоминания одинаково приятны
37. BorisMor 310 16.05.13 16:36 Сейчас в теме
(36) tango, если не чума или тайфун то все будет ок.
38. tango 506 16.05.13 16:48 Сейчас в теме
(37) BorisMor, сильно подозреваю, что организаторы отожмут каждую копеечку - не до экзотики будет
так что весь позитив, на который стоит рассчитывать - это сам проект.
но, конечно, интересно
но - со стороны
но интересно
**
эх, вот бы кто-нибудь выклал здесь договор между фейсами :)
39. 0tto 16.05.13 16:57 Сейчас в теме
(38) в отношениях есть оговорка, что организатор вправе снять участника с проекта - если он не справляется с задачами, на этот случай - компенсируется период участия + 1 месяц
40. pahich 723 16.05.13 17:00 Сейчас в теме
(39) 0tto, компенсируется кем?
33. BorisMor 310 16.05.13 16:01 Сейчас в теме
(30) pahich, о.Самуи (Тайланд)
23. mixqn 16.05.13 13:11 Сейчас в теме
P.S. сам запрос без оформления занял у меня примерно 10-15 минут и выглядит он так:
ВЫБРАТЬ
	ОстановкиПоМаршруту.Остановка,
	ОстановкиПоМаршруту1.Остановка КАК Остановка1,
	ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута - ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута КАК Расстояние,
	ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута КАК Порядок
ИЗ
	РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту1
		ПО ОстановкиПоМаршруту.Маршрут = ОстановкиПоМаршруту1.Маршрут
			И ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута <= ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута
Показать


решение, предложенное в статье и правда сильно мудреное, я пока даже не вникал в суть этого огромного запроса...
26. tango 506 16.05.13 13:32 Сейчас в теме
(23) mixqn, а отбор по маршруту?
29. Программист 1С 155 16.05.13 15:21 Сейчас в теме
Если будут предложения об ускорении, то с радостью их рассмотрю
- посмотрите Решение задачи
41. 0tto 16.05.13 17:06 Сейчас в теме
Организаторами конечно :)
42. tango 506 16.05.13 17:30 Сейчас в теме
(41) 0tto, ну то есть это официальный договор или слово джентльмена?
43. tango 506 16.05.13 17:30 Сейчас в теме
и дорога домой - она за чей счет в этом случае?
44. 0tto 16.05.13 23:00 Сейчас в теме
Вы очень мнительно относитесь :).
Орги не скрывают, что вкалывать придется. Условия предложены более чем справедливые.
Я готов вкалывать если проект мне интересен (впрочем если и не очень интересен :)).
Смысла заманить в другую страну и под страхом невыезда - заставить разрабатывать прототип, думаю нет.
Мне например особой разницы за чей счет будет билет в этом случае - нет, более того, считаю, что если я действительно завалю работу - то будет вполне справедливо так сделать. Ну, вдруг захочется остаться потусить недельку в тае и потом уже вернуться :).
47. tango 506 30.05.13 16:16 Сейчас в теме
(44) 0tto, на заре века меня заманили в публичный дом (реально) и что-то пытались выжать по поводу 1с. выходил с милицией (с автоматами).

вот тогда-то у меня в первый раз слизистая и слетела
45. Chif13 1248 30.05.13 13:45 Сейчас в теме
О, тоже решала данную задачку, час убила. Задачка реально интересная. Друг прислал, он участвовал в проекте и прошел конкурс. Решила по другому, запрос попроще был, да и красоту наводила. Жаль выложили ответ, хотела тестить на ней кандидатов на место программиста, ибо кандидатов много, а программистов нет.
48. AlexO 135 03.06.13 12:08 Сейчас в теме
(45) Chif13,
Жаль выложили ответ, хотела тестить на ней кандидатов на место программиста, ибо кандидатов много, а программистов нет.

Найдите грамотного подборщика кадров на 1С.
46. _Ramzes 125 30.05.13 16:07 Сейчас в теме
Вот такая вот я сволочь. :) Но мне кажется тестировать на ней программистов не стоит. Стоит тестировать на ней разработчиков отчетов. Ибо это только для разработки отчетов, да и то, сколько работал такого никогда не надо. Чем проще отчет, тем лучше. Чем проще запрос, тем лучше. Это я вам как эксперт по тех вопросам говорю.
49. Chif13 1248 03.06.13 17:39 Сейчас в теме
(46) да я то в курсе всего этого. Но блин выбрать программиста оказалось достаточно проблематично. Просто мне предстоит отбор в ближайшем будущем. И как бы более подробно узнать что покупаешь очень бы хотелось ибо работать мне с ним.

(48) AlexO,
Кадры все равно не найдут нормального программиста. Я знаю программиста с сертификатами более 10 штук, однако ему приходится объяснять элементарные вещи... И знаю прогера без сертификатов - он напишет грамотно и красиво все что попросишь на 1С. Так что кадры тут не катят...
50. _Ramzes 125 03.06.13 17:47 Сейчас в теме
(49) Chif13, Извините что вмешиваюсь, но вопрос был не в сертификатах, а в
Цитирую
НачалоЦитаты
Найдите грамотного подборщика кадров на 1С.
КонецЦитаты
Сертификаты - показатель что человек хоть немного знает о чем речь. Мне достаточно около часа поговорить с человеком и я с уверенностью могу сказать какой уровень знаний у человека. И его применимость к продуктам 1С.
А если мериться пиписками, то сертификаты у меня есть, и количество больше 10.
Могу только посоветовать, заставляйте людей писать код на бумаге.
51. Chif13 1248 03.06.13 19:58 Сейчас в теме
(50) ключевое слово грамотный подборщик кадров... Подбирать буду я, но я боюсь, что мне легче убиться в коде, чем подобрать человека. Опять таки заставить писать код на бумаге может и хорошо, но даже я много так не напишу. Я работаю с Ctrl+пробел, что зашибись удобно. Т.е. синтаксис я наизусь не помню, только основной. Но я б не сказала что я плохой программист (хотя это мое субъективное мнение). У каждого своя специфика работы.
По мне по наверное легче взять кого то, у кого может быть мало опыта, но который всего добивается сам, у кого есть способность и стремление развиваться. Чем например того кто как то научился делать достаточно сносно и все, дальше не пойдет. Угадать бы... Тут посоветовали взять задачки со специалиста по платформе, надо глянуть...
52. Project Dominikana 07.06.13 07:00 Сейчас в теме
Лучший вариант решения задачки по оценкам команды Проекта Доминикан
Прикрепленные файлы:
Доминикана. Самое лучшее решение.dt
68. e.kogan 1892 13.06.13 16:27 Сейчас в теме
(52) Project Dominikana, вот за то, что в Текст можно поле компоновки впихнуть - это спасибо автору решения, я не замечала.
71. murat_ 33 30.06.17 14:14 Сейчас в теме
Выполнял недавно данное тестовое задание при приеме на работу. Мне сразу пояснили, что смысл задания - проверка знаний механизмов СКД.
Постарался создать отчет максимально точным, как представили на рисунке к заданию.
Учел, что применяется параметр "Маршрут", а не отбор. Нет полей группировок. Нет границ у ячеек остановок, и т.п. по мелочи.
Запрос выполнил в виде простого левого соединения РС между собой. Вместо левого соединения в запросе экспериментировал со связями наборов данных СКД, но что-то у меня не получилось в данном случае.
Дальше также тип группировки "Таблица", сортировка строк и колонок по возрастанию.
Больше всего времени потратил на оформление отчета. Ненужные границы ячеек скрыл условным оформлением. Поля группировок строк удалось скрыть только установкой максимальной ширины -1 (значение 0 СКД не принимает). При этом отчет съехал влево, пришлось у первой колонки сделать дополнительный отступ. У группировки колонок СКД не дает установить максимальную высоту -1, поставил 1 (значение 0 СКД также не принимает), группировка превратились в жирную линию - просто убрал границы ячеек.
Задание делал на платформе 8.3.10.2299. Заметил два момента:
1) Скрыть название автозаголовков полей пробелом уже не получится. Платформа упорно сбрасывает наименование из незначащих символов в название по умолчанию. Как минимум можно назвать в виде ".", "/", "_", "|" и т.д.
2) Оформить заголовки полей группировок пустыми макетами тоже уже не получается.
Думаю, что возможность установки ширины поля меньше 0 также закроют в будущем.

Выложенное в (52) "самое лучшее решение" действительно более изящно в плане оформления отчета СКД.
Для меня также было не очевидным возможность установки поля компоновки в текст оформления.
53. Ambakollajder 07.06.13 12:29 Сейчас в теме
Решение хорошее, видно, что кто-то на скд собаку съел
54. _Ramzes 125 07.06.13 19:25 Сейчас в теме
(53) Ambakollajder, Спасибо. Да, я в последнее время на СКД что только не творил с отчетами. Году в 2008 было совсем мало информации по СКД, и было больше вопросов чем ответов. А вот просмотрев курс Гилева по СКД я нашел очень много ответов по построению отчетов на СКД два года назад и понеслось.
55. RustIG 1301 08.06.13 21:52 Сейчас в теме
(0) спасибо за статью: за твой (ваш) труд тебе (вам) плюс.
Я поставил минус, потому что считаю, что задача некорректно поставлена: неверно запроектирована структура хранения данных и столь мощный инструмент СКД применяется не в тему - "пилить дрова можно шлифмашинкой, и все же для дров есть электропила"...
Мое мнение - решения задачи: нужно завести регистр сведений, в котором будет храниться информация о том, какое расстояние между остановками, и регистр сведений, который будет хранить порядок остановок друг за другом. Исходя из такой структуры хранения данных возможно решить большинство задач, связанных с остановками, простым способом - простыми алгоритмами. Я никогда не был сторонником решать сложные и не сложные алгоритмические задачи с помощью запросов и ограниченных действий с запросом (объединение, соединение и т.д.)
57. _Ramzes 125 08.06.13 23:12 Сейчас в теме
(55) А минус то мне за что? :( Я к доминикане имел отношение постольку поскольку. Еще и задачу вам решил. А про распил дров микроскопом согласен.
59. RustIG 1301 09.06.13 07:06 Сейчас в теме
56. AlexandrIII 08.06.13 22:12 Сейчас в теме
Поучительно ! А вторая задача будет ?
58. _Ramzes 125 08.06.13 23:14 Сейчас в теме
(56) У меня нет второй задачи. Могу только предложить вариант задачи, который я давал на собеседованиях.
62. Serj1C 483 11.06.13 12:43 Сейчас в теме
(58)(56) Второй задачи вроде не было
60. no_limits 25 10.06.13 16:29 Сейчас в теме
61. krava_vlad 130 10.06.13 23:38 Сейчас в теме
не просто ее и задачкой назвать, это целое задание (чтобы пошевелить мозгами) :)
63. DrongoGOD 12.06.13 01:35 Сейчас в теме
В оформлении есть лишние элементы
Запроса мне достаточно было вот такого для получения идентичного результата.
При таком варианте в настройках схемы для надежности можно добавить сортировку по расстоянию (на случай ручных корректировок):

ВЫБРАТЬ
ТабСтрок.Остановка КАК ОстановкаСтроки,
ТабСтолбцов.Остановка КАК ОстановкаСтолбцы,
ТабСтолбцов.РасстояниеОтНачалаМаршрута - ТабСтрок.РасстояниеОтНачалаМаршрута КАК Расстояние
ИЗ
РегистрСведений.ОстановкиПоМаршруту КАК ТабСтрок
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстановкиПоМаршруту КАК ТабСтолбцов
ПО ТабСтрок.Маршрут = ТабСтолбцов.Маршрут
ГДЕ
ТабСтрок.Маршрут = &Маршрут
И ТабСтолбцов.Маршрут = &Маршрут
И ТабСтолбцов.РасстояниеОтНачалаМаршрута - ТабСтрок.РасстояниеОтНачалаМаршрута >= 0
64. spezc 781 12.06.13 16:10 Сейчас в теме
на решение задачи - 20 мин. из которых 15 минут ушло на оформление СКД.

Примитивный запрос и пару штрихов в СКД.

Результат отчета:
http://s47.radikal.ru/i116/1306/e5/5982524acaf2.png
Схема СКД (работает в любой конфе, даже без данных)
http://zalil.ru/34575137

Одно только не решено. Для полного соответствия требованиям задачи нужно чтобы еще линии в ячейках с названиями городов слева и сверху отсутствовали. У меня сходу не получилось.
67. _Ramzes 125 12.06.13 23:25 Сейчас в теме
(64) spezc, Здорово. Сталкивались с подобными задачами уже?
65. romansun 193 12.06.13 21:55 Сейчас в теме
задача интересная, но тестировать по ней кандидатов себе на работу я б не стал - достаточно специфическая задача
66. _Ramzes 125 12.06.13 23:23 Сейчас в теме
Я бы если честно кроме собеседования, да программирования на бумаге не рекомендовал бы по другому тестировать сотрудников.
С другой стороны, если человек пальцы гнет, можно дать и похожую задачу, чтоб поубавить пыл.
69. Ks_83 250 17.06.13 14:48 Сейчас в теме
Какие-то запросы у вас все сложные. У меня получилось обычной кросс-таблицей.

ВЫБРАТЬ
	ОстановкиПоМаршруту.Остановка КАК Остановка,
	ОстановкиПоМаршруту1.Остановка КАК Остановка1,
	ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута,
	ВЫБОР
		КОГДА ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута - ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута = 0
			ТОГДА ОстановкиПоМаршруту1.Остановка.Наименование
		ИНАЧЕ ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута - ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута
	КОНЕЦ КАК Расстояние
ИЗ
	РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту,
	РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту1
Показать
70. Ish_2 1104 17.06.13 17:03 Сейчас в теме
(69) Конечно. Нужна обычная кросс-таблица ( хотя запрос немного не такой).
И тогда возможны манипуляции , нереализуемые в приведенных выше решениях.
http://forum.infostart.ru/forum24/topic87790/message927311/#message927311
72. seperblunt2 03.10.18 09:49 Сейчас в теме
73. JeckWest 10.01.24 16:14 Сейчас в теме
Оставьте свое сообщение