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


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Документы
04. Апреля 2009 :: 10:48
Печать  
Доброго времени суток, помогите плиз реализовать следующий код на 1С++, уже выбился из сил
Код
Выбрать все
	ТекстЗапроса =
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
	|Склад = Регистр.ОстаткиТМЦ.Склад;
	|Количество = Регистр.ОстаткиТМЦ.Количество;
	|Сторно = Регистр.ОстаткиТМЦ.ТекущийДокумент.Сторно.ТекущийДокумент;
	|Функция КоличествоПриход = Приход(Количество) когда (ПустоеЗначение(Сторно)=0);
	|Функция КоличествоРасход = Расход(Количество) когда (ПустоеЗначение(Сторно)=0);
	|Группировка Номенклатура без Групп;
	|Группировка Склад без Групп;  
	|Группировка Сторно;
	|Условие(Склад в ВыбСклад);
	|Условие(Номенклатура в ВыбНоменклатура);
	|"//}}ЗАПРОС 


делал вот так
|SELECT  
|Рег.Номенклатура        as [Номенклатура $Справочник.Номенклатура],
|Рег.Склад                   as [Склад            $Справочник.Склады],      
|Рег.КоличествоПриход as КоличествоПриход,
|Рег.КоличествоРасход as КоличествоРасход,
|Рег.IDDoc                   as Сторно      
|FROM
|$РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаС, :ДатаПо,,,INNER JOIN $Документ.Сторно Сторно1 ON Сторно1.IDDoc = IDDoc, Склад = :ВыбСклад, (Номенклатура, Склад) , Количество) as Рег
|WHERE Рег.Номенклатура IN (SELECT Val FROM #Группа)
|";
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Документы
Ответ #1 - 05. Апреля 2009 :: 05:13
Печать  
1) В твоем запросе на 1С ты используешь только функции Приход и Расход - пользуйся ВТ Обороты;
2) Условие на номенклатуру внеси в ВТ - так будет быстрее;
3) После п.п.1,2 Покажи текст получившегося запроса и покажи ошибку которую выдает
  
Наверх
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #2 - 05. Апреля 2009 :: 09:07
Печать  
В данном запросе у меня проблемы тока с получением документа "Сторно" в описании ВТ ОстаткиОбороты написано что надо использовать соединения для получения реквизитов регистра (например таких как Регистр.IDDoc), но чет у меня ничего не получается
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Документы
Ответ #3 - 05. Апреля 2009 :: 13:00
Печать  
Почитай документацию (в частности про периодичность в вирт. таблице)
Iddoc - это не реквизит регистра (в понимании конфигураста)
  

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


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #4 - 05. Апреля 2009 :: 15:26
Печать  
Спасибо, опять эта невнимательность Улыбка
  
Наверх
 
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #5 - 06. Апреля 2009 :: 07:25
Печать  
Сделал так :
|Рег.ВидДокумента as Документ
|FROM
|$РегистрыОстаткиОбороты.ОстаткиТМЦ(:ДатаС, :ДатаПо, Документ, ,INNER JOIN _1SJourn AS Док ON Док.IDDoc = Iddoc, Склад = :ВыбСклад, (Номенклатура, Склад) , Количество) as Рег
Все равно не получается, как правильно сделать ?
Выдал ошибку: [Microsoft][ODBC SQL Server Driver][SQL Server]Ambiguous column name 'IDDOC'.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Документы
Ответ #6 - 06. Апреля 2009 :: 08:46
Печать  
Быстрый отбор у регистра стоит?
Зачем с журналом соединяешься?
  
Наверх
 
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #7 - 06. Апреля 2009 :: 09:05
Печать  
НЕТ НЕ СТОИТ, я новичок в этом деле. Вот начал с простого запроса, а оказывается не так все просто.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Документы
Ответ #8 - 06. Апреля 2009 :: 10:11
Печать  
примерно так:
Код
Выбрать все
select
    $Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
    $Рег.Склад as [Склад $Справочник.Склады],
    j.iddoc as [Сторно $Документ.Сторно],
    sum(case when Рег.debkred = 0 then $Рег.Количество else 0 end) as Приход,
    sum(case when Рег.debkred = 1 then $Рег.Количество else 0 end) as Расход
from _1sjourn as j (nolock)
inner join $Регистр.ОстаткиТМЦ as Рег (nolock) on Рег.iddoc = j.iddoc
where j.iddocdef = $ВидДокумента.Сторно and j.date_time_iddoc between :ВыбНачПериода and :ВыбКонПериода~
    and $Рег.Склад = :ВыбСклад
    and $Рег.Номенклатура in (select val from #Группа)
group by $Рег.Номенклатура, $Рег.Склад, j.iddoc
 


Использование виртуальных таблиц не имеет смысла т.к.
1)необходим отбор по виду документа;
2)данные нужны из регистра остатков и нужны только обороты;
Собственно поэтому используется таблица движений регистра.
  
Наверх
ICQ  
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #9 - 06. Апреля 2009 :: 10:20
Печать  
Спасибо DmitrO, а как добавить еще ОстаткиНаНачало если не трудно ?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Документы
Ответ #10 - 06. Апреля 2009 :: 10:36
Печать  
ну вот, блин

Все это в подзапрос, и цеплять к нему ВТ с остатками.
От того что нужно в результате будет зависеть характер связи, т.к. могут быть остатки по тем позициям по которым нет оборотов, и наоборот, могут быть позиции по которым нет остатков но есть обороты.
  
Наверх
ICQ  
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #11 - 06. Апреля 2009 :: 10:46
Печать  
это поставить inner join $РегистрОстаткиОбороты.ОстаткиТМЦ (,,,,,,,,) вместо inner join $Регистр.ОстаткиТМЦ as Рег (nolock). Я правильно понял ?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Документы
Ответ #12 - 06. Апреля 2009 :: 10:56
Печать  
нет, не правильно
  
Наверх
ICQ  
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Документы
Ответ #13 - 06. Апреля 2009 :: 11:19
Печать  
Подскажи если тебя не затруднит.
  
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: Документы
Ответ #14 - 06. Апреля 2009 :: 11:45
Печать  
Что такое Сторно? Общий реквизит документа?.. Какого типа?..
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать