Имя: Пароль:
1C
Юмор
Как обработать такую таблицу
🠗 (Rie 11.11.2013 10:27)
,
0 ak799
 
11.11.13
08:50
Есть:

ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 |    | 12 |    | 10 |    |
Терапевт |  11 |    |    |    |    |    |
Терапевт |     | 15 |    |    |    |    |
Терапевт |     | 18 |    |    |    |    |
Хирург   |     |    |    | 12 |    | 17 |
Хирург   |     | 11 |    |    |    |    |

Надо:
ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 | 15 | 12 |    | 10 |    |
Терапевт |  11 | 18 |    |    | 18 |    |
Хирург   |     | 11 |    | 12 |    | 17 |

Как хитро свернуть запросом? СУММА() как понимаю не подходит.
1 ak799
 
11.11.13
08:51
ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 |    | 12 |    | 10 |    |
Терапевт |  11 |    |    |    |    |    |
Терапевт |     | 15 |    |    |    |    |
Терапевт |     | 18 |    |    |    |    |
Хирург   |     |    |    | 12 |    | 17 |
Хирург   |     | 11 |    |    |    |    |

Надо:
ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 | 15 | 12 |    | 10 |    |
Терапевт |  11 | 18 |    |    |    |    |
Хирург   |     | 11 |    | 12 |    | 17 |
2 kosts
 
11.11.13
08:52
(0) Чем терапевт от терапевта отличается?
3 Cube
 
11.11.13
08:52
Почему два терапевта?
4 ak799
 
11.11.13
08:53
(2) ничем. Нужно Хитро свернуть строки. для 3 и 4 терапевта задвинуть строки по колонке ВТ вверх
5 Rie
 
11.11.13
08:53
(0) Я так понял, что нужна просто группировка по _всем_ полям. Дабы устранить дубли. Ну или ВЫБРАТЬ РАЗЛИЧНЫЕ.
6 1dvd
 
11.11.13
08:54
Только цыклом
7 Rie
 
11.11.13
08:54
(4) СОРТИРОВАТЬ с вычисляемым полем.
8 ak799
 
11.11.13
08:54
Коллеги суть не в том что два терапевта а в том как обработать. Можно ли запросом сдвинуть так как хочу?
9 ak799
 
11.11.13
08:55
(7) - Покажи!!!
10 Cube
 
11.11.13
08:55
(8) А почему так

ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 | 15 | 12 |    | 10 |    |
Терапевт |  11 | 18 |    |    |    |    |
Хирург   |     | 11 |    | 12 |    | 17 |

а не так

ВРАЧ     |  ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС
Терапевт |  10 | 18 | 12 |    | 10 |    |
Терапевт |  11 | 15 |    |    |    |    |
Хирург   |     | 11 |    | 12 |    | 17 |

??? Платформа протелепатировать должна?
11 Rie
 
11.11.13
08:55
(9) Сообщи, по какому критерию упорядочить - покажу.
12 Rie
 
11.11.13
08:59
+(11) Я так понял, что тут три задачи.
1. "Убрать" пустые поля - но для этого надо знать, null там или пустая строка. Тут возникает первое вычисляемое поле.
2. СГРУППИРОВАТЬ по полю Врач и вычисляемым в пункте 1 полям.
3. УПОРЯДОЧИТЬ согласно выбранному критерию.
13 kosts
 
11.11.13
09:01
(8) В принципе можно разработать небольшого монстра. Который свернет как хочется. Но что если вдруг два разных терапевта станут работать в один и тот же день по пол дня. Такой запрос уже ни за правильно не сработает...
14 ak799
 
11.11.13
09:01
(12) покажи запрос целиком!!!
Есть таблица в запросе с таблицей "Врачи" например. Что дальше?
Выбрать
Врач,
День
ИЗ Врачи..

а дальше?
15 Cube
 
11.11.13
09:02
(14) Это ты покажи запрос... Телепатов тут нет.
16 Rie
 
11.11.13
09:03
(14) Ты сначала таблицу покажи. А то хрен знает, какие там у тебя поля и чем они знамениты. А то писать запросы по неопознанным летающим таблицам - как-то оно не кошерно.
17 kosts
 
11.11.13
09:04
Идею такая. Заменить все часы единицей. Сгруппировать по всем полям. Потом сгруппированную таблицу использовать в соединении с первой для суммирования часов...
18 Rie
 
11.11.13
09:05
(17) Это, судя по некоторым признакам, расписание. Так что суммировать там нечего. Надо выяснять - есть ли часы приёмные или да ну его на фиг.
19 kosts
 
11.11.13
09:07
(17)(18) Но в принципе для реального решения постановка и данные не корректны... Частное решение такое.
20 ak799
 
11.11.13
09:08
(18) врачи - назвал условно. Есть такая таблица, нужно добавлять новые строки только если добавить в нужный день нельзя (часы уже есть), Если часы по дню пустые нужно объединять строки.
21 ak799
 
11.11.13
09:09
(19) - да решение частное, экзаменацтонное. Как свернуть запросом четыре строки по терапвету в две как я нарисовал?
22 1dvd
 
11.11.13
09:09
Имхается мне, что нужно отдельными запросами отбирать каждый день недели и расставлять Номера строк, потом всё соединить воедино
23 ak799
 
11.11.13
09:11
ну дайте кто нибудь запрос!
24 kosts
 
11.11.13
09:11
(21) У тебя таблица в каком виде дана, как в (0) ?
25 Cube
 
11.11.13
09:12
(21) Да это бред. Ты нам свои промежуточные итоги не показывай. Давай то что дано и то что надо получить.
26 Rie
 
11.11.13
09:12
(21) Да ты какую-то хрень нарисовал, из которой ничего не понятно - по каким критериям сворачивать. Ясно, что важен Врач. А дальше? Тебя ж о том и спрашивают, а ты изображаешь себя партизана на допросе в гестапо.

Ну и раз задача - экзаменационная... Скока денег?
27 Cube
 
11.11.13
09:12
(23) Да пожалуйста:
Запрос = Новый Запрос();
28 ak799
 
11.11.13
09:14
не знаете, так и скажите, нефиг всякую ерунду писать
29 1dvd
 
11.11.13
09:15
(28) да, тут одни профаны сидят. Зря ты сюда зашёл
30 Rie
 
модератор
11.11.13
09:15
(28) Вы на вопросы-то - ответьте. Если Вам действительно помощь нужна. А то ведь прикрою ветку - за троллинг с Вашей стороны.
31 razlagator
 
11.11.13
09:16
(29) ответь на вопрос из (10) хотябы, будь мужиком б***ть!
32 1dvd
 
11.11.13
09:17
(31) Я? откуда я знаю?
33 Cube
 
11.11.13
09:17
(28) Я смотрю, ты на своей волне.. Ну-ну, давай-давай...
34 Rie
 
модератор
11.11.13
09:17
Видимо, (31)->(28).
35 kosts
 
11.11.13
09:18
(23) Ключевое поле для таблицы из (0)

Выбор когда ПН > 0 Тогда 1 Иначе 0 КонецВыбор * 1 +
Выбор когда ВТ > 0 Тогда 1 Иначе 0 КонецВыбор * 10 +
Выбор когда СР > 0 Тогда 1 Иначе 0 КонецВыбор * 100 +
Выбор когда ЧТ > 0 Тогда 1 Иначе 0 КонецВыбор * 1000 +
Выбор когда ПТ > 0 Тогда 1 Иначе 0 КонецВыбор * 10000 +
Выбор когда СБ > 0 Тогда 1 Иначе 0 КонецВыбор * 100000 +
Выбор когда ВС > 0 Тогда 1 Иначе 0 КонецВыбор * 1000000 как КП


Добавь к своей таблице и сделай группировку по врачу и КП, часы суммируй, должно в принципе сработать.
36 Cube
 
11.11.13
09:18
(32) Отвечай, когда спрашивают!!! В глаза смотреть, кому сказал?!!!!
37 1dvd
 
11.11.13
09:19
(35) И что даст такой ключ?
38 Rie
 
11.11.13
09:20
(35) Во-первых, типы данных. Хрен знает, что там у ТС. Во-вторых - NULL. Который забавно себя ведёт. В третьих - см. (14) - неизвестно, какие там у ТС поля.
39 kosts
 
11.11.13
09:21
(37) Да, не то написал, думать еще нужно...
40 wertyu
 
11.11.13
09:21
(0) ты бы хоть поделился, что за таблица )
41 wertyu
 
11.11.13
09:22
(38) пока ТС себя забавно ведёт
42 Rie
 
11.11.13
09:22
(39) Не нужно думать пока что. Нужно от ТС дождаться ответа - что ж у него за хрень такая. После этого можно будет думать. А пока - не о чем думать. Разве что гадать.
43 Rie
 
11.11.13
09:23
(41) У него на это забавное поведение ещё целых 8 минут есть.
44 ak799
 
11.11.13
09:24
таблицу я нарисовал. цифры в колонакх имеют тип перечисление. Это часы. Думаю это все что нужно для решения
45 razlagator
 
11.11.13
09:25
(44) вот упертый!
46 kosts
 
11.11.13
09:25
(44) Приведи всю задачу целиком, как есть...
47 Cube
 
11.11.13
09:26
(44) "Думаю это все что нужно для решения"
Не угадал. Типы остальных колонок тоже надо...
48 Cube
 
11.11.13
09:27
(44) "цифры в колонакх имеют тип перечисление"
Чё-чё?)))) Прикольно, а можно вопрос - что за изврат?
49 Skom
 
11.11.13
09:27
(12) "1. "Убрать" пустые поля - но для этого надо знать, null там или пустая строка. Тут возникает первое вычисляемое поле. "

лечится функцией в запросе

isnull(<Знач>,0)

если поле null, то в таком варианте вернется - 0
50 ak799
 
11.11.13
09:28
(49) там могу поставить и NULL и пустую строку
51 Wobland
 
11.11.13
09:28
(48) я видал РН типа ОстаткиНаСкладах с ресурсами Размер42, Размер44...
52 wertyu
 
11.11.13
09:28
(44) хорошо, теперь объясни, почему например 15 из третьей строки должно попасть в первую, а не во вторую
53 Skom
 
11.11.13
09:29
(50) и все же без условий задачи целиком, никто не сможет подсказать.

Я вот не понял чем терапевт отличается от терапевта
54 Rie
 
11.11.13
09:29
(44) Не надо "нарисовал". Приведи описания _всех_ полей с указанием их типов. Укажи критерии для группировки и сортировки.
55 Skom
 
11.11.13
09:29
(48) тогда ты повидал в этой жизни уже все.
56 Cube
 
11.11.13
09:29
(54) +100
57 wertyu
 
11.11.13
09:30
(53) ты что Терапевта от Терапевта отличить не можешь?
58 Cube
 
11.11.13
09:30
(55) Чувствую, ща наверстаю... :D
59 Cube
 
11.11.13
09:30
(57) Пошла жара!)))))
60 Rie
 
11.11.13
09:30
(50) Да кто ж сомневается-то? Ты куда круче хрень можешь спроворить.
61 ak799
 
11.11.13
09:31
(52) потому что 10 меньше 11
62 Skom
 
11.11.13
09:31
(55) относится к (51)
63 Skom
 
11.11.13
09:31
(57) а-а-а-а ну так бы сразу и сказал ))))))))
че это я, действительно.
64 Cube
 
11.11.13
09:32
(62) Даже так?))
65 Cube
 
11.11.13
09:32
(61) А 12 больше 0 и что?
66 Skom
 
11.11.13
09:33
(65) добавлю
0 меньше чем 12
67 kosts
 
11.11.13
09:34
(61) Как определить, что одно перечисление больше или меньше другого?
68 wertyu
 
11.11.13
09:34
(61) отлично, а теперь объясни почему терапевтов в итоге два, а хирургов только один
69 ak799
 
11.11.13
09:34
(67) хорошо, давайте по периоду записи в регистре сведений
70 1dvd
 
11.11.13
09:35
(68) ты чо? в поликлинике всегда куча терапевтов и один хирург
71 ak799
 
11.11.13
09:36
Новая строка в графике должна добавляться в график только в том случае,                                                
если часы нельзя поместить в уже существующую строку графика для данного врача и дня недели.
72 Skom
 
11.11.13
09:37
(68) сразу вспоминается анедкот
- а давайте я тогда трактористу в**бу
- а тракторист-то причем.
- а у нас их все равно двое.
73 Coldboy
 
11.11.13
09:37
(0) а просто сгруппировать разве не поможет?
74 Skom
 
11.11.13
09:37
(73) вся соль в 2 терапевтах и одном хирурге
75 Cube
 
11.11.13
09:38
(69) Всё, не позорься. Иди попей чайку, подумай... А завтра приходи... У тебя каша в голове.
76 Rie
 
модератор
11.11.13
09:38
Леди и джентльмены! Тут я в затруднении. Формально ТС выполняет требования - то бишь, даёт показания, _формально_ имеющие отношения к задаче. Фактически же... Ну, все грамотные, все понимают... Поэтому - ветку не закрываю. Но переношу в "Юмор" и притапливаю. Если ТС перестанет играть в партизана на допросе у злобных фашистов - верну в тематический раздел и сниму утопление.

Ну и, ak799... Дополнительный вопрос - вот зачем нужен 1Сник, который простенькую задачу не в состоянии самостоятельно сделать?
77 Skom
 
11.11.13
09:38
Посоны, я кажисть понял, почему терапевтов двое: один мужчина, другой женщина!
78 Coldboy
 
11.11.13
09:39
ну они же свернутся, еще по колонкам ПН ВТ и тд или же я что-то не понимают? ведь врач и дни недели будут полями группировки и все же сойдется или я что-то не понимаю.
79 wertyu
 
11.11.13
09:39
(77) давай без шовинизма
80 Rie
 
11.11.13
09:40
(78) ТС сам не знает, чего хочет. Отсюда и все проблемы.
81 Skom
 
11.11.13
09:41
(79) у меня просто другого объяснения нет. хотя только что придумал, например Ориентация)))

(78) если в группирующие поля добавить и дни недели, то вообще фигня получится.
82 razlagator
 
11.11.13
09:41
(0) сделай 7 запросов, на каждый день
83 ak799
 
11.11.13
09:42
(76) гляжу ты сам не можешь выполнить "простенькую задачу". Кроме спама не видел ничего от тебя.
84 ak799
 
11.11.13
09:43
Господа начинающие программисты! Вопрос не для вас, а для профессионалов. Не пишите здесь, а то я разочаруюсь и пожалуюсь нургалиеву.
85 eklmn
 
гуру
11.11.13
09:44
итить колотить, откуда такие ... берутся?
86 Rie
 
11.11.13
09:45
(83) Проспись. И приходи завтра. А пока что - п. 8.
87 Torquader
 
11.11.13
21:36
Насколько я понимаю, идея в том, чтобы выкинуть из таблицы пустые строки.
Ну и в чём проблема - сначала перебрать таблицу и для каждого дня (сколько бы их там не было) для каждого врача сделать таблицу, где указать числа, которые в этот день соответствуют этому врачу.
Потом для каждой строки найти максимальное число элементов в дочерней таблице.
Далее - вывести таблицу заново.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn