Имя: Пароль:
1C
1С v8
С виду простой вопрос по СКД
0 ghostishe
 
19.08.16
18:40
Всем привет.
Пожмогите, плз, с задачкой: есть непериодический независимый РС. В нём три измерения. Одно ссылочного типа "Справочник.Контрагенты", другие - перечисления "СтавкиНДС" (10, 18, 0) и "ДеньМесяца". Ресурсов нет. Это начальные условия. их менять нельзя. Периода нет. День месяца - это просто перечисление из 31 элемента.
Необходимо построить отчет вида:
По вертикали дни месяца (все 31).
По горизонтали Контрагент. СтавкаНДС должна быть на пересечении Контрагента и Дня.

Я добавил ее (ставку НДС) в ресурсы. Выражение равно самому полю. Не минимум, максимум, количество различных, а просто СтавкаНДС.

При выводе получаю "лесенку"
           01       02       03
Клиент1 Ставка10
Клиент1 Ставка18
Клиент1           Ставка10

Должно быть 2 строки.

           01       02       03
Клиент1 Ставка10 Ставка10
Клиент1 Ставка18

Вопрос: как реализовать? С виду просто. Но СКД делает "Лесенку" и добавляет еще одну строку.
1 Рэйв
 
19.08.16
18:43
я плакалъ...перечисление из 31 элемента....
2 f_vadim
 
19.08.16
18:43
>> День месяца - это просто перечисление из 31 элемента.
серьёзно?
3 Рэйв
 
19.08.16
18:44
Шедевр чо:-)
4 Рэйв
 
19.08.16
18:44
такого я еще ПРАВДА не видел:-)
5 Fragster
 
гуру
19.08.16
18:49
(0) добавь по горизонтали не детальные записи, а группировку по контрагенту
6 f_vadim
 
19.08.16
18:49
>>есть непериодический независимый РС. В нём три измерения. Одно ссылочного типа "Справочник.Контрагенты", другие - перечисления "СтавкиНДС" (10, 18, 0) и "ДеньМесяца". Ресурсов нет. Это начальные условия. их менять нельзя. Периода нет. День месяца - это просто перечисление из 31 элемента.

вот это вот всё... всё вот это... очень пятнично
7 Fragster
 
гуру
19.08.16
18:49
можжет тестовое задание такое
8 Fragster
 
гуру
19.08.16
18:49
и там может не "перечисление", а число
9 f_vadim
 
19.08.16
18:51
(7) правильное решение задания: сказать "вы тут все наркоманы штоле?"
10 f_vadim
 
19.08.16
18:52
(8) >> просто перечисление из 31 элемента
как-то не очень похоже на описание числа
11 ghostishe
 
19.08.16
18:55
Да, это задачка. В реальной жизни такое представить страшно. Задача на умение использовать СКД. (5) я добавлял контрагента. В этом случае ОНО оставляет только одну ставку НДС и множит данные в колонках.
То есть задача состоит в том, чтобы вывести отчет с нечисловым значением ресурса. я хз, как делать. 5й час пошёл.
12 ghostishe
 
19.08.16
18:57
Могу скриншотиков накидать, если нужно. Я не считаю себя асом в СКД, но тут явно что-то нестандартное должно быть (помимо добавления СтавкиНДС в ресурсы на соотв. закладке.)
13 Fragster
 
гуру
19.08.16
18:59
в колонках группировка по ставке
14 f_vadim
 
19.08.16
19:01
я максимум по ставке поставил - вроде работает
15 ghostishe
 
19.08.16
19:02
16 ghostishe
 
19.08.16
19:03
(14) на закладке СКД "ресурсы"? Ща попробую
17 Другая
 
19.08.16
19:05
добавить вычисляемое поле, в котором вызывать внешнюю функцию, которая будет преобразовывать строку в число.
Вычисляемое поле добавить в ресурсы.
18 ghostishe
 
19.08.16
19:08
(17) если так сделать, тогда ресурс будет числом. А фишка в том, что с ним не нужно делать преобразований. Нельзя Суммировать, Вычислять максимум итп. То есть если в одни день были разные ставки, то должно быть две строки.
Как будто, это поле и в ресурсе, и в группировке должно участвовать.
(14) Оставляет только одну строку на одного контрагента.
19 ghostishe
 
19.08.16
19:14
Заменил Ставку НДС на Час дня
И день месяца на день недели (лень 31 элемент забивать)

http://savepic.net/8359827.jpg

Вот так (неправильно) выглядит отчет, если просто на закладке ресурсы добавить Час с выражением Час.

Лесенка =(
20 Рэйв
 
19.08.16
19:14
а описанию сабжа- дурак дураком.
21 Рэйв
 
19.08.16
19:15
*по описанию
22 ghostishe
 
19.08.16
19:16
(20) Не знаю, как прокомментировать это сообщение. Если недостаточно описал суть проблемы, готов уточнить
23 ghostishe
 
19.08.16
19:17
(20) Задачу придумывал не я. почем купил - так и продаю
24 Рэйв
 
19.08.16
19:18
(22) да не...Мне перечисление с 31 элементами даже понравилось:-)
Буду предлагать некоторым для перезагрузки:-)
25 ghostishe
 
19.08.16
19:21
По одному клиенту строк должно быть столько, сколько разных Ставок (ну или часов).
Может, сперва получить таблицу Контрагент-Ставка? Потом ее соединить с основной. Попытаться использовать приемы, которые работают при расчете ресурсов нарастающим итогом или получении актуального курса валюты на каждую дату, даже когда он не указан некоторые дни.
Явно какая-то хитрость напрашивается
26 Рэйв
 
19.08.16
19:29
(25)Я понял в чем твоя беда.
В косноязычности.
27 Рэйв
 
19.08.16
19:33
(25)Прости если обидел. Но это факт.:-)
28 ghostishe
 
19.08.16
19:34
(26) Я над задачей молча уже сижу часами =) Беда точно не в косноязычности
29 Рэйв
 
19.08.16
19:34
ты так объясняешь... как в голливудских фильмах старый монах рассказывает про путь к сокровищам.
Красиво и непонятно:-)
30 Рэйв
 
19.08.16
19:35
(28)В ней. Ты не умеешь простыми словами сказать суть
31 Рэйв
 
19.08.16
19:35
не дано
32 Cyberhawk
 
19.08.16
19:37
Так и не понял, по какому принципу в первой табличке из (15) должна строиться требуемая табличка...
33 ghostishe
 
19.08.16
19:41
(32) Первая табличка - это пример правильного результата.
Это и есть требуемая.
Вторая табличка - это то, как у меня сейчас. Это неправильно. Данные в табличках не связаны. Это примеры правильного и неправильного результатов.
Если отталкиваться от второй таблички (неправильной), то из нее нужно сделать следующее:
http://savepic.net/8342418.jpg
34 Рэйв
 
19.08.16
19:41
(32)вот ты извращенец...
Ты ее еще и смотрел???
35 Cyberhawk
 
19.08.16
19:45
(33) Объединение объединений: внешнее объединение - это ставки НДС, внутреннее - контрагенты
36 ghostishe
 
19.08.16
19:49
(35) По порядку это как? Объединения в запросе? Или речь о СКДшных типах данных?
37 Cyberhawk
 
19.08.16
19:51
(36) Пришли мне базу с заполненным регистром
38 ghostishe
 
19.08.16
19:52
39 RomanYS
 
19.08.16
20:07
(38) режим совместимости хотя бы поставил... качаю 8.3.9
40 ghostishe
 
19.08.16
20:10
(39) У меня 8.3.8.1747
Обычное приложение. не упр.
41 Cyberhawk
 
19.08.16
20:17
Быстро сделать не удалось. Если в понедельник будет актуально - отпишусь
42 ghostishe
 
19.08.16
20:21
(41) окей.
43 RomanYS
 
19.08.16
20:25
44 ghostishe
 
19.08.16
20:32
(43) Не-а.
Новая строка в таблице должна добавляться только в том случае, если часы нельзя поместить в уже существующую строку для данного контрагента и дня недели.
То есть, по твоему скриншоту должно быть по 2 строки на каждого контрагента. Воскресенье 14 часов должно быть в первой строке.
45 echo77
 
19.08.16
20:35
(44) В одну ячейку все ставки контрагента за день запихнуть не вариант?
46 RomanYS
 
19.08.16
20:36
(44) это из (0) не следует. Но теперь понятно, чего надо)). Жди.
47 RomanYS
 
19.08.16
20:45
48 echo77
 
19.08.16
20:50
(47) Похоже. Я пронумеровал строки в запросе, у меня так же получилось
49 echo77
 
19.08.16
20:53
А еще вот это хорошая статья :-) http://catalog.mista.ru/public/267055/
50 ghostishe
 
20.08.16
13:23
(47) Да, так. Нумерация - подзапросом с упорядочиванием?
51 ghostishe
 
20.08.16
15:55
(47) (48) Да, теперь и у меня получилось. А как удалось спрятать для пользователя колонку с Номером? Ведь нужно группировать по Контрагенту и этому номеру. Номер вылезает отдельной колонкой.
52 Горогуля
 
20.08.16
15:57
а если взять и нахально не выводить некоторые поля?
53 ghostishe
 
20.08.16
17:15
Поле нужно добавить в группировку. Если не добавить, отчет не получится. Если добавить - видим доп.колонку
54 Горогуля
 
20.08.16
17:20
а если всё-таки взять и нахально не выводить некоторые поля?
55 ghostishe
 
20.08.16
18:02
(54) Ну если совсем нахально, то сработало.
56 Горогуля
 
21.08.16
04:08
не за что
57 echo77
 
21.08.16
06:40
(51) Ответ на вопрос: "Как спрятать колонку по которой выполняется группировка?" или "Как не выводить одно из полей группировки?"
https://yadi.sk/i/dlDBFQh-uMtMq
58 echo77
 
21.08.16
06:41
+ (57) Просто в выбранных полях группировки разворачиваете(удаляете) автополе и перечисляете те поля, которые необходимо вывести
59 almar
 
21.08.16
07:52
(0) Интересно, а в чем смысл этого регистра? ООО Ромашка каждое первое число каждого месяца отгружает без ндс, каждое второе число с НДС 10%, а пятнадцатого числа каждого месяца - с ндс 18%?
60 Cyberhawk
 
22.08.16
10:37
(47) (51) А где же описание, как это сделать в СКД?
61 Radkt
 
22.08.16
10:49
(0) в ресурсы загоняйте не числовое поле которое должно быть на пересечении столбцов и колонок, в ресурсах убираете функцию "сумма" (по умолчанию) и все будет выводить в схеме таблица с нужными колонками и строками ;)
62 RomanYS
 
22.08.16
15:17
(60) всё как расписано в следующих постах
- нумерация строк в запросе
- группировка "контрагент, номер"
- поле номер скрыто, общие итоги скрыты
63 ghostishe
 
23.08.16
00:52
(60)
Если интересует сам запрос, могу выложить.
64 trust
 
25.08.16
19:17
Добрый день. Очень интересует запрос. Выложите пожалуйста.
65 Cyberhawk
 
25.08.16
21:28
(63) Ага, давай уже выкладывай для ленивых
66 RomanYS
 
25.08.16
21:30
(65)

ВЫБРАТЬ
    ЗаказыКонтрагентам.Контрагент,
    ЗаказыКонтрагентам.День,
    ЗаказыКонтрагентам.Час,
    1 КАК Поле1
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрСведений.ЗаказыКонтрагентам КАК ЗаказыКонтрагентам
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Контрагент,
    ВТ.День,
    ВТ.Час,
    СУММА(ВТ1.Поле1) КАК Номер
ПОМЕСТИТЬ ВТ2
ИЗ
    ВТ КАК ВТ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
        ПО ВТ.Контрагент = ВТ1.Контрагент
            И ВТ.День = ВТ1.День
            И ВТ.Час.Порядок >= ВТ1.Час.Порядок

СГРУППИРОВАТЬ ПО
    ВТ.Час,
    ВТ.День,
    ВТ.Контрагент