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


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Помогите если не сложно начинающему
30. Сентября 2008 :: 09:13
Печать  
           НачД = Мин(ДатаДок,ПолучитьДатуТА());
           КонД = Мин(ДатаДок,ПолучитьДатуТА());
           Запрос = СоздатьОбъект("ODBCRecordset");
           ТекстЗапроса = "
           |SELECT
           |  $Тов.Группировки as [Групп $Справочник.Группировки],
           |  Рег.Покупатель as [Покупатель $Справочник.Контрагенты],
           |  Рег.Накладная as [ТТН $Справочник.Документы],
           |  Рег.СуммаОборот as Реал
           |FROM
           |  $РегистрОбороты.Реализация(:НачД,:КонД~,,,,(Покупатель ,Накладная,Товар), (Сумма)) as Рег
           |  INNER JOIN $Справочник.ВидыТоваров Тов ON Тов.ID = Рег.Товар
           |  INNER JOIN $Справочник.Контрагенты Покупатель ON Покупатель.ID = Рег.Покупатель AND Покупатель IN (SELECT Val FROM #СписокКонтров)
           |  INNER JOIN $Справочник.Документы Накладная ON Накладная.ID = Рег.Накладная AND Накладная IN (SELECT Val FROM #СписокТТН)";
           
           Запрос.УстановитьТекстовыйПараметр("НачД", НачД);
           Запрос.УстановитьТекстовыйПараметр("КонД", КонД);
           Запрос.УложитьСписокОбъектов(СписокКонтров, "#СписокКонтров");
           Запрос.УложитьСписокОбъектов(СписокТТН, "#СписокТТН");

           ПромТЗ = СоздатьОбъект("ТаблицаЗначений");
           ПромТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
           глПечатьТЗ(ПромТЗ);

Получаю пустую ТЗ. В чем трабла?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #1 - 30. Сентября 2008 :: 09:17
Печать  
в списке СписокКонтров группы?
  

1&&2&&3
Наверх
 
IP записан
 
lsm
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Re: Помогите если не сложно начинающему
Ответ #2 - 30. Сентября 2008 :: 09:20
Печать  
Нет, групп нет. Пока не накладываю фильтр на Контров и ТТН данные выводятся
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #3 - 30. Сентября 2008 :: 09:26
Печать  
какие типы полей регистра Покупатель и Накладная
  

1&&2&&3
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #4 - 30. Сентября 2008 :: 09:35
Печать  
Попробуйте санала сделать Inner Join а потом уже в WHERE наложить фильтр.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #5 - 30. Сентября 2008 :: 09:41
Печать  
pvase писал(а) 30. Сентября 2008 :: 09:35:
Попробуйте санала сделать Inner Join а потом уже в WHERE наложить фильтр.

с точки зрения синтаксиса запрос написан верно, но, надо признать, местами безсмысленно
  

1&&2&&3
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #6 - 30. Сентября 2008 :: 09:53
Печать  
trad писал(а) 30. Сентября 2008 :: 09:41:
pvase писал(а) 30. Сентября 2008 :: 09:35:
Попробуйте санала сделать Inner Join а потом уже в WHERE наложить фильтр.

с точки зрения синтаксиса запрос написан верно, но, надо признать, местами безсмысленно

Это повзолит сразу отсечь проблему Ид 13 и 23, если после джойна - все нормально - значит ошибка в условии. Если же после джойна уже выборка пустая - значит или не та таблица приджойнена или же условия джойна некоректное.

Еще возможно, елси список пустой - тогда надо выбрать все без условия, а при таком джойне как в 0 - это невозможно.
  
Наверх
IP записан
 
lsm
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Re: Помогите если не сложно начинающему
Ответ #7 - 30. Сентября 2008 :: 10:02
Печать  
Только начинаю осваивать SQL запросы, уж не обессудте. Скажите где лишнее.
Пока не проверяю на вхождение в списки - отчет формируется правильно.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #8 - 30. Сентября 2008 :: 10:29
Печать  
Примерно так:
Код
Выбрать все
	НачД = Мин(ДатаДок,ПолучитьДатуТА());
	КонД = Мин(ДатаДок,ПолучитьДатуТА());
	Запрос = СоздатьОбъект("ODBCRecordset");
	ТекстЗапроса = "
	|SELECT
	|  $Тов.Группировки as [Групп $Справочник.Группировки],
	|  Рег.Покупатель as [Покупатель $Справочник.Контрагенты],
	|  Рег.Накладная as [ТТН $Справочник.Документы],
	|  Рег.СуммаОборот as Реал
	|FROM
	|  $РегистрОбороты.Реализация(:НачД,:КонД~,,,,(Покупатель ,Накладная,Товар), (Сумма)) as Рег
	|  INNER JOIN $Справочник.ВидыТоваров Тов ON Тов.ID = Рег.Товар
	|  INNER JOIN $Справочник.Контрагенты Покупатель ON Покупатель.ID = Рег.Покупатель
	|  INNER JOIN $Справочник.Документы Накладная ON Накладная.ID = Рег.Накладная
	|WHERE
	|	1 = 1";
	Если СписокКонтров.РазмерСписка() > 0  Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|	AND Рег.Покупатель IN (SELECT Val FROM #СписокКонтров)";
	КонецЕсли;
	Если СписокТТН.РазмерСписка() > 0  Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|	AND Рег.Накладная IN (SELECT Val FROM #СписокТТН)";
	КонецЕсли;

	Запрос.УстановитьТекстовыйПараметр("НачД", НачД);
	Запрос.УстановитьТекстовыйПараметр("КонД", КонД);
	Запрос.УложитьСписокОбъектов(СписокКонтров, "#СписокКонтров");
	Запрос.УложитьСписокОбъектов(СписокТТН, "#СписокТТН");

	ПромТЗ = СоздатьОбъект("ТаблицаЗначений");
	ПромТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	глПечатьТЗ(ПромТЗ);
 


Надо посмотреть какой тип и вид у измерения "Накладная", как то странно реализовано: Справочник.Документы, может в этом какой то и есть смысл, но какой то подозрительный алгоритм.
  
Наверх
IP записан
 
lsm
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Re: Помогите если не сложно начинающему
Ответ #9 - 30. Сентября 2008 :: 10:33
Печать  
В регистре "Реализация" - Накладная = Справочник.Документы.
Список Контргагентов и Накладных не пустой.
  
Наверх
 
IP записан
 
lsm
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Re: Помогите если не сложно начинающему
Ответ #10 - 30. Сентября 2008 :: 10:38
Печать  
Сделал как предложили - результат тотже Печаль
  
Наверх
 
IP записан
 
lsm
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 24
Зарегистрирован: 13. Апреля 2007
Re: Помогите если не сложно начинающему
Ответ #11 - 30. Сентября 2008 :: 11:50
Печать  
Оставил фильтр только на Контра, сработало. Но какие-то повторяющиеся цифры выдало?
Наклданая=Справочник.Документы является подчиненным для Контрагента. Может в этом проблема?
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #12 - 30. Сентября 2008 :: 13:43
Печать  
Сравните значения:
Код
Выбрать все
SELECT DISTINCT $Рег.Накладная FROM $РегистрОбороты.Реализация AS Рег 


и:
Код
Выбрать все
(SELECT DISTINCT T.ID FROM $Справочник.Документы AS T) 



Также посмотрите что вернет:
Код
Выбрать все
SELECT Val FROM #СписокТТН WHERE Val IN (SELECT DISTINCT T.ID FROM $Справочник.Документы AS T) 


и:
Код
Выбрать все
SELECT Val FROM #СписокТТН WHERE Val IN (SELECT DISTINCT $Рег.Накладная FROM $РегистрОбороты.Реализация AS Рег) 


  
Наверх
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #13 - 30. Сентября 2008 :: 14:55
Печать  
Возможно ли открыть одну обработку в отдельные окна?
ОткрытьФорму(Обработка.Тест,); то открывает только один раз, а если еще раз выполнить эту функцию, то становится активная форма.  чтобы много раз... подскажите как это сделать?

  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите если не сложно начинающему
Ответ #14 - 30. Сентября 2008 :: 15:22
Печать  
admin spb писал(а) 30. Сентября 2008 :: 14:55:
Возможно ли открыть одну обработку в отдельные окна?

ОткрытьФорму(Обработка.Тест,); то открывает только один раз, а если еще раз выполнить эту функцию, то становится активная форма.  чтобы много раз... подскажите как это сделать?


ОткрытьФорму("Обработка.Тест#",);
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать