Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) DBF прямой запрос (Оборотно сальдовая) Бухгалтерия (число прочтений - 13858 )
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #45 - 20. Октября 2008 :: 11:02
Печать  
Посмотри в учебнике порядок укладки объектов для dbf
http://www.1cpp.ru/forum/YaBB.pl?num=1148874473
  
Наверх
IP записан
 
Pilokarpios
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Мая 2008
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #46 - 20. Октября 2008 :: 11:09
Печать  
И ещё вопрос профам:

Если брать начальные итоги из 1SKTTL и хранить их в таблице первоначального запуска пользователя, делать запрос в проводки по отрезку периода и ровнять количество разницей и суммой нач итогов. нада уже закончить с этим неудобством бух таблиц
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #47 - 20. Октября 2008 :: 11:10
Печать  
Pilokarpios писал(а) 20. Октября 2008 :: 10:50:
Пытался строить строку запроса, при больших фильтрах строки нехватает... err

 


Нужно разбавлять Текст условия  симв "РазделительСтрок" через каждые 10 запятых
  
Наверх
 
IP записан
 
Pilokarpios
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Мая 2008
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #48 - 20. Октября 2008 :: 11:13
Печать  
kiruha писал(а) 20. Октября 2008 :: 11:10:
Pilokarpios писал(а) 20. Октября 2008 :: 10:50:
Пытался строить строку запроса, при больших фильтрах строки нехватает... err

 


Нужно разбавлять Текст условия  симв "РазделительСтрок" через каждые 10 запятых


СИСТЕМНАЯ ошибка, строка запроса превышает максимальнодустимое значение, непомогут разделители и мой метод ламерский, думаю есть решение

Т.е. я строил строку запроса циклом списка значений добавляя в запрос параметр и строку, это для сложных фильтров НЕ ВАРИАНТ
  
Наверх
 
IP записан
 
Pilokarpios
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Мая 2008
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #49 - 20. Октября 2008 :: 11:25
Печать  
Этот метод работает отлично

Функция глПолучитьБИОстатокТовара(ДатаОстатков,Склад,Отдел,Номенклатура) Экспорт
     
     Если (глСтатусБИ = 1) и (ДатаОстатков=ТекущаяДата()) Тогда
           
           Запрос = глПодключениеБИ.СоздатьКоманду();
           
           Запрос.УстановитьТекстовыйПараметр("Счет", СчетПоКоду("01.1"));              
           Запрос.УстановитьТекстовыйПараметр("Субконто1", Склад);    
           
           Если ПустоеЗначение(Отдел)=0 Тогда
                 Запрос.УстановитьТекстовыйПараметр("Субконто2", Отдел);
                 ДопТекстЗапроса = "and (Остатки.SC1 = :Субконто2)";
           Иначе
                 ДопТекстЗапроса = "";
           КонецЕсли;  
           
           Запрос.УстановитьТекстовыйПараметр("Субконто3", Номенклатура);
           
           ТекстЗапроса = "
           |SELECT    
           |  Остатки.ACCID as [СчетИд $Счет.основной]
           |, Остатки.SC0 as [Суб1 $Справочник.МестаХранения]  
           |, Остатки.SC1 as [Суб2 $Справочник.Отделы]
           |, Остатки.SC2 as [Суб3 $Справочник.Номенклатура]
           |, Остатки.OBDT1 as [OBDT1 $Число]
           |, Остатки.OBKT1 as [OBKT1 $Число]
           |, Остатки.OBDT2 as [OBDT2 $Число]
           |, Остатки.OBKT2 as [OBKT2 $Число]
           |, Остатки.OBDT3 as [OBDT3 $Число]
           |, Остатки.OBKT3 as [OBKT3 $Число]
           |, Остатки.Date as [Date $Дата]
           |FROM  
           |  1SBKTTL as Остатки    
           |Where
           |  (Остатки.Kind='3') and (Остатки.ACCID = :Счет) and (Остатки.SC0 = :Субконто1) and (Остатки.SC2 = :Субконто3) #";
           
           ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"#",ДопТекстЗапроса);
           
           ТТЗ = СоздатьОбъект("ТаблицаЗначений");
           ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
           ТЗ.Выгрузить(ТТЗ);
           
           //ТТЗ.Свернуть("Суб1,Суб3","OBKT1,OBKT2,OBKT3,OBDT1,OBDT2,OBDT3");
           
           Возврат ("OBKT2")-ТТЗ.Итог("OBKT3");
           
     Иначе
           
           Ит = СоздатьОбъект("БухгалтерскиеИтоги");
           Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
           Если ПустоеЗначение(Отдел)=0 Тогда
                 Ит.ИспользоватьСубконто(ВидыСубконто.Отделы, Отдел, 2);
           КонецЕсли;
           Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Номенклатура, 2);
           Ит.ВыполнитьЗапрос(ДатаОстатков,ДатаОстатков,"01.1",,, 1,, "К");
           Возврат Ит.СКД(3);  
           
     КонецЕсли;  
     
КонецФункции
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #50 - 20. Октября 2008 :: 12:53
Печать  
Pilokarpios писал(а) 20. Октября 2008 :: 11:25:
Этот метод работает отлично
....


Что й то не вижу параметра Дата остатков Остатки.DATE в WHERE Озадачен

Для больших списков - уже написали - метод УложитьСписокОбъектов
  
Наверх
 
IP записан
 
Pilokarpios
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Мая 2008
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #51 - 20. Октября 2008 :: 12:58
Печать  
СпсОтбора = "";
ЗапросБИ.УложитьСписокОбъектов(СписЭМ,СпсОтбора);
ТекстСубконто1 = ТекстСубконто1+"
|  and (Проводки.KTSC0 IN (SELECT Val FROM "+СпсОтбора+"))";
````````````
```отладка:
WHERE
 ((Проводки.ACCDTID = '     3   ') or (Проводки.ACCKTID = '     3   '))
 and (Проводки.DATE BETWEEN {d '2008-09-03'} and {d '2008-09-05'})
 and (Проводки.KTSC0 IN (SELECT Val FROM 6d9ed04f-249d-4ed3-adcd-3579618bed58));

Проястните плиз на ДБФ варианте этот метод работает?

Выход запроса = ноль, движения есть
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #52 - 20. Октября 2008 :: 13:17
Печать  
KTSC0 это какой тип/вид?
СписЭМ - какой тип/вид элементов?
  
Наверх
 
IP записан
 
Pilokarpios
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Мая 2008
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #53 - 20. Октября 2008 :: 13:24
Печать  
kiruha писал(а) 20. Октября 2008 :: 13:17:
KTSC0 это какой тип/вид?
СписЭМ - какой тип/вид элементов?


СписЭМ = СписокЗначений с значениями Субконто1(Справочник.МестаХранения);
KTSC0 = Справочник.МестаХранения;
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #54 - 20. Октября 2008 :: 13:59
Печать  
Не-е, похоже
F=KTSC0     C   |13
т.е.
and (Left(Проводки.KTSC0,9) IN (SELECT Val FROM "+СпсОтбора+"))";
или Right
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: DBF прямой запрос (Оборотно сальдовая) Бухгалтерия
Ответ #55 - 27. Октября 2008 :: 05:13
Печать  
В прямом запросе (SQLite) не удается сделать фильтр по субконто.

Вот выдержка из запроса:
Код
Выбрать все
	|	(
	|	SELECT
	|		bkktl_vt.ACCID as ACCID
	|		,bkktl_vt.KIND as KIND
	|		,acc_vt.ACTIVE as ACTIVE
	|		,CASE WHEN (acc_vt.ACTIVE=1) OR (acc_vt.ACTIVE=3) AND (bkktl_vt.SD>=0) THEN bkktl_vt.SD ELSE 0 END AS СуммаОстатокДт
	|		,CASE WHEN (acc_vt.ACTIVE=2) OR (acc_vt.ACTIVE=3) AND (bkktl_vt.SD<0) THEN -bkktl_vt.SD ELSE 0 END AS СуммаОстатокКт
	|		,CASE WHEN bkktl_vt.VSC0 = :ВидСубконто.Контрагенты THEN bkktl_vt.SC0 ELSE
	|		CASE WHEN bkktl_vt.VSC1 = :ВидСубконто.Контрагенты THEN bkktl_vt.SC1 ELSE
	|		CASE WHEN bkktl_vt.VSC2 = :ВидСубконто.Контрагенты THEN bkktl_vt.SC2 ELSE
	|		CASE WHEN bkktl_vt.VSC3 = :ВидСубконто.Контрагенты THEN bkktl_vt.SC3 ELSE ''
	|		END END END END AS Субконто_Контрагенты
	|		,CASE WHEN bkktl_vt.VSC0 = :ВидСубконто.Контрагенты THEN bkktl_vt.VSC0 ELSE
	|		CASE WHEN bkktl_vt.VSC1 = :ВидСубконто.Контрагенты THEN bkktl_vt.VSC1 ELSE
	|		CASE WHEN bkktl_vt.VSC2 = :ВидСубконто.Контрагенты THEN bkktl_vt.VSC2 ELSE
	|		CASE WHEN bkktl_vt.VSC3 = :ВидСубконто.Контрагенты THEN bkktl_vt.VSC3 ELSE ''
	|		END END END END AS Субконто_Контрагенты_Вид
	|	FROM
	|		__1S_BKTTL as bkktl_vt
	|	INNER JOIN
	|		__1S_ACCS as acc_vt ON (bkktl_vt.ACCID = acc_vt.ID)
	|	WHERE (bkktl_vt.DATE = @Дата)
	|	AND (bkktl_vt.ACCID IN ACCID_vt)
	|	) as qr_vt 


попытка дописать

Код
Выбрать все
AND (Субконто_Контрагенты = @ВыбЗначСубконто) 



а потом установить значение из справочника контрагенты приводит к пустой таблице. Я вчера копался копался, понимаю что скорее всего поле SCx хранит значение не как справочник. Но как с помощью SQLite привести значение справочника к значению субконто я даже не в курсе.
Подскажите плиз. (без отбора в том виде как приведено выше все работает путем)
  

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