Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Помогите навести порядок (число прочтений - 5930 )
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Помогите навести порядок
03. Апреля 2007 :: 22:13
Печать  
Заранее извиняюсь за длинный текст
Задача в общем-то и не очень сложная: получить таблицу вида Номенклатура, Цена по выбранной фирме на определенную дату
Цена хранится двояко:
1. В "регистре сведений" - регистре без ресурсов с измерениями Фирма, Номенклатура, Цена, ...
2. Непосредственно в спр-ке Номенклатура, реквизит Себестоимость

Вот что получилось
Два вопроса:
1. Как сделать просто и гениально? (особенно смущает узнавание последнего документа установки цен за день, ну и так, у целом)
2. Как получить одну колонку вместо двух? (надо брать не максимальную цену, а по такому принципу: если в регистре цена есть - брать ее, если нет - себестоимость)

Код
Выбрать все
ТекстЗапроса = "
	|SELECT Запрос.Ном as [Номенклатура $Справочник.Номенклатура]
	|, MAX(Запрос.Цена) as ЦенаРег
	|, MAX(Запрос.Себ) as ЦенаСпр
	|FROM (
	|
	|SELECT Номенклатура.ID as Ном
	|, 0 as Цена
	|, $Номенклатура.Себестоимость as Себ
	|FROM $Справочник.Номенклатура AS Номенклатура
	|	WHERE (" + УсловиеВхождения("Номенклатура", "ID", 1, ":СписокТМЦ") + ")
	|
	|UNION ALL
	|
	|SELECT $Цены.Номенклатура as Ном
	|, $Цены.Цена as Цена
	|, 0 as Себ
	|FROM $Регистр.Цены AS Цены
	|INNER JOIN 1SJOURN AS Журнал ON Цены.IDDOC = Журнал.IDDOC
	|WHERE ($Цены.Фирма = :ВыбФирма)
	|AND (Журнал.DATE <= :ВыбДата~~)
	|AND
	|(Журнал.IDDOC in
	|(
	|Select max(Журнал1.IDDOC)
	|from 1SJOURN AS Журнал1
	|INNER JOIN $Регистр.Цены AS Цены1 ON Цены1.IDDOC = Журнал1.IDDOC
	|WHERE ($Цены.Номенклатура = $Цены1.Номенклатура)
	|AND (Журнал1.DATE <= :ВыбДата~~)
	|AND ($Цены1.Фирма = $Цены.Фирма)
	|)
	|)
	|	AND (" + УсловиеВхождения("$Цены", "Номенклатура", 1, ":СписокТМЦ") + ")
	|) as Запрос
	|GROUP BY
	|	Запрос.Ном;
	|";
 

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #1 - 03. Апреля 2007 :: 22:14
Печать  
Забыл сказать - это DBF  Злой
Ну по тексту и так видно...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #2 - 03. Апреля 2007 :: 22:28
Печать  
Поясню еще про цены. Аналог вот этого нужен (только тут без даты):

Код
Выбрать все
глЦены.УстановитьЗначениеФильтра("Номенклатура",Номенклатура, 1);
глЦены.УстановитьЗначениеФильтра("Фирма",		ВыбФирма, 1);

глЦены.ОбратныйПорядок(1);
глЦены.ВыбратьДвижения(,);

Если глЦены.ПолучитьДвижение() = 1 Тогда
	ПризнакНаличия = глЦены.ПризнакНаличия;

	Возврат глЦены.Цена;
 


  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #3 - 04. Апреля 2007 :: 01:04
Печать  
Вышеприведенную проблему решил по-другому, но все равно интересно...
Что-то раступился... подскажите как в запросе по справочнику получить таблицу вида:
Номенклатура    НоменклатураВУ    Цена

где Цена - реквизит
НоменклатураВУ   - номенклатура самого верхнего уровня (НоменклатураВУ.PARENTID = $ПустойИд, НоменклатураВУ.ISFOLDER <> 2)
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #4 - 04. Апреля 2007 :: 23:56
Печать  
Тупит УложитьСписокОбъектов() - 19 тысяч там было  Круглые глаза
Вместо этого использовал подзапрос - все летает
Непонимаю что происходит при таком кол-ве...
1С потиху отжирает память но очень медленно... на 120 Мегах нервы сдают просто (чего так много?)
Интересно до каких объемов приемлемо использовать это дело
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #5 - 05. Апреля 2007 :: 02:54
Печать  
Проведи эксперимент плиз.
Замени dll на эту и выполни свой запрос.
http://slil.ru/24186737
Особенно интересно про память.
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #6 - 05. Апреля 2007 :: 10:08
Печать  
Хорошо, проведу
Подскажи плиз вот такое

Мне надо получить последнее значение, делать хочу типо такого:

AND
|(RIGHT(Цены.IDDOC,9) =
|(
|SELECT MAX(CAST(Журнал.DATE AS CHAR(10)) + Журнал.TIME + Журнал.IDDOC)
|FROM 1SJOURN AS Журнал
|INNER JOIN $Регистр.Цены AS Цены1 ON Цены1.IDDOC = Журнал.IDDOC
|WHERE ($Цены.Номенклатура = $Цены1.Номенклатура)
|AND ($Цены1.Фирма = $Цены.Фирма)

Во-первых как тут лучше?
Во-вторых как выразить дату в ДБФ в виде 20070405 а не 05/04/2007?
Если моно - ссылку на доку по ДБФ, что там работает и как
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #7 - 05. Апреля 2007 :: 11:48
Печать  
Порядок!  Подмигивание

Код
Выбрать все
|AND
|Цены.IDDOC =
|(
|SELECT RIGHT(MAX(DTOS(Журнал.DATE) + Журнал.TIME + Журнал.IDDOC), 9)
 

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #8 - 05. Апреля 2007 :: 11:54
Печать  
Кирилл, выложи куда в другое место или пришли на мыло... неполучается оттуда скачать - сваливается.
Адрес направляю в личку (если надо)
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #9 - 05. Апреля 2007 :: 12:54
Печать  
Цитата:
Порядок!  Подмигивание

Код
Выбрать все
|AND
|Цены.IDDOC =
|(
|SELECT RIGHT(MAX(DTOS(Журнал.DATE) + Журнал.TIME + Журнал.IDDOC), 9)
 


А может так:
Код
Выбрать все
|AND
|Цены.IDDOC =
|(
|SELECT RIGHT(DTOS(MAX(Журнал.DATE) + Журнал.TIME + Журнал.IDDOC), 9)
 


правильнее будет?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #10 - 05. Апреля 2007 :: 13:23
Печать  
Нет имхо  Озадачен
Кроме даты еще есть и время и иддок
Я выбираю максимальную строку вида ДатаТаймИдДок
У тебя же макс дата - а остальное?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #11 - 05. Апреля 2007 :: 13:55
Печать  
ушло
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #12 - 05. Апреля 2007 :: 21:25
Печать  
2(spock) В принципе происходит то же самое
Поясню: у меня версия 2.0.3.0, 1С 25, ХР СП2
Укладывался просто большой список, папки в которых много элементов укладываются быстро
Думаю просто надо было по-человечески мне сразу делать...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #13 - 05. Апреля 2007 :: 21:34
Печать  
После срубания Одноэсины оставались каки - таблицы ДБФ, размер их был примерно 250 КБ, в то время как памяти 1С в целом жрала более 100 мег, Core2 Duo грузился на 50%
В общем сам попробуй засунуть просто большой список укладывать (не папку)
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите навести порядок
Ответ #14 - 06. Апреля 2007 :: 03:18
Печать  
Ты укладываешь список элементов методом УложитьСписокОбъектов() без последнего параметра, так?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать