Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Предприятие 7.7]

Товарный отчет

BigAnn
читатель
офлайн
Дата регистрации: 02.10.2008
Сообщений: 56
Пост №1
 
28.04.2011 11:48

"Всем доброго дня. <br>Имеется Бухгалтерия 7.7 обычная (не УСН). <br>Конфигурацию дорабатывали. В ней есть Товарный отчет.<br>Писала не сама, лорабатываю. До этого отчет группировал строки по контрагенту и выводил общую сумму.<br>Исходный отчет http://depositfiles.com/files/q4vmlt568<br><br>Товарный отчет (немного исправленный):<br>

Код

Процедура Сформировать()
Сч =0;
Док = СоздатьОбъект("Документ");
Оп = СоздатьОбъект("Операция");

ТабПеч = СоздатьОбъект("Таблица");
ТабПеч.ИсходнаяТаблица("Таблица");

ТабПрих = СоздатьОбъект("ТаблицаЗначений");
ТабПрих.НоваяКолонка("КтСчета","Счет.Основной");
ТабПрих.НоваяКолонка("ДтСчета","Счет.Основной");
ТабПрих.НоваяКолонка("Документ","Документ");
ТабПрих.НоваяКолонка("Контрагент","Строка");
ТабПрих.НоваяКолонка("Тара","Число",12,3);
ТабПрих.НоваяКолонка("Сумма","Число",12,3);


ТабПрих_ = СоздатьОбъект("ТаблицаЗначений");
ТабПрих_.НоваяКолонка("Документ","Документ");
ТабПрих_.НоваяКолонка("Контрагент","Строка");
ТабПрих_.НоваяКолонка("Товар","Число",12,3);
ТабПрих_.НоваяКолонка("Наценка","Число",12,3);
ТабПрих_.НоваяКолонка("Тара","Число",12,3);
ТабПрих_.НоваяКолонка("Издержки","Число",12,3);

ТабРасх = СоздатьОбъект("ТаблицаЗначений");
ТабРасх.НоваяКолонка("КтСчета","Счет.Основной");
ТабРасх.НоваяКолонка("ДтСчета","Счет.Основной");
ТабРасх.НоваяКолонка("Документ","Документ");
ТабРасх.НоваяКолонка("Контрагент","Строка");
ТабРасх.НоваяКолонка("Сумма","Число",12,3);

ТабРасх_ = СоздатьОбъект("ТаблицаЗначений");
ТабРасх_.НоваяКолонка("Документ","Документ");
ТабРасх_.НоваяКолонка("Контрагент","Строка");
ТабРасх_.НоваяКолонка("Товар","Число",12,3);
ТабРасх_.НоваяКолонка("Наценка","Число",12,3);
ТабРасх_.НоваяКолонка("Тара","Число",12,3);

Сч41_2 = СчетПоКоду("41.2");
Сч41_3 = СчетПоКоду("41.3");
Сч42 = СчетПоКоду("42");
Сч44_1_2 = СчетПоКоду("44.1.2");
Сч50_1 = СчетПоКоду("50.1");
Сч60_1 = СчетПоКоду("60.1");      
Сч90_1_2 = СчетПоКоду("90.1.2");
Сч70 = СчетПоКоду("70");

БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ВключатьСубСчета(1);

БухИт.ИспользоватьСубконто("МестаХранения",МестоХранения);

НачСдТовар = 0;
НачСдТара = 0;
КонСдТовар = 0;

ОстатокПоКассеН = 0;//
ОстатокПоКассеК = 0;//

БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"50.1",, , 1, "Период", "СВ");

ОстатокПоКассеН = БухИт.СНД();
ОстатокПоКассеК = БухИт.СКД();

БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"41.2","60.1,90.1.2,42,41.2", , 1, "Период", "СВ"); //
БухС = СоздатьОбъект("БухгалтерскиеИтоги");
БухС.Рассчитать(НачПериод,НачПериод);
НачСдТовар = БухС.СНДРС("41.2",1,,,3,МестоХранения,2)- БухС.СНКРС("41.2",1,,,3,МестоХранения,2)+ОстатокПоКассеН;
//НачСдТовар = БухС.СНДРС("41.2",1,,,3,МестоХранения,2) + ОстатокПоКассеН;
НачСдТара = БухС.СНДРС("41.3",1,,,3,МестоХранения,2);;
БухИт.ИспользоватьСубконто("МестаХранения",МестоХранения);
БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"41.2,41.3",, , 1, "Операция", "СВ");

БухИт.ВыбратьПериоды();

// Приходная часть товарного отчета

ТабПеч.ВывестиСекцию("Шапка");
ТабПеч.ВывестиСекцию("ШапкаПрихода");

Пока БухИт.ПолучитьПериод() = 1 Цикл
Дт = БухИт.ВыбранаПоДт();
Кт = БухИт.ВыбранаПоКт();
Если Дт=0 Тогда
Продолжить;
КонецЕсли;

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

//ТабПрих.Свернуть("КтСчета,ДтСчета,Контрагент","Сумма");
//ТабПрих.Сортировать("+Контрагент");

ТабПрих.ВыбратьСтроки();
Сч = 0;
Пока ТабПрих.ПолучитьСтроку() = 1 Цикл
Если ТабПрих.Контрагент = """" Тогда
Продолжить;
КонецЕсли;
НомСтр = 0; НомКол = 0;
Если ТабПрих_.НайтиЗначение(ТабПрих.Контрагент,НомСтр,НомКол) = 0 Тогда
ТабПрих_.НоваяСтрока();
ТабПрих_.Контрагент = ТабПрих.Контрагент;
Иначе
ТабПрих_.ПолучитьСтрокуПоНомеру(НомСтр);
КонецЕсли;
Если ТабПрих.КтСчета = Сч60_1 Тогда
Если ТабПрих.ДтСчета = Сч41_2 Тогда
ТабПрих_.Товар = ТабПрих.Сумма;
ИначеЕсли ТабПрих.ДтСчета = Сч41_3 Тогда
ТабПрих_.Тара = ТабПрих.Сумма;
ИначеЕсли ТабПрих.ДтСчета = Сч44_1_2 Тогда
ТабПрих_.Издержки = ТабПрих.Сумма;
КонецЕсли;
ИначеЕсли ТабПрих.КтСчета = Сч42 Тогда
ТабПрих_.Наценка = ТабПрих.Сумма;
ИначеЕсли ТабПрих.КтСчета = Сч41_3 Тогда
ТабПрих_.Тара = ТабПрих.Сумма;

КонецЕсли;
Сч=Сч+1;
ТабПеч.ВывестиСекцию("СтрокаПриход");
КонецЦикла;
ТабПеч.ВывестиСекцию("ИтогоПриход");


// Расходная часть товарного отчета


БухИт.ВыбратьПериоды();
Пока БухИт.ПолучитьПериод() = 1 Цикл
Дт = БухИт.ВыбранаПоДт();
Кт = БухИт.ВыбранаПоКт();
Если Кт=0 Тогда
Продолжить;
КонецЕсли;

Опер = БухИт.Операция;
Док.НайтиДокумент(Опер.Документ);      
Оп.ВыбратьОперацииСПроводками(Опер.Документ,Опер.Документ);      

Пока Оп.ПолучитьПроводку()=1 Цикл
Если Оп.Дебет.Субконто(2) = МестоХранения Тогда
Продолжить;
КонецЕсли;
ТабРасх.НоваяСтрока();
ТабРасх.КтСчета = Оп.Кредит.Счет;
ТабРасх.ДтСчета = Оп.Дебет.Счет;
Если Оп.Дебет.Счет = Сч60_1 Тогда
ТабРасх.Контрагент = СокрЛП(Строка(Оп.Дебет.Субконто(1)));
ИначеЕсли Оп.Дебет.Счет = Сч42 Тогда
Попытка
ТабРасх.Контрагент = СокрЛП(Строка(Док.Контрагент));
Исключение
КонецПопытки;            
ИначеЕсли Оп.Дебет.Счет = Сч41_2 Тогда
Если Док.Вид() = "СписаниеТоваров" Тогда
ТабРасх.Контрагент = "Списание";
Иначе
ТабРасх.Контрагент = СокрЛП(Строка(Док.СкладПолучатель));
КонецЕсли;
ИначеЕсли Оп.Дебет.Счет = Сч41_3 Тогда
ТабРасх.Контрагент = СокрЛП(Строка(Док.СкладПолучатель));
ИначеЕсли Оп.Дебет.Счет = Сч50_1 Тогда
ТабРасх.Контрагент = "Сдача выручки";
ИначеЕсли Оп.Дебет.Счет = Сч70 Тогда
ТабРасх.Контрагент = "Выдача зарплаты";
Иначе
Попытка
ТабРасх.Контрагент = СокрЛП(Строка(Док.Контрагент));
Исключение
КонецПопытки;
КонецЕсли;
ТабРасх.Сумма = Оп.Сумма;
КонецЦикла;

КонецЦикла;

//ТабРасх.Свернуть("ДтСчета,КтСчета,Контрагент","Сумма");
//ТабРасх.Сортировать("+Контрагент");

БухК = СоздатьОбъект("БухгалтерскиеИтоги");
БухК.ИспользоватьСубконто("ДвиженияДенежныхСредств");
БухК.ИспользоватьСубконто("МестаХранения",МестоХранения);
БухК.ВыполнитьЗапрос(НачПериод, КонПериод,"50.1",, , 1, "Период", "СВ");
БухК.ВыбратьСубконто();
Пока БухК.ПолучитьСубконто() = 1 Цикл
Если БухК.КО() > 0 Тогда
ТабРасх.НоваяСтрока();
ТабРасх.ДтСчета = Сч90_1_2;
ТабРасх.КтСчета = Сч41_2;
ТабРасх.Контрагент = СокрЛП(Строка(БухК.Субконто()));
ТабРасх.Сумма = Число(БухК.КО());
КонецЕсли;
КонецЦикла;

ТабРасх.ВыбратьСтроки();
ТабПеч.ВывестиСекцию("ШапкаРасхода");
Сч=0;
Пока ТабРасх.ПолучитьСтроку() = 1 Цикл
Если ТабРасх.Контрагент = """" Тогда
Продолжить;
КонецЕсли;
НомСтр = 0; НомКол = 0;
Если ТабРасх_.НайтиЗначение(ТабРасх.Контрагент,НомСтр,НомКол) = 0 Тогда
ТабРасх_.НоваяСтрока();
ТабРасх_.Контрагент = ТабРасх.Контрагент;
Иначе
ТабРасх_.ПолучитьСтрокуПоНомеру(НомСтр);
КонецЕсли;
Если ТабРасх.КтСчета = Сч41_2 Тогда
Если ТабРасх.ДтСчета = Сч60_1 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч42 Тогда            
ТабРасх_.Наценка = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч70 Тогда            
ТабРасх_.Товар = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч90_1_2 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
//ТабРасх_.Товар = КассаКО;
ИначеЕсли (ТабРасх.ДтСчета = Сч41_2) Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
Если (ТабРасх.ДтСчета = Сч41_2) и (ПустоеЗначение(МестоХранения)=1) Тогда //23.05.2003 для всей организации перемещение не учитываем
ТабРасх_.УдалитьСтроку();
КонецЕсли;
ИначеЕсли ТабРасх.ДтСчета = Сч50_1 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;      
КонецЕсли;
ИначеЕсли ТабРасх.КтСчета = Сч41_3 Тогда
Если ТабРасх.ДтСчета = Сч60_1 Тогда
ТабРасх_.Тара = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч42 Тогда            
ТабРасх_.Наценка = ТабРасх.Сумма;

ИначеЕсли (ТабРасх.ДтСчета) = Сч41_3 Тогда
ТабРасх_.Тара = ТабРасх.Сумма;
Если (ТабРасх.ДтСчета = Сч41_3) и (ПустоеЗначение(МестоХранения)=1) Тогда //23.05.2003 для всей организации перемещение не учитываем
ТабРасх_.УдалитьСтроку();
КонецЕсли;
КонецЕсли;
КонецЕсли;

Сч = Сч+1;
ТабПеч.ВывестиСекцию("СтрокаРасход");
КонецЦикла;
ТабПеч.ВывестиСекцию("ИтогоРасход");

////////////////////////////
//ТабПрих_.ВыбратьСтроки();
//Пока ТабПрих_.ПолучитьСтроку() = 1 Цикл
// Сч=Сч+1;
// ТабПеч.ВывестиСекцию("СтрокаПриход");
//КонецЦикла;
//ТабПеч.ВывестиСекцию("ИтогоПриход");

//ТабПеч.ВывестиСекцию("ШапкаРасхода");
//ТабРасх_.ВыбратьСтроки();
//Сч=0;
//Пока ТабРасх_.ПолучитьСтроку() = 1 Цикл
// Сч = Сч+1;
// ТабПеч.ВывестиСекцию("СтрокаРасход");
//КонецЦикла;      
//ТабПеч.ВывестиСекцию("ИтогоРасход");

ТабПеч.ВывестиСекцию("КонОстаток");                  
ТабПеч.ВывестиСекцию("Подвал");
//ТабПеч.Защита(1);
ТабПеч.Опции(0,,,,,,,);
ТабПеч.Показать("Товарный отчет " + Строка(НачПериод) + " - " + Строка(КонПериод));
КонецПроцедуры

// преодпределенные процедуры
Процедура ПриОткрытии()
НачПериод = НачНедели(РабочаяДата());
КонПериод = КонНедели(РабочаяДата());
МестоХранения = константа.ОсновнойСклад;
КонецПроцедуры
<br><br>Сделала вот так. Теперь выводит каждую строку документа. Причем в разном сочетании. Например: <br>Документ Поступление товара содержит <br>1. Товар 1 шт. цена опт. - 30 руб., цена с наценкой - 60 руб., сумма опт. - 30 руб. , наценка - 30 руб., всего - 60 руб. <br>2. Тара 1 шт. цена опт. - 20 руб., цена с наценкой - 20 руб., сумма опт. - 20 руб. , наценка - 0 руб., всего - 20 руб. <br>3. транспортные расходы 1 шт. цена опт. - 200 руб., цена с наценкой - 200 руб., сумма опт. - 200 руб. , наценка - 0 руб., всего - 200 руб. <br><br>В отчете выводится так: <br>Контрагент Товар Тара Наценка <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 20.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 30.00 20.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 60.00 20.00 30.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 230.00 20.00 30.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 200.00 20.00<br><br>Как сделать группировку по документу?<br>Спасибо.Всем доброго дня. <br>Имеется Бухгалтерия 7.7 обычная (не УСН). <br>Конфигурацию дорабатывали. В ней есть Товарный отчет.<br>Писала не сама, лорабатываю. До этого отчет группировал строки по контрагенту и выводил общую сумму.<br>Исходный отчет http://depositfiles.com/files/q4vmlt568<br><br>Товарный отчет (немного исправленный):<br>
Код

Процедура Сформировать()
Сч =0;
Док = СоздатьОбъект("Документ");
Оп = СоздатьОбъект("Операция");

ТабПеч = СоздатьОбъект("Таблица");
ТабПеч.ИсходнаяТаблица("Таблица");

ТабПрих = СоздатьОбъект("ТаблицаЗначений");
ТабПрих.НоваяКолонка("КтСчета","Счет.Основной");
ТабПрих.НоваяКолонка("ДтСчета","Счет.Основной");
ТабПрих.НоваяКолонка("Документ","Документ");
ТабПрих.НоваяКолонка("Контрагент","Строка");
ТабПрих.НоваяКолонка("Тара","Число",12,3);
ТабПрих.НоваяКолонка("Сумма","Число",12,3);


ТабПрих_ = СоздатьОбъект("ТаблицаЗначений");
ТабПрих_.НоваяКолонка("Документ","Документ");
ТабПрих_.НоваяКолонка("Контрагент","Строка");
ТабПрих_.НоваяКолонка("Товар","Число",12,3);
ТабПрих_.НоваяКолонка("Наценка","Число",12,3);
ТабПрих_.НоваяКолонка("Тара","Число",12,3);
ТабПрих_.НоваяКолонка("Издержки","Число",12,3);

ТабРасх = СоздатьОбъект("ТаблицаЗначений");
ТабРасх.НоваяКолонка("КтСчета","Счет.Основной");
ТабРасх.НоваяКолонка("ДтСчета","Счет.Основной");
ТабРасх.НоваяКолонка("Документ","Документ");
ТабРасх.НоваяКолонка("Контрагент","Строка");
ТабРасх.НоваяКолонка("Сумма","Число",12,3);

ТабРасх_ = СоздатьОбъект("ТаблицаЗначений");
ТабРасх_.НоваяКолонка("Документ","Документ");
ТабРасх_.НоваяКолонка("Контрагент","Строка");
ТабРасх_.НоваяКолонка("Товар","Число",12,3);
ТабРасх_.НоваяКолонка("Наценка","Число",12,3);
ТабРасх_.НоваяКолонка("Тара","Число",12,3);

Сч41_2 = СчетПоКоду("41.2");
Сч41_3 = СчетПоКоду("41.3");
Сч42 = СчетПоКоду("42");
Сч44_1_2 = СчетПоКоду("44.1.2");
Сч50_1 = СчетПоКоду("50.1");
Сч60_1 = СчетПоКоду("60.1");      
Сч90_1_2 = СчетПоКоду("90.1.2");
Сч70 = СчетПоКоду("70");

БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ВключатьСубСчета(1);

БухИт.ИспользоватьСубконто("МестаХранения",МестоХранения);

НачСдТовар = 0;
НачСдТара = 0;
КонСдТовар = 0;

ОстатокПоКассеН = 0;//
ОстатокПоКассеК = 0;//

БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"50.1",, , 1, "Период", "СВ");

ОстатокПоКассеН = БухИт.СНД();
ОстатокПоКассеК = БухИт.СКД();

БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"41.2","60.1,90.1.2,42,41.2", , 1, "Период", "СВ"); //
БухС = СоздатьОбъект("БухгалтерскиеИтоги");
БухС.Рассчитать(НачПериод,НачПериод);
НачСдТовар = БухС.СНДРС("41.2",1,,,3,МестоХранения,2)- БухС.СНКРС("41.2",1,,,3,МестоХранения,2)+ОстатокПоКассеН;
//НачСдТовар = БухС.СНДРС("41.2",1,,,3,МестоХранения,2) + ОстатокПоКассеН;
НачСдТара = БухС.СНДРС("41.3",1,,,3,МестоХранения,2);;
БухИт.ИспользоватьСубконто("МестаХранения",МестоХранения);
БухИт.ВыполнитьЗапрос(НачПериод, КонПериод,"41.2,41.3",, , 1, "Операция", "СВ");

БухИт.ВыбратьПериоды();

// Приходная часть товарного отчета

ТабПеч.ВывестиСекцию("Шапка");
ТабПеч.ВывестиСекцию("ШапкаПрихода");

Пока БухИт.ПолучитьПериод() = 1 Цикл
Дт = БухИт.ВыбранаПоДт();
Кт = БухИт.ВыбранаПоКт();
Если Дт=0 Тогда
Продолжить;
КонецЕсли;

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

//ТабПрих.Свернуть("КтСчета,ДтСчета,Контрагент","Сумма");
//ТабПрих.Сортировать("+Контрагент");

ТабПрих.ВыбратьСтроки();
Сч = 0;
Пока ТабПрих.ПолучитьСтроку() = 1 Цикл
Если ТабПрих.Контрагент = """" Тогда
Продолжить;
КонецЕсли;
НомСтр = 0; НомКол = 0;
Если ТабПрих_.НайтиЗначение(ТабПрих.Контрагент,НомСтр,НомКол) = 0 Тогда
ТабПрих_.НоваяСтрока();
ТабПрих_.Контрагент = ТабПрих.Контрагент;
Иначе
ТабПрих_.ПолучитьСтрокуПоНомеру(НомСтр);
КонецЕсли;
Если ТабПрих.КтСчета = Сч60_1 Тогда
Если ТабПрих.ДтСчета = Сч41_2 Тогда
ТабПрих_.Товар = ТабПрих.Сумма;
ИначеЕсли ТабПрих.ДтСчета = Сч41_3 Тогда
ТабПрих_.Тара = ТабПрих.Сумма;
ИначеЕсли ТабПрих.ДтСчета = Сч44_1_2 Тогда
ТабПрих_.Издержки = ТабПрих.Сумма;
КонецЕсли;
ИначеЕсли ТабПрих.КтСчета = Сч42 Тогда
ТабПрих_.Наценка = ТабПрих.Сумма;
ИначеЕсли ТабПрих.КтСчета = Сч41_3 Тогда
ТабПрих_.Тара = ТабПрих.Сумма;

КонецЕсли;
Сч=Сч+1;
ТабПеч.ВывестиСекцию("СтрокаПриход");
КонецЦикла;
ТабПеч.ВывестиСекцию("ИтогоПриход");


// Расходная часть товарного отчета


БухИт.ВыбратьПериоды();
Пока БухИт.ПолучитьПериод() = 1 Цикл
Дт = БухИт.ВыбранаПоДт();
Кт = БухИт.ВыбранаПоКт();
Если Кт=0 Тогда
Продолжить;
КонецЕсли;

Опер = БухИт.Операция;
Док.НайтиДокумент(Опер.Документ);      
Оп.ВыбратьОперацииСПроводками(Опер.Документ,Опер.Документ);      

Пока Оп.ПолучитьПроводку()=1 Цикл
Если Оп.Дебет.Субконто(2) = МестоХранения Тогда
Продолжить;
КонецЕсли;
ТабРасх.НоваяСтрока();
ТабРасх.КтСчета = Оп.Кредит.Счет;
ТабРасх.ДтСчета = Оп.Дебет.Счет;
Если Оп.Дебет.Счет = Сч60_1 Тогда
ТабРасх.Контрагент = СокрЛП(Строка(Оп.Дебет.Субконто(1)));
ИначеЕсли Оп.Дебет.Счет = Сч42 Тогда
Попытка
ТабРасх.Контрагент = СокрЛП(Строка(Док.Контрагент));
Исключение
КонецПопытки;            
ИначеЕсли Оп.Дебет.Счет = Сч41_2 Тогда
Если Док.Вид() = "СписаниеТоваров" Тогда
ТабРасх.Контрагент = "Списание";
Иначе
ТабРасх.Контрагент = СокрЛП(Строка(Док.СкладПолучатель));
КонецЕсли;
ИначеЕсли Оп.Дебет.Счет = Сч41_3 Тогда
ТабРасх.Контрагент = СокрЛП(Строка(Док.СкладПолучатель));
ИначеЕсли Оп.Дебет.Счет = Сч50_1 Тогда
ТабРасх.Контрагент = "Сдача выручки";
ИначеЕсли Оп.Дебет.Счет = Сч70 Тогда
ТабРасх.Контрагент = "Выдача зарплаты";
Иначе
Попытка
ТабРасх.Контрагент = СокрЛП(Строка(Док.Контрагент));
Исключение
КонецПопытки;
КонецЕсли;
ТабРасх.Сумма = Оп.Сумма;
КонецЦикла;

КонецЦикла;

//ТабРасх.Свернуть("ДтСчета,КтСчета,Контрагент","Сумма");
//ТабРасх.Сортировать("+Контрагент");

БухК = СоздатьОбъект("БухгалтерскиеИтоги");
БухК.ИспользоватьСубконто("ДвиженияДенежныхСредств");
БухК.ИспользоватьСубконто("МестаХранения",МестоХранения);
БухК.ВыполнитьЗапрос(НачПериод, КонПериод,"50.1",, , 1, "Период", "СВ");
БухК.ВыбратьСубконто();
Пока БухК.ПолучитьСубконто() = 1 Цикл
Если БухК.КО() > 0 Тогда
ТабРасх.НоваяСтрока();
ТабРасх.ДтСчета = Сч90_1_2;
ТабРасх.КтСчета = Сч41_2;
ТабРасх.Контрагент = СокрЛП(Строка(БухК.Субконто()));
ТабРасх.Сумма = Число(БухК.КО());
КонецЕсли;
КонецЦикла;

ТабРасх.ВыбратьСтроки();
ТабПеч.ВывестиСекцию("ШапкаРасхода");
Сч=0;
Пока ТабРасх.ПолучитьСтроку() = 1 Цикл
Если ТабРасх.Контрагент = """" Тогда
Продолжить;
КонецЕсли;
НомСтр = 0; НомКол = 0;
Если ТабРасх_.НайтиЗначение(ТабРасх.Контрагент,НомСтр,НомКол) = 0 Тогда
ТабРасх_.НоваяСтрока();
ТабРасх_.Контрагент = ТабРасх.Контрагент;
Иначе
ТабРасх_.ПолучитьСтрокуПоНомеру(НомСтр);
КонецЕсли;
Если ТабРасх.КтСчета = Сч41_2 Тогда
Если ТабРасх.ДтСчета = Сч60_1 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч42 Тогда            
ТабРасх_.Наценка = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч70 Тогда            
ТабРасх_.Товар = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч90_1_2 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
//ТабРасх_.Товар = КассаКО;
ИначеЕсли (ТабРасх.ДтСчета = Сч41_2) Тогда
ТабРасх_.Товар = ТабРасх.Сумма;
Если (ТабРасх.ДтСчета = Сч41_2) и (ПустоеЗначение(МестоХранения)=1) Тогда //23.05.2003 для всей организации перемещение не учитываем
ТабРасх_.УдалитьСтроку();
КонецЕсли;
ИначеЕсли ТабРасх.ДтСчета = Сч50_1 Тогда
ТабРасх_.Товар = ТабРасх.Сумма;      
КонецЕсли;
ИначеЕсли ТабРасх.КтСчета = Сч41_3 Тогда
Если ТабРасх.ДтСчета = Сч60_1 Тогда
ТабРасх_.Тара = ТабРасх.Сумма;
ИначеЕсли ТабРасх.ДтСчета = Сч42 Тогда            
ТабРасх_.Наценка = ТабРасх.Сумма;

ИначеЕсли (ТабРасх.ДтСчета) = Сч41_3 Тогда
ТабРасх_.Тара = ТабРасх.Сумма;
Если (ТабРасх.ДтСчета = Сч41_3) и (ПустоеЗначение(МестоХранения)=1) Тогда //23.05.2003 для всей организации перемещение не учитываем
ТабРасх_.УдалитьСтроку();
КонецЕсли;
КонецЕсли;
КонецЕсли;

Сч = Сч+1;
ТабПеч.ВывестиСекцию("СтрокаРасход");
КонецЦикла;
ТабПеч.ВывестиСекцию("ИтогоРасход");

////////////////////////////
//ТабПрих_.ВыбратьСтроки();
//Пока ТабПрих_.ПолучитьСтроку() = 1 Цикл
// Сч=Сч+1;
// ТабПеч.ВывестиСекцию("СтрокаПриход");
//КонецЦикла;
//ТабПеч.ВывестиСекцию("ИтогоПриход");

//ТабПеч.ВывестиСекцию("ШапкаРасхода");
//ТабРасх_.ВыбратьСтроки();
//Сч=0;
//Пока ТабРасх_.ПолучитьСтроку() = 1 Цикл
// Сч = Сч+1;
// ТабПеч.ВывестиСекцию("СтрокаРасход");
//КонецЦикла;      
//ТабПеч.ВывестиСекцию("ИтогоРасход");

ТабПеч.ВывестиСекцию("КонОстаток");                  
ТабПеч.ВывестиСекцию("Подвал");
//ТабПеч.Защита(1);
ТабПеч.Опции(0,,,,,,,);
ТабПеч.Показать("Товарный отчет " + Строка(НачПериод) + " - " + Строка(КонПериод));
КонецПроцедуры

// преодпределенные процедуры
Процедура ПриОткрытии()
НачПериод = НачНедели(РабочаяДата());
КонПериод = КонНедели(РабочаяДата());
МестоХранения = константа.ОсновнойСклад;
КонецПроцедуры
<br><br>Сделала вот так. Теперь выводит каждую строку документа. Причем в разном сочетании. Например: <br>Документ Поступление товара содержит <br>1. Товар 1 шт. цена опт. - 30 руб., цена с наценкой - 60 руб., сумма опт. - 30 руб. , наценка - 30 руб., всего - 60 руб. <br>2. Тара 1 шт. цена опт. - 20 руб., цена с наценкой - 20 руб., сумма опт. - 20 руб. , наценка - 0 руб., всего - 20 руб. <br>3. транспортные расходы 1 шт. цена опт. - 200 руб., цена с наценкой - 200 руб., сумма опт. - 200 руб. , наценка - 0 руб., всего - 200 руб. <br><br>В отчете выводится так: <br>Контрагент Товар Тара Наценка <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 20.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 30.00 20.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 60.00 20.00 30.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 230.00 20.00 30.00 <br>КОБЗЕВ АЛЕКСАНДР ВИКТОРОВИЧ (И 200.00 20.00<br><br>Как сделать группировку по документу?<br>Спасибо."

BigAnn
читатель
офлайн
Дата регистрации: 02.10.2008
Сообщений: 56
Пост №2
 
29.04.2011 09:31

Извините, что сообщение задвоилось. Что-то браузер заглючило.<br>Есть какие-то варианты решения проблемы?

BigAnn
читатель
офлайн
Дата регистрации: 02.10.2008
Сообщений: 56
Пост №3
 
03.05.2011 10:21

АП!

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №4
 
04.05.2011 08:20

10 000 =)

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №5
 
04.05.2011 14:09

Алгоритм, конечно, топорный. Тяжело что то я вникаю в суть, но, тем не менее, если не придираться к способу решения, основной момент, видимо, такой. Смотрим на примере выборки сведений для приходной части.<br>Вами (или не вами) сделан проход в два приема. В первом проходе собирается таблица ТабПрих, а во втором перебираются строки в ней и в другую таблицу ТабПрих_ заносятся сведения из ТабПрих, причем сделано так. Ищется в ТабПрих_ Контрагент и если находится, то сведения по нему затираются другими (это вообще так задумано или это все таки ошибка?) Так вы сделайте так, чтобы не Контрагент там искался, а Документ, вот и получите группировку по документу, только не забудьте в ТабПрих этот документ регистрировать.

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №6
 
04.05.2011 18:44

там можно одним бухЗапросом собрать данные

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация