AXForum  
Go Back   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 01.02.2023, 17:47   #1  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Хранимка, INSERT INTO ..SELECT (с GROUP by!!!), значение Line No
Всем добрый день!

1.Выгрузка для маркетплейса из выделенных в списке перемещений. Заказчик хочет группировку товаров по артикулу+цвету.
Данные беру хранимкой и пишу в таблицу, в которой первичный ключ Document Type,Document No.,Line No_.
Не могу корректно определить Line No_ в строке.

Вот так ругается при выгрузке
Violation of PRIMARY KEY constraint 'ххх$Export Documents$0'. Cannot insert duplicate key in object 'dbo.ххх$Export Documents'.

2.Сделала вот такую фн:
USE [ххх]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <ххх>
-- Create date: <2023-01-26, ,>
-- Description: <нужна в хп [dbo].[rnd_export22y_transfer_group], где строки перемещ групп по артик товара+цвет и запись в т 50124 с ключом ... Строка Но>
-- #SC-хх 2023-01-16 Выгрузка
-- =============================================
ALTER FUNCTION [dbo].[GetLineNo]
(
@LastLineNo int
)
RETURNS int
AS
BEGIN
RETURN (@LastLineNo + 10000)
END


в хп
SET @line = 10000

Дальше надо как-то @line впихнуть в конструкцию

INSERT INTO [ххх].[dbo].[ххх$Export Documents]
([Document Type]
,[Document No_]
......
SELECT @Type --(<Document Type, int,>
,@docGroup --docNo--<Document No_, varchar(30),>
,1--<State, int,>
,sl.[Shipment Date]--<DateTime, datetime,>
,sl.[Document No_]--<Vender, varchar(100),>
..........
Что-то типа , @line = (select [dbo].[GetLineNo] (@line) )
чтобы и @line увеличилось, и в новую запись пошло увеличенное значение.

Не получается использовать фн [dbo].[GetLineNo] ! (((((

3. Я извернулась вот так:

, (SELECT top 1 FLOOR(RAND(ART2.[Qty])*(ART2.[Line No_]))+ FLOOR(RAND(ART2.[Line No_])*(ART2.[Qty]))) [Line No]

ART2.[Line No_] при группировке сумм по всем лайнам)))
а ART2.[Qty] - по всем количествам в строках

Пока работает.

Может, кто-то решал подобную задачу, и может поделиться опытом?

Спасибо!

Last edited by mira; 01.02.2023 at 17:54.
Old 01.02.2023, 22:21   #2  
sukhanchik is offline
sukhanchik
Administrator
sukhanchik's Avatar
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,343 / 3563 (125) ++++++++++
Join Date: 13.06.2004
Location: Москва
Не очень понял задачи. Нужно сгруппировать некоторые данные, а потом (уже сгруппированные) их пронумеровать? Если так - то это делается легко (Transact SQL)

X++:
select salesid, itemid, sum(SalesQty) as SumQty, ROW_NUMBER() over(order by salesId) as LineNumber from salesline
group by salesid, itemid
Click image for larger version

Name:	Pic.png
Views:	561
Size:	26.2 KB
ID:	13539

Здесь функция ROW_NUMBER() - это штатная функция нумерации строк, а конструкция over (order by salesId) позволяет определить сортировку, согласно которой будет выполняться нумерация. Например, можно указать вместо salesId - itemid и тогда результат будет несколько иной (другие строки получат номер 1, 2 и т.д.)

Если это не то, что нужно - то я не понял задачи. Свои (невстроенные) функции в SQL использовать нужно аккуратно. Они не самые "шустрые" в плане исполнения.
__________________
Возможно сделать все. Вопрос времени

Last edited by sukhanchik; 02.02.2023 at 14:04.
This post has been rated by: mira (1).
Old 02.02.2023, 11:42   #3  
mira is offline
mira
Участник
mira's Avatar
 
140 / 25 (1) +++
Join Date: 18.03.2007
Location: Москва
Quote:
Originally Posted by sukhanchik View Post
Не очень понял задачи. Нужно сгруппировать некоторые данные, а потом (уже сгруппированные) их пронумеровать? Если так - то это делается легко (Transact SQL)

X++:
select salesid, itemid, sum(SalesQty) as SumQty, ROW_NUMBER() over(order by salesId) as LineNumber from salesline
group by salesid, itemid
Attachment 13539
sukhanchik, спасибо большое!
Получилось и шустренько так выгрузилось в отличие от моего варианта
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
msdn.microsoft.com/nav: Bring Dynamics 365 into the flow of work with Teams—at no additional cost Blog bot NAV: Blogs 0 14.07.2021 18:12
Navigate Into Success: Resident control add-ins – no SingleInstance Blog bot NAV: Blogs 0 08.02.2021 16:11
Navigate Into Success: When you just must COUNT, no matter what Blog bot NAV: Blogs 0 09.03.2017 11:11
Kine’s info: Copy Microsoft Dynamics NAV company by SQL script into another database v2 Blog bot NAV: Blogs 0 15.05.2016 17:11
Где заполняется "Sales Invoice Line"."CD No." ? Control NAV: Программирование 9 16.09.2008 10:44

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:47.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.