0
Not a bug
Клонирование карточек - попадают данные из изначальной карточки
При Клонировании карточки Номенклатура (Продукты) в новую карточку попадают данные из изначальной карточки. Например на вкладку Сводка попадают данные из изначальной карточки об: Доходность, сумма всех продаж, проданное кол-во, кол-во клиентов, дата первой продажи, дата последней продажи. Разве так должно быть? может я неправильно понимаю для чего служит Клонирование? В чем разница между Клонированием и Копированием? Когда их можно применять а когда нельзя?
Где пользователь может получить такую информацию? Или он должен на собственном опыте обнаруживать, что можно а что нельзя?
Готовы ли подробные инструкции по КК торговля?
Где пользователь может получить такую информацию? Или он должен на собственном опыте обнаруживать, что можно а что нельзя?
Готовы ли подробные инструкции по КК торговля?
Customer support service by UserEcho
Данные по доходности и другие аггрегированне характеристики рассчитываются и хранятся в карточках, что бы обеспечить скорость получения данных при выборках.
"Клонирование" - штатная функция платформы и одинаково работает на любых карточках, а именно копирует ВСЕ атрибуты, не зависимо от того, какая логика была заложена в нём, и когда и как он должен рассчитываться.
По этой причине мы не рекомендуем использовать клонирование для сложных объектов с массой подчиненых справочников и расчетных данных, хранящихся в карточке.
И можно ли в данной ситуации использовать Копирование.
А клонирование удобно, когда одинаковые значения плоских (одноуровневых) справочников многократно вводятся.
На их основе я делаю заказы на продукцию для склада.
Что сейчас делать?
Сможете установить какой-то признак для таких продуктов, что ыб его использовать в скрипте?
Если востановит правильные - то можно выполнить скрипт по всей номенклатуре (продукция).
Самый простой и быстрый способ это сделать запустить выполнение Хранимых вычислений.
1. Запускаем Конфигуратор.
2. В дереве классов находим "Номенклатура" - встаём на этот класс.
3. В нижней части видим список хранимых вычислений. Нажимаем на любом из них правой кнопкой мыши. Видим контекстное меню.
4. В контекстном меню выбираем Выполнить -> Все вычисления класса
5. Ждем. Радуемся.
ОБЯЗАТЕЛЬНО СДЕЛАТЬ РЕЗЕРЫНУЮ КОПИЮ БАЗЫ !!!
Для уважаемых мною разработчиков это, кстати, повод убрать из "Клонирования" автоматически проставленные "галочки"
Клонирование - функция платформы.
Копирование - конфигурации. Я не думаю, что имеет смысл убирать предустановленные галочки - это время экономит для большинства типовых ситуаций.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[AXI_NomenklaturaRecountAnalitikaOne]
as
begin
set nocount on;
/*#Table1 - справочник номенклатуры*/
declare @Table table
(ProductID int
,DateFirstProdazha datetime
,DateLastProdazha datetime
,SummaProdazha decimal(15,2)
,KolProdano decimal(15,2)
,KolKlient int
,KolShet int
,KolPost int
,KolReclamation int
,KolSoputstv int
,KolAnalog int
)
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
a131.ObjectID
,MIN(p2277)--дата первой продажи
,MAX(p2277)--дата последней продажи
,SUM(case
when a131.p898 = a230.p2438 then p2461
when a131.P898 = dbo.AXI_BaseCurrency() then a230.p2466
else cast(a230.p2461*a230.p2439/dbo.AXI_SelectExchange(a131.P898,getdate()) AS decimal(15,2))
end)--сумма продано
,SUM(a230.P4175)--количество проданного в осн.ед.изм.
,COUNT(Distinct a229.p2279)--количество контрагентов
,COUNT(distinct a229.ObjectID)--количество счетов
from #Table1 b0
inner join dbo.Attr131 a131 on b0.ObjectID = a131.ObjectID
inner join dbo.Attr230 a230 on a230.P2327 = a131.ObjectID
inner join dbo.Attr229 a229 on a229.ObjectID = a230.P2325
where a229.p2278 in (246)--подписан
group by a131.ObjectID
update b0
set KolPost = (select COUNT(*) from dbo.Attr154 where p908 = b0.ProductID)
,KolReclamation = (select COUNT(*) from dbo.Attr118 where p1404 = b0.ProductID)
,KolSoputstv = (select COUNT(*) from dbo.Attr208 where p1655 = b0.ProductID)
,KolAnalog = (select COUNT(*) from dbo.Attr207 where p1647 = b0.ProductID)
,KolShet = (select COUNT(*) from dbo.Attr130 a130
inner join dbo.Attr129 a129 on a129.ObjectID = a130.P628
where a129.p664 in (17,16)-- ожидает оплаты, оплачен
and a130.P631 = b0.ProductID)
from @Table b0
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
ProductID
,DateFirstProdazha
,DateLastProdazha
,0
,0
,0
,0
from @Table b0
Right join #Table1 b1 on b0.ProductID = b1.ObjectID
where b0.ProductID IS NULL
update a131
set
p1855 = DateFirstProdazha--Дата первой продажи
,p1856 = DateLastProdazha--Дата посл. продажи
,p1858 = SummaProdazha--Сумма всех продаж
,p1859 = KolProdano--проданное кол-во
,p1860 = KolKlient--КОличество клиентов
,p1864 = KolShet--Количество счетов
,p1861 = KolPost
,p1863 = KolReclamation
,p1862 = KolAnalog
,p1865 = KolSoputstv
from @Table b0
inner join dbo.Attr131 a131 on a131.ObjectID = b0.ProductID
END
GO
/****** Object: StoredProcedure [dbo].[AXI_NomenklaturaRecountAnalitikaAll] Script Date: 07/13/2014 21:14:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[AXI_NomenklaturaRecountAnalitikaAll]
as
begin
set nocount on;
/*#Table1 - справочник номенклатуры*/
declare @Table table
(ProductID int
,DateFirstProdazha datetime
,DateLastProdazha datetime
,SummaProdazha decimal(15,2)
,KolProdano decimal(15,2)
,KolKlient int
,KolShet int
,KolPost int
,KolReclamation int
,KolSoputstv int
,KolAnalog int
)
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
a131.ObjectID
,MIN(p2277)--дата первой продажи
,MAX(p2277)--дата последней продажи
,SUM(case
when a131.p898 = a230.p2438 then p2461
when a131.P898 = dbo.AXI_BaseCurrency() then a230.p2466
else cast(a230.p2461*a230.p2439/dbo.AXI_SelectExchange(a131.P898,getdate()) AS decimal(15,2))
end)--сумма продано
,SUM(a230.P4175)--количество проданного в осн.ед.изм.
,COUNT(Distinct a229.p2279)--количество контрагентов
,COUNT(distinct a229.ObjectID)--количество счетов
from dbo.Attr131 a131
inner join dbo.Attr230 a230 on a230.P2327 = a131.ObjectID
inner join dbo.Attr229 a229 on a229.ObjectID = a230.P2325
where a229.p2278 in (246)-- подписан
group by a131.ObjectID
update b0
set KolPost = (select COUNT(*) from dbo.Attr154 where p908 = b0.ProductID)
,KolReclamation = (select COUNT(*) from dbo.Attr118 where p1404 = b0.ProductID)
,KolSoputstv = (select COUNT(*) from dbo.Attr208 where p1655 = b0.ProductID)
,KolAnalog = (select COUNT(*) from dbo.Attr207 where p1647 = b0.ProductID)
,KolShet = (select COUNT(*) from dbo.Attr130 a130
inner join dbo.Attr129 a129 on a129.ObjectID = a130.P628
where a129.p664 in (17,16)-- ожидает оплаты, оплачен
and a130.P631 = b0.ProductID)
from @Table b0
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
ProductID
,DateFirstProdazha
,DateLastProdazha
,0
,0
,0
,0
from @Table b0
Right join #Table1 b1 on b0.ProductID = b1.ObjectID
where b0.ProductID IS NULL
update a131
set
p1855 = DateFirstProdazha--Дата первой продажи
,p1856 = DateLastProdazha--Дата посл. продажи
,p1858 = SummaProdazha--Сумма всех продаж
,p1859 = KolProdano--проданное кол-во
,p1860 = KolKlient--КОличество клиентов
,p1864 = KolShet--Количество счетов
,p1861 = KolPost
,p1863 = KolReclamation
,p1862 = KolAnalog
,p1865 = KolSoputstv
from @Table b0
inner join dbo.Attr131 a131 on a131.ObjectID = b0.ProductID
END
Аналитики повсем продуктам пересчитать неполучается выдает ошибку "неверное имя обьекта Тable1'."Но я перечситал по одному продукту, по которому я проверяю данные сейчас, по нему ничео не измениось.
Если я те же два скрипта пррогоню еще раз, так можно? Может я все ткаи что то не так сделал.
Чтобы не было непонимания. Данные в сводке считаются по реализациям.
Уточните пожалуйста скайп, очень много там пользователей Alexandr Selivanov
Аналитики повсем продуктам пересчитать неполучается выдает ошибку "неверное имя обьекта Тable1'."Но я перечситал по одному продукту, по которому я проверяю данные сейчас, по нему ничео не измениось.
Если я те же два скрипта пррогоню еще раз, так можно? Может я все ткаи что то не так сделал.
as
begin
set nocount on;
/*#Table1 - справочник номенклатуры*/
declare @Table table
(ProductID int
,DateFirstProdazha datetime
,DateLastProdazha datetime
,SummaProdazha decimal(15,2)
,KolProdano decimal(15,2)
,KolKlient int
,KolShet int
,KolPost int
,KolReclamation int
,KolSoputstv int
,KolAnalog int
)
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
a131.ObjectID
,MIN(p2277)--дата первой продажи
,MAX(p2277)--дата последней продажи
,SUM(case
when a131.p898 = a230.p2438 then p2461
when a131.P898 = dbo.AXI_BaseCurrency() then a230.p2466
else cast(a230.p2461*a230.p2439/dbo.AXI_SelectExchange(a131.P898,getdate()) AS decimal(15,2))
end)--сумма продано
,SUM(a230.P4175)--количество проданного в осн.ед.изм.
,COUNT(Distinct a229.p2279)--количество контрагентов
,COUNT(distinct a229.ObjectID)--количество счетов
from dbo.Attr131 a131
inner join dbo.Attr230 a230 on a230.P2327 = a131.ObjectID
inner join dbo.Attr229 a229 on a229.ObjectID = a230.P2325
where a229.p2278 in (246)-- подписан
group by a131.ObjectID
update b0
set KolPost = (select COUNT(*) from dbo.Attr154 where p908 = b0.ProductID)
,KolReclamation = (select COUNT(*) from dbo.Attr118 where p1404 = b0.ProductID)
,KolSoputstv = (select COUNT(*) from dbo.Attr208 where p1655 = b0.ProductID)
,KolAnalog = (select COUNT(*) from dbo.Attr207 where p1647 = b0.ProductID)
,KolShet = (select COUNT(*) from dbo.Attr130 a130
inner join dbo.Attr129 a129 on a129.ObjectID = a130.P628
where a129.p664 in (17,16)-- ожидает оплаты, оплачен
and a130.P631 = b0.ProductID)
from @Table b0
insert into @Table(
ProductID
,DateFirstProdazha
,DateLastProdazha
,SummaProdazha
,KolProdano
,KolKlient
,KolShet
)
select
ProductID
,DateFirstProdazha
,DateLastProdazha
,0
,0
,0
,0
from @Table b0
Right join dbo.Attr131 a131 on b0.ProductID = a131.ObjectID
where b0.ProductID IS NULL
update a131
set
p1855 = DateFirstProdazha--Дата первой продажи
,p1856 = DateLastProdazha--Дата посл. продажи
,p1858 = SummaProdazha--Сумма всех продаж
,p1859 = KolProdano--проданное кол-во
,p1860 = KolKlient--КОличество клиентов
,p1864 = KolShet--Количество счетов
,p1861 = KolPost
,p1863 = KolReclamation
,p1862 = KolAnalog
,p1865 = KolSoputstv
from @Table b0
inner join dbo.Attr131 a131 on a131.ObjectID = b0.ProductID
END