7.7 Нужно правильно составить запрос

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем warayg, 15 июл 2011.

  1. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Код:
    	Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т.НоваяКолонка("Кол","Число",14,2);
    Т.НоваяКолонка("СуммаСеб","Число",14,2);
    Т.НоваяКолонка("Сумма","Число",14,2);
    
    Т1 = СоздатьОбъект("ТаблицаЗначений");
    Т1.НоваяКолонка("Контрагент");
    Т1.НоваяКолонка("КолОбщ");
    Т1.НоваяКолонка("СуммаСебОбщ");
    Т1.НоваяКолонка("СуммаОбщ");
    
    Т2 = СоздатьОбъект("ТаблицаЗначений");
    Т2.НоваяКолонка("Док","Запрос.РасходнаяНакладная");
    Т2.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т2.НоваяКолонка("Кол","Число",14,2);
    Т2.НоваяКолонка("ЦенаБезНДС","Число",14,2);
    
    Пока Запрос.Группировка(1) = 1 Цикл //группировка по Контрагенту
    
    Т1.УдалитьСтроки();		 
    
    Пока Запрос.Группировка(2) = 1 Цикл  //группировка по РасходнойНакладной
    
    // - - получаем себестоимость и кол. ТМЦ по накладной
    
    Т.УдалитьСтроки();	
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2; //это общая себестоимость по накладной с НДС
    
    КонецЦикла;
    // - -
    Т2.УдалитьСтроки();
    // - - группировка по ТМЦ
    Пока Запрос.Группировка(3) = 1 Цикл    
    
    // - - вывод себестоимости по ТМЦ
    а=0;
    Себестоимость=0;
    Если Т.НайтиЗначение(Запрос.ТМЦ,а,"ТМЦ")=1 Тогда
    Т.ПолучитьСтрокуПоНомеру(а);
    Себестоимость=Т.Сумма; 
    КонецЕсли;
    // - -
    
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.ТМЦ = Запрос.ТМЦ;
    Т2.Кол = Запрос.Кво;
    Т2.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    //Т2.ВыбратьСтроки();
    
    КонецЦикла;
    // - - конец группировки по ТМЦ
    
    КонецЦикла; // - - конец группировки по накладной
    
    // - - расчитываем общий итог по кол. и себестоимости из всех накладных по контрагенту
    Т1.НоваяСтрока();
    Т1.Контрагент = Запрос.Контрагент;
    Т1.КолОбщ = Т.Итог("Кол");
    Т1.СуммаСебОбщ = Т.Итог("СуммаСеб");
    
    а=0;
    СуммаСебОбщ=0;
    КолОбщ=0;
    Если Т1.НайтиЗначение(Запрос.Контрагент,а,"Контрагент")=1 Тогда
    Т1.ПолучитьСтрокуПоНомеру(а);
    СуммаСебОбщ=Т1.Итог("СуммаСебОбщ");
    КолОбщ=Т1.Итог("КолОбщ"); 
    КонецЕсли;
    Таб.ВывестиСекцию("Строка"); // выводим данные по контрагенту
    
    // - -  
    // - - расчитываем данные по ТМЦ
    Таб.ВывестиСекцию("Строка1"); // выводим данные по Документу  
    
    а=0;
    ТМЦ=0;
    Кол=0;
    ЦенаБезНДС=0;
    Если Т2.НайтиЗначение(Запрос.РасходнаяНакладная,а,"Док")=1 Тогда
    Т2.ПолучитьСтрокуПоНомеру(а);
    ТМЦ=Т2.ТМЦ;
    Кол=Т2.Кол;
    ЦенаБезНДС=Т2.ЦенаБезНДС;
    КонецЕсли;
    
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    
    //Пока Т2.ПолучитьСтроку()=1 Цикл
    //КонецЦикла;
    // - -
    КонецЦикла; // - - конец группировки по контрагенту
    

    Если делаем так:

    Код:
    Таб.ВывестиСекцию("Строка1"); // выводим данные по Документу  
    
    а=0;
    ТМЦ=0;
    Кол=0;
    ЦенаБезНДС=0;
    Если Т2.НайтиЗначение(Запрос.РасходнаяНакладная,а,"Док")=1 Тогда
    Т2.ПолучитьСтрокуПоНомеру(а);
    ТМЦ=Т2.ТМЦ;
    Кол=Т2.Кол;
    ЦенаБезНДС=Т2.ЦенаБезНДС;
    КонецЕсли;
    
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    
    то выводится одна строка по документу с данными СУММОЙ ВСЕХ ДОКУМЕНТОВ (а нужны итоги только по данному документу), следующая выводится строчка с одним ТМЦ из документа (цена и кол. правельные)

    если так:

    Код:
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЦикла;
    
    то выводится, так же, одна строка по документу с данными СУММОЙ ВСЕХ ДОКУМЕНТОВ (а нужны итоги только по данному документу), и потом выводятся все ТМЦ из одной накладной (цена и кол. правельные, себестоимость повторяется по всем ТМЦ)
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Т2 должна очищаться там же где и Т1
    2) выводим так:

    ТекДок="";
    Т2.ВыбратьСтроки();
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Если ТекДок<>Т2.Док Тогда
    Таб.ВывестиСекцию("Строка1"); тут документ
    ТекДок=Т2.Док;
    КонецЕсли;
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЦикла;
  3. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    со строками всё хорошо, но себестоимость (идет повтор по всем тмц) и количество по документу (повтор по всем документам)

    Код:
    	//Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(З)
    |Период с Дата1 по Дата2;
    |Обрабатывать НеПомеченныеНаУдаление;
    |РасходнаяНакладная = Документ.РасходнаяНакладная.ТекущийДокумент;
    |Контрагент = Документ.РасходнаяНакладная.Контрагент;
    |Валюта = Документ.РасходнаяНакладная.Валюта;
    |ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    |Кво = Документ.РасходнаяНакладная.Кво;
    |ЦенаБезНДС = Документ.РасходнаяНакладная.ЦенаБезНДС;
    |НДС = Документ.РасходнаяНакладная.НДС;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |СуммаБезНДС = Документ.РасходнаяНакладная.СуммаБезНДС;
    |НомерДок = Документ.РасходнаяНакладная.НомерДок;
    |ДатаДок = Документ.РасходнаяНакладная.ДатаДок;
    |СуммаБезСкидки = Документ.РасходнаяНакладная.СуммаБезСкидки;
    |Скидка = Документ.РасходнаяНакладная.Скидка;
    |Функция Итого1 = Сумма(СуммаСНДС);
    |Функция Итого2 = Сумма(СуммаБезНДС);
    |Функция Итого3 = Сумма(НДС);
    |Функция Итого4 = Сумма((СуммаБезСкидки+Скидка)*1.2);
    |Функция КолДок= Сумма(Кво);
    |Группировка  Контрагент без групп;
    |Группировка  РасходнаяНакладная;
    |Группировка  ТМЦ без групп;	
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    // Подготовка к заполнению выходных форм данными запроса
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("З");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    
    Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т.НоваяКолонка("Кол","Число",14,2);
    Т.НоваяКолонка("СуммаСеб","Число",14,2);
    Т.НоваяКолонка("Сумма","Число",14,2);
    
    Т1 = СоздатьОбъект("ТаблицаЗначений");
    Т1.НоваяКолонка("Контрагент");
    Т1.НоваяКолонка("КолОбщ");
    Т1.НоваяКолонка("СуммаСебОбщ");
    Т1.НоваяКолонка("СуммаОбщ");
    
    Т2 = СоздатьОбъект("ТаблицаЗначений");
    Т2.НоваяКолонка("Док","Запрос.РасходнаяНакладная");
    Т2.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т2.НоваяКолонка("Кол","Число",14,2);
    Т2.НоваяКолонка("ЦенаБезНДС","Число",14,2);
    
    Пока Запрос.Группировка(1) = 1 Цикл //группировка по Контрагенту
    
    Т2.УдалитьСтроки();
    Т1.УдалитьСтроки();		 
    
    Пока Запрос.Группировка(2) = 1 Цикл  //группировка по РасходнойНакладной
    
    // - - получаем себестоимость и кол. ТМЦ по накладной
    
    Т.УдалитьСтроки();	
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2; //это общая себестоимость по накладной с НДС
    
    КонецЦикла;
    // - -
    // - - группировка по ТМЦ
    Пока Запрос.Группировка(3) = 1 Цикл    
    
    // - - вывод себестоимости по ТМЦ
    а=0;
    Себестоимость=0;
    Если Т.НайтиЗначение(Запрос.ТМЦ,а,"ТМЦ")=1 Тогда
    Т.ПолучитьСтрокуПоНомеру(а);
    Себестоимость=Т.Сумма; 
    КонецЕсли;
    // - -
    
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.ТМЦ = Запрос.ТМЦ;
    Т2.Кол = Запрос.Кво;
    Т2.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    Т2.ВыбратьСтроки();
    
    КонецЦикла;
    // - - конец группировки по ТМЦ
    
    КонецЦикла; // - - конец группировки по накладной
    
    // - - расчитываем общий итог по кол. и себестоимости из всех накладных по контрагенту
    Т1.НоваяСтрока();
    Т1.Контрагент = Запрос.Контрагент;
    Т1.КолОбщ = Т.Итог("Кол");
    Т1.СуммаСебОбщ = Т.Итог("СуммаСеб");
    
    а=0;
    СуммаСебОбщ=0;
    КолОбщ=0;
    Если Т1.НайтиЗначение(Запрос.Контрагент,а,"Контрагент")=1 Тогда
    Т1.ПолучитьСтрокуПоНомеру(а);
    СуммаСебОбщ=Т1.Итог("СуммаСебОбщ");
    КолОбщ=Т1.Итог("КолОбщ"); 
    КонецЕсли;
    Таб.ВывестиСекцию("Строка"); // выводим данные по контрагенту
    
    // - -  
    // - - расчитываем и выводим данные по документу и ТМЦ
    
    ТекДок="";
    Т2.ВыбратьСтроки();
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Если ТекДок<>Т2.Док Тогда
    КолДок=Т2.Итог("Кол");
    ТекДок=Т2.Док;	
    Таб.ВывестиСекцию("Строка1"); //выводим данные по документу
    КонецЕсли;
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЦикла;
    // - -
    КонецЦикла; // - - конец группировки по контрагенту
    
  4. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    с себестоимостью разобрался, добавил новую колонку в Т2 (Т2.Себ) и вывел как Т2.Себ = Т.СуммаСеб

    с количеством по документу не получается
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    правильно...
    Я не вижу чтобы вы ее заполняли вот здесь
    Код:
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.ТМЦ = Запрос.ТМЦ;
    Т2.Кол = Запрос.Кво;
    Т2.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    Т2.Себ = Себестоимость; //вот так надо!
    Т2.ВыбратьСтроки(); //убрать! Это здесь не нужно
    
    
    И итогами по документу нужно иначе.....
    Т2 добавляем еще одну строку ДО цикла по группировке 3... Там у нас итоги по документу хранятся актуальные.. Но тогда придется переделать и вывод строк. А именно

    Код:
    Т2.ВыбратьСтроки();
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Если ТекДок<>Т2.Док Тогда
    ТекДок=Т2.Док;	
    Таб.ВывестиСекцию("Строка1"); //выводим данные по документу
    Иначе
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЕсли;
    КонецЦикла;
    
    
  6. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Все получилось, теперь не могу вывести итоговую сумму с ндс по документу ((

    Код:
    	//Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(З)
    |Период с Дата1 по Дата2;
    |Обрабатывать НеПомеченныеНаУдаление;
    |РасходнаяНакладная = Документ.РасходнаяНакладная.ТекущийДокумент;
    |Контрагент = Документ.РасходнаяНакладная.Контрагент;
    |Валюта = Документ.РасходнаяНакладная.Валюта;
    |ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    |Кво = Документ.РасходнаяНакладная.Кво;
    |ЦенаБезНДС = Документ.РасходнаяНакладная.ЦенаБезНДС;
    |НДС = Документ.РасходнаяНакладная.НДС;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |СуммаБезНДС = Документ.РасходнаяНакладная.СуммаБезНДС;
    |НомерДок = Документ.РасходнаяНакладная.НомерДок;
    |ДатаДок = Документ.РасходнаяНакладная.ДатаДок;
    |СуммаБезСкидки = Документ.РасходнаяНакладная.СуммаБезСкидки;
    |Скидка = Документ.РасходнаяНакладная.Скидка;
    |Функция Итого1 = Сумма(СуммаСНДС);
    |Функция Итого2 = Сумма(СуммаБезНДС);
    |Функция Итого3 = Сумма(НДС);
    |Функция Итого4 = Сумма((СуммаБезСкидки+Скидка)*1.2);
    |Функция КолДок= Сумма(Кво);
    |Группировка  Контрагент без групп;
    |Группировка  РасходнаяНакладная;
    |Группировка  ТМЦ без групп;	
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    // Подготовка к заполнению выходных форм данными запроса
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("З");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    
    Т = СоздатьОбъект("ТаблицаЗначений");
    Т.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т.НоваяКолонка("Кол","Число",14,2);
    Т.НоваяКолонка("СуммаСеб","Число",14,2);
    Т.НоваяКолонка("Сумма","Число",14,2);
    Т.НоваяКолонка("СуммаСНДС","Число",14,2);
    
    Т1 = СоздатьОбъект("ТаблицаЗначений");
    Т1.НоваяКолонка("Контрагент");
    Т1.НоваяКолонка("КолОбщ");
    Т1.НоваяКолонка("СуммаСебОбщ");
    Т1.НоваяКолонка("СуммаОбщ");
    
    Т2 = СоздатьОбъект("ТаблицаЗначений");
    Т2.НоваяКолонка("Док","Запрос.РасходнаяНакладная");
    Т2.НоваяКолонка("ТМЦ","Запрос.ТМЦ");
    Т2.НоваяКолонка("Кол","Число",14,2);
    Т2.НоваяКолонка("ЦенаБезНДС","Число",14,2);
    Т2.НоваяКолонка("Себ","Число",14,2);
    Т2.НоваяКолонка("КолДок","Число",14,2);
    Т2.НоваяКолонка("СебДок","Число",14,2);
    Т2.НоваяКолонка("СуммаСНДСДок","Число",14,2);
    Т2.НоваяКолонка("СуммаСНДС","Число",14,2);
    
    Пока Запрос.Группировка(1) = 1 Цикл //группировка по Контрагенту
    
    Т2.УдалитьСтроки();
    Т1.УдалитьСтроки();		 
    
    Пока Запрос.Группировка(2) = 1 Цикл  //группировка по РасходнойНакладной
    
    // - - получаем себестоимость и кол. ТМЦ по накладной
    
    Т.УдалитьСтроки();	
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2; //это общая себестоимость по накладной с НДС 
    КонецЦикла;
    // - -
    // - - получаем итоги по документу
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.КолДок = Т.Итог("Кол");
    Т2.СебДок = Т.Итог("СуммаСеб");
    Т2.СуммаСНДС = Запрос.СуммаСНДС;
    Т2.СуммаСНДСДок = Т2.Итог("СуммаСНДС");
    // - -
    
    Пока Запрос.Группировка(3) = 1 Цикл  // - - группировка по ТМЦ  
    
    // - - вывод себестоимости по ТМЦ
    а=0;
    Себестоимость=0;
    Если Т.НайтиЗначение(Запрос.ТМЦ,а,"ТМЦ")=1 Тогда
    Т.ПолучитьСтрокуПоНомеру(а);
    Себестоимость=Т.Сумма*1.2; 
    КонецЕсли;
    // - -
    // - - получаем данные по ТМЦ
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.ТМЦ = Запрос.ТМЦ;
    Т2.Кол = Т.Кол;
    Т2.Себ = Себестоимость*Т.Кол;
    Т2.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    // - -
    КонецЦикла;
    // - - конец группировки по ТМЦ
    
    КонецЦикла; // - - конец группировки по накладной
    
    // - - расчитываем общий итог по кол. и себестоимости из всех накладных по контрагенту
    Т1.НоваяСтрока();
    Т1.Контрагент = Запрос.Контрагент;
    Т1.КолОбщ = Т2.Итог("Кол");
    Т1.СуммаСебОбщ = Т2.Итог("Себ");
    
    а=0;
    СуммаСебОбщ=0;
    КолОбщ=0;
    Если Т1.НайтиЗначение(Запрос.Контрагент,а,"Контрагент")=1 Тогда
    Т1.ПолучитьСтрокуПоНомеру(а);
    СуммаСебОбщ=Т1.Итог("СуммаСебОбщ");
    КолОбщ=Т1.Итог("КолОбщ"); 
    КонецЕсли;
    Таб.ВывестиСекцию("Строка"); // выводим данные по контрагенту
    
    // - -  
    // - - выводим данные по документу и ТМЦ
    
    ТекДок="";
    Т2.ВыбратьСтроки();
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Если ТекДок<>Т2.Док Тогда
    ТекДок=Т2.Док;	
    Таб.ВывестиСекцию("Строка1"); //выводим данные по документу
    Иначе
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЕсли;
    КонецЦикла;;
    // - -
    КонецЦикла; // - - конец группировки по контрагенту
    
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    вот тут полный бред
    Код:
    Т2.СуммаСНДСДок = Т2.Итог("СуммаСНДС");
    
    
  8. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Если так делаю, то всё равно не выводит итог, выводит только сумму одного из товаров:

    Код:
    Пока Запрос.Группировка(1) = 1 Цикл //группировка по Контрагенту
    
    Т2.УдалитьСтроки();
    Т1.УдалитьСтроки();		 
    
    Пока Запрос.Группировка(2) = 1 Цикл  //группировка по РасходнойНакладной
    
    // - - получаем себестоимость и кол. ТМЦ по накладной
    
    Т.УдалитьСтроки();	
    
    Опер=СоздатьОбъект("Операция");
    Опер.НайтиОперацию(Запрос.РасходнаяНакладная.ТекущийДокумент());
    Опер.ВыбратьПроводки();		
    
    Пока Опер.ПолучитьПроводку()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл			</span>
    Если (Опер.Дебет.Счет<>СчетПоКоду("902")) и (Опер.Кредит.Счет<>СчетПоКоду("281")) Тогда
    Продолжить;			
    КонецЕсли;
    
    Т.НоваяСтрока();
    Т.ТМЦ = Опер.Дебет.Субконто(2);   
    Т.Кол = ?(Опер.Количество=0,1,Опер.Количество);
    Т.Сумма = Опер.Сумма/Опер.Количество; //это себестоимость
    Т.СуммаСеб = Опер.Сумма*1.2; //это общая себестоимость по накладной с НДС 
    КонецЦикла;
    
    Т.СуммаСНДС = Запрос.СуммаСНДС;
    // - -
    
    // - - получаем итоги по документу
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.КолДок = Т.Итог("Кол");
    Т2.СебДок = Т.Итог("СуммаСеб");
    Т2.СуммаСНДСДок = Т.Итог("СуммаСНДС"); 
    // - -
    
    Пока Запрос.Группировка(3) = 1 Цикл  // - - группировка по ТМЦ  
    
    // - - вывод себестоимости по ТМЦ
    а=0;
    Себестоимость=0;
    Если Т.НайтиЗначение(Запрос.ТМЦ,а,"ТМЦ")=1 Тогда
    Т.ПолучитьСтрокуПоНомеру(а);
    Себестоимость=Т.Сумма*1.2; 
    КонецЕсли;
    // - -
    // - - получаем данные по ТМЦ
    Т2.НоваяСтрока();
    Т2.Док = Запрос.РасходнаяНакладная;
    Т2.ТМЦ = Запрос.ТМЦ;
    Т2.Кол = Т.Кол;
    Т2.Себ = Себестоимость*Т.Кол;
    Т2.ЦенаБезНДС = Запрос.ЦенаБезНДС;
    // - -
    КонецЦикла;
    // - - конец группировки по ТМЦ
    
    КонецЦикла; // - - конец группировки по накладной
    
    // - - расчитываем общий итог по кол. и себестоимости из всех накладных по контрагенту
    Т1.НоваяСтрока();
    Т1.Контрагент = Запрос.Контрагент;
    Т1.КолОбщ = Т2.Итог("Кол");
    Т1.СуммаСебОбщ = Т2.Итог("Себ");
    
    а=0;
    СуммаСебОбщ=0;
    КолОбщ=0;
    Если Т1.НайтиЗначение(Запрос.Контрагент,а,"Контрагент")=1 Тогда
    Т1.ПолучитьСтрокуПоНомеру(а);
    СуммаСебОбщ=Т1.Итог("СуммаСебОбщ");
    КолОбщ=Т1.Итог("КолОбщ"); 
    КонецЕсли;
    Таб.ВывестиСекцию("Строка"); // выводим данные по контрагенту
    
    // - -  
    // - - выводим данные по документу и ТМЦ
    
    ТекДок="";
    Т2.ВыбратьСтроки();
    Пока Т2.ПолучитьСтроку()=1 Цикл
    Если ТекДок<>Т2.Док Тогда
    ТекДок=Т2.Док;	
    Таб.ВывестиСекцию("Строка1"); //выводим данные по документу
    Иначе
    Таб.ВывестиСекцию("Строка2"); // выводим данные по ТМЦ
    КонецЕсли;
    КонецЦикла;;
    // - -
    КонецЦикла; // - - конец группировки по контрагенту
    
  9. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    ВСЁ!!!! БОЛЬШОЕ СПАСИБО за помощь и терпение, все работает, как надо )))
  10. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте :). Вопрос по этому топику (отчёту), столкнулся с проблемой - если приход был сделан с ндс, то себестоимость выводится без ндс, не могу понять от куда её вытягивать, чтоб прибавлять к себестоимости, в проводки от куда мы брали себестоимость её там нету
  11. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
  12. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    [sharedmedia=core:attachments:10043]
  13. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    ктонить подскажет как получить или приходную цену с ндс проданного товара, или саму ндс того же проданного товара через расходную накладную?

Поделиться этой страницей