Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
Нужно сформировать отчет по двум запросам. При формировании отчета, не выводит данные первого запроса, а со вторым всё в порядке. Подскажите пожалуйста, в чем ошибка(В 7.7 работаю не давно, больше опыта в 8)
Flexy @ Сегодня, 14:23
, Похоже я совсем не умею описывать. Нужно по одному документу создать отчет. Есть два отбора "Удержание " и "Доплата". К примеру ставим удержание 25 и Произвольную доплату 50. В одной таблице нужно вывести данные по отбору Удержание, во второй таблице по отбору Доплата. И это всё должно быть в одном отчетеFlexy @ Сегодня, 14:23
,
Flexy @ Сегодня, 14:23
, Получается надо получить 2 таблицы. С разными отборами
ranis, измените макет таким образом, чтобы у Вас секции Итого1, ДатаДок1, Расчет1 итд были вертикальными. И при обходе результата второго запроса используйте метод ПрисоединитьСекцию().
Как пишет помощник: "В выражении можно задавать имена двух секций, разделенных знаком ''|''. При этом будет получена область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая - вертикальной (состоять из колонок). В результате получится прямоугольная область таблицы."
Что не то? Используя ПрисоединитьСекцию() можно выводить в одну строку две разных колонки. Если Вам не нравиться так - делайте одним запросом как подсказал Flexy, и в обходе результата выводите одну строку/секцию для обеих таблиц сразу.
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
salton @ Сегодня, 14:03
, Пробывал присоединяя, тоже пустые строчки выходят. Один запрос не проходит, т.к по одному докменту нужно вывести 2 отчета для сравнения. В одном условие один рассчет, в другом другой. Таблицы с данными должн быть параллельные
во-вторых, предлагаю вам все-таки написать один запрос,
в-третьих, если "Таблицы с данными должн быть параллельные", а запроса остается все-таки два, то скидываете результаты в общую таблицу и сворачивайте
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП) 1С Предприятие 8.3: Бух.предприятия 3.0 + самописка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Кроме высшего образования, нужно иметь хотя бы среднее соображение
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
nysysimara @ Сегодня, 9:54
, 1) Величина тип "Неопределенный", а для суммирование как раз та и нужно сделать. 2) Если делать одним запросом, то я не представляю, как объеденить существующие запросы 3) Я не имею представления как работать с таблицами значений
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
nysysimara @ Сегодня, 14:35
,
//******************************************* // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос
ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.КоличествоКолонок(10);//сколько надо
Запрос3 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС3(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок = Документ.НачисленияУдержанияСписком.НомерДок; |Величина = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция СкидкаКДоходамДляСтраховыхВзносовСумма = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина)); |Группировка ДатаДок без упорядочивания; |Группировка Расчет; |Группировка НомерДок; |Условие(Расчет = ВыбРасчет); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Пока Для й=1 по Результат1.КоличествоСтрок() Цикл //1 Если й>ТЗ.КоличествоСтрок() Тогда //в 1 результате вдруг больше строк чем уже есть в ТЗ ТЗ.НоваяСтрока(); КонецЕсли;
////////////////////////////////////////////////////////2222222 Для й=1 по Результат2.КоличествоСтрок() Цикл //2 Если й>ТЗ.КоличествоСтрок() Тогда //во 2 результате вдруг больше строк чем уже есть в ТЗ ТЗ.НоваяСтрока(); КонецЕсли; ТЗ.УстановитьЗначение(й,1,Итого1); ТЗ.УстановитьЗначение(й,2,Расчет1); ТЗ.УстановитьЗначение(й,3,НомерДок1); ТЗ.УстановитьЗначение(й,4,ДатаДок1); //и т.д.
//
Запрос1 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС1(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок1 = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет1 = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок1 = Документ.НачисленияУдержанияСписком.НомерДок; |Величина1 = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов1 = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция СкидкаКДоходамДляСтраховыхВзносовСумма1 = Сумма(СкидкаКДоходамДляСтраховыхВзносов1-СкидкаКДоходамДляСтраховыхВзносов1+Число(Величина1)); |Группировка ДатаДок1 без упорядочивания; |Группировка Расчет1; |Группировка НомерДок1; |Условие(Расчет1 = ВыбРасчет1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Для й=1 по ТЗ.КоличествоСтрок() Цикл // Заполнение полей ДатаДок Таб.ВывестиСекцию("ДатаДок");
Вот сейчас код написанный с ТЗ. Только он сейчас на переменные ругается
nysysimara @ Сегодня, 14:35
, Таблицы обязательно нужны параллельные, где есть столбцы дата, расчет, и сумма
Точнее вот так
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос
ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.КоличествоКолонок(10);//сколько надо
Запрос3 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС3(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок = Документ.НачисленияУдержанияСписком.НомерДок; |Величина = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция Итого = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина)); |Группировка ДатаДок без упорядочивания; |Группировка Расчет; |Группировка НомерДок; |Условие(Расчет = ВыбРасчет); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
; Пока Для й=1 по Запрос3.КоличествоСтрок() Цикл //1 Если й>ТЗ.КоличествоСтрок() Тогда //в 1 результате вдруг больше строк чем уже есть в ТЗ ТЗ.НоваяСтрока(); КонецЕсли;
Запрос1 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС1(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок1 = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет1 = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок1 = Документ.НачисленияУдержанияСписком.НомерДок; |Величина1 = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов1 = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция Итого1 = Сумма(СкидкаКДоходамДляСтраховыхВзносов1-СкидкаКДоходамДляСтраховыхВзносов1+Число(Величина1)); |Группировка ДатаДок1 без упорядочивания; |Группировка Расчет1; |Группировка НомерДок1; |Условие(Расчет1 = ВыбРасчет1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Для й=1 по Запрос1.КоличествоСтрок() Цикл //2 Если й>ТЗ.КоличествоСтрок() Тогда //во 2 результате вдруг больше строк чем уже есть в ТЗ ТЗ.НоваяСтрока(); КонецЕсли; ТЗ.УстановитьЗначение(й,1,Итого1); ТЗ.УстановитьЗначение(й,2,Расчет1); ТЗ.УстановитьЗначение(й,3,НомерДок1); ТЗ.УстановитьЗначение(й,4,ДатаДок1); //и т.д.
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Для й=1 по ТЗ.КоличествоСтрок() Цикл // Заполнение полей ДатаДок Таб.ВывестиСекцию("ДатаДок");
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!