|
Пересчет ед изм в отчете - как? | ☑ | ||
---|---|---|---|---|
0
kyrgyz
17.07.12
✎
07:11
|
Задачку поставили такую.
При перемещении со склада на склад обычно в документе единица измерений базовая в штуках. Но для облегчения погрузки требуют показать в двух единицах измерений. Например: Миниральная вода базовая в штуках в пачке 12 шт. Миниральная вода 150 шт ----- 12 пачек + 6 шт Как это сделать пока не осилил придумал всего лишь запрос. ВЫБРАТЬ ПеремещениеТоваров.СкладПолучатель, ПеремещениеТоваров.Товары.( Номенклатура, Количество ), ЕдиницыИзмерения.Коэффициент КАК едизм ИЗ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения ПО ПеремещениеТоваров.Товары.Номенклатура = ЕдиницыИзмерения.Владелец |
|||
1
golden-pack
17.07.12
✎
07:12
|
(0) Давай так - ты напиши свой вариант (тут чуть чуть головой подумать надо) - а я тебе скажу правильно или нет.
|
|||
2
kyrgyz
17.07.12
✎
07:16
|
голова не хочет думать по вомерочному. А все хочет по клющкински.
Я еще к тому же хочу на СКД сваять. Если не смогу то придется на обычном запросе и делить и вычитать |
|||
3
kyrgyz
17.07.12
✎
07:20
|
Может быть не стоить их объединять а сделать два звароса первый из подчиненного справочника виртуальный и потом с него отбирать то что нужно во втором запросе
|
|||
4
Cube
17.07.12
✎
07:22
|
Конфа? Платформа?
|
|||
5
Рэйв
17.07.12
✎
07:22
|
как то так...
Если ЕдИзм.Коэффициент>0 Тогда Пачек=Цел(Количество/ЕдИзм.Коэффициент; Если Пачек>0 Тогда СтрокаВывода=СтрокаВывода+Пачек+" пачек"; Остаток=Количество%ЕдИзм.Коэффициент; Если Остаток>0 Тогда СтрокаВывода=СтрокаВывода+" "+Остаток+ " шт."; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
6
Рэйв
17.07.12
✎
07:22
|
+ в начале
СтрокаВывода=""; |
|||
7
kyrgyz
17.07.12
✎
07:25
|
(4) конф = УТП казахская 1.0.18.9
платформа = 2.8.15.318 |
|||
8
Рэйв
17.07.12
✎
07:25
|
ЕдИзм- это соответственно "Пачка"
|
|||
9
Cube
17.07.12
✎
07:28
|
(7) Уууу, ну тогда говори так, в какую именно ед. изм. пересчет нужен? Есть ли в номенклатуре ед. изм. для отчетов, ед. изм. базовая и т.д.?
|
|||
10
kyrgyz
17.07.12
✎
07:31
|
(9) базовая есть и для отчета есть
Поскольку в базе будет не более двух единиц измерений для каждой номенклатуры то буду брать ту единицу кторая с коэфф не равно 1 а больше например 6 или 12 или 18. Ну или как вариант отбором сделаю ссылку на наименование и заставлю их чтоб они везде именовали пачка а не упаковка или еще что нибудь |
|||
11
Cube
17.07.12
✎
07:31
|
+(9) Может в документе "Перемещение" есть колонка ед. изм. мест и вы её заполняете?
|
|||
12
Cube
17.07.12
✎
07:32
|
(10) А у номенклатуры есть ед. изм. мест?
|
|||
13
kyrgyz
17.07.12
✎
07:33
|
да есть
|
|||
14
Cube
17.07.12
✎
07:34
|
(13) Это ответ на какой вопрос?
|
|||
15
kyrgyz
17.07.12
✎
07:37
|
(14) ед. изм. мест есть. Натолкнул меня на мысль что надо его использовать. Но я в начале думал что их нельзя трогать типа они могут повлиять на отчеты. Думаю на отчеты повлияют другие реквизиты типа единица для отчетов или единица базовая
|
|||
16
kyrgyz
17.07.12
✎
07:37
|
Во еще оказывается есть единица хранения остатков.
|
|||
17
Cube
17.07.12
✎
07:38
|
(15) "ед. изм. мест есть" - где? В номенклатуре или в документе? Или и там и там?
Если есть, то само-собой надо использовать. |
|||
18
Cube
17.07.12
✎
07:55
|
Думаю, что в запросе лучше всего будет сделать так: http://storage9.static.itmages.ru/i/12/0717/h_1342497296_2478778_a14bdb60f2.png
Вот запрос: ВЫБРАТЬ ПеремещениеТоваровТовары.Номенклатура, ПеремещениеТоваровТовары.Количество, ПеремещениеТоваровТовары.ЕдиницаИзмерения, ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест, ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ИзмеренияМестКоэффициент, ВЫБОР КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) < 0 ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) - 1 ИНАЧЕ ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0)) КОНЕЦ КОНЕЦ КАК КоличествоПолныхМест, ВЫБОР КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) < 0 ТОГДА ПеремещениеТоваровТовары.Количество - ((ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) - 1) * ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент ИНАЧЕ ПеремещениеТоваровТовары.Количество - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) * ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КОНЕЦ КОНЕЦ КАК ДопКоличество ИЗ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ГДЕ ПеремещениеТоваровТовары.Ссылка = &Ссылка |
|||
19
Cube
17.07.12
✎
07:58
|
+(18) В колонки таблицы ед. изм из номенклатуры тяну, а не из документа - косячнул))
В расчетах участвуют ед. изм. из документа. |
|||
20
kyrgyz
17.07.12
✎
08:09
|
Ух тыыы!!! Спасибо! буду разбираться и отпишусь как у меня взлетело или нет
|
|||
21
andrewks
17.07.12
✎
08:17
|
(18) чё-то ты слишком накрутил. можно же проще
|
|||
22
Cube
17.07.12
✎
09:01
|
(21) Всегда готов выслушать конструктивную критику))
|
|||
23
kyrgyz
17.07.12
✎
09:03
|
(19) Прошу прощения отлучился.
Вобщем подставил то что предложили с с учетом (19) Но полном вытаскивает полных мест а при дробном доп места вытаскивает но полных ноль. (21) +1 Мне тоже не нравиться длинные строки запросы. Нельзя ли уменьшить количество точек? Пока довольстуюсь тем что есть. |
|||
24
andrewks
17.07.12
✎
09:05
|
(23) ты, для начала, расскажи, где лежит нужная единица - есть она в номенклатуре, или её выбирать надо?
|
|||
25
Cube
17.07.12
✎
09:05
|
(23) Запрос показывай.
|
|||
26
kyrgyz
17.07.12
✎
09:09
|
ВЫБРАТЬ
ПеремещениеТоваровТовары.Номенклатура, ПеремещениеТоваровТовары.Количество, ПеремещениеТоваровТовары.ЕдиницаИзмерения, ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест, ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ИзмеренияМестКоэффициент, ВЫБОР КОГДА ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) < 0 ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) - 1 ИНАЧЕ ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0)) КОНЕЦ КОНЕЦ КАК КоличествоПолныхМест, ВЫБОР КОГДА ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) < 0 ТОГДА ПеремещениеТоваровТовары.Количество - ((ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) - 1) * ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент ИНАЧЕ ПеремещениеТоваровТовары.Количество - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 0))) * ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КОНЕЦ КОНЕЦ КАК ДопКоличество ИЗ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ГДЕ ПеремещениеТоваровТовары.Ссылка = &Ссылка |
|||
27
andrewks
17.07.12
✎
09:10
|
чё-то у меня в глазах двоится...
|
|||
28
Cube
17.07.12
✎
09:13
|
(26) Ну и? У меня работает... Скриншот неправильного результата давай.
|
|||
29
andrewks
17.07.12
✎
09:14
|
(2) ну, как бы мысль простая - кастовать к целому числу результат деления общего кол-ва на коэффициент, и + вычислять разницу. делов на пару-тройку строк
|
|||
30
andrewks
17.07.12
✎
09:14
|
(29) к (22)
|
|||
31
Cube
17.07.12
✎
09:16
|
(29) Ну дык, а я так и делаю...
|
|||
32
andrewks
17.07.12
✎
09:17
|
(31) а чё так длинно делаешь-то? :)
|
|||
33
Cube
17.07.12
✎
09:18
|
(32) Че-то по-короче не получилось, епта)))
|
|||
34
andrewks
17.07.12
✎
09:25
|
(33) во-первых, зачем постоянно проверять через выбор на ноль Коэффициент? можно просто соединить с таблицей единиц и прописать в условии соединения Коэффициент>0, и потом просто использовать isnull.
во-вторых, закладываешь формулы: КолвоЦелыхМест = isnull(cast(КолвоОбщее/Коэффициент-0.5 as number(15,0)),0), КолвоДопШтук = КолвоОбщее-isnull(cast(КолвоОбщее/Коэффициент-0.5 as number(15,0)),0) |
|||
35
Cube
17.07.12
✎
09:27
|
(34) Короче, всё то же самое, только ты сначала 0,5 отнял, что в принципе красивый ход))
|
|||
36
andrewks
17.07.12
✎
09:29
|
(35) не только. ещё финт с нуллом. в итоге получится в 4 строки - две на формулы для двух полей, и две - на соединение :)
|
|||
37
kyrgyz
17.07.12
✎
09:29
|
||||
38
Cube
17.07.12
✎
09:32
|
(37) Не знаю, чего ты там наворотил ещё, но вот тебе запрос, немного по-красивее:
ВЫБРАТЬ ПеремещениеТоваровТовары.Номенклатура, ПеремещениеТоваровТовары.Количество, ПеремещениеТоваровТовары.ЕдиницаИзмерения, ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест, ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент, ВЫБОР КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент - 0.5 КАК ЧИСЛО(15, 0)) КОНЕЦ КАК КоличествоПолныхМест, ВЫБОР КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент = 0 ТОГДА 0 ИНАЧЕ ПеремещениеТоваровТовары.Количество - (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент - 0.5 КАК ЧИСЛО(15, 0))) * ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест.Коэффициент КОНЕЦ КАК ДопКоличество ИЗ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ГДЕ ПеремещениеТоваровТовары.Ссылка = &Ссылка |
|||
39
Serg_1960
17.07.12
✎
09:38
|
Сорри, коллеги. Я сова - по утрам медлено врубаюсь. Что-то у вас (имхо) неверный перевод в единицы измерения мест из единиц измерения документа (а там может быть любая единица измерения). Разве онне через базовые пересчитывается?
|
|||
40
andrewks
17.07.12
✎
09:42
|
|
|||
41
andrewks
17.07.12
✎
09:43
|
при необходимости, прямо в формуле можно пересчитать общее кол-во в накладной в базовое, по совету (39)
|
|||
42
andrewks
17.07.12
✎
09:45
|
чёртов копипаст. ещё аз:
|
|||
43
kyrgyz
17.07.12
✎
09:45
|
(39) Замечание очень логичное. Но пока бы мне добиться чтоб хотяб это получить. Допуская что в документе ед измерения с кофф 1.
|
|||
44
kyrgyz
17.07.12
✎
09:47
|
У меня почему то все время ПеремещениеТоваровТовары.ЕдиницаИзмеренияМест равно нулю. Значит мне резон брать ее из справочника
|
|||
45
Serg_1960
17.07.12
✎
09:50
|
(44) Нет, неверно рассуждаешь.
|
|||
46
kyrgyz
17.07.12
✎
09:53
|
(45) Я согласен надо брать то что есть вреал е из документа но в документ не попадает гад при создании дока и вводе строк.
|
|||
47
Serg_1960
17.07.12
✎
09:54
|
В документе есть "пары" реквизитов. "Количество"<->"Коэффициент" и "КоличествоМест"<->"КоэффициентМест". В российской УПП, по крайней мере, так.
|
|||
48
kyrgyz
17.07.12
✎
09:55
|
(47) НУ уменя тоде есть но они не присваиваются при вводе документо мало того они эти реквизиты не видимы.
|
|||
49
kyrgyz
17.07.12
✎
09:57
|
+ (48) Чую наверно есть где-то настрокы кторый запусает инструмент работы с этими реквизитами пока не наблюдаю.
|
|||
50
Serg_1960
17.07.12
✎
09:58
|
(48) Это нормально. Это настройка такая. Важно другое: нужно брать именно коэффициент, указанный в документе, а не обращаться к нему через единицу измерения документа
|
|||
51
kyrgyz
17.07.12
✎
10:20
|
(50) В документе добавил эти колонки ввел вручную нужную единицу измерений мест. но ведь юзуров же я не буду заставлять эти колонки по идее они должны автоматом пренестись из справочника так?
|
|||
52
Serg_1960
17.07.12
✎
10:41
|
(51) Да, "по умолчанию" значение из справочника Номенклатура берется. Проблема в том, что это "необязательный" реквизит - конфигурации до фонаря. Она берет пустое значение из справочника и "заполняет" им документ :(
|
|||
53
kyrgyz
17.07.12
✎
10:43
|
В справочнике то не пустое я же там привязал. НУ видимо авто заполнения из реквизите если нето то придется самому првязать. Получиться то что я и думал что буду брать из справочника :)
|
|||
54
Serg_1960
17.07.12
✎
10:43
|
Кстати то, что в документе могут быть заполнены единицы измерения мест "вручную", тоже создаёт дополнительную проблему. Ваш запрос всё больше и больше усложняется :)
|
|||
55
Serg_1960
17.07.12
✎
10:48
|
(53) А у меня автозаполнение нормально работает. Просто нужно указать значение в справочнике и перевыбрать номенклатуру в документе.
|
|||
56
kyrgyz
17.07.12
✎
10:50
|
(55) Это я в первую очередь делала даже пробовал документ создать заново..
|
|||
57
kyrgyz
17.07.12
✎
10:53
|
делала = делал :)
|
|||
58
Serg_1960
17.07.12
✎
10:54
|
Загляни в конфу. У меня там всё просто:
Процедура ТоварыНоменклатураПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; // Выполнить общие действия для всех документов при изменении номенклатуры. ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); // Берем из самого реквизита Номенклатура СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков; СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент; ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ... Процедура ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ПроверятьРеквизит = Истина) Экспорт Если ПроверятьРеквизит Тогда ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти); МетаданныеДокумента = ДокументОбъект.Метаданные(); Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) Тогда // берем из самого реквизита Номенклатура СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаИзмеренияМест; КонецЕсли; РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект); КонецЕсли; ... |
|||
59
kyrgyz
17.07.12
✎
11:04
|
Гады типовики скопипастили и типовой россиской в типовую казахстанскую не все.
Как раз: ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); не включили. Процедура ТоварыНоменклатураПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; // Выполнить общие действия для всех документов при изменении номенклатуры. ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); // Берем из самого реквизита Номенклатура СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков; СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент; УстановитьЦенуНоменклатуры(СтрокаТабличнойЧасти); |
|||
60
kyrgyz
17.07.12
✎
11:10
|
Всем троим огромное спасибо! Вот так мелкими шажками буду семерошный мозг превращать в восьмерочный не без вашей помощи. :)
|
|||
61
Serg_1960
17.07.12
✎
12:04
|
Грац :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |