gifts2017

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

Опубликовал Роман Гаманец (_Ramzes) в раздел Программирование - Практика программирования

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

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон (anton.fly7) 15.05.13 12:17
2. Роман Гаманец (_Ramzes) 15.05.13 12:30
Спасибо. получилось самостоятельно решить задачу?
3. Сергѣй Батанов (baton_pk) 15.05.13 13:22
На днях другу помогал решать эту задачку. Как-то у нас гораздо прощё всё это получилось: и запрос без временных таблиц - в одно соединение, и без макетов полей.
4. Михаил Ражиков (tango) 15.05.13 13:23
прочитал, скачал, сходил покурить.
уточняющий вопрос:
Отчет должен быть разработан без программного кода

настройки схемы СКД не считаются программным кодом?
пока потратил на покурить, подумалсо, что текстом запроса можно вытащить саму и только табличку регистра, остальное сделать СКД, нет?
5. Роман Гаманец (_Ramzes) 15.05.13 13:38
(4) tango, честно, не знаю. Я сделал как мог.
6. Михаил Ражиков (tango) 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) 15.05.13 17:18
Не стал с макетами париться. Все таки тестовое задание.
Запрос такой:
ВЫБРАТЬ
	Начальная.Маршрут,
	Начальная.Остановка КАК Остановка,
	Конечная.Остановка КАК ДоОстановки,
	Конечная.РасстояниеОтНачалаМаршрута - Начальная.РасстояниеОтНачалаМаршрута КАК Растояние,
	Начальная.РасстояниеОтНачалаМаршрута КАК РастНач,
	Конечная.РасстояниеОтНачалаМаршрута КАК РастКон,
	Конечная.Остановка КАК СтрДоОстановки
ИЗ
	РегистрСведений.ОстановкиПоМаршруту КАК Начальная
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстановкиПоМаршруту КАК Конечная
		ПО (Конечная.РасстояниеОтНачалаМаршрута - Начальная.РасстояниеОтНачалаМаршрута >= 0)

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

Сам отчет http://yadi.sk/d/4CfzXviH4rXcu
9. Михаил Ражиков (tango) 15.05.13 18:25
да, один раз слева все-таки придется
вычисляемыми/пользовательскими полями фигня получается хуже алгоритмической обработки
10. Михаил Ражиков (tango) 15.05.13 18:26
(8) BorisMor,
ПО Начальная.РасстояниеОтНачалаМаршрута <= Конечная.Остановка

упс
11. Александр Волков (aavolkoff) 15.05.13 19:41
Зачем здесь вообще соединения? Результат нужный можно получить прямым запросом к регистру. Можно спорить о том - класть ли во временную таблицу результат запроса к регистру или оптимизатор скулевский (файлово-одинэсовский) сам неплохо справится с кэшированными данными из таблицы.
12. Борис Моренко (BorisMor) 15.05.13 21:48
13. Павел Ванин (pahich) 15.05.13 23:16
(11) aavolkoff, и как без соединений решить задачу?
14. Роман Гаманец (_Ramzes) 15.05.13 23:42
(11) покажите запрос, скорее всего я такого варианта не встречал еще
15. Александр Волков (aavolkoff) 16.05.13 01:07
(13)(14)
Что будет, если одним запросом получить одни и те-же данные из одной из той-же таблицы (регистра), обратившись к ней 2 раза?
16. Павел Ванин (pahich) 16.05.13 08:13
(15) aavolkoff, и что же будет, если к ним обратиться без соединений?
17. Михаил Ражиков (tango) 16.05.13 10:13
(11) aavolkoff, соединение здесь - самый простой способ решить обратную задачу нарастающего итога
18. Александр Волков (aavolkoff) 16.05.13 10:38
(17)(16)(13)
Чем левое соединение проще декартова произведения? В чем заключается "простота"?
19. Артур (0tto) 16.05.13 11:56
У меня такое решение
Прикрепленные файлы:
ТаблицаРасстояний.erf
20. Михаил Ровковский (mixqn) 16.05.13 12:33
(8) BorisMor, у меня приблизительно такое же решение. получил за него 4.
21. Павел Ванин (pahich) 16.05.13 12:52
(20) mixqn, за что балл снизили?
22. Михаил Ровковский (mixqn) 16.05.13 13:04
(21) pahich, ну так внешний вид не 1 в 1.
в моем решение правильный по сути только сам запрос (вашу обработку скачал, внешний вид примерно как у меня - табличка, внутри которой треугольник, а надо чистый треугольник получить).
оформление я не сделал. вот собственно за это и минус балл.
23. Михаил Ровковский (mixqn) 16.05.13 13:11
P.S. сам запрос без оформления занял у меня примерно 10-15 минут и выглядит он так:
ВЫБРАТЬ
	ОстановкиПоМаршруту.Остановка,
	ОстановкиПоМаршруту1.Остановка КАК Остановка1,
	ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута - ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута КАК Расстояние,
	ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута КАК Порядок
ИЗ
	РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОстановкиПоМаршруту КАК ОстановкиПоМаршруту1
		ПО ОстановкиПоМаршруту.Маршрут = ОстановкиПоМаршруту1.Маршрут
			И ОстановкиПоМаршруту.РасстояниеОтНачалаМаршрута <= ОстановкиПоМаршруту1.РасстояниеОтНачалаМаршрута
...Показать Скрыть


решение, предложенное в статье и правда сильно мудреное, я пока даже не вникал в суть этого огромного запроса...
24. Михаил Ражиков (tango) 16.05.13 13:29
(19) 0tto, хи-хи
Прикрепленные файлы:
25. Михаил Ражиков (tango) 16.05.13 13:31
(22) mixqn, оформление, если рука не набита, сожрет времени больше, чем запрос
26. Михаил Ражиков (tango) 16.05.13 13:32
(23) mixqn, а отбор по маршруту?
27. Михаил Ровковский (mixqn) 16.05.13 13:34
(25) tango, согласен, я об этом честно написал в письме, приложенном к решению - мол не делал такого, не знаю, как сделать.
(26) tango, ну его не долго добавить :) +2 строки в запросе и поле в форме. в приложенной базе всего 1 маршрут, поэтому сработало так.
28. Артур (0tto) 16.05.13 14:56
(24) Параметр нужно задать
Я не знаю на что сдал, но меня пригласили на проект.
Будет он кстати далеко не в Доминикане:) несмотря на название проекта
Прикрепленные файлы:
29. Вадим Горбунов (Программист 1С) 16.05.13 15:21
Если будут предложения об ускорении, то с радостью их рассмотрю
- посмотрите Решение задачи
30. Павел Ванин (pahich) 16.05.13 15:39
(28) 0tto, а где будет проходить? в москве? :)
31. Артур (0tto) 16.05.13 15:56
(30) pahich, нет в дальнем забугорье :) точное место не пишу, так как если бы организаторы хотели сами написали)
32. Михаил Ражиков (tango) 16.05.13 15:59
(31) 0tto, а личное можно? как решили коллизию с текущей занятостью? вообще, на что жить собираетесь во время проекта?
33. Борис Моренко (BorisMor) 16.05.13 16:01
34. Артур (0tto) 16.05.13 16:07
(32) tango, А кто сказал что я согласился? :) Мне только прислали предложение.
А так оплата на проекте достаточно нормальная, я бы очень сильно не потерял.
35. Борис Моренко (BorisMor) 16.05.13 16:17
(34) 0tto, да надо соглашаться!
Надо что бы в жизни было что вспомнить)
36. Михаил Ражиков (tango) 16.05.13 16:24
(35) BorisMor, не все воспоминания одинаково приятны
37. Борис Моренко (BorisMor) 16.05.13 16:36
(36) tango, если не чума или тайфун то все будет ок.
38. Михаил Ражиков (tango) 16.05.13 16:48
(37) BorisMor, сильно подозреваю, что организаторы отожмут каждую копеечку - не до экзотики будет
так что весь позитив, на который стоит рассчитывать - это сам проект.
но, конечно, интересно
но - со стороны
но интересно
**
эх, вот бы кто-нибудь выклал здесь договор между фейсами :)
39. Артур (0tto) 16.05.13 16:57
(38) в отношениях есть оговорка, что организатор вправе снять участника с проекта - если он не справляется с задачами, на этот случай - компенсируется период участия + 1 месяц
40. Павел Ванин (pahich) 16.05.13 17:00
(39) 0tto, компенсируется кем?
41. Артур (0tto) 16.05.13 17:06
Организаторами конечно :)
42. Михаил Ражиков (tango) 16.05.13 17:30
(41) 0tto, ну то есть это официальный договор или слово джентльмена?
43. Михаил Ражиков (tango) 16.05.13 17:30
и дорога домой - она за чей счет в этом случае?
44. Артур (0tto) 16.05.13 23:00
Вы очень мнительно относитесь :).
Орги не скрывают, что вкалывать придется. Условия предложены более чем справедливые.
Я готов вкалывать если проект мне интересен (впрочем если и не очень интересен :)).
Смысла заманить в другую страну и под страхом невыезда - заставить разрабатывать прототип, думаю нет.
Мне например особой разницы за чей счет будет билет в этом случае - нет, более того, считаю, что если я действительно завалю работу - то будет вполне справедливо так сделать. Ну, вдруг захочется остаться потусить недельку в тае и потом уже вернуться :).
45. Виктория Коршанова (Chif13) 30.05.13 13:45
О, тоже решала данную задачку, час убила. Задачка реально интересная. Друг прислал, он участвовал в проекте и прошел конкурс. Решила по другому, запрос попроще был, да и красоту наводила. Жаль выложили ответ, хотела тестить на ней кандидатов на место программиста, ибо кандидатов много, а программистов нет.
46. Роман Гаманец (_Ramzes) 30.05.13 16:07
Вот такая вот я сволочь. :) Но мне кажется тестировать на ней программистов не стоит. Стоит тестировать на ней разработчиков отчетов. Ибо это только для разработки отчетов, да и то, сколько работал такого никогда не надо. Чем проще отчет, тем лучше. Чем проще запрос, тем лучше. Это я вам как эксперт по тех вопросам говорю.
47. Михаил Ражиков (tango) 30.05.13 16:16
(44) 0tto, на заре века меня заманили в публичный дом (реально) и что-то пытались выжать по поводу 1с. выходил с милицией (с автоматами).

вот тогда-то у меня в первый раз слизистая и слетела
48. Алекс Ю (AlexO) 03.06.13 12:08
(45) Chif13,
Жаль выложили ответ, хотела тестить на ней кандидатов на место программиста, ибо кандидатов много, а программистов нет.

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

(48) AlexO,
Кадры все равно не найдут нормального программиста. Я знаю программиста с сертификатами более 10 штук, однако ему приходится объяснять элементарные вещи... И знаю прогера без сертификатов - он напишет грамотно и красиво все что попросишь на 1С. Так что кадры тут не катят...
50. Роман Гаманец (_Ramzes) 03.06.13 17:47
(49) Chif13, Извините что вмешиваюсь, но вопрос был не в сертификатах, а в
Цитирую
НачалоЦитаты
Найдите грамотного подборщика кадров на 1С.
КонецЦитаты
Сертификаты - показатель что человек хоть немного знает о чем речь. Мне достаточно около часа поговорить с человеком и я с уверенностью могу сказать какой уровень знаний у человека. И его применимость к продуктам 1С.
А если мериться пиписками, то сертификаты у меня есть, и количество больше 10.
Могу только посоветовать, заставляйте людей писать код на бумаге.
51. Виктория Коршанова (Chif13) 03.06.13 19:58
(50) _Ramzes, ключевое слово грамотный подборщик кадров... Подбирать буду я, но я боюсь, что мне легче убиться в коде, чем подобрать человека. Опять таки заставить писать код на бумаге может и хорошо, но даже я много так не напишу. Я работаю с Ctrl+пробел, что зашибись удобно. Т.е. синтаксис я наизусь не помню, только основной. Но я б не сказала что я плохой программист (хотя это мое субъективное мнение). У каждого своя специфика работы.
По мне по наверное легче взять кого то, у кого может быть мало опыта, но который всего добивается сам, у кого есть способность и стремление развиваться. Чем например того кто как то научился делать достаточно сносно и все, дальше не пойдет. Угадать бы... Тут посоветовали взять задачки со специалиста по платформе, надо глянуть...
52. Проект Доминикана (Project Dominikana) 07.06.13 07:00
Лучший вариант решения задачки по оценкам команды Проекта Доминикан
Прикрепленные файлы:
Доминикана. Самое лучшее решение.dt
53. Андрей Ага (Ambakollajder) 07.06.13 12:29
Решение хорошее, видно, что кто-то на скд собаку съел
54. Роман Гаманец (_Ramzes) 07.06.13 19:25
(53) Ambakollajder, Спасибо. Да, я в последнее время на СКД что только не творил с отчетами. Году в 2008 было совсем мало информации по СКД, и было больше вопросов чем ответов. А вот просмотрев курс Гилева по СКД я нашел очень много ответов по построению отчетов на СКД два года назад и понеслось.
55. г. Казань Рустем Гумеров (Rustig) 08.06.13 21:52
(0) спасибо за статью: за твой (ваш) труд тебе (вам) плюс.
Я поставил минус, потому что считаю, что задача некорректно поставлена: неверно запроектирована структура хранения данных и столь мощный инструмент СКД применяется не в тему - "пилить дрова можно шлифмашинкой, и все же для дров есть электропила"...
Мое мнение - решения задачи: нужно завести регистр сведений, в котором будет храниться информация о том, какое расстояние между остановками, и регистр сведений, который будет хранить порядок остановок друг за другом. Исходя из такой структуры хранения данных возможно решить большинство задач, связанных с остановками, простым способом - простыми алгоритмами. Я никогда не был сторонником решать сложные и не сложные алгоритмические задачи с помощью запросов и ограниченных действий с запросом (объединение, соединение и т.д.)
56. Александр (AlexandrIII) 08.06.13 22:12
Поучительно ! А вторая задача будет ?
57. Роман Гаманец (_Ramzes) 08.06.13 23:12
(55) А минус то мне за что? :( Я к доминикане имел отношение постольку поскольку. Еще и задачу вам решил. А про распил дров микроскопом согласен.
58. Роман Гаманец (_Ramzes) 08.06.13 23:14
(56) У меня нет второй задачи. Могу только предложить вариант задачи, который я давал на собеседованиях.
59. г. Казань Рустем Гумеров (Rustig) 09.06.13 07:06
60. Егор Коршунов (no_limits) 10.06.13 16:29
61. Владимир Кравчук (Power Team) (krava_vlad) 10.06.13 23:38
не просто ее и задачкой назвать, это целое задание (чтобы пошевелить мозгами) :)
62. Serj (Serj1C) 11.06.13 12:43
(58)(56) Второй задачи вроде не было
63. Roman Ovarchenko (DrongoGOD) 12.06.13 01:35
В оформлении есть лишние элементы
Запроса мне достаточно было вот такого для получения идентичного результата.
При таком варианте в настройках схемы для надежности можно добавить сортировку по расстоянию (на случай ручных корректировок):

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

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

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

Одно только не решено. Для полного соответствия требованиям задачи нужно чтобы еще линии в ячейках с названиями городов слева и сверху отсутствовали. У меня сходу не получилось.
65. Роман Романов (romansun) 12.06.13 21:55
задача интересная, но тестировать по ней кандидатов себе на работу я б не стал - достаточно специфическая задача
66. Роман Гаманец (_Ramzes) 12.06.13 23:23
Я бы если честно кроме собеседования, да программирования на бумаге не рекомендовал бы по другому тестировать сотрудников.
С другой стороны, если человек пальцы гнет, можно дать и похожую задачу, чтоб поубавить пыл.
67. Роман Гаманец (_Ramzes) 12.06.13 23:25
(64) spezc, Здорово. Сталкивались с подобными задачами уже?
68. Эстер Коган (e.kogan) 13.06.13 16:27
(52) Project Dominikana, вот за то, что в Текст можно поле компоновки впихнуть - это спасибо автору решения, я не замечала.
69. Вася Пупкин (Ks_83) 17.06.13 14:48
Какие-то запросы у вас все сложные. У меня получилось обычной кросс-таблицей.

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