Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) выгрузка из журнала расчетов (число прочтений - 10295 )
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
выгрузка из журнала расчетов
27. Ноября 2006 :: 10:02
Печать  
здравствуйте!не знаю,в какой раздел написать,поэтому решила сюда.делаю запрос к журналу расчетов,далее выгружаю в тз и начинаю ее крутить-
т.е. перебираю построчно для дальнейшего использования в отчете.за месяц еще ничего,а за больший период конечно получается долго.
подскажите,как можно это оптимизировать!!!
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #1 - 27. Ноября 2006 :: 10:08
Печать  
Ну, например, можно, вместо того, чтобы "крутить" ТЗ в 1С, крутить выборку прямыми запросами. А вообще, на такой неконкретный вопрос конкретных ответов дождаться будет сложно Улыбка)
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #2 - 27. Ноября 2006 :: 10:30
Печать  
в отчете нужна группировка по порядковому номеру категории (через запрос нельзя,если только через функцию),потом должность-если группа,то брать значение группы,если нет-туда записывать просто элемент.
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #3 - 30. Ноября 2006 :: 06:54
Печать  
Подскажите что не так?

     ТекстЗапроса = "
     |SELECT
     |ЖР.ids AS [Объект $Справочник.Сотрудники],
               |ЖР.idalg AS [ВР $ВидРасчета]
               |FROM
     |$ЖурналРасчетов.Зарплата AS ЖР
               |WHERE
               |(ЖР.period='"+Формат(НачМесяца(Текущаядата()),"Д ГГГГММДД")+"M') AND
     |(ЖР.idalg=:ВидРасчета~~)  
               |"//}}ЗАПРОС
     ;  
     RS.УстановитьТекстовыйПараметр("ВидРасчета", ВидРасчета.ОплатаПоОкладу);
пишет
Syntax error converting the varchar value 'A1  Q7    Q7           ' to a column of data type int.
Как исправить?Помогите!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #4 - 30. Ноября 2006 :: 08:15
Печать  
1) Какая у тебя база - ДБФ или Скуль?
2) Ты видел свод по ЗП от Vaicartana, сделанный на прямых запросах для ДБФ.
ИМХО нужно его изучить, многие вопросы отпадут.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #5 - 30. Ноября 2006 :: 08:29
Печать  
База Sql.Свод не видела,где можно посмотреть(или там только для дбф)?Я только начинаю разбираться,поэтому много вопросов.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #6 - 30. Ноября 2006 :: 09:13
Печать  
SisterHo писал(а) 30. Ноября 2006 :: 08:29:
База Sql.Свод не видела,где можно посмотреть(или там только для дбф)?Я только начинаю разбираться,поэтому много вопросов.

У него на страничке много полезного есть. Ещё рекомендую распечатать его статью "В помощь расчетчику" и раздать всем расчетчикам, вопросов на много меньше становится!
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #7 - 30. Ноября 2006 :: 09:19
Печать  
Немного ОФФ: а видел кто-нибудь его статью "Ускоряемся"? А то она у меня не грузится и больше нигде её найти не могу...
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #8 - 30. Ноября 2006 :: 09:26
Печать  
JohnyDeath писал(а) 30. Ноября 2006 :: 09:19:
Немного ОФФ: а видел кто-нибудь его статью "Ускоряемся"? А то она у меня не грузится и больше нигде её найти не могу...

открылась страница на которой:
This ad zapped.
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #9 - 30. Ноября 2006 :: 11:48
Печать  
SisterHo писал(а) 30. Ноября 2006 :: 06:54:
Подскажите что не так?

     ТекстЗапроса = "
     |SELECT
     |ЖР.ids AS [Объект $Справочник.Сотрудники],
               |ЖР.idalg AS [ВР $ВидРасчета]
               |FROM
     |$ЖурналРасчетов.Зарплата AS ЖР
               |WHERE
               |(ЖР.period='"+Формат(НачМесяца(Текущаядата()),"Д ГГГГММДД")+"M') AND
     |(ЖР.idalg=:ВидРасчета~~)  
               |"//}}ЗАПРОС
     ;  
     RS.УстановитьТекстовыйПараметр("ВидРасчета", ВидРасчета.ОплатаПоОкладу);
пишет
Syntax error converting the varchar value 'A1  Q7    Q7           ' to a column of data type int.
Как исправить?Помогите!

Если верить документации, второй модификатор вида расчёта для SQL должен быть int. Однако, это не так (по крайней мере для версий 1.8.1.6 и 2.0.3.1). Т.е. это ошибка метапарсера 1С++ или ошибка документации. Обойти её можно, используя метаимя $ВидРасчета.
Код
Выбрать все
|(ЖР.idalg = $ВидРасчета.ОплатаПоОкладу) 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #10 - 30. Ноября 2006 :: 18:23
Печать  
Я делаю примерно так, лучшего варианта не нашел Улыбка

Код
Выбрать все
	Мета = СоздатьОбъект("MetaDataWork");
	СЗначисления = СоздатьОбъект("СписокЗначений");

	Для Индекс = 1 По ГруппаРасчетов.ВсеНачисления.Количество() Цикл
		еНачисления.ПолучитьРасчет(Индекс)), 27, 13)));
	КонецЦикла;
	СтрокаУсловия1 = Мета.ПолучитьСтрокуИзСЗ(СЗначисления);

	СЗначисления.УдалитьВсе();
	Для Индекс = 1 По ГруппаРасчетов.ВсеУдержания.Количество() Цикл
		еУдержания.ПолучитьРасчет(Индекс)), 27, 13)));
	КонецЦикла;
	СтрокаУсловия2 = Мета.ПолучитьСтрокуИзСЗ(СЗначисления);

	Условие = "";
	ТекстЗапроса = "
		|SELECT
		|	ЖР.ids AS [Объект $Справочник.Сотрудники],
		|   ЖР.IDALG as [ВидРасч $ВидРасчета],
		|	CASE
		|		WHEN ЖР.IDALG IN (" + СтрокаУсловия1 + ") THEN SUM(ЖР.result)
		|		ELSE 0
		|	END AS Приход,
		|	CASE
		|		WHEN ЖР.IDALG IN (" + СтрокаУсловия2 + ") THEN SUM(ЖР.result)
		|		ELSE 0
		|	END AS Расход
		|
		|FROM
		|	$ЖурналРасчетов.Зарплата AS ЖР (NOLOCK)
		|WHERE
		|	:ТекДата BETWEEN ЖР.DATEB AND ЖР.DATEE AND
		|	ЖР.IDALG IN (" + СтрокаУсловия1 + "," + СтрокаУсловия2 + ")
		|";


 

  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #11 - 05. Декабря 2006 :: 07:06
Печать  
to Arta-сделала как ты написал,ругается на несоответствие типов.Из списка значений (СтрокаУсловия1)- строка,а в запросе вхождение на вид расчета.Как у тебя работает?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #12 - 05. Декабря 2006 :: 08:13
Печать  
Вот СтрокаУсловия1 - '6782','6783','6784','6901','7053'
Предложенный вариант у меня работает.
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #13 - 05. Декабря 2006 :: 08:40
Печать  
Все работает.Спасибо. Класс А как получить в  запросе код справочника и наименование группы справочника?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #14 - 05. Декабря 2006 :: 16:27
Печать  
У... наверное пора в http://www.1cpp.ru/forum/YaBB.pl?num=1148038411 Улыбка

Код
Выбрать все
SELECT
...,
...,
Сотр.CODE
FROM
...
JOIN $Справочник.Сотрудники AS Сотр (NOLOCK) ON Сотр.ID = ЖР.ids
 



Это код. Таким же образом можно заджойнить по Сотр.PARENTID и получить наименование группы.
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #15 - 06. Декабря 2006 :: 09:58
Печать  
С кодами и группами разобралась.
Вот мой запрос.
|SELECT
     |      ЖР.ids AS [Объект $Справочник.Сотрудники],
     |      ЖР.result AS [Результат],  
     |      Долж.PARENTID [Родитель $Справочник.Должности],  
     |      $ЖР.Должность AS [Должность $Справочник.Должности],
     |FROM
     |      $ЖурналРасчетов.Зарплата AS ЖР  
     |JOIN $Справочник.Должности AS Долж (NOLOCK) ON Долж.ID = $ЖР.Должность
   |WHERE
   |(ЖР.period='"+Формат(ЖР.НачалоТекущегоПериода(),"Д ГГГГММДД")+"M') AND  
   |ЖР.idalg IN (" + СтрокаУсловия1 + ")  AND  
     |Group By ЖР.ids,ЖР.idalg, ЖР.result ,$ЖР.Должность,Долж.PARENTID
     |"//}}ЗАПРОС
     ;  
А как реализовать конструкцию
"|ДолжностьСотрудника=ЖурналРасчетов.Зарплата.Объект.Должность;" ?
Т.е. должность у меня -реквизит Журнала Расчетов,мне надо еще Должность сотрудника на конец выбранного периода.Как достать ее?
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #16 - 06. Декабря 2006 :: 10:10
Печать  
Цитата:
Получение наиболее позднего периодического значения

Синтаксис:

$ПоследнееЗначение.{<ИмяСправочника> | Константа}.{<ИмяРеквизита | ИмяКонстанты>}(
       <ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]]
)

Параметры:

ИдОбъекта - тип: конструкция типа выражение MS T-SQL; внутренний идентификатор элемента справочника, или 0 для константы;
Дата - тип: конструкция типа выражение MS T-SQL; дата, на которую нужно получить последнее значение;
Время - тип: конструкция типа выражение MS T-SQL; время, на которое нужно получить последнее значение;
ИДДокумента - тип: конструкция типа выражение MS T-SQL; идентификатор документа, на позицию которого нужно получить последнее значение.
Описание: позволяет получить последнее значение на указанную дату.


Код
Выбрать все
|ДолжностьСотрудника=ЖурналРасчетов.Зарплата.Объект.Должность; 


Код
Выбрать все
|$ПоследнееЗначение.Сотрудники.Должность(ЖР.ids,:КонецПериода~~) AS [ДолжностьСотрудника $Справочник.Должности] 


RS.УстановитьТекстовыйПараметр("КонецПериода",ЖР.КонецТекущегоПериода())
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #17 - 07. Декабря 2006 :: 08:18
Печать  
вот кусок запроса:
(
select top 1
left(c175_vv.value, 9)
from
_1sconst as c175_vv (nolock)
where
c175_vv.id = 175 and
c175_vv.objid = ЖР.ids and
(c175_vv.date <= {d '2006-11-01'})
order by c175_vv.date desc, c175_vv.time desc, c175_vv.docid desc, c175_vv.row_id desc
) AS [ДолжностьСотрудника $Справочник.Должности]

ругается
Incorrect syntax near the keyword 'order'.
Что не так?
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #18 - 07. Декабря 2006 :: 11:13
Печать  
приводила бы уже ВЕСЬ запрос - так не понятно ничего и не отладку приводи, а нормальный текст
  
Наверх
 
IP записан
 
SisterHo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 27. Ноября 2006
Пол: Женский
Re: выгрузка из журнала расчетов
Ответ #19 - 07. Декабря 2006 :: 12:23
Печать  
угу... Смущённый
ТекстЗапроса = "
|SELECT
|      ЖР.ids AS [Объект $Справочник.Сотрудники],
|      ЖР.result AS [Результат],  
|      Долж.PARENTID [Родитель $Справочник.Должности],  
|      $ЖР.Должность AS [Должность $Справочник.Должности],
|      $ЖР.Подразделение AS [Подразделение $Справочник.Подразделения],
|      $ЖР.Категория AS [Категория $Перечисление.КатегорииСотрудников]  

|$ПоследнееЗначение.Сотрудники.Должность(ЖР.ids,:КонецПериода~~) AS [ДолжностьСотрудника $Справочник.Должности]
|FROM
|      $ЖурналРасчетов.Зарплата AS ЖР  
|JOIN $Справочник.Должности AS Долж (NOLOCK) ON Долж.ID = $ЖР.Должность  
|WHERE
|(ЖР.period='"+Формат(ДатаЗапроса,"Д ГГГГММДД")+"M') AND  
|ЖР.idalg IN (" + СтрокаУсловия1 + ")
|Group By ЖР.ids,$ЖР.Подразделение,$ЖР.Категория,ЖР.idalg, ЖР.result ,$ЖР.Должность,Долж.PARENTID,ДолжностьСотрудника
|"//}}ЗАПРОС
;  
RS.УложитьСписокОбъектов(списокподр, "#сп1","Подразделения");  
RS.УстановитьТекстовыйПараметр("КонецПериода",ДатаЗапроса);
RS.Отладка(1);
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);  
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: выгрузка из журнала расчетов
Ответ #20 - 11. Декабря 2006 :: 04:13
Печать  
в случаяъ, когда выполняется группировка по таким конструкциям, типа $ПоследнееЗначение и прочим подзапросам (особенно с внутренней сортировкой) - рекомендую оборачивать это во внешний запрос, да понятнее это выглядит:
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|
|	Подзапрос.Объект 				AS [Объект $Справочник.Сотрудники],
|	SUM(Подзапрос.Результат)		AS Результат,
|	Подзапрос.Родитель				AS [Родитель $Справочник.Должности],
|	Подзапрос.Должность				AS [Должность $Справочник.Должности],  
|	Подзапрос.Подразделение			AS [Подразделение $Справочник.Подразделения],
|	Подзапрос.Категория 			AS [Категория $Перечисление.КатегорииСотрудников],
|	Подзапрос.ДолжностьСотрудника	AS [ДолжностьСотрудника $Справочник.Должности]
|
|FROM	(
|	SELECT  
|		ЖР.ids 						AS Объект,
|		ЖР.result 					AS Результат,    
|		Долж.PARENTID 				AS Родитель,
|		$ЖР.Должность 				AS Должность,
|		$ЖР.Подразделение 			AS Подразделение,
|		$ЖР.Категория 				AS Категория,
|		$ПоследнееЗначение.Сотрудники.Должность(ЖР.ids,:КонецПериода~~) AS ДолжностьСотрудника
|	FROM
|		$ЖурналРасчетов.Зарплата AS ЖР    
|	JOIN $Справочник.Должности AS Долж (NOLOCK) ON Долж.ID = $ЖР.Должность    
|
|	WHERE	(ЖР.period='"+Формат(ДатаЗапроса,"Д ГГГГММДД")+"M')
|		AND (ЖР.idalg IN (" + СтрокаУсловия1 + "))
|		) AS Подзапрос
|
|GROUP BY
|	Подзапрос.Объект,
|	Подзапрос.Родитель,
|	Подзапрос.Должность,
|	Подзапрос.Подразделение,
|	Подзапрос.Категория,
|	Подзапрос.ДолжностьСотрудника
|"//}}ЗАПРОС
;    
RS.УложитьСписокОбъектов(списокподр, "#сп1","Подразделения");  
RS.УстановитьТекстовыйПараметр("КонецПериода",ДатаЗапроса);
RS.Отладка(1);
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);   



PS не знаю, как другим, но меня плохо отформатированный код приводит в уныние (это мягко сказано  Подмигивание)
PPS хотя на форуме табуляция почему то плывет... совсем не так, как в 1С-ке  Печаль
  
Наверх
 
IP записан
 
Перенос 1С, выгрузка 1С
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 21. Марта 2009
Перенос 1С, выгрузка 1С
Ответ #21 - 21. Марта 2009 :: 13:27
Печать  
Мы выполняем выгрузку 1С / обмен данными между типовыми и самописными конфигурациями 1С, обмен 1C данными, объединение баз, перенос справочников 1С, 1С перенос документов, 1С перенос остатков, операций.
Виды выгрузки 1С данных:
•      перенос справочников 1С
•      перенос остатков 1С регистров
•      перенос 1С проводок
•      1С перенос документов
Проводим консультации по настройке 1С конвертаций.
Выполнение работ возможно удаленно и в офисе.

E-mail: convert1c@nm.ru
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать