Имя: Пароль:
1C
 
Получение типа документа в запросе.
0 segun
 
10.08.10
14:17
Подскажите пожалуйста, как в запросе получить тип документа. По аналогии
Документ.Метаданные.Имя();

Насколько я понял ключевое слово Ссылка может работать только как условие. А хотелось бы именно получить тип Документа с тем чтобы например потом сделать по нему группировку.
1 Kashemir
 
10.08.10
14:19
Никак. Только через выразить к явному типу с последующей проверкой полученого значения.
2 shuhard
 
10.08.10
14:19
(0) про Выбор сам догадаешься ?
3 Defender aka LINN
 
10.08.10
14:19
ВЫБОР
   КОГДА Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
       Тогда "Реализация товаров и услуг"
   КОГДА Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
       Тогда "Поступление товаров и услуг"
   <и раз, еще раз, еще много-много раз>
КОНЕЦ КАК ТипДокумента
4 Defender aka LINN
 
10.08.10
14:20
Ну или "Переходите на 8.2, там это реализовано"
5 Нуф-Нуф
 
10.08.10
14:20
(2)(3) как-то не очень красиво...
(4) ну понятно :)
6 Kashemir
 
10.08.10
14:23
+ (1) т.е. через "ссылка" как в (3) . Это в вычисляемых выражениях схемы через "выразить".
7 segun
 
10.08.10
14:26
(3) Долгий метод. Особенно если запрос тяжелый и выполняется в СКД
8 Нуф-Нуф
 
10.08.10
14:28
(7) уже замерял производительность?
9 segun
 
10.08.10
14:31
ДА. Особенно если конфигурация УПП и видов документов много.
10 Defender aka LINN
 
10.08.10
14:32
(7) Про скорость никто и не говорил. А вот СКД тут вообще не при чем.
11 Нуф-Нуф
 
10.08.10
14:36
в качестве мелькнувшей идеи - у документов сделать префикс нумерации документа -
поступление ПТ, Реализация - РТ и так далее.
а в запросе делать поле содержащее префик номера документа - и уже по нему сортировать. имхо вариант
12 segun
 
10.08.10
14:39
Неужели у такого гениального творения как 1С 81, нет несложного метода получения типа документа.
13 Kashemir
 
10.08.10
14:41
Я проще поступил ... у всех документов есть реквизит "Вид документа" как перечисление. Значения перечислений соотвествуют метаимени. Пишутся в подписке перед записью. Главное не забыть добавить реквизит и новое значение перечисления при добавлении нового документа :)
14 ASU_Diamond
 
10.08.10
14:43
(13) а не проще организовать через РС или справочник?
15 Kashemir
 
10.08.10
14:44
(14) Конечно нет. Зачем мне лишние связки.
16 Defender aka LINN
 
10.08.10
14:46
(12) Есть.
17 ASU_Diamond
 
10.08.10
14:47
(15) чтобы типовые доки не править и при добавлении нового дока не помнить про обязательный реквизит
18 Kashemir
 
10.08.10
14:51
(17) У нас от типовой конфигурации осталось только название. На добавление любого объекта конфигурации существует регламент, с описанием набора обязательный действий для каждого (ибо над основной конфой трудится параллельно несколько программистов). Потому помнить не надо - достаточно почитать :)
19 selenat
 
10.08.10
14:51
(13) Жесть. Это называется проще...
20 Defender aka LINN
 
10.08.10
14:51
(15) *поперхнулся чаем*
21 Kashemir
 
10.08.10
14:52
(19) Ну что ты - это же крайне сложно. Не каждый справится.
(20) Крепись.
22 Defender aka LINN
 
10.08.10
15:04
(21) То есть ты заменил соединение с одной таблицей регистра на соединение со всеми таблицами документов и спрашиваешь "Зачем мне лишние связки"? :)
23 Kashemir
 
10.08.10
15:14
(22) Соединение нужно только в случае если ты хочешь получить представление самого значения вида. В случае регистра сведений соединение будет присутствовать всегда.
24 Defender aka LINN
 
10.08.10
15:16
(23) "В случае регистра сведений соединение будет присутствовать всегда" - С какого перепугу? Нужно поле - будет присутствовать, не нужно - не будет.
Хотя спор, на самом деле, ни о чем - в 1С можно получать тип значения в запросе. :)
25 segun
 
10.08.10
15:18
(13) Немного непонятно зачем такие сложности. Вне запроса Вид документа можно получить через метаданные, а в запросах, обычно хватает отбора. по слову Ссылка.
26 segun
 
10.08.10
15:18
(23)    Defender aka LINN  Подскажи страждущему народу, как получить "получать тип значения в запросе".
27 Kashemir
 
10.08.10
15:21
(24) Давай начнем с начала - определи собственно структуру регистра, где по твоему должна осуществляться привязка к виду документа - любопытно посмотреть.
28 Kashemir
 
10.08.10
15:23
(25) Оператор условия Ссылка требует явного указания типа. К примеру у нас хозрасчетный регистр бухгалтерии имеет почти 100 вариантов регистраторов. Устанешь конструкцию выбора писать.
29 Scooter
 
10.08.10
15:24
(28)>Устанешь конструкцию выбора писать

по метеданным
30 Scooter
 
10.08.10
15:26
(0)>с тем чтобы например потом сделать по нему группировку

нунафуй, не есть гут
группируй например по ВидуОперации, или по другому отличному реквизиту
31 Kashemir
 
10.08.10
15:26
(30) Программная генерация запроса - не самое удобное для разработки решение. Да и подозреваю время формирования такого запроса будет далеко от оптимального.
32 Defender aka LINN
 
10.08.10
15:27
(26) Для начала, надо обновить платформу до последней ;)
(27) Измерение - документ, ресурс - Вид.
33 Scooter
 
10.08.10
15:30
(31)>Программная генерация запроса ...
ага, а насиловать СКЛ лучше
34 Kashemir
 
10.08.10
15:33
(33) Измерение Документ - ссылка ? Ресурс вид - какой тип ?
Т.е. вместо банального реквизита перечисления в документе (по факту ссылочное значение), требуется содержать регистр сведений, с количеством записей равным количеству документов в системе где собственно само измерение является составным типом всех возможных документов... помимо прочего поимееть проблему с миграцией записей регистра с необходимость завязки на миграции самих документов - имхо это решение даже не пахнет эффективностью.
35 Kashemir
 
10.08.10
15:35
Упс (34) к (32)
36 Scooter
 
10.08.10
15:35
(34)эт не ко мне, сорри
37 Defender aka LINN
 
10.08.10
15:46
(34) "Ресурс вид - какой тип" - хоть строка. Но удобнее, конечно, справочник.
"Т.е. вместо банального реквизита перечисления в документе (по факту ссылочное значение), требуется содержать регистр сведений, с количеством записей равным количеству документов в системе" - зато будет работать. Вариант с реквизитом документа, конечно, удобен, но не забываем про 256 таблиц на MSSQL - такой запрос просто не будет работать в некоторых условиях. И можно потом сколько угодно рассказывать, что, мол, так лучше.
"помимо прочего поимееть проблему с миграцией записей регистра" - какие проблемы? Или ты хочешь сказать, что у документа может ВНЕЗАПНО поменяться вид?
38 Kashemir
 
10.08.10
15:49
(37) Вид не может поменяться. Но представь себе в УРБД, в которой у ряда документов меняется направление миграции еще и в зависимости от данных самого документа.

Составной тип измерения "все документы" в свете  256 таблиц SQL гораздо менее перспективен чем "все возможные регистраторы" регистра, с которым нас в конкретным запросе интересует
39 Kashemir
 
10.08.10
16:14
+(37) Не понимаю в чем удобство справочника, в данном случае статичного набора данных и изменений лишь на  уровне конфигурации в сравнении с перечислением.

Помимо прочего, измерение "все возможные ссылочные типы документов" может помимо прочего еще и к проблемам с правами привести.
40 ASU_Diamond
 
11.08.10
11:54
(39) ты рассматриваешь свой случай: когда конфа полностью переписана и добавить реквизит - не проблема. Таких случаев не так уж и много.
Даже если и переписана конфа, то по всем документам идти и добавлять реквизит - уже гемморой, да ещё надо прописывать заполнение этого реквизита в документах.
41 Kashemir
 
11.08.10
12:25
(40) В документы надо лишь скопипасть реквизит. Модуль документа/формы не надо трогать, достаточно в подписку на событие перед запись документа добавить строку

Объект.ВидДокументаПеречисление = Перечисления.ВидДокумента[Объект.Метаданные().Имя];

Самое трудоемкое здесь - завести элементы перечисления.
42 Defender aka LINN
 
11.08.10
12:34
(39) Справочник не нужно руками заполнять, в отличие от перечисления.
43 Kashemir
 
11.08.10
12:38
(42) Использование непредопределенных элементов замедлит получение искомого значения элемента справочника.

В тому же цена вопроса - ~ 50 минут на 300 документов.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс