Здравствуйте!
Столкнулся с проблемой и не знаю как решить. У меня есть процедура выгрузки задач с Битрикс в ТЧ документа:
После этого функцией делаю печать:
В выгрузку попадают и задачи, и их подзадачи. Но отображаются они одинаково. Как сделать, чтобы при печати задача объеденялась со своими подзадачами? То есть, чтобы количество часов и цена просто прибавлялось к основной задаче? Не понимаю как это реализовать, буду очень благодарен
Столкнулся с проблемой и не знаю как решить. У меня есть процедура выгрузки задач с Битрикс в ТЧ документа:
Для ЭлементРезультата = 0 По Результат.result.tasks.Количество()-1 Цикл
Если Результат.result.tasks[ЭлементРезультата].groupId = Контрагент.IDКлиентаВБитрикс Тогда
НоваяСтрока = Расшифровка.Добавить();
НоваяСтрока.Задание = Результат.result.tasks[ЭлементРезультата].title;
НоваяСтрока.Исполнитель = Результат.result.tasks[ЭлементРезультата].responsible.name;
НоваяСтрока.КоличествоЧасов = Результат.result.tasks[ЭлементРезультата].timeSpentInLogs;
НоваяСтрока.КоличествоЧасов = НоваяСтрока.КоличествоЧасов / 3600;
НоваяСтрока.Цена = НоваяСтрока.КоличествоЧасов * ЦенаПолучить;
КонецЕсли;
КонецЦикла;
ПоказатьПосле этого функцией делаю печать:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст ="ВЫБРАТЬ
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.Контрагент КАК Клиент,
| ЗаказПокупателя.Организация КАК Исполнитель
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| МИНИМУМ(ЗаказПокупателяРасшифровка.НомерСтроки) КАК НомерСтрокиТЧ,
| ЗаказПокупателяРасшифровка.Задание,
| СУММА(ЗаказПокупателяРасшифровка.Цена) КАК Цена,
| ЗаказПокупателяРасшифровка.Исполнитель,
| СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов) КАК КоличествоЧасов
|ИЗ
| Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
|ГДЕ
| ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент
|
|СГРУППИРОВАТЬ ПО
| ЗаказПокупателяРасшифровка.Исполнитель,
| ЗаказПокупателяРасшифровка.Задание
|
|УПОРЯДОЧИТЬ ПО
| НомерСтрокиТЧ";
ЗапросРасшифровка = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_РасшифровкаЗаказа";
Макет = ПолучитьМакет("РасшифровкаЗаказ");
// печать производится на языке, указанном в настройках пользователя
КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
Макет.КодЯзыкаМакета = КодЯзыкаПечать;
// Выводим шапку накладной++
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Исполнитель, Шапка.Дата,,,КодЯзыкаПечать);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Клиент, Шапка.Дата,,,КодЯзыкаПечать);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.Дата = Формат(Шапка.Дата, "ДЛФ=Д");
ТабДокумент.Вывести(ОбластьМакета);
// Вывести табличную часть (Расшифровка)
Для каждого Строка из Расшифровка Цикл
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьМакета.Параметры.Заполнить(Строка);
ОбластьМакета.Параметры.КоличествоЧасов = Формат(Строка.КоличествоЧасов, "ЧДЦ=2");
ОбластьМакета.Параметры.Цена = Формат(Строка.Цена, "ЧДЦ=2");
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ИтогЧасов = Расшифровка.Итог("КоличествоЧасов");
ОбластьМакета.Параметры.ИтогСумма = Расшифровка.Итог("Цена");
ОбластьМакета.Параметры.ИтогЧасов = Формат(Расшифровка.Итог("КоличествоЧасов"), "ЧДЦ=2");
ОбластьМакета.Параметры.ИтогСумма = Формат(Расшифровка.Итог("Цена"), "ЧДЦ=2");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета.Параметры.Заполнить(Шапка);
Возврат ТабДокумент;
ПоказатьВ выгрузку попадают и задачи, и их подзадачи. Но отображаются они одинаково. Как сделать, чтобы при печати задача объеденялась со своими подзадачами? То есть, чтобы количество часов и цена просто прибавлялось к основной задаче? Не понимаю как это реализовать, буду очень благодарен
По теме из базы знаний
- Универсальная обработка для 1С 8.3 Инструмент для изменения и исправления ошибок информационной базы
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- Переход с 1С:УПП на 1C:ERP: Задача переноса печатных форм в сжатые сроки. Конструктор печати
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3
Найденные решения
Если "Задание" и "Исполнитель" во втором запросе тебе не нужны. Тогда так например (возможны ошибки в запросе - проверь):
ВЫБРАТЬ
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Исполнитель,
СУММА(ЗаказПокупателяРасшифровка.Цена+isnull(ЗаказПокупателяРасшифровка1.Цена,0)) КАК Цена,
СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов+isnull(ЗаказПокупателяРасшифровка1.КоличествоЧасов,0)) КАК КоличествоЧасов
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка1
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка1.IDРодителя
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент и ЗаказПокупателяРасшифровка.IDРодителя is null
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание
ps А вообще еще лучше подготовить вложенным запросом ЗаказПокупателяРасшифровка с условием "ГДЕ ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент" и уже таблицу из этого вложенного запроса соединять саму с собой.
ВЫБРАТЬ
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Исполнитель,
СУММА(ЗаказПокупателяРасшифровка.Цена+isnull(ЗаказПокупателяРасшифровка1.Цена,0)) КАК Цена,
СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов+isnull(ЗаказПокупателяРасшифровка1.КоличествоЧасов,0)) КАК КоличествоЧасов
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка1
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка1.IDРодителя
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент и ЗаказПокупателяРасшифровка.IDРодителя is null
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание
ps А вообще еще лучше подготовить вложенным запросом ЗаказПокупателяРасшифровка с условием "ГДЕ ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент" и уже таблицу из этого вложенного запроса соединять саму с собой.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
По сути задание сводится к тому, что надо в этом запросе объеденить поля, у которых есть IDРодителя и равно ID другого задания.
ВЫБРАТЬ
МИНИМУМ(ЗаказПокупателяРасшифровка.НомерСтроки) КАК НомерСтрокиТЧ,
ЗаказПокупателяРасшифровка.Задание,
СУММА(ЗаказПокупателяРасшифровка.ID) КАК ID,
СУММА(ЗаказПокупателяРасшифровка.IDРодителя) КАК IDРодителя,
СУММА(ЗаказПокупателяРасшифровка.Цена) КАК Цена,
ЗаказПокупателяРасшифровка.Исполнитель,
СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов) КАК КоличествоЧасов
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание
УПОРЯДОЧИТЬ ПО
НомерСтрокиТЧ
Показать
Если "Задание" и "Исполнитель" во втором запросе тебе не нужны. Тогда так например (возможны ошибки в запросе - проверь):
ВЫБРАТЬ
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Исполнитель,
СУММА(ЗаказПокупателяРасшифровка.Цена+isnull(ЗаказПокупателяРасшифровка1.Цена,0)) КАК Цена,
СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов+isnull(ЗаказПокупателяРасшифровка1.КоличествоЧасов,0)) КАК КоличествоЧасов
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка1
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка1.IDРодителя
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент и ЗаказПокупателяРасшифровка.IDРодителя is null
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание
ps А вообще еще лучше подготовить вложенным запросом ЗаказПокупателяРасшифровка с условием "ГДЕ ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент" и уже таблицу из этого вложенного запроса соединять саму с собой.
ВЫБРАТЬ
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Исполнитель,
СУММА(ЗаказПокупателяРасшифровка.Цена+isnull(ЗаказПокупателяРасшифровка1.Цена,0)) КАК Цена,
СУММА(ЗаказПокупателяРасшифровка.КоличествоЧасов+isnull(ЗаказПокупателяРасшифровка1.КоличествоЧасов,0)) КАК КоличествоЧасов
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка1
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка1.IDРодителя
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент и ЗаказПокупателяРасшифровка.IDРодителя is null
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание
ps А вообще еще лучше подготовить вложенным запросом ЗаказПокупателяРасшифровка с условием "ГДЕ ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент" и уже таблицу из этого вложенного запроса соединять саму с собой.
(10)Так как строил этот запрос в уме, допустил ошибку. Вот здесь ошибка: CODE]ЗаказПокупателяРасшифровка.Цена+isnull(ЗаказПокупателяРасшифровка1.Цена,0)[[/1C-CODE] сумма основной задачи складывается с каждой подзадачей, т.е. если 2 подзадачи, то сумма основной задачи складывается с каждой: (1400+700) + (1400+2100). Аналогично и с количеством. Надеюсь понятно объяснил. Вот как правильно:
Пишу опять на коленке, так что проверьте на всякий случай.
ВЫБРАТЬ
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Цена,
ЗаказПокупателяРасшифровка.КоличествоЧасов,
СУММА(isnull(ЗаказПокупателяРасшифровка1.Цена,0)) КАК ЦенаПодзаданий,
СУММА(isnull(ЗаказПокупателяРасшифровка1.КоличествоЧасов,0)) КАК КоличествоЧасовПодзаданий
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка1
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка1.IDРодителя
ГДЕ
ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент и ЗаказПокупателяРасшифровка.IDРодителя is null
СГРУППИРОВАТЬ ПО
ЗаказПокупателяРасшифровка.Исполнитель,
ЗаказПокупателяРасшифровка.Задание,
ЗаказПокупателяРасшифровка.Цена,
ЗаказПокупателяРасшифровка.КоличествоЧасов;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.Задание,
ВТ.Исполнитель,
ВТ.Цена+ВТ.ЦенаПодзаданий,
ВТ.КоличествоЧасов+ВТ.КоличествоЧасовПодзаданий
из ВТ как ВТ
ПоказатьПишу опять на коленке, так что проверьте на всякий случай.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот