Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Запросы и табличные части 1С 8.2 / 12 сообщений из 12, страница 1 из 1
20.07.2012, 10:32
    #37886481
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Добрый день!
Вывел из табличной части трех документов информацию в макет. У меня два вопроса:
1) Подскажите как отсортировать по реквизиту табличной части (а именно Док.Имя.Начисления.Сотрудник.Наименование). В приведенном примере выдает ошибку "Не найдено поле Начисления".
2) Если сотрудник встречается повторно необходимо его вывести лишь раз, а в колонке результат сумму сложить.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ПериодРегистрации", СсылкаНаОбъект.ПериодРегистрации);
	Текст = "";
	Для Каждого Док Из Метаданные.Документы Цикл     
		Если Док.Имя = "НачислениеОтпускаРаботникамОрганизаций"          
		Или Док.Имя = "НачислениеПоБольничномуЛисту"                   
		Или Док.Имя = "НачислениеЗарплатыРаботникамОрганизаций" Тогда                                   
		Запрос.Текст =                
		Запрос.Текст + ?(Запрос.Текст = "","", "ОБЪЕДИНИТЬ ВСЕ") + "       
		|ВЫБРАТЬ 
		|	" + Док.Имя + ".Ссылка КАК Ссылка,
		|   ТЧ" + Док.Имя + "Сотрудник.Наименование КАК Сотрудник
		|ИЗ
		|	Документ." + Док.Имя + " КАК " + Док.Имя + "
		|ЛЕВОЕ СОЕДИНЕНИЕ 
		|  " + Док.Имя + ".Начисления КАК ТЧ" + Док.Имя + "
		|ПО 
		|  " + Док.Имя + ".Ссылка = ТЧ" + Док.Имя + ".Ссылка 
		|ГДЕ                         
		|  " + Док.Имя + ".ПериодРегистрации = &ПериодРегистрации
		|";        		
		КонецЕсли;
	КонецЦикла;                 
		Запрос.Текст = Запрос.Текст + "
		|УПОРЯДОЧИТЬ ПО Сотрудник
		|АВТОУПОРЯДОЧИВАНИЕ
		|";
		РезультатЗапроса = Запрос.Выполнить().Выбрать();
		Пока РезультатЗапроса.Следующий() Цикл
			ТабличнаяЧасть = РезультатЗапроса.Ссылка;
			Для каждого СтрокаТЧ Из ТабличнаяЧасть.Начисления Цикл				
				Если СокрЛП(СтрокаТЧ.ВидРасчета.Наименование) = "премия за результативность" Тогда
					ОбластьСтрока.Параметры.Работник = СтрокаТЧ.Сотрудник.Наименование;					
					ОбластьСтрока.Параметры.Величина = СтрокаТЧ.Результат;
					ДокументРезультат.Вывести(ОбластьСтрока);
					НомерСтрокиТЧ = НомерСтрокиТЧ + 1;
				КонецЕсли;
			КонецЦикла;
		 КонецЦикла;



Спасибо за ваши ответы!
...
Рейтинг: 0 / 0
20.07.2012, 11:04
    #37886546
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Konstatine, Если список обрабатываемых документов известен, то зачем перебирать коллекцию объектов метаданных? Это во-первых
Во-вторых, в ТЧ начисления отпуска и БЛ нет поля "Сотрудник" (оно - в Реквизитах самого документа, т.к. расчет индивидуальный)
Ну и что касается синтаксиса то:

Пропущено:
|ЛЕВОЕ СОЕДИНЕНИЕ
| Документ. " + Док.Имя + ".Начисления КАК ТЧ" + Док.Имя + "
и
| ТЧ" + Док.Имя + " . Сотрудник.Наименование КАК Сотрудник
(это только то, что нашел навскидку)
Лучше переписать запрос в явном виде
...
Рейтинг: 0 / 0
20.07.2012, 11:17
    #37886581
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
GermanGM,

Спасибо за советы. Подскажите, а как тогда написать без использования метаданных?
...
Рейтинг: 0 / 0
20.07.2012, 11:19
    #37886586
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
А как же быть со вторым вопросом? Поделитесь советом..
...
Рейтинг: 0 / 0
20.07.2012, 11:55
    #37886690
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Konstatine,

Да делоф-та :) (не совсем конечно понял, что Вы хотите получить в итоге). Для УПП/КА (см.ниже) - потянет:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
ВЫБРАТЬ
|  ЗП.Ссылка КАК Документ ,ЗП.Сотрудник КАК Сотрудник,СУММА(ЗП.Результат) КАК Сумма
|  ПОМЕСТИТЬ СписокДокументов
|  ИЗ Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ЗП
|  ГДЕ ЗП.Ссылка.ПериодРегистрации=&ПериодРегистрации И ЗП.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка,Сотрудник
|  
|  ОБЪЕДИНИТЬ ВСЕ
| 
| ВЫБРАТЬ
|  БЛ.Ссылка КАК Документ ,БЛ.Ссылка.Сотрудник КАК Сотрудник,СУММА(БЛ.Результат) КАК Сумма ИЗ 
| Документ.НачислениеПоБольничномуЛисту.Начисления КАК БЛ
|  ГДЕ БЛ.Ссылка.ПериодРегистрации=&ПериодРегистрации И БЛ.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка,Ссылка.Сотрудник
|  
|  ОБЪЕДИНИТЬ ВСЕ
| 
| ВЫБРАТЬ
|  Отп.Ссылка КАК Документ ,Отп.Ссылка.Сотрудник КАК Сотрудник,СУММА(Отп.Результат) КАК Сумма ИЗ 
| Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК Отп
|  ГДЕ отп.Ссылка.ПериодРегистрации=&ПериодРегистрации И Отп.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка,Ссылка.Сотрудник
| ;
| ВЫБРАТЬ Сотрудник,Документ,Сумма ИЗ СписокДокументов  ГДЕ Сумма<>0 УПОРЯДОЧИТЬ ПО 
| Сотрудник.Наименование,Сотрудник,Документ.Дата
...
Рейтинг: 0 / 0
20.07.2012, 12:05
    #37886716
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
GermanGM,

благодарствую! Сам бы до этого пару дней доходил! :)
...
Рейтинг: 0 / 0
20.07.2012, 12:06
    #37886720
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
... или так пожалуй корректнее (а то кто-нить да обзовет дятлом...:) ) 1000 раз зарекался копипастить, а тут такое дело - выпил маленько на работе...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
ВЫБРАТЬ
|  ЗП.Ссылка КАК Документ ,ЗП.Сотрудник КАК Сотрудник,СУММА(ЗП.Результат) КАК Сумма
|  ПОМЕСТИТЬ СписокДокументов
|  ИЗ Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ЗП
|  ГДЕ ЗП.Ссылка.ПериодРегистрации=&ПериодРегистрации И ЗП.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка,Сотрудник
|  
|  ОБЪЕДИНИТЬ ВСЕ
| 
| ВЫБРАТЬ
|  БЛ.Ссылка КАК Документ ,МИНИМУМ(БЛ.Ссылка.Сотрудник) КАК Сотрудник,СУММА(БЛ.Результат) КАК Сумма ИЗ 
| Документ.НачислениеПоБольничномуЛисту.Начисления КАК БЛ
|  ГДЕ БЛ.Ссылка.ПериодРегистрации=&ПериодРегистрации И БЛ.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка
|  
|  ОБЪЕДИНИТЬ ВСЕ
| 
| ВЫБРАТЬ
|  Отп.Ссылка КАК Документ ,МИНИМУМ(Отп.Ссылка.Сотрудник) КАК Сотрудник,СУММА(Отп.Результат) КАК Сумма ИЗ 
| Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК Отп
|  ГДЕ отп.Ссылка.ПериодРегистрации=&ПериодРегистрации И Отп.Ссылка.Проведен
|  СГРУППИРОВАТЬ ПО Ссылка
| ;
| ВЫБРАТЬ Сотрудник,Документ,Сумма ИЗ СписокДокументов  ГДЕ Сумма<>0 УПОРЯДОЧИТЬ ПО 
| Сотрудник.Наименование,Документ.Дата АВТОУПОРЯДОЧИВАНИЕ
...
Рейтинг: 0 / 0
20.07.2012, 12:21
    #37886757
Александр Пузаков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Konstatine,

Не спортивное решение у Вас... Я бы даже сказал корявое.
...
Рейтинг: 0 / 0
20.07.2012, 12:26
    #37886767
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Александр Пузаков,

Я и не спорю, поэтому и обратился на форум)). Но проблема уже решена.
...
Рейтинг: 0 / 0
22.07.2012, 10:19
    #37888231
WKBAPKA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
СГРУППИРОВАТЬ

ИТОГИ ПО

:)
...
Рейтинг: 0 / 0
23.07.2012, 07:54
    #37888623
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
WKBAPKA,

а лишние 13 символов в моем запросе ты и не заметил, да? :)
...
Рейтинг: 0 / 0
23.07.2012, 11:04
    #37888827
Konstatine
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросы и табличные части 1С 8.2
Все получилось. Может кому-нибудь будет интересно. Сделал так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ПериодРегистрации", СсылкаНаОбъект.ПериодРегистрации);
	Запрос.УстановитьПараметр("ВидРасчета1", "премия за результативность");
	Запрос.УстановитьПараметр("ВидРасчета2", "премия 7 ч");
	Текст = "";
	Запрос.Текст =
	"ВЫБРАТЬ
	|  ЗП.Ссылка КАК Документ, ЗП.Сотрудник КАК Сотрудник, СУММА(ЗП.Результат) КАК Результат
	|  ПОМЕСТИТЬ СписокДокументов
	|  ИЗ Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ЗП
	|  ГДЕ ЗП.Ссылка.ПериодРегистрации=&ПериодРегистрации И ЗП.Ссылка.Проведен
	|  И (ЗП.ВидРасчета.Наименование = &ВидРасчета1
	|  ИЛИ ЗП.ВидРасчета.Наименование = &ВидРасчета2)
	|  СГРУППИРОВАТЬ ПО Ссылка, Сотрудник
	|
	|  ОБЪЕДИНИТЬ ВСЕ
	|
	|  ВЫБРАТЬ
	|  РН.Ссылка КАК Документ, РН.Сотрудник КАК Сотрудник, СУММА(РН.Результат) КАК Результат
	|  ИЗ Документ.РегистрацияРазовыхНачисленийРаботниковОрганизаций.ОсновныеНачисления КАК РН
	|  ГДЕ РН.Ссылка.ПериодРегистрации=&ПериодРегистрации И РН.Ссылка.Проведен
	|  И (РН.ВидРасчета.Наименование = &ВидРасчета1
	|  ИЛИ РН.ВидРасчета.Наименование = &ВидРасчета2)
	|  СГРУППИРОВАТЬ ПО Сотрудник, Ссылка
	|  
	|  ОБЪЕДИНИТЬ ВСЕ
	| 
	|  ВЫБРАТЬ
	|  БЛ.Ссылка КАК Документ, БЛ.Ссылка.Сотрудник КАК Сотрудник, СУММА(БЛ.Результат) КАК Результат 
	|  ИЗ Документ.НачислениеПоБольничномуЛисту.Начисления КАК БЛ
	|  ГДЕ БЛ.Ссылка.ПериодРегистрации=&ПериодРегистрации И БЛ.Ссылка.Проведен
	|  И (БЛ.ВидРасчета.Наименование = &ВидРасчета1
	|  ИЛИ БЛ.ВидРасчета.Наименование = &ВидРасчета2)
	|  СГРУППИРОВАТЬ ПО Ссылка, Ссылка.Сотрудник
	|  
	|  ОБЪЕДИНИТЬ ВСЕ
	| 
	|  ВЫБРАТЬ
	|  Отп.Ссылка КАК Документ, Отп.Ссылка.Сотрудник КАК Сотрудник, СУММА(Отп.Результат) КАК Результат 
	|  ИЗ Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК Отп
	|  ГДЕ Отп.Ссылка.ПериодРегистрации=&ПериодРегистрации И Отп.Ссылка.Проведен
	|  И (Отп.ВидРасчета.Наименование = &ВидРасчета1
	|  ИЛИ Отп.ВидРасчета.Наименование = &ВидРасчета2)
	|  СГРУППИРОВАТЬ ПО Ссылка, Ссылка.Сотрудник
	| ;
	|  ВЫБРАТЬ Сотрудник, СУММА(Результат) ИЗ СписокДокументов ГДЕ Результат<>0
	|  СГРУППИРОВАТЬ ПО Сотрудник
	|  УПОРЯДОЧИТЬ ПО Сотрудник.Наименование
	|  АВТОУПОРЯДОЧИВАНИЕ
	|";                                          
	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	ОбщаяСумма = 0;
	Пока РезультатЗапроса.Следующий() Цикл
		ОбластьСтрока.Параметры.НомерСтроки = НомерСтрокиТЧ;
		ОбластьСтрока.Параметры.Работник = РезультатЗапроса.Сотрудник.Наименование;					
		ОбластьСтрока.Параметры.ТабельныйНомер = РезультатЗапроса.Сотрудник.Код;
		ОбластьСтрока.Параметры.ПодразделениеРаботника = РезультатЗапроса.Сотрудник.ПодразделениеОрганизации.Наименование;
		ОбластьСтрока.Параметры.Величина = РезультатЗапроса.Результат;
		ДокументРезультат.Вывести(ОбластьСтрока);
	    ОбщаяСумма = ОбщаяСумма + Число(РезультатЗапроса.Результат);
		НомерСтрокиТЧ = НомерСтрокиТЧ + 1;
	КонецЦикла;
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Запросы и табличные части 1С 8.2 / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]