|
СКД, доп. реквизиты в запросе | ☑ | ||
---|---|---|---|---|
0
tesei
12.05.22
✎
09:24
|
Бухгалтерия 3.0. В номенклатуре доп. реквизит Вес, вид Число 14,3. Делаю отчет на СКД:
ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, РеализацияТоваровУслугТовары.Количество КАК Количество, НоменклатураДополнительныеРеквизиты.Значение КАК Вес ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ПО РеализацияТоваровУслугТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка ГДЕ НоменклатураДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО &ИмяСвойства И РеализацияТоваровУслугТовары.Ссылка = &Ссылка Вес выводит, но не воспринимает его как число: нет в итогах, нельзя умножить на количество в запросе. Меняю код, вес считаю через Выразить: ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, РеализацияТоваровУслугТовары.Количество КАК Количество, Выразить(НоменклатураДополнительныеРеквизиты.Значение КАК Число(14,3)) КАК Вес ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ПО РеализацияТоваровУслугТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка ГДЕ НоменклатураДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО &ИмяСвойства И РеализацияТоваровУслугТовары.Ссылка = &Ссылка Теперь Вес можно перемножать, но он везде = 0. Как это можно исправить? |
|||
1
tesei
12.05.22
✎
09:50
|
Может быть, поместить во временную таблицу?
|
|||
2
Kassern
12.05.22
✎
09:58
|
(0) Как вы думаете, что будет, если у части номенклатуры данный доп реквизит будет не заполнен?)
Как отработает вот этот кусок?) ГДЕ НоменклатураДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО &ИмяСвойства |
|||
3
tesei
12.05.22
✎
10:11
|
(2) Заполнено в параметрах СКД, "%Вес%", иначе бы первый запрос не работал. Ссылка выбирается на форме. Отчет выдает правильный вес, но не считает его числом.
|
|||
4
tesei
12.05.22
✎
10:11
|
+(3) и там левое соединение.
|
|||
5
Kassern
12.05.22
✎
10:12
|
(3) А как вы думаете, что будет с общей таблицей после соединения, если вы обрезаете условием по правой таблице?
|
|||
6
Kassern
12.05.22
✎
10:17
|
Вот вам простой пример
Таб1 Номенклатура | Количество Стакан 10 Кружка 20 Таб2 Номенклатура | Свойство | Значение Стакан Вес 0.5 Как вы думаете, что будет в итоговой, когда вы левым соединением к таб1 прикрутите таб2 по номенклатуре и сделаете отбор Где Таб2.Свойство=Вес? |
|||
7
tesei
12.05.22
✎
10:28
|
Ну хорошо, тогда как сделать правильно?
|
|||
8
Kassern
12.05.22
✎
10:33
|
(7) вы должны понимать, что отбор работает уже после соединения таблиц. Для того, чтобы не потерять данные из реализации, вам нужно либо изначально сделать отбор в правой таблице и готовую уже поместить во временную таблицу (ее уже соединять с основной таблицей). Либо в самом соединении прописать условие ПО РеализацияТоваровУслугТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка И НоменклатураДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО &ИмяСвойства
|
|||
9
Kassern
12.05.22
✎
10:34
|
Попробуйте еще заменить подобно на равно
|
|||
10
Kassern
12.05.22
✎
10:34
|
и указать точное наименование
|
|||
11
СвинТуз
12.05.22
✎
10:36
|
Как правильно = долго объяснять
Не буду. Пока есть такие коллеги у меня будет работа по оптимизации. В чем проблема? Не все данные? Это коллега написал выше. ЕстьNULL пробовали? "И дают таким ружье?" (С) И зарплату высокую. Все такими были. Когда вводишь свойство, нужно указывать имя для программиста. |
|||
12
СвинТуз
12.05.22
✎
10:37
|
Проблема в чем? В том что не прермножается?
ЕстьNULL Какой вопрос, такой ответ. |
|||
13
СвинТуз
12.05.22
✎
10:38
|
Вообще странно
Вроде большенький. Одногодка. 15 лет стажа ) Удачи коллега. |
|||
14
Kassern
12.05.22
✎
10:41
|
(12) Это хорошо, что на данном этапе тормознул. Было бы гораздо хуже, когда вес вывелся и посчитался. А потом через несколько месяцев руководство заметило, что числа сильно занижены и выяснилось, что часть строк тупо обрезалась и планировние шло по одному месту все это время. А все из-за отбора по правой таблице и косяков в заведении веса в карточках номенклатуры)
|
|||
15
СвинТуз
12.05.22
✎
10:41
|
Топорная работа на 16-м году кодирования. )
|
|||
16
Kassern
12.05.22
✎
10:42
|
хорошо ведь, когда отчет работает, строчки какие-то выводит, суммы считает вроде даже пару совпало)
|
|||
17
СвинТуз
12.05.22
✎
10:42
|
(14)
Ну да. Запрос кривой. И не только по этому. Подход г...но. |
|||
18
Kassern
12.05.22
✎
10:44
|
мой совет ТС, купите пару книжек Хрусталевой по запросам и СКД, многие вопросы сами отпадут
|
|||
19
СвинТуз
12.05.22
✎
10:44
|
Скорость отбора будет завышена по сравнению с той что могла бы быть.
|
|||
20
СвинТуз
12.05.22
✎
10:44
|
(18)
Не трогай его. Он 15 лет за еду пишет. |
|||
21
СвинТуз
12.05.22
✎
10:46
|
Поздно учить. До пенсии 15 лет.
Судя по виду на аватарке не доживет ) |
|||
22
youalex
12.05.22
✎
10:46
|
Чем типовой механизм характеристик не устраивает? В БП для Номенклатуры он настроен для Справочник.Номенклатура.ТабличнаяЧасть.ДополнительныеРеквизиты в том числе.
|
|||
23
СвинТуз
12.05.22
✎
10:51
|
ох. виноват )))
это еще и СКД ) Батюшки святы ... Тогда еще больше вариантов. Ленивые не пишут код. |
|||
24
СвинТуз
12.05.22
✎
10:52
|
Видимо вариант отчета придется только в пользовательском настраивать.
|
|||
25
tesei
12.05.22
✎
11:49
|
Спасибо, коллеги. Запрос подправил, появились строки накладной без веса :) Основная проблема в том, что значение - это составной тип данных, который не хочет преобразовываться в число.
|
|||
26
Kassern
12.05.22
✎
11:56
|
(25) а теперь эти строки нужно проверять на нулл и преобразовывать в 0
|
|||
27
Kassern
12.05.22
✎
11:57
|
Тогда тип будет числовой у поля и можно будет суммировать. А то у вас получается
Кружка 10 Ложка Null Вилка 5 Итого редиска! |
|||
28
tesei
12.05.22
✎
13:28
|
ЕСТЬNULL(ВложенныйЗапрос.Вес, 0) - пустое значение во всех строках
ВложенныйЗапрос.Вес даёт значение веса, но выглядит в отчёте как строка (форматирование влево по умолчанию), в то время как Количество отформатировано как число, вправо. |
|||
29
tesei
12.05.22
✎
17:35
|
Сделал через обычную внешнюю печатную форму, ну его нафиг, этот СКД. Вес преобразовал из строки в число. Итоговый вес посчитал инкрементом в цикле. Дёшево, сердито, без понтов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |