Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
Titanum
1 / 1 / 1
Регистрация: 25.10.2011
Сообщений: 360
1

Запрос из табличной части обработки или выбор Количество() в запросе

16.10.2013, 14:43. Просмотров 9018. Ответов 10
Метки нет (Все метки)

Здравствуйте.
В документе Реализация есть табличная часть Сборщики с реквизитом Сборщик (Тип: Справочник.Сборщики)
Из документа нужно выбрать следующие данные:
Сборщик,
СуммаНачисления, где СуммаНачисления = СуммаДокумента / Сборщики.Количество()
То есть сумму документа реализации нужно разделить на количество сборщиков в табличной части.
Как это сделать в запросе?
1C
1
2
3
4
5
6
7
8
9
10
"ВЫБРАТЬ
| РеализацияСборщики.Сборщик,
| Реализация.СуммаДокумента / РеализацияСборщики.Количество() КАК СуммаНачисления
|ИЗ
| Документ.Реализация КАК Реализация
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Реализация.Сборщики КАК РеализацияСборщики
| ПО Реализация.Ссылка = РеализацияСборщики.Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияСборщики.Сборщик"
Или подскажите как можно выбрать данные из таблицы обработки, сгруппировав их по сборщику в которую будут помещены следующие данные:
1C
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
Запрос.Текст = "ВЫБРАТЬ
| СУММА(Реализация.СуммаДокумента) КАК СуммаДокумента,
| РеализацияСборщики.Сборщик
|ИЗ
| Документ.Реализация КАК Реализация
|  ЛЕВОЕ СОЕДИНЕНИЕ Документ.Реализация.Сборщики КАК РеализацияСборщики
|  ПО Реализация.Ссылка = РеализацияСборщики.Ссылка
|ГДЕ
| Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
|СГРУППИРОВАТЬ ПО
| РеализацияСборщики.Сборщик";
      
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
      
Выборка = Запрос.Выполнить().Выбрать();
 
Пока Выборка.Следующий() Цикл
Для каждого Стр из ДокументыОтбора Цикл
  Если Стр.ДокРеализации = Выборка.ДокРеализации Тогда
   Сб = Стр.ДокРеализации.ПолучитьОбъект().Сборщики;
   НС = ЗарплатаСборщикам.Добавить();
   НС.Сборщик = Выборка.Сборщик;
   НС.СуммаНачисления = Выборка.СуммаЗакупки / Сб.Количество();
  КонецЕсли;
КонецЦикла;
КонецЦикла;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 14:43
Ответы с готовыми решениями:

Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части
Есть документ "РаспределениеМатериаловНаВыпуск". У этого документа имеется "Форма документа". На...

В.7.7 Редактирование руками табличной части вн.обработки
Возможно ли редактировать ранее программно заполненную табличную часть внутренней (внешней)...

Запрос к табличной части
Всем бодрого времени суток! Помогите новичку составить запрос. Есть документ "Закупка", в нём...

Запрос по табличной части спрвочника
Нужно получить данные о ученой степени и ученом звании физического лица из...

Как лучше передать колонку табличной части в запрос
Задача в том чтобы передать значение колонки табличной части в запрос. Можно выгрузить колонку в...

10
Titanum
1 / 1 / 1
Регистрация: 25.10.2011
Сообщений: 360
16.10.2013, 16:24  [ТС] 2
Система такая:
Запрос из табличной части обработки или выбор Количество() в запросе
0
SonicQ
283 / 183 / 18
Регистрация: 20.02.2012
Сообщений: 918
16.10.2013, 19:07 3
конфу сможете бросить?
1
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
16.10.2013, 19:37 4
1. Запрос по тч
2. присоединяете таблицу с суммами тч.
3. поле-пропорция (СумВСтроке*СумПоДоку/СумИтогоПоТЧ)
1
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.10.2013, 21:20 5
Titanum,
1. Зачем соединять Документ.Реализация и Документ.Реализация.Сборщики?
2. Для решения задачи можно пойти двумя путями:
2.1 Создать в документе реквизит КоличествоСборщиков и заполнять его при записи документа. (Я бы так и сделал);
2.2 Написать запрос следующим образом: Делаем запрос к Документ.Реализация.Сборщики, группируем по полю ссылка, для поля Сборщик используем функцию Количество различных. Помещаем это дело во временную таблицу. Делаем запрос к Документ.Реализация с соединением с созданной нами ВТ по ссылке. Делаем поле сумма/количество.
1
Titanum
1 / 1 / 1
Регистрация: 25.10.2011
Сообщений: 360
16.10.2013, 23:00  [ТС] 6
Спасибо Вам.
Получилось. Сделала так:
1C
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
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВложенныйЗапрос.Сборщик,
| СУММА(ВложенныйЗапрос.СуммаНачисления) КАК СуммаНачисления
|ИЗ
| (ВЫБРАТЬ
|  РеализацияТоваровУслугСборщики.Сборщик КАК Сборщик,
|  СУММА(ВложенныйЗапрос.Ссылка.СуммаДокумента / ВложенныйЗапрос.Количество) КАК СуммаНачисления
| ИЗ
|  (ВЫБРАТЬ
|   РеализацияТоваровУслуг.Ссылка КАК Ссылка,
|   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугСборщики.Сборщик) КАК Сборщик,
|   СУММА(1) КАК Количество
|  ИЗ
|   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Сборщики КАК РеализацияТоваровУслугСборщики
|    ПО РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугСборщики.Ссылка
| 
|  СГРУППИРОВАТЬ ПО
|   РеализацияТоваровУслуг.Ссылка
|  {ИТОГИ ПО
|   Ссылка.*}) КАК ВложенныйЗапрос
|   ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Сборщики КАК РеализацияТоваровУслугСборщики
|   ПО ВложенныйЗапрос.Ссылка = РеализацияТоваровУслугСборщики.Ссылка
|
| СГРУППИРОВАТЬ ПО
|  РеализацияТоваровУслугСборщики.Сборщик
| {ИТОГИ ПО
|  Сборщик.*}) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Сборщик";
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.10.2013, 23:20 7
Titanum,
1. Не делайте лишние соединения:
Цитата Сообщение от Titanum Посмотреть сообщение
| * Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| * *ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Сборщики
2. Используйте временные таблицы вместо вложенных запросов. Вложенный запросы не оптимально работают на уровне СУБД. Тем более, что у Вас один вложенный запрос явно лишний.
1
Titanum
1 / 1 / 1
Регистрация: 25.10.2011
Сообщений: 360
16.10.2013, 23:38  [ТС] 8
Fenomen, спасибо.
Во временных таблицах нельзя делать Итоги
0
Dethmontt
Модератор
Эксперт 1С
2655 / 2444 / 419
Регистрация: 10.03.2011
Сообщений: 8,748
Записей в блоге: 1
Завершенные тесты: 1
16.10.2013, 23:49 9
Цитата Сообщение от Titanum Посмотреть сообщение
Во временных таблицах нельзя делать Итоги
Titanum, потому что они там не нужны...
1
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2013, 09:17 10
Titanum, должно быть как то так:
1C
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
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугСборщики.Ссылка,
| РеализацияТоваровУслугСборщики.Сборщик,
| РеализацияТоваровУслугСборщики.Ссылка.СуммаДокумента КАК СуммаДокумента 
|ПОМЕСТИТЬ В ВТДанные
|ИЗ
| Документ.РеализацияТоваровУслуг.Сборщики
|ИНДЕКСИРОВАТЬ ПО
|Ссылка
|;
|
|//////////////////////////////////////////////////////////////////////////////// 
|ВЫБРАТЬ
|  КОЛИЧЕСТВО(РАЗЛИЧНЫХ ВТДанные.Сборщик) КАК Колво,
|  ВТДанные.Ссылка
|ПОМЕСТИТЬ В ВТКолвСборщиков
| ИЗ
|  ВТДанные КАК ВТДАнные
|СГРУППИРОВАТЬ ПО
|  ВТДанные.Ссылка  
|ИНДЕКСИРОВАТЬ ПО
|Ссылка
|;
|
|//////////////////////////////////////////////////////////////////////////////// 
|ВЫБРАТЬ 
| ВТДанные.Сборщик,
| ВТДанные.СуммаДокумент / ВТКолвоСборщиков.Колво
|ИЗ 
| ВТДанные Как ВТДанные  
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКолвоСборщиков
| ПО ВТДанные.Ссылка = ВТКолвоСборщиков.Ссылка";
1. Такой запрос оптимальнее.
2. Лучше читается.

В последнем запросе Вы можете использовать итоги если они нужны.
1
Titanum
1 / 1 / 1
Регистрация: 25.10.2011
Сообщений: 360
17.10.2013, 09:33  [ТС] 11
Dethmontt, Fenomen, хорошо, спасибо вам!
0
17.10.2013, 09:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 09:33

Перенос данных из табличной части документа в табличную часть обработки
Помогите реализовать. В общем у меня есть документ ЗаявкаНаРейс, в нем есть табличная часть...

Нужен пример внешней обработки заполнения табличной части для управляемых форм
Ребят у кого есть хороший пример внешней обработки, для заполнения табличной части (Управляемые...

Ограничить выбор реквизита (документа) в табличной части
Добрый день. Платформа 8,3 Бухгалтерия 3.0, внешняя обработка. Есть табличная часть, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru