|
Виртуальная таблица периодического регистра сведений | ☑ | ||
---|---|---|---|---|
0
Ненавижу Неопределен
26.09.12
✎
10:37
|
Хочу ВТ периодического регистра сведений - периоды действия
Как считаете надо? |
|||
1
Азат
26.09.12
✎
10:37
|
нет канеш
|
|||
2
DrShad
26.09.12
✎
10:40
|
(0) что есть желание это похвально, но не нужно это - от лукавого все
|
|||
3
Kashemir
26.09.12
✎
10:43
|
Слишком редко встречаются задачи для таких вт.
|
|||
4
Ненавижу Неопределен
26.09.12
✎
10:44
|
||||
5
narayanan
26.09.12
✎
10:44
|
не надо
|
|||
6
DrShad
26.09.12
✎
10:45
|
(4) в чем суть твоей ветки?
|
|||
7
Ненавижу Неопределен
26.09.12
✎
10:46
|
(6) в том, что постоянно натыкаются либо на грабли, либо городят сами - а можно ыбло воткнуть в платформу
|
|||
8
DrShad
26.09.12
✎
10:48
|
(7) так ты пиши Нуралиеву, тут чего
|
|||
9
Kashemir
26.09.12
✎
10:48
|
(7) Т.е. та же простенькая лабуда но на ВТ, плюс лишние условия на сравнения МЕЖДУ - будут полезны ? Это кому вообще нужно - начинающим программистам ?
|
|||
10
Ненавижу Неопределен
26.09.12
✎
10:49
|
(8) хочу писать сюда, это форум кастельно 1С
(9) будут полезны, даже тебе |
|||
11
DrShad
26.09.12
✎
10:50
|
(10) ну удачного вам нытья здесь
|
|||
12
Ненавижу Неопределен
26.09.12
✎
10:51
|
(11) тогда уходи
|
|||
13
Kashemir
26.09.12
✎
11:00
|
(10) Вот тебе пример того как универсально собрать запрос того вида что ты хочешь. А для себя полезности не вижу - с "закрытыми глазами" могу решить подобные проблемы.
// возвращает запрос с периодами действий произвольного периодического регистра с полным набором полей Функция Спец_ПолучитьИсточникРегистраИнтервалами(ИмяРегистра) Часть1 = "ВЫБРАТЬ | Таб.Период КАК Период, | МИНИМУМ(ЕСТЬNULL(КонцыИнтервалов.Период, ДАТАВРЕМЯ(2111, 11, 11))) КАК _КонецПериодаДействия"; Часть2 = ""; Часть3 = ""; Часть4 = "СГРУППИРОВАТЬ ПО | Таб.Период"; МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра]; Для каждого Изм из МетаданныеРегистра.Измерения Цикл Часть1 = Часть1 +"," + Символы.ПС + Символы.Таб + "Таб." + Изм.Имя+ " КАК " + Изм.Имя; Часть2 = Часть2 + Символы.ПС + " И Таб." + Изм.Имя + " = КонцыИнтервалов." + Изм.Имя; Часть3 = Часть3 + ?(ПустаяСтрока(Часть3), "", "," ) + Символы.ПС + " Таб." + Изм.Имя + ?(ДанныйТипРазворачивается(Изм.Тип), ".*","") + " КАК " + Изм.Имя; Часть4 = Часть4 + "," + Символы.ПС + " Таб." + Изм.Имя; КонецЦикла; Для каждого Рес из МетаданныеРегистра.Ресурсы Цикл Часть1 = Часть1 +"," + Символы.ПС + Символы.Таб + "Таб." + Рес.Имя+ " КАК " + Рес.Имя; Часть3 = Часть3 + ?(ПустаяСтрока(Часть3), "", "," ) + Символы.ПС + " Таб." + Рес.Имя + ?(ДанныйТипРазворачивается(Рес.Тип), ".*","") + " КАК " + Рес.Имя; Часть4 = Часть4 + "," + Символы.ПС + " Таб." + Рес.Имя; КонецЦикла; Для каждого Рекв из МетаданныеРегистра.Реквизиты Цикл Часть1 = Часть1 +"," + Символы.ПС + Символы.Таб + "Таб." + Рекв.Имя+ " КАК " + Рекв.Имя; Часть3 = Часть3 + ?(ПустаяСтрока(Часть3), "", "," ) + Символы.ПС + " Таб." + Рекв.Имя + ?(ДанныйТипРазворачивается(Рекв.Тип), ".*","") + " КАК " + Рекв.Имя; Часть4 = Часть4 + "," + Символы.ПС + " Таб." + Рекв.Имя; КонецЦикла; Часть3 = ?(ПустаяСтрока(Часть3) , "", " {ГДЕ" + Символы.ПС + Часть3 + "}" + Символы.ПС); Возврат Часть1 + " ИЗ " + Символы.ПС + " РегистрСведений." + ИмяРегистра + " КАК Таб" + Символы.ПС + " ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений." + ИмяРегистра + " КАК КонцыИнтервалов" + Символы.ПС + " ПО Таб.Период < КонцыИнтервалов.Период" + Часть2 + Часть3 + Часть4; КонецФункции // Функция, позволяющая определить возможность разыменования для данного описания типов Функция ДанныйТипРазворачивается(ОписаниеТипа, НеРазворачиватьПланыВидовХарактеристик = Ложь) Для каждого Тип из ОписаниеТипа.Типы() Цикл ТипМетаданных = Метаданные.НайтиПоТипу(Тип); Если ТипМетаданных <> Неопределено Тогда Если (Метаданные.ПланыВидовХарактеристик.Содержит(ТипМетаданных) И Не НеРазворачиватьПланыВидовХарактеристик) Или Метаданные.Справочники.Содержит(ТипМетаданных) или Метаданные.Документы.Содержит(ТипМетаданных) или Метаданные.ПланыСчетов.Содержит(ТипМетаданных) или Метаданные.ПланыВидовРасчета.Содержит(ТипМетаданных) или Метаданные.ПланыВидовРасчета.Содержит(ТипМетаданных.Родитель()) тогда Возврат Истина; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции |
|||
14
Ненавижу Неопределен
26.09.12
✎
11:01
|
(13) молодец, это нечитабельное гауно
|
|||
15
Kashemir
26.09.12
✎
11:02
|
(14) Ясно, досвиданья
|
|||
16
Ненавижу Неопределен
26.09.12
✎
11:02
|
(15) аналогично
|
|||
17
Gesperid
26.09.12
✎
11:08
|
(13) если такие задачи редко встречаются, зачем функцию навелосипедил?
|
|||
18
ПиН
26.09.12
✎
11:13
|
а чо, хорошая функция... если работает...
|
|||
19
Kashemir
26.09.12
✎
11:15
|
(17) На старой работе написал для сверхпродвинутых пользователей скд отчет, где они самостоятельно интерактивно выбирали и произвольно компоновали любые источники данных, в том числе и эмуляции периодов действия. В результате программистам осталось не более 1% отчета из заказываемых пользователей, тех что чистой СКД не слепишь.
(18) Работает. |
|||
20
Kashemir
26.09.12
✎
11:21
|
+(19) Так выглядели источники со стороны пользователей http://s60.radikal.ru/i167/1209/7c/d3198d547e85.png
|
|||
21
Ненавижу Неопределен
26.09.12
✎
11:22
|
(19) а если нет изменения регистра в заданном интервале?
|
|||
22
Kashemir
26.09.12
✎
11:24
|
(21) Суть вопроса неясна. Выполни Спец_ПолучитьИсточникРегистраИнтервалами(ИмяРегистра) - получи запрос и в консоли его выполни - может вопросы сами отпадут.
|
|||
23
Ненавижу Неопределен
26.09.12
✎
11:25
|
(22) ща
|
|||
24
Ненавижу Неопределен
26.09.12
✎
11:31
|
кстати, это могла быть физическая даже таблица
|
|||
25
Ненавижу Неопределен
26.09.12
✎
11:32
|
+(230 там нет границ периодов
|
|||
26
Gesperid
26.09.12
✎
11:34
|
(20) залей плиз на другой хостинг, например, http://imageshost.ru/
|
|||
27
Kashemir
26.09.12
✎
11:35
|
(25) Есть действие записи С и ПО. Если это не границы периода, то тогда имеет место неопределенность терминологии.
|
|||
28
Ненавижу Неопределен
26.09.12
✎
11:36
|
валюта менялась
01.01 01.02 01.05 01.12 я хочу интервал периодов с 15.03 по 20.11 |
|||
29
Kashemir
26.09.12
✎
11:36
|
||||
30
Kashemir
26.09.12
✎
11:38
|
(28) Получишь интервалы
01.01 - 01.02 01.02 - 01.05 01.05 - 01.12 01.12 - 11.111 (принял за максдату) |
|||
31
Ненавижу Неопределен
26.09.12
✎
11:39
|
(30) а надо
15.03-01.05 01.05-20.11 или хотя бы 01.02-01.05 01.05-01.12 |
|||
32
Gesperid
26.09.12
✎
11:41
|
(19) а РС с ресурсом ПериодЗавершения как обрабатывал? Имхо, такие МЕГАотчеты не знаю досконально конфу изнутри черевато использовать
|
|||
33
Kashemir
26.09.12
✎
11:41
|
(31) Тогда на интервалы надо еще сверху условия твоего периода наложить.
|
|||
34
Ненавижу Неопределен
26.09.12
✎
11:43
|
(33) вот именно, но ты красавчик, извиняюсь за (14)
|
|||
35
Kashemir
26.09.12
✎
11:43
|
(32) Аналогов таких отчетов я тоже не видел и вряд ли увижу. Имхо оно такое и не надо - для этого пользователи нужны крайне специфические. Научить им пользоваться - это все равно что запросы научить писать.
|
|||
36
Kashemir
26.09.12
✎
11:45
|
(34) Без обид :)
|
|||
37
Ненавижу Неопределен
26.09.12
✎
11:46
|
(35) почему крайне редки - продажи ведутся в УЕ, а нужно в рублях по курсу продажи, как пример
|
|||
38
Kashemir
26.09.12
✎
11:48
|
(37) Да это мы про отчет в (29)
|
|||
39
Gesperid
26.09.12
✎
11:48
|
(35) так регистры сведений с ресурсом ПериодЗавершения ты обрабатывал особо или нет?
|
|||
40
Kashemir
26.09.12
✎
11:49
|
(39) Мне непонятен какой смысл ты вкладываешь в имя ресурса.
|
|||
41
Kashemir
26.09.12
✎
11:49
|
(39) Если требуется что-то отличное от какой-то общей модели, конечно надо пилить отдельно.
|
|||
42
Gesperid
26.09.12
✎
11:53
|
||||
43
Ненавижу Неопределен
26.09.12
✎
11:54
|
(42) нет доступа, что там?
|
|||
44
Gesperid
26.09.12
✎
11:56
|
В статье рассказывается о внутреннем устройстве механизма регистрации "кадровых" (в широком смысле этого слова) изменений, характеризующихся двумя датами – датой изменения состояния и датой возврата в исходное состояние, а также объясняется, почему было принято именно такое решение.
Под кадровыми (в широком смысле этого слова) изменениями, о которых пойдет далее речь, будем понимать: "настоящие" кадровые перемещения сотрудников (т. е. изменение должности и/или подразделения, других сведений о рабочем месте) на определенный срок; отпуска, болезни, командировки и прочие целодневные (т. е. продолжающиеся один день и более) неявки сотрудников; назначение каких-либо начислений, например, доплат и надбавок на определенный срок. |
|||
45
Ненавижу Неопределен
26.09.12
✎
11:57
|
(44) ну и что?
|
|||
46
Gesperid
26.09.12
✎
11:59
|
(45) да то, что периоды действия в этом случае иначе определяются
|
|||
47
Kashemir
26.09.12
✎
12:03
|
(46) Я так понимаю, в этом случае вообще достаточно просто физической таблицы. Период = НачалоИнтервала, ресурс ПериодЗавершения = КонецИнтервала. Ничего додумывать не надо.
|
|||
48
Gesperid
26.09.12
✎
12:18
|
(47) не, не так
В случае пересечения периодов физической таблицы - ПериодЗавершения, оказавшийся после Периода другой записи, не учитывается. Например, у записей: 01.01, 11.03, Состояние1, Состояние2 01.02, 01.03, Состояние3, Состояние4 периоды действия следующие: 01.01-31.01 Состояние1 01.02-29.02 Состояние3 01.03-бессрочно Состояние4 |
|||
49
Ненавижу Неопределен
26.09.12
✎
12:20
|
(48) это совсем другая история, вытеснения
|
|||
50
Gesperid
26.09.12
✎
12:21
|
(49) На уровне отчета "для пользователя" как раз это и необходимо
|
|||
51
Kashemir
26.09.12
✎
12:21
|
(48) Эмуляция вытеснения это другая задача
|
|||
52
Kashemir
26.09.12
✎
12:22
|
(50) Пока работал - нужды такое делать не было. Но и сложностей такое сделать - тоже не вижу.
|
|||
53
Gesperid
26.09.12
✎
12:29
|
(52) ну это не только вытеснение, но в сделать можно - да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |