Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отчет по двум запросам
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
ranis
Нужно сформировать отчет по двум запросам.
При формировании отчета, не выводит данные первого запроса, а со вторым всё в порядке. Подскажите пожалуйста, в чем ошибка(В 7.7 работаю не давно, больше опыта в 8)


необходимо зарегистрироваться для просмотра ссылки
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос3 = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС3(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок;
   |Расчет = Документ.НачисленияУдержанияСписком.Расчет;
   |НомерДок = Документ.НачисленияУдержанияСписком.НомерДок;
   |Величина = Документ.НачисленияУдержанияСписком.Величина;
   |СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
   |Функция СкидкаКДоходамДляСтраховыхВзносовСумма = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина));
   |Группировка ДатаДок без упорядочивания;
   |Группировка Расчет;
   |Группировка НомерДок;
   |Условие(Расчет = ВыбРасчет);
   |"//}}ЗАПРОС
  ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");  
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос3.Группировка(1) = 1 Цикл
      // Заполнение полей ДатаДок
      Таб.ВывестиСекцию("ДатаДок");
  
      Пока Запрос3.Группировка(2) = 1 Цикл
         // Заполнение полей Расчет
         Таб.ВывестиСекцию("Расчет");  
        
         Пока Запрос3.Группировка(3) = 1 Цикл
            // Заполнение полей НомерДок
            Таб.ВывестиСекцию("НомерДок");
        
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");    
   // Вывод заполненной формы
//   Таб.ТолькоПросмотр(1);
//Таб.Показать("Сформировать", "");    
  
   //
        
   Запрос1 = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС1(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ДатаДок1 = Документ.НачисленияУдержанияСписком.ДатаДок;
   |Расчет1 = Документ.НачисленияУдержанияСписком.Расчет;
   |НомерДок1 = Документ.НачисленияУдержанияСписком.НомерДок;
   |Величина1 = Документ.НачисленияУдержанияСписком.Величина;
   |СкидкаКДоходамДляСтраховыхВзносов1 = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
   |Функция СкидкаКДоходамДляСтраховыхВзносовСумма1 = Сумма(СкидкаКДоходамДляСтраховыхВзносов1-СкидкаКДоходамДляСтраховыхВзносов1+Число(Величина1));
   |Группировка ДатаДок1 без упорядочивания;
   |Группировка Расчет1;
   |Группировка НомерДок1;
   |Условие(Расчет1 = ВыбРасчет1);
   |"//}}ЗАПРОС
  ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"  
      Таб.ВывестиСекцию("Заголовок1");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос1.Группировка(1) = 1 Цикл
      // Заполнение полей ДатаДок
      Таб.ВывестиСекцию("ДатаДок1");
      Пока Запрос1.Группировка(2) = 1 Цикл
         // Заполнение полей Расчет
  
         Таб.ВывестиСекцию("Расчет1");
         Пока Запрос1.Группировка(3) = 1 Цикл
            // Заполнение полей НомерДок
  
            Таб.ВывестиСекцию("НомерДок1");
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого1");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "Сформировать1");
КонецПроцедуры
Flexy
Табличный документ - переменная "Таб". Перезаписывается, после первого запроса. Она же и выводиться последней.
Таб.ВывестиСекцию("Итого"); 
...
Таб = СоздатьОбъект("Таблица");
ranis
Flexy @ Сегодня, 13:55 необходимо зарегистрироваться для просмотра ссылки ,
И что сделать?
Flexy
Цитата(ranis @ 07.11.17, 13:01) необходимо зарегистрироваться для просмотра ссылки
И что сделать?

Выводить в одну таблицу два отчета:
Таб = СоздатьОбъект("ТабличныйДокумент");
//Вывод первого отчета
// Вывод второго отчета
Таб.Показать();

Или в разные шаблоны:
Таб = СоздатьОбъект("ТабличныйДокумент");
Таб.ИсходнаяТаблица("Отчет_1");
// Вывод отчета
Таб.Показать();
Таб = СоздатьОбъект("ТабличныйДокумент");
Таб.ИсходнаяТаблица("Отчет_2");
// Вывод второго отчета в другой шаблон
Таб.Показать();
ranis
Flexy @ Сегодня, 14:15 необходимо зарегистрироваться для просмотра ссылки ,
Суть в том что в 1 таблице одно условие, во второй таблице другое условие. В этом и проблема
Flexy
Цитата(ranis @ 07.11.17, 13:17) необходимо зарегистрироваться для просмотра ссылки
Суть в том что в 1 таблице одно условие, во второй таблице другое условие. В этом и проблема

Сделайте одним запросом
СписокУсловий = СоздатьОбъект("СписокЗначений");
СписокУсловий.Добавить(Расчет1);
СписокУсловий.Добавить(Расчет2);
ТекстЗапроса="
...
|Условие(Расчет В СписокУсловий );
ranis
ranis @ Сегодня, 14:17 необходимо зарегистрироваться для просмотра ссылки ,

Вот диалоговое окно


Вот так должно сформироваться


Так формируется



 ! 

необходимо зарегистрироваться для просмотра ссылки: 8, в следующий раз картинки удалю
 


Flexy @ Сегодня, 14:23 необходимо зарегистрироваться для просмотра ссылки ,
Похоже я совсем не умею описывать. Нужно по одному документу создать отчет. Есть два отбора "Удержание " и "Доплата". К примеру ставим удержание 25 и Произвольную доплату 50. В одной таблице нужно вывести данные по отбору Удержание, во второй таблице по отбору Доплата. И это всё должно быть в одном отчетеFlexy @ Сегодня, 14:23 необходимо зарегистрироваться для просмотра ссылки ,


Flexy @ Сегодня, 14:23 необходимо зарегистрироваться для просмотра ссылки ,
Получается надо получить 2 таблицы. С разными отборами
ranis
Актуально sad.gif
salton
ranis, измените макет таким образом, чтобы у Вас секции Итого1, ДатаДок1, Расчет1 итд были вертикальными.
И при обходе результата второго запроса используйте метод ПрисоединитьСекцию().

Как пишет помощник: "В выражении можно задавать имена двух секций, разделенных знаком ''|''. При этом будет получена область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая - вертикальной (состоять из колонок). В результате получится прямоугольная область таблицы."
ranis
salton @ Сегодня, 11:23 необходимо зарегистрироваться для просмотра ссылки ,
Не то
salton
Цитата(ranis @ 08.11.17, 12:37) необходимо зарегистрироваться для просмотра ссылки
Не то

Что не то?
Используя ПрисоединитьСекцию() можно выводить в одну строку две разных колонки.
Если Вам не нравиться так - делайте одним запросом как подсказал Flexy, и в обходе результата выводите одну строку/секцию для обеих таблиц сразу.
ranis
salton @ Сегодня, 14:03 необходимо зарегистрироваться для просмотра ссылки ,
Пробывал присоединяя, тоже пустые строчки выходят. Один запрос не проходит, т.к по одному докменту нужно вывести 2 отчета для сравнения. В одном условие один рассчет, в другом другой. Таблицы с данными должн быть параллельные
sava1
Выгрузите результат в тз.
Цикл по первой тз
вторая - получитьстрокупономеру (номер строки первой тз)
выводим первую часть
присоединяем вторую
ranis
актуально
nysysimara
во-первых, не понимаю этой формулы:
 СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина)

ведь: (а - а) + в = 0 + в

во-вторых, предлагаю вам все-таки написать один запрос,

в-третьих, если "Таблицы с данными должн быть параллельные", а запроса остается все-таки два, то скидываете результаты в общую таблицу и сворачивайте
ranis
nysysimara @ Сегодня, 9:54 необходимо зарегистрироваться для просмотра ссылки ,
1) Величина тип "Неопределенный", а для суммирование как раз та и нужно сделать.
2) Если делать одним запросом, то я не представляю, как объеденить существующие запросы
3) Я не имею представления как работать с таблицами значений
nysysimara
ranis @ Сегодня, 9:20 необходимо зарегистрироваться для просмотра ссылки ,
тогда вам в стол заказов
ranis
nysysimara @ Сегодня, 11:26 необходимо зарегистрироваться для просмотра ссылки ,
Мне лучше научиться. жаль нет методичек
nysysimara
Таблицы обязательно должны быть параллельные?

Нужны ли строки с итоговыми значениями по Дате и по Расчету?
ranis
nysysimara @ Сегодня, 14:35 необходимо зарегистрироваться для просмотра ссылки ,
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос    
        
  
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.КоличествоКолонок(10);//сколько надо    

Запрос3 = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС3(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок;
|Расчет = Документ.НачисленияУдержанияСписком.Расчет;
|НомерДок = Документ.НачисленияУдержанияСписком.НомерДок;
|Величина = Документ.НачисленияУдержанияСписком.Величина;
|СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
|Функция СкидкаКДоходамДляСтраховыхВзносовСумма = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина));
|Группировка ДатаДок без упорядочивания;
|Группировка Расчет;
|Группировка НомерДок;
|Условие(Расчет = ВыбРасчет);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

Пока Для й=1 по Результат1.КоличествоСтрок() Цикл //1
Если й>ТЗ.КоличествоСтрок() Тогда
//в 1 результате вдруг больше строк чем уже есть в ТЗ
ТЗ.НоваяСтрока();
КонецЕсли;

ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(й,1,Итого);
ТЗ.УстановитьЗначение(й,2,Расчет);
ТЗ.УстановитьЗначение(й,3,НомерДок);
ТЗ.УстановитьЗначение(й,4,ДатаДок);
КонецЦикла;


////////////////////////////////////////////////////////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 по ТЗ.КоличествоСтрок() Цикл
// Заполнение полей ДатаДок
Таб.ВывестиСекцию("ДатаДок");

// Заполнение полей Расчет
Таб.ВывестиСекцию("Расчет");

// Заполнение полей НомерДок
Таб.ВывестиСекцию("НомерДок");

КонецЦикла;

// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Вот сейчас код написанный с ТЗ. Только он сейчас на переменные ругается

nysysimara @ Сегодня, 14:35 необходимо зарегистрироваться для просмотра ссылки ,
Таблицы обязательно нужны параллельные, где есть столбцы дата, расчет, и сумма

Точнее вот так
Процедура Сформировать() 
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос    
        
  
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.КоличествоКолонок(10);//сколько надо    

Запрос3 = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС3(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок;
|Расчет = Документ.НачисленияУдержанияСписком.Расчет;
|НомерДок = Документ.НачисленияУдержанияСписком.НомерДок;
|Величина = Документ.НачисленияУдержанияСписком.Величина;
|СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
|Функция Итого = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина));
|Группировка ДатаДок без упорядочивания;
|Группировка Расчет;
|Группировка НомерДок;
|Условие(Расчет = ВыбРасчет);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

; Пока Для й=1 по Запрос3.КоличествоСтрок() Цикл //1
Если й>ТЗ.КоличествоСтрок() Тогда
//в 1 результате вдруг больше строк чем уже есть в ТЗ
ТЗ.НоваяСтрока();
КонецЕсли;

ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(й,1,Итого);
ТЗ.УстановитьЗначение(й,2,Расчет);
ТЗ.УстановитьЗначение(й,3,НомерДок);
ТЗ.УстановитьЗначение(й,4,ДатаДок);
КонецЦикла;

                                


////////////////////////////////////////////////////////2222222


//

Запрос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);
Таб.Показать("Сформировать", "");
КонецЦикла;
КонецПроцедуры
nysysimara
необходимо зарегистрироваться для просмотра ссылки
Запрос3 = СоздатьОбъект("Запрос"); 
ТекстЗапроса =
"//{{ЗАПРОС3(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок;
|Расчет = Документ.НачисленияУдержанияСписком.Расчет;
|НомерДок = Документ.НачисленияУдержанияСписком.НомерДок;
|Величина = Документ.НачисленияУдержанияСписком.Величина;
|СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
|Функция СкидкаКДоходамДляСтраховыхВзносовСумма = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина));
|Группировка ДатаДок без упорядочивания;
|Группировка Расчет;
|Группировка НомерДок;
|Условие(Расчет = ВыбРасчет);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
КонецЕсли;

ТабОбщ = СоздатьОбъект("ТаблицаЗначений");
Запрос3.Выгрузить(ТабОбщ,0,1); //0 - значения групп и функций;//1 - итоги по группировкам выводить сверху

Запрос1 = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС1(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок1 = Документ.НачисленияУдержанияСписком.ДатаДок;
|Расчет1 = Документ.НачисленияУдержанияСписком.Расчет;
|НомерДок1 = Документ.НачисленияУдержанияСписком.НомерДок;
|Величина1 = Документ.НачисленияУдержанияСписком.Величина;
|СкидкаКДоходамДляСтраховыхВзносов1 = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов;
|Функция СкидкаКДоходамДляСтраховыхВзносовСумма1 = Сумма(СкидкаКДоходамДляСтраховыхВзносов1-СкидкаКДоходамДляСтраховыхВзносов1+Число(Величина1));
|Группировка ДатаДок1 без упорядочивания;
|Группировка Расчет1;
|Группировка НомерДок1;
|Условие(Расчет1 = ВыбРасчет1);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
КонецЕсли;

ТабОбщ.НоваяКолонка("Расчет1");//
ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносов1","Число");

Пока Запрос1.Группировка(1) = 1 Цикл
    ДатаДок1 = Запрос1.ДатаДок1;
    ТабОбщ.НоваяСтрока();
    ТабОбщ.ДатаДок = ДатаДок1;
    ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
    Пока Запрос1.Группировка(2) = 1 Цикл
        Расчет1 = Запрос1.Расчет1;
        ТабОбщ.НоваяСтрока();
        ТабОбщ.ДатаДок = ДатаДок1;
        ТабОбщ.Расчет1 = Расчет1;
        ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
        Пока Запрос1.Группировка(3) = 1 Цикл
            ТабОбщ.НоваяСтрока();
            ТабОбщ.ДатаДок = ДатаДок1;
            ТабОбщ.НомерДок = Запрос1.НомерДок1;
            ТабОбщ.Расчет1 = Расчет1;
            ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносов,СкидкаКДоходамДляСтраховыхВзносов1");
ТабОбщ.Сортировать("ДатаДок,НомерДок");
  
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
ТабОбщ.ВыбратьСтроки();
Пока ТабОбщ.ПолучитьСтроку() Цикл
    Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.Показать("Сформировать", "");


а строка таблицы
<ТабОбщ.ДатаДок>|<ТабОбщ.НомерДок>|<ТабОбщ.Расчет>|<ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов>| |<ТабОбщ.ДатаДок>|<ТабОбщ.НомерДок>|<ТабОбщ.Расчет1>|<ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1>|
ranis
nysysimara @ Сегодня, 15:53 необходимо зарегистрироваться для просмотра ссылки ,
Пока ТабОбщ.ПолучитьСтроку() <<?>>Цикл
{C:\USERS\FIN\DESKTOP\ГТОВО2.ERT(88)}: Выражение должно иметь логический тип
nysysimara
ranis @ Сегодня, 15:03 необходимо зарегистрироваться для просмотра ссылки ,
Пока ТабОбщ.ПолучитьСтроку()=1 Цикл


блин, как стала кодить в 8ке это моя самая частая ошибка

ranis
nysysimara @ Сегодня, 16:10 необходимо зарегистрироваться для просмотра ссылки ,
А тут то что не то sad.gif

Вот что выходит
nysysimara
ranis @ Сегодня, 15:16 необходимо зарегистрироваться для просмотра ссылки ,
в свойствах ячеек с данными нужно указать тип="Выражение"
ranis
nysysimara @ Сегодня, 16:21 необходимо зарегистрироваться для просмотра ссылки ,
Что то тут явно не то biggrin.gif

Вот что за нулевые поля?
nysysimara
ranis @ Сегодня, 15:31 необходимо зарегистрироваться для просмотра ссылки ,
взамен
ТабОбщ.Сортировать("ДатаДок,НомерДок");

так
ТабОбщ.Сортировать("ДатаДок,НомерДок,Расчет,Расчет1");


необходимо зарегистрироваться для просмотра ссылки
ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносов1","Число");

Пока Запрос1.Группировка(1) = 1 Цикл
    ДатаДок1 = Запрос1.ДатаДок1;
    ТабОбщ.НоваяСтрока();
    ТабОбщ.ДатаДок = ДатаДок1;
    ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
    Пока Запрос1.Группировка(2) = 1 Цикл
        Расчет1 = Запрос1.Расчет1;
        ТабОбщ.НоваяСтрока();
        ТабОбщ.ДатаДок = ДатаДок1;
        ТабОбщ.Расчет1 = Расчет1;
        ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
        Пока Запрос1.Группировка(3) = 1 Цикл
            ТабОбщ.НоваяСтрока();
            ТабОбщ.ДатаДок = ДатаДок1;
            ТабОбщ.НомерДок = Запрос1.НомерДок1;
            ТабОбщ.Расчет1 = Расчет1;
            ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносов,СкидкаКДоходамДляСтраховыхВзносов1");


необходимо зарегистрироваться для просмотра ссылки
ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносовСумма1","Число");

Пока Запрос1.Группировка(1) = 1 Цикл
    ДатаДок1 = Запрос1.ДатаДок1;
    ТабОбщ.НоваяСтрока();
    ТабОбщ.ДатаДок = ДатаДок1;
    ТабОбщ.ССкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1;
    Пока Запрос1.Группировка(2) = 1 Цикл
        Расчет1 = Запрос1.Расчет1;
        ТабОбщ.НоваяСтрока();
        ТабОбщ.ДатаДок = ДатаДок1;
        ТабОбщ.Расчет1 = Расчет1;
        ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1;
        Пока Запрос1.Группировка(3) = 1 Цикл
            ТабОбщ.НоваяСтрока();
            ТабОбщ.ДатаДок = ДатаДок1;
            ТабОбщ.НомерДок = Запрос1.НомерДок1;
            ТабОбщ.Расчет1 = Расчет1;
            ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносовСумма,СкидкаКДоходамДляСтраховыхВзносовСумма1");


и в таблице заменить
ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов на ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма
ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 на ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1
logist
Цитата(ranis @ 09.11.17, 8:03) необходимо зарегистрироваться для просмотра ссылки
актуально

У нас не принято "поднимать" темы.
ranis
nysysimara @ Сегодня, 16:49 необходимо зарегистрироваться для просмотра ссылки ,
в группировке у меня похоже проблема sad.gif

logist @ Сегодня, 16:53 необходимо зарегистрироваться для просмотра ссылки ,
Я не поднял тему, а просто указал, что проблема не решена. И заранее прошу прощения за ошибки, я не знаю всех правил
salton
Цитата(ranis @ 09.11.17, 15:55) необходимо зарегистрироваться для просмотра ссылки
в группировке у меня похоже проблема


"Без Итогов"
в обеих запросах. Если нужен итог - пользуйтесь ТЗ.Итог("ИмяКолонки")
ranis
salton @ Сегодня, 9:07 необходимо зарегистрироваться для просмотра ссылки ,
Это для итого по всему документу?

nysysimara @ Вчера, 16:49 необходимо зарегистрироваться для просмотра ссылки ,
Огромное спасибо за помощь wub.gif . Теперь я хоть что-то представляю. Задача решена, чуть чуть подкорректировал

И всем остальным, выражаю огромную благодарность
Vofka
Цитата(ranis @ 10.11.17, 9:11) необходимо зарегистрироваться для просмотра ссылки
Огромное спасибо за помощь

Жмите палец вверх.
salton
Цитата(ranis @ 10.11.17, 9:11) необходимо зарегистрироваться для просмотра ссылки
salton @ Сегодня, 9:07 ,
Это для итого по всему документу?

Для "итого по всему документу" (если Вы имеете ввиду Документ.НачисленияУдержанияСписком) есть в запросе
Функция СкидкаКДоходамДляСтраховыхВзносовСумма
, а метод ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма") вернет вам итог по колонке ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма, который Вы потом сможете поместить в конце табличного документа.
К примеру
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма = ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма");

Потом в табличном документе создаете секцию "Подвал" и под колонкой "Сумма" помещаете
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма
как выражение.
В коде сначала прошлись по группировкам, а после
ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносовСумма,СкидкаКДоходамДляСтраховыхВзносовСумма1");

ставим
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма = ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма");

и потом уже
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
ТабОбщ.ВыбратьСтроки();
Пока ТабОбщ.ПолучитьСтроку() Цикл
    Таб.ВывестиСекцию("Строка");
КонецЦикла;
    Таб.ВывестиСекцию("Подвал");
Таб.Показать("Сформировать", "");
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.