|
Получить Типы из ОписаниеТипов в запросе | ☑ | ||
---|---|---|---|---|
0
Merkalov
28.12.21
✎
04:55
|
Добрый день.
Суть задачи: Запросом вытянуть записи из регистра бухгалтерии ГДЕ ТипЗначения значения установленного в качестве субконто не соответствует типам, указанным для данного ВидаСубконто в ПВХ.ВидыСубконто. Берем физическую таблицу ЗначенияСубконто: ХозрасчетныйСубконто.Вид -- ВидСубконто (Элемент ПВХ) ХозрасчетныйСубконто.Вид.ТипЗначения -- ОписаниеТипов, содержит возможные типы Субконто. ТипЗначения(ХозрасчетныйСубконто.Значение) -- Наш тип, не соответствующий ни одному из типов указанный в ОписанииТипов строкой выше, а соответствовать должен, его и ищем. Вопрос: Как сравнить «ТИП» и Типы/Тип из «ОписаниеТипов» в запросе, исключительно в запросе. Важное условие: Текст запроса с параметрами можно сформировать только 1 раз. Из идей: В параметры подсунуть типы или пустые ссылки на все виды субконто (не предполагается что они будут составными в данной конфигурации), но запрос будет жить сам по себе и каждый раз возвращаться к нему чтобы добавить туда новый параметр под новый вид субконто - не системно) Ещё идеи: Пустую ссылку/тип добавить уже как реквизит ПВХ (присваивать значение ПриЗаписи) - ради одной мелкой задачи как-то громоздко. |
|||
1
Merkalov
28.12.21
✎
05:05
|
Как присвоить значение не соответствующее типу субконто:
Для счета определен ВидСубконто1 - "БанковскиеСчета", тип значения - "СправочникСсылка.БанковскиеСчета", но в проводках для данного счета можно указать значение не из справочника БанковскиеСчета, а скажем из справочника Контрагенты, главное условие – чтобы под «кривое» значение был ТипСубконто в ПВХ, в противном случае платформа не даст присвоить значение (значение субконто примет значение «Неопределено»). |
|||
2
hhhh
28.12.21
✎
05:48
|
(1) не, много раз присваивал, платформа всё дает, можно и контрагенты и номенклатуру и всё, что хочешь. Это вам кто-то лапшу на уши навешал.
|
|||
3
Merkalov
28.12.21
✎
05:52
|
(2) Проверял же, не с чьих-то слов говорю, не дает любое значение присвоить, а только если под данный тип значения есть ВидСубконто в ПВХ. Платформа 8.3.10
|
|||
4
hhhh
28.12.21
✎
06:03
|
(3) так это не платформа, это у вас в программе заглушки какие-то стоят. Попробуйте
ОбменДанными.Загрузка = Истина; для набора записей указать, тогда присваивание будет в режиме обмена данными, то есть без всяких проверок. |
|||
5
Merkalov
28.12.21
✎
06:23
|
(4) Это же само собой. Повторный тест уже на бух. базе вернул мне тот же результат о котором я говорил выше. К решению задачи это не имеет отношения, так что переубеждать вас не буду.
|
|||
6
youalex
28.12.21
✎
06:30
|
Можно конечно программно сначала заполнить таблицу значений ПВХСсылка/Тип и запихать ее в вт, а дальше лефт джойн
|
|||
7
Merkalov
28.12.21
✎
06:36
|
(6) Об этом способе писал в самом посте, запрос будет сформирован программно и отдан "как есть", но как только добавится новый вид субконто - запрос станет не актуальным, нужно будет ручками добавлять новый параметр или обработкой переформировывать запрос с параметрами, чего очень не хочется.
|
|||
8
Мимохожий Однако
28.12.21
✎
07:04
|
из справки по языку запросов.
Приведение типа Поля исходных таблиц могут иметь составной тип. Для таких полей возникает необходимость привести значения поля к какому-либо определенному типу. <Приведение типа> | ВЫРАЗИТЬ ( <Выражение> КАК <Тип значения> ) | БУЛЕВО | ЧИСЛО [(Длина[, Точность])] | СТРОКА [(Длина)] | ДАТА | <Имя таблицы> <Длина> - ЧИСЛО; <Точность> - ЧИСЛО <Выражение> приводится к одному из примитивных типов, или к ссылочному типу данных; в последнем случае <Имя таблицы> указывает на соответствующую таблицу информационной базы. Если <Выражение> содержит в составном типе требуемый <Тип значения>, то приведение типа считается осуществимым, и для каждого значения указанного типа результатом будет это самое значение. Для значений других типов результатом приведения типа будет значение NULL. Если <Выражение> не содержит в составном типе требуемый <Тип значения>, то выполнение данного запроса завершится ошибкой из-за принципиальной невозможности совершить приведение типов. Для <Тип значения> СТРОКА с указанием длины максимальный размер строки составляет 1024. ... Ты бы не стеснялся, а привёл кусок кода, что уже успел наваять. Глядишь, народ и подтянется |
|||
9
Merkalov
28.12.21
✎
07:15
|
(8) Опять же, чтобы использовать "Выразить", нужно знать что писать после "КАК", что опять приводит к потребности ввода этих данных извне, а не получение запросом. Запрос универсальный и не должен смотреть на субконто определенного счета с известными типами этих субконто. Запрос требуется для некого контроля. Код скинуть не могу, потому что его нет) Нужна идея, а код напишется.
|
|||
10
Мимохожий Однако
28.12.21
✎
07:25
|
Ты сделай запрос хотя бы по одному типу, а потом уже тянись к универсальности. В чём истинная причина подобной задачи? Обсуждаем возможный инструментарий, а я так и не понял.
|
|||
11
hhhh
28.12.21
✎
07:32
|
(9) а в чем смысл именно писать эту обработку в запросе? Ведь понятно, что меняют вид субконто у счета один раз в 5-10 лет. Поэтому такая разработка понадобится раз в 5 лет. И можно спокойно сделать всё в коде, без всяких запросов, потому что время выполнения неважно. Это же разовая обработка. Пусть хоть сутки выполняется.
|
|||
12
Merkalov
28.12.21
✎
07:37
|
(10) Зачем рисовать очевидный запрос? Он и в голове помещается, тут не сработает "накидай, а дальше само пойдет". Инструмент контроля за проводками, у субконто есть тип и значение должно ему соответствовать. Этот запрос - маленький кусочек инструмента.
(11) Есть N-программистов пишущих самописку, не все и не всегда пишут код под проводки корректно, цель исправлять такие ситуации сейчас, а не через полгода с конвертацией большого числа данных. |
|||
13
Мимохожий Однако
28.12.21
✎
07:41
|
(12) Так и делай этот контроль при записи в регистр. Запрос при этом не нужен.
Заодно и проверишь работу "N-программистов". Какие действия планируешь при обнаружении неправильной записи? |
|||
14
Merkalov
28.12.21
✎
07:50
|
(13) Идея нравится. За исключением того факта что записей в регистр довольно много(много-много). Да и обменом ещё что-нибудь могут закинуть. Но идея нравится, да.
>Какие действия планируешь при обнаружении неправильной записи? Просить больше так не делать. Тема на запрос актуальна. |
|||
15
Мимохожий Однако
28.12.21
✎
07:52
|
Из справки:
Правила сравнения значений ... не допускается сравнение полей неограниченной длины (строки неограниченной длины, ХранилищеЗначения, поле ТИПЗНАЧЕНИЯ из таблицы планов видов характеристик). ... Полагаю,что запрос тебе не поможет. |
|||
16
Мимохожий Однако
28.12.21
✎
07:53
|
(14) "Просить больше так не делать". А если серьёзно? Пошлёшь ты сообщение, которое увидит бухгалтер, а дальше что?
|
|||
17
Merkalov
28.12.21
✎
07:57
|
(16) Код под проводки пишет не бухгалтер...
|
|||
18
hhhh
28.12.21
✎
07:59
|
(16) ++ согласен, у нас были случаи, абсолютно всем по барабану, что там где-то есть неправильное субконто. Спокойно работают.
|
|||
19
Мимохожий Однако
28.12.21
✎
08:00
|
(17) правильно. Так что будешь делать? Как программа будет "просить"?
|
|||
20
Merkalov
28.12.21
✎
08:03
|
Товарищи, некорректное поведение будет исправлено, так или иначе, тем программистом что допустил ошибку или нет - это уже никого не интересует.
|
|||
21
hhhh
28.12.21
✎
08:03
|
(17) всё-таки, если открыть отладчик и посмотреть вид Субконто, там 200 строчек, из них пара строчек заполнена, где-то в середине списка, остальные строчки неопределено. Поэтому к сожалению ОписаниеТипов тебе не поможет. Описание типов везде одинаково и в нем все субконто, 200 штук.
|
|||
22
Мимохожий Однако
28.12.21
✎
08:14
|
(20) Но на прямой вопрос ты так и не ответил. Какое поведение программы планируешь при обнаружении ошибки?
Согласен ли ты с тем, что запрос тебе не позволит сравнить типы значений? |
|||
23
acht
28.12.21
✎
08:53
|
(12) > Есть N-программистов
А N+1 программист спрашивает на форуме, как именно им это делать. Милота. |
|||
24
Фрэнки
28.12.21
✎
09:50
|
(23) имхо, это примерно из той же оперы, как из компании с численностью программистов в 2 700 человек приходят на мисту с вакансией на РП
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |