powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запросы и табличные части 1С 8.2
12 сообщений из 12, страница 1 из 1
Запросы и табличные части 1С 8.2
    #37886481
Konstatine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Вывел из табличной части трех документов информацию в макет. У меня два вопроса:
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
Запросы и табличные части 1С 8.2
    #37886546
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstatine, Если список обрабатываемых документов известен, то зачем перебирать коллекцию объектов метаданных? Это во-первых
Во-вторых, в ТЧ начисления отпуска и БЛ нет поля "Сотрудник" (оно - в Реквизитах самого документа, т.к. расчет индивидуальный)
Ну и что касается синтаксиса то:

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

Спасибо за советы. Подскажите, а как тогда написать без использования метаданных?
...
Рейтинг: 0 / 0
Запросы и табличные части 1С 8.2
    #37886586
Konstatine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как же быть со вторым вопросом? Поделитесь советом..
...
Рейтинг: 0 / 0
Запросы и табличные части 1С 8.2
    #37886690
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Запросы и табличные части 1С 8.2
    #37886716
Konstatine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM,

благодарствую! Сам бы до этого пару дней доходил! :)
...
Рейтинг: 0 / 0
Запросы и табличные части 1С 8.2
    #37886720
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... или так пожалуй корректнее (а то кто-нить да обзовет дятлом...:) ) 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
Запросы и табличные части 1С 8.2
    #37886757
Александр Пузаков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstatine,

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

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

ИТОГИ ПО

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

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

Код: 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
12 сообщений из 12, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Запросы и табличные части 1С 8.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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