внешний отчет

1. max loginov (pinachet) 25.10.11 10:39 Сейчас в теме
Ребят помогите реализовать внешний отчет по выдергиванию минусов из книги продаж. т.е. нужен отчет который будет собирать все минуса и выводить их
Ответы
5. hellf (hellf) 17 25.10.11 11:22 Сейчас в теме
В процедуре СформироватьКнигу там где выводится секция строка добавить условие (курсив). Будет:
Если ПечСуммаВсего<0 Тогда
Таб.ВывестиСекцию("Строка");
глОживить(1);
КонецЕсли;
Но чтобы было красиво еще итоги хотя бы уберите из таблицы.
А чтобы было еще красивее- условие там, где идет присвоение переменным ПечСумма....
Строка 828 примерно. Станет(добавленное условие-курсивом) :
Если (КнПрод.СуммаРуб20 + КнПрод.СуммаРуб20_120 + КнПрод.СуммаРуб18 + КнПрод.СуммаРуб18_118 + КнПрод.СуммаРуб10 + КнПрод.СуммаРуб10_110 + КнПрод.СуммаРуб0) -
(КнПрод.СуммаНП20 + КнПрод.СуммаНП20_120 + КнПрод.СуммаНП10 + КнПрод.СуммаНП10_110 + КнПрод.СуммаНП0 )<0 Тогда



ПечСуммаВсего = (КнПрод.СуммаРуб20 + КнПрод.СуммаРуб20_120 + КнПрод.СуммаРуб18 + КнПрод.СуммаРуб18_118 + КнПрод.СуммаРуб10 + КнПрод.СуммаРуб10_110 + КнПрод.СуммаРуб0) -
(КнПрод.СуммаНП20 + КнПрод.СуммаНП20_120 + КнПрод.СуммаНП10 + КнПрод.СуммаНП10_110 + КнПрод.СуммаНП0 );
ПечСуммаБезНДС20 = КнПрод.СуммаРуб20 - КнПрод.СуммаНДС20 - КнПрод.СуммаНП20 + КнПрод.СуммаРуб20_120 - КнПрод.СуммаНП20_120;
ПечНДС20 = КнПрод.СуммаНДС20 + КнПрод.СуммаНДС20_120;
ПечСуммаБезНДС18 = КнПрод.СуммаРуб18 - КнПрод.СуммаНДС18 + КнПрод.СуммаРуб18_118;
ПечНДС18 = КнПрод.СуммаНДС18 + КнПрод.СуммаНДС18_118;
ПечСуммаБезНДС10 = КнПрод.СуммаРуб10 + КнПрод.СуммаРуб10_110 - КнПрод.СуммаНДС10 - КнПрод.СуммаНП10 - КнПрод.СуммаНП10_110;
ПечНДС10 = КнПрод.СуммаНДС10 + КнПрод.СуммаНДС10_110;
ПечСуммаНДС0 = 0;
ПечСуммаСовсемБезНДС = КнПрод.СуммаРуб0- КнПрод.СуммаНП0;
КонецЕсли;
7. max loginov (pinachet) 26.10.11 12:13 Сейчас в теме
вообщем бред получается, у меня код книги продаж находиться в txt файле. меняю там ни че не изменяется, лан хоть бы ошибку выдал какуюнить.... у меня конфа писанная такочто если чем поможет вот код процедуры формирования:
Процедура КнигаПродаж(НачДата, КонДата)

Если ВариантФормирования <>3 Тогда
ТабОтчета = СоздатьОбъект("ТаблицаЗначений");
Таб.ИсходнаяТаблица("КнигаПродаж");
Таб.ИспользоватьФормат("Ч-15.2-");
КонецЕсли;

УстановленныйОтбор = "";
Если СтандартнаяФорма = 0 Тогда
Если ВыбКонтрагент.Выбран() = 1 Тогда
УстановленныйОтбор = "Установлен отбор по контрагенту: "+СокрЛП(ВыбКонтрагент.Наименование);
КонецЕсли;
ТекстВШапке = "";

Иначе
ТекстВШапке = "Приложение N 3
|к Правилам ведения журналов учета полученных и выставленных счетов-фактур,
|книг покупок и книг продаж при расчетах по налогу на добавленную стоимость";
КонецЕсли;

ТекстЗапроса = "Период с НачДата по КонДата;
|ОбрабатыватьДокументы Все;
|Обрабатывать НеПомеченныеНаУдаление;
|Док = Документ.ЗаписьКнигиПродаж.ТекущийДокумент,
| Документ.ЗаписьКнигиПродажТорг.ТекущийДокумент;
|Контрагент = Документ.ЗаписьКнигиПродаж.Контрагент,
| Документ.ЗаписьКнигиПродажТорг.Контрагент;
|Всего = Документ.ЗаписьКнигиПродаж.Всего,
| Документ.ЗаписьКнигиПродажТорг.ВсегоПродаж;
|ВсегоТорг = Документ.ЗаписьКнигиПродажТорг.ВсегоПродаж;
|Сумма = Документ.ЗаписьКнигиПродаж.Сумма;
|СтавкаНДС = Документ.ЗаписьКнигиПродаж.СтавкаНДС,
| Документ.ЗаписьКнигиПродажТорг.СтавкаНДС;
|НДС = Документ.ЗаписьКнигиПродаж.НДС,
| Документ.ЗаписьКнигиПродажТорг.НДС;
|НДСТорг = Документ.ЗаписьКнигиПродажТорг.НДС;
|СтавкаНоль = Документ.ЗаписьКнигиПродаж.НДСпоСтавкеНольПроцентов,
| Документ.ЗаписьКнигиПродажТорг.НДСпоСтавкеНольПроцентов;
|ЗаписьДопЛиста = Документ.ЗаписьКнигиПродаж.ЗаписьДопЛистаПР;
|Группировка Док;
|Функция ВсегоПродаж = Сумма(Пересчет(Док,Всего));
|Функция НДС20 = Сумма(Пересчет(Док,НДС)) Когда ((СтавкаНДС.Ставка > 10.5) и (СтавкаНоль = 0));
|Функция СуммаБезНДС20 = Сумма(Пересчет(Док,Сумма)) Когда ((СтавкаНДС.Ставка > 10.5) и (СтавкаНоль = 0));
|Функция СуммаБезНДС20Торг = Сумма(ВсегоТорг - НДСТорг) Когда ((СтавкаНДС.Ставка = 20) и (СтавкаНоль = 0));
|Функция СуммаБезНДС16Торг = Сумма(ВсегоТорг) Когда ((СтавкаНДС.Ставка = 16.67) и (СтавкаНоль = 0));
|Функция НДС10 = Сумма(Пересчет(Док,НДС)) Когда ((СтавкаНДС.Ставка < 10.5) и (СтавкаНДС.Ставка > 0) и (СтавкаНоль = 0));
|Функция СуммаБезНДС10 = Сумма(Пересчет(Док,Сумма)) Когда ((СтавкаНДС.Ставка < 10.5) и (СтавкаНДС.Ставка > 0) и (СтавкаНоль = 0));
|Функция СуммаБезНДС10Торг = Сумма(ВсегоТорг - НДСТорг) Когда ((СтавкаНДС.Ставка = 10) и (СтавкаНоль = 0));
|Функция СуммаБезНДС09Торг = Сумма(ВсегоТорг) Когда ((СтавкаНДС.Ставка = 9.09) и (СтавкаНоль = 0));
|Функция НДС0 = Сумма(Пересчет(Док,Всего)) Когда (СтавкаНоль = 1);
|Функция СуммаСовсемБезНДС = Сумма(Пересчет(Док,Всего)) Когда ((СтавкаНДС = глБезНалога(""НДС"")) и (СтавкаНоль = 0));
|Условие (Всего <> 0);
|Условие (ЗаписьДопЛиста <>1);";

Если СтандартнаяФорма = 0 Тогда
Если ВыбКонтрагент.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие (Контрагент в ВыбКонтрагент);";
КонецЕсли;
КонецЕсли;

Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Предупреждение("Невозможно выполнить запрос");
Возврат;
КонецЕсли;
Запрос.Выгрузить(ТабОтчета,,0);
ТабОтчета.НоваяКолонка("ДатаДок","Дата");
ТабОтчета.НоваяКолонка("ДатаНомер");
ТабОтчета.НоваяКолонка("ДатаОплаты");
ТабОтчета.НоваяКолонка("СчетФактура");
ТабОтчета.НоваяКолонка("Контрагент","Справочник.Контрагенты");
ТабОтчета.НоваяКолонка("ИНН");
ТабОтчета.НоваяКолонка("КПП");
ТабОтчета.НоваяКолонка("ПозицияДок");
ТабОтчета.НоваяКолонка("Аванс","Число");
ТабОтчета.ВыбратьСтроки();
Пока ТабОтчета.ПолучитьСтроку()=1 Цикл
Если ПустоеЗначение(ТабОтчета.Док)=1 Тогда
ТабОтчета.СуммаБезНДС20 = ТабОтчета.СуммаБезНДС20 + ТабОтчета.СуммаБезНДС20Торг + ТабОтчета.СуммаБезНДС16Торг;
ТабОтчета.СуммаБезНДС10 = ТабОтчета.СуммаБезНДС10 + ТабОтчета.СуммаБезНДС10Торг + ТабОтчета.СуммаБезНДС09Торг;
Продолжить;
КонецЕсли;
ТабОтчета.ДатаДок = ТабОтчета.Док.ДатаДок;
ТабОтчета.ДатаНомер = ДатаНомер(ТабОтчета.Док);
ТабОтчета.ДатаОплаты = ТабОтчета.Док.ДатаОплаты;
ТабОтчета.Контрагент = ТабОтчета.Док.Контрагент;
ТабОтчета.ИНН = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, СРЕД(ТабОтчета.Контрагент.ИНН,1,12),СРЕД(ТабОтчета.Контрагент.ИНН,1,10));
ТабОтчета.КПП = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, "",СРЕД(ТабОтчета.Контрагент.ИНН,12));
ТабОтчета.ПозицияДок = ТабОтчета.Док.ПолучитьПозицию();
ТабОтчета.СчетФактура = ТабОтчета.Док.ДокументОснование;
ТабОтчета.Аванс = ?(ТабОтчета.Док.ДокументОснование.Выбран()=1,?(ТабОтчета.Док.ДокументОснование.Вид() = "СчетФактураПолученный",?(ТабОтчета.Док.ДокументОснование.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыПолученного.Аванс,2,0),ТабОтчета.Док.ДокументОснование.Аванс),0);
Если (ТабОтчета.Док.НомерДок="00000003") или (ТабОтчета.Док.НомерДок="00000004") Тогда
ТабОтчета.Аванс=1;
КонецЕсли;

Если ТабОтчета.СчетФактура.Выбран() = 1 Тогда
Если ТабОтчета.СчетФактура.Вид() = "СчетФактура" Тогда
Если (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс)
или (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница) Тогда
ТабОтчета.Аванс = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТабОтчета.СуммаБезНДС20 = ТабОтчета.СуммаБезНДС20 + ТабОтчета.СуммаБезНДС20Торг + ТабОтчета.СуммаБезНДС16Торг;
ТабОтчета.СуммаБезНДС10 = ТабОтчета.СуммаБезНДС10 + ТабОтчета.СуммаБезНДС10Торг + ТабОтчета.СуммаБезНДС09Торг;
КонецЦикла;

ДокАвто = СоздатьОбъект("Документ.ЗаписиКнигиПродаж");
ДокАвто.ВыбратьДокументы(НачДата,КонДата);
Всего = 0;
БезНДС20 = 0;
НДС20 = 0;
БезНДС10 = 0;
НДС10 = 0;
НДС0 = 0;
Освобождаемые = 0;

Пока ДокАвто.ПолучитьДокумент()=1 Цикл
Если ДокАвто.ПометкаУдаления()=1 Тогда
Продолжить;
КонецЕсли;
ДокАвто.ВыбратьСтроки();
Пока ДокАвто.ПолучитьСтроку() = 1 Цикл
Если (ВыбКонтрагент.Выбран() = 1)и
(ВыбКонтрагент<>ДокАвто.Контрагент)и
(ДокАвто.Контрагент.ПринадлежитГруппе(ВыбКонтрагент)=0) Тогда
Продолжить;
КонецЕсли;

Если (ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ВозвратНеОплаченного) Тогда
Продолжить;
КонецЕсли;

Если ДокАвто.ЗаписьДопЛиста = 1 Тогда
Продолжить;
КонецЕсли;

ТабОтчета.НоваяСтрока();

ТабОтчета.Док = ДокАвто.ТекущийДокумент();
ТабОтчета.ДатаДок = ДокАвто.Оплата.ДатаДок;

Если КонДата >= '30.05.2006' Тогда

Если ДокАвто.СчетФактура.Вид() = "СчетФактура" Тогда
ТабОтчета.ДатаНомер = ДатаНомер(ДокАвто.СчетФактура);
Иначе
ТабОтчета.ДатаНомер = ДокАвто.ДатаНомерСчетаФактуры;
КонецЕсли;

Иначе
ТабОтчета.ДатаНомер = ДокАвто.ДатаНомерСчетаФактуры;
КонецЕсли;

ТабОтчета.СчетФактура = ДокАвто.СчетФактура;
ТабОтчета.Контрагент = ДокАвто.Контрагент;
ТабОтчета.ИНН = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, СРЕД(ТабОтчета.Контрагент.ИНН,1,12),СРЕД(ТабОтчета.Контрагент.ИНН,1,10));
ТабОтчета.КПП = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, "",СРЕД(ТабОтчета.Контрагент.ИНН,12));
Если ДокАвто.СчетФактура.Вид() = "СчетФактура" Тогда
ТабОтчета.Аванс = ?((ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ВозвратНеОплаченногоПК )или (ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ВозвратОплаченногоПК ),0,ДокАвто.СчетФактура.Аванс);
ИначеЕсли ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ЗачетАванса Тогда
ТабОтчета.Аванс = 2;
Иначе
ТабОтчета.Аванс = 0;
КонецЕсли;

Если ТабОтчета.СчетФактура.Выбран() = 1 Тогда
Если ТабОтчета.СчетФактура.Вид() = "СчетФактура" Тогда
Если (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс)
или (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница) Тогда
ТабОтчета.Аванс = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Если (ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ВозвратНеОплаченногоПК )или (ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ВозвратОплаченногоПК) или (ДокАвто.ТипЗаписи = Перечисление.ТипыЗаписейКнигиПродаж.ЗачетАванса) Тогда
ТабОтчета.ПозицияДок = ДокАвто.Оплата.ПолучитьПозицию();
Иначе
Если ПустоеЗначение(ДокАвто.СчетФактура)=0 Тогда
Если ДокАвто.СчетФактура.Вид() = "СчетФактураПолученный" Тогда
ТабОтчета.ПозицияДок = ДокАвто.Оплата.ПолучитьПозицию();
Иначе
Если ПустоеЗначение(ДокАвто.СчетФактура.ДатаОплаты) = 0 Тогда
ТабОтчета.ДатаОплаты = ДокАвто.СчетФактура.ДатаОплаты;
ТабОтчета.ПозицияДок = ДокАвто.Оплата.ПолучитьПозицию();

ИначеЕсли (ДокАвто.СчетФактура.ДатаДок < '01.01.2006') или (ДокАвто.СчетФактура.ДокументОснование <> ДокАвто.Оплата) Тогда
ТабОтчета.ДатаОплаты = ДокАвто.Оплата.ДатаДок;
ТабОтчета.ПозицияДок = ДокАвто.СчетФактура.ПолучитьПозицию();

Иначе
ТабОтчета.ПозицияДок = ДокАвто.Оплата.ПолучитьПозицию();
КонецЕсли;
КонецЕсли;
Иначе
ТабОтчета.ПозицияДок = ДокАвто.Оплата.ПолучитьПозицию();
КонецЕсли;
КонецЕсли;


ТабОтчета.ВсегоПродаж = ДокАвто.Всего;
ТабОтчета.СуммаБезНДС20 = ДокАвто.БезНДС20;
ТабОтчета.НДС20 = ДокАвто.НДС20;
ТабОтчета.СуммаБезНДС10 = ДокАвто.БезНДС10;
ТабОтчета.НДС10 = ДокАвто.НДС10;
ТабОтчета.НДС0 = ДокАвто.НДС0;
ТабОтчета.СуммаСовсемБезНДС = ДокАвто.Освобождаемые;

Всего = Всего + ДокАвто.Всего;
БезНДС20 = БезНДС20 + ДокАвто.БезНДС20;
НДС20 = НДС20 + ДокАвто.НДС20;
БезНДС10 = БезНДС10 + ДокАвто.БезНДС10;
НДС10 = НДС10 + ДокАвто.НДС10;
НДС0 = НДС0 + ДокАвто.НДС0;
// Освобождаемые = Освобождаемые + ДокАвто.Освобождаемые;

КонецЦикла;
КонецЦикла;

НачГода2006 = '01.01.2006';

ТекстЗапроса = "Период с НачДата по КонДата;
|ОбрабатыватьДокументы Все;
|Обрабатывать НеПомеченныеНаУдаление;
|Док = Документ.СчетФактура.ТекущийДокумент;
|ДатаДок = Документ.СчетФактура.ДатаДок;
|СчетНДС = Документ.СчетФактура.СчетНДС;
|СтавкаНоль = Документ.СчетФактура.НДСпоСтавкеНольПроцентов;
|Контрагент = Документ.СчетФактура.Контрагент;
|ВключатьВКнигуПродаж = Документ.СчетФактура.ВключатьВКнигуПродаж;
|АвтоНДС = Документ.СчетФактура.Договор.АвтоОбработкаНДС;
|Аванс = Документ.СчетФактура.Аванс;
|Группировка Док;
|Условие (СтавкаНоль = 0);
|Условие ((((АвтоНДС = 0) или (Аванс = 1)) и (ВключатьВКнигуПродаж = 1) и (ДатаДок >= НачГода2006)) или ((СчетНДС = 1) и (ДатаДок < НачГода2006)));";

Если СтандартнаяФорма = 0 Тогда
Если ВыбКонтрагент.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие (Контрагент в ВыбКонтрагент);";
КонецЕсли;
КонецЕсли;

Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Предупреждение("Невозможно выполнить запрос");
Возврат;
КонецЕсли;

ТаблЧасть = СоздатьОбъект("ТаблицаЗначений");
Опер = СоздатьОбъект("Операция");
Сч68_2 = СчетПоКоду("68.2");
Сч90_1_1 = СчетПоКоду("90.1.1");
Сч91_1 = СчетПоКоду("91.1");

Пока Запрос.Группировка(1) = 1 Цикл
Если ПустоеЗначение(Запрос.Док)=1 Тогда
Продолжить;
КонецЕсли;

ТаблЧасть.Очистить();
Запрос.Док.ВыгрузитьТабличнуюЧасть(ТаблЧасть);

ВсегоВал = 0;
Всего = 0;
БезНДС20 = 0;
НДС20 = 0;
БезНДС10 = 0;
НДС10 = 0;
НДС0 = 0;
Освобождаемые = 0;

ТаблЧасть.ВыбратьСтроки();
Пока ТаблЧасть.ПолучитьСтроку() = 1 Цикл
Если ТоварНаКомиссии(ТаблЧасть.Товар) = 1 Тогда
Продолжить;
КонецЕсли;

Всего = Всего + Пересчет(Запрос.Док,ТаблЧасть.Всего);
ВсегоВал = ВсегоВал + ТаблЧасть.Всего;

Если (ТаблЧасть.НДС <> 0) и (ТаблЧасть.Сумма <> 0) Тогда

СтавкаНДС = ?(ПустоеЗначение(ТаблЧасть.СтавкаНДС) = 1, ТаблЧасть.НДС / ТаблЧасть.Сумма * 100, ТаблЧасть.СтавкаНДС.Ставка);

Если СтавкаНДС > 10.5 Тогда
НДС20=НДС20+Пересчет(Запрос.Док,ТаблЧасть.НДС);
БезНДС20=БезНДС20+Пересчет(Запрос.Док,ТаблЧасть.Сумма);

Иначе
НДС10=НДС10+Пересчет(Запрос.Док,ТаблЧасть.НДС);
БезНДС10=БезНДС10+Пересчет(Запрос.Док,ТаблЧасть.Сумма);
КонецЕсли;

ИначеЕсли Запрос.Док.НДСпоСтавкеНольПроцентов = 1 Тогда
НДС0=НДС0+Пересчет(Запрос.Док,ТаблЧасть.Сумма);

Иначе
// Освобождаемые=Освобождаемые+Пересчет(Запрос.Док,ТаблЧасть.Сумма);
КонецЕсли;
КонецЦикла;

Если Всего <> 0 Тогда

ТабОтчета.НоваяСтрока();

ТабОтчета.Док = Запрос.Док;
ТабОтчета.ДатаДок = Запрос.Док.ДатаДок;
ТабОтчета.ДатаНомер = ДатаНомер(Запрос.Док);
ТабОтчета.СчетФактура = Запрос.Док;
ТабОтчета.Контрагент = Запрос.Док.Контрагент;
ТабОтчета.ИНН = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, СРЕД(ТабОтчета.Контрагент.ИНН,1,12),СРЕД(ТабОтчета.Контрагент.ИНН,1,10));
ТабОтчета.КПП = ?(ТабОтчета.Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, "",СРЕД(ТабОтчета.Контрагент.ИНН,12));
ТабОтчета.ПозицияДок = Запрос.Док.ПолучитьПозицию();
ТабОтчета.ДатаОплаты = Запрос.Док.ДатаОплаты;
ТабОтчета.Аванс = Запрос.Док.Аванс;

Если (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс)
или (ТабОтчета.СчетФактура.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.СуммоваяРазница) Тогда
ТабОтчета.Аванс = 1;
КонецЕсли;

ВсегоПоНакладной = 0;
Если ПустоеЗначение(Запрос.Док.ДокументОснование) = 0 Тогда
ТаблЧасть.Очистить();
Запрос.Док.ДокументОснование.ВыгрузитьТабличнуюЧасть(ТаблЧасть);
ТаблЧасть.ВыбратьСтроки();
Пока ТаблЧасть.ПолучитьСтроку() = 1 Цикл
Если (Запрос.Док.ДокументОснование.Вид() = "ОтпускМатериаловНаСторону")
ИЛИ (Запрос.Док.ДокументОснование.Вид() = "ОказаниеУслуг") Тогда
ВсегоПоНакладной = ВсегоПоНакладной + ТаблЧасть.Всего;

ИначеЕсли Запрос.Док.ДокументОснование.Вид() = "РасходнаяНакладная" Тогда
Если ТаблЧасть.Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда
Продолжить;
КонецЕсли;

ВсегоПоНакладной = ВсегоПоНакладной + ТаблЧасть.Всего;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если (Запрос.Док.Проведен() = 1) и (ПустоеЗначение(Запрос.Док.ДокументОснование) = 0) и (ВсегоПоНакладной = ВсегоВал) Тогда
СуммаПокупкиРуб = 0;
СуммаНДСРуб = 0;

Опер.НайтиОперацию(Запрос.Док);
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
Если Опер.Кредит.Счет = Сч68_2 Тогда
СуммаНДСРуб = СуммаНДСРуб + Опер.Сумма;
КонецЕсли;
КонецЦикла;

Опер.НайтиОперацию(Запрос.Док.ДокументОснование);
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
Если (Опер.Кредит.Счет = Сч90_1_1) или (Опер.Кредит.Счет = Сч91_1) Тогда
СуммаОпер = Опер.Сумма;
Если Опер.Кредит.Счет = Сч91_1 Тогда
Если Опер.Кредит.Субконто(1).ВидПрочихДоходовИРасходов = Перечисление.ВидыПрочихДоходовИРасходов.КурсовыеРазницы Тогда
СуммаОпер = 0;
КонецЕсли;
КонецЕсли;

СуммаПокупкиРуб = СуммаПокупкиРуб + СуммаОпер;
КонецЕсли;
КонецЦикла;

Если (СуммаПокупкиРуб <> Всего) и (СуммаПокупкиРуб <> 0) Тогда

К = СуммаПокупкиРуб / Всего;
БезНДС20 = Окр(БезНДС20 * К, 2, 1);
НДС20 = Окр(НДС20 * К, 2, 1);
БезНДС10 = Окр(БезНДС10 * К, 2, 1);
НДС10 = Окр(НДС10 * К, 2, 1);
НДС0 = Окр(НДС0 * К, 2, 1);
// Освобождаемые = Окр(Освобождаемые * К, 2, 1);

Разница = (СуммаПокупкиРуб - СуммаНДСРуб) - (БезНДС20 + БезНДС10 + Освобождаемые + НДС0);
Если Разница <> 0 Тогда
Если БезНДС20 <> 0 Тогда
БезНДС20 = БезНДС20 + Разница;

ИначеЕсли БезНДС10 <> 0 Тогда
БезНДС10 = БезНДС10 + Разница;

ИначеЕсли Запрос.Док.НДСпоСтавкеНольПроцентов = 1 Тогда
НДС0 = НДС0 + Разница;

Иначе
// Освобождаемые = Освобождаемые + Разница;
КонецЕсли;
КонецЕсли;

Разница = СуммаНДСРуб - (НДС20 + НДС10);
Если Разница <> 0 Тогда
Если НДС20 <> 0 Тогда
НДС20 = НДС20 + Разница;

Иначе
НДС10 = НДС10 + Разница;
КонецЕсли;
КонецЕсли;

Всего = СуммаПокупкиРуб;

КонецЕсли;
КонецЕсли;

ТабОтчета.ВсегоПродаж = Всего;
ТабОтчета.СуммаБезНДС20 = БезНДС20;
ТабОтчета.НДС20 = НДС20;
ТабОтчета.СуммаБезНДС10 = БезНДС10;
ТабОтчета.НДС10 = НДС10;
ТабОтчета.НДС0 = НДС0;
ТабОтчета.СуммаСовсемБезНДС = Освобождаемые;

КонецЕсли;
КонецЦикла;

ТабОтчета.Сортировать("ПозицияДок");

Если (ПризнакЧастичнойОплаты = 1) и (ТабОтчета.КоличествоСтрок() > 0) Тогда

//Соберем данные о проверке частичных оплат
ТабСчетовФактур = СоздатьОбъект("ТаблицаЗначений");
ТабОтчета.Выгрузить(ТабСчетовФактур);
ТабСчетовФактур.Свернуть("ДатаНомер, Контрагент","ВсегоПродаж, СуммаБезНДС20, НДС20, СуммаБезНДС10, НДС10, НДС0, СуммаСовсемБезНДС");
БухИт76 = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт76.ИспользоватьСубконто(ВидыСубконто.СчетаФактурыВыданные);
БухИт76.ВыполнитьЗапрос(НачДата,КонДата,"76.Н.1",,,,,1);

//Проверим частичные оплаты
ТабОтчета.ВыбратьСтроки();
Пока ТабОтчета.ПолучитьСтроку()=1 Цикл
Если (Найти(Врег(ТабОтчета.ДатаНомер), "ЧАСТИЧНАЯ") > 0) или
(Найти(ТабОтчета.ДатаНомер, " НДС ") > 0) Тогда
Продолжить;
КонецЕсли;
Если ПустоеЗначение(ТабОтчета.СчетФактура) = 1 Тогда
Продолжить;
КонецЕсли;
ЧастичнаяОплата = 0;
Если БухИт76.ПолучитьСубконто(,,ТабОтчета.СчетФактура) > 0 Тогда
Если БухИт76.СКК("С") > 0 Тогда //Есть остаток НДС (задолженность не погашена)
ЧастичнаяОплата = 1;
ИначеЕсли БухИт76.СНК("С") > 0 Тогда
БухИтСФ = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтСФ.ИспользоватьСубконто(ВидыСубконто.СчетаФактурыВыданные, ТабОтчета.СчетФактура, 2);
БухИтСФ.ВыполнитьЗапрос(,ТабОтчета.СчетФактура,"76.Н.1",,,,,1);
Если БухИт76.СНК("С") <> БухИтСФ.СКК("С") Тогда
ЧастичнаяОплата = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
НС = 0;
Если ТабСчетовФактур.НайтиЗначение(ТабОтчета.ДатаНомер, НС, "ДатаНомер") = 1 Тогда
ТабСчетовФактур.ПолучитьСтрокуПоНомеру(НС);
Если ТабОтчета.ВсегоПродаж <> ТабСчетовФактур.ВсегоПродаж Тогда //Есть несколько записей по этой с/ф
ЧастичнаяОплата = 1;
КонецЕсли;
КонецЕсли;
Если ЧастичнаяОплата = 1 Тогда
ТабОтчета.ДатаНомер = СокрЛП(ТабОтчета.ДатаНомер) + РазделительСтрок +"частичная оплата";
КонецЕсли;
КонецЦикла;
КонецЕсли;

Ном = 1;

Если (ГруппироватьПоКонтрагентам = 1) и (СтандартнаяФорма=0) Тогда
ТабОтчета.Сортировать("Контрагент");
Контр = " не контрагент ";
КонецЕсли;

Если ВариантФормирования<>3 Тогда
Таб.ВывестиСекцию("Шапка");
КонецЕсли;

ИтогСуммаБезНДС20=0;
ИтогНДС20=0;
ИтогСуммаБезНДС18=0;
ИтогНДС18=0;
ИтогСуммаБезНДС10=0;
ИтогНДС10 = 0;
ИтогНДС0 = 0;
ИтогСуммаСовсемБезНДС = 0;
ИтогВсего = 0;

ТабОтчета.ВыбратьСтроки();
Пока ТабОтчета.ПолучитьСтроку()=1 Цикл
ПечСуммаБезНДС20 = 0;
ПечНДС20 = 0;
ПечСуммаБезНДС18 = 0;
ПечНДС18 = 0;
ПечСуммаБезНДС10 = ТабОтчета.СуммаБезНДС10;
ПечНДС10 = ТабОтчета.НДС10;
ПечНДС0 = ТабОтчета.НДС0;
ПечСуммаСовсемБезНДС = ТабОтчета.СуммаСовсемБезНДС;

Если ТабОтчета.Аванс <> 2 Тогда
ПечКонтрагент = Наименование(ТабОтчета.Контрагент);
ПечИНН = ТабОтчета.ИНН;
ПечКПП = ТабОтчета.КПП;
Иначе
ПечКонтрагент = СокрЛП(Константа.НазваниеОрганизации);
ПечИНН = СРЕД(Константа.ИННОрганизации,1,10);
ПечКПП = СРЕД(Константа.ИННОрганизации,12);
КонецЕсли;

Если ТабОтчета.СуммаБезНДС20 <> 0 Тогда
Ставка = Окр(100 * (ТабОтчета.НДС20/ТабОтчета.СуммаБезНДС20),0,1);

Если (ТабОтчета.СуммаБезНДС20 <= 0.5) и (ТабОтчета.СуммаБезНДС20 > 0) Тогда
Если (ПустоеЗначение(ТабОтчета.СчетФактура) = 0) Тогда
Если (ТабОтчета.СчетФактура.ДатаДок < '01.01.2004') Тогда
Ставка = Ставка;
Иначе
Ставка = 18;
КонецЕсли;
Иначе
Ставка = 18;
КонецЕсли;
КонецЕсли;

ОбщаяБаза = ТабОтчета.СуммаБезНДС20 + ТабОтчета.СуммаБезНДС10 + ТабОтчета.НДС0 + ТабОтчета.СуммаСовсемБезНДС;
Если ((Ставка = 20) и (ОбщаяБаза <> ТабОтчета.ВсегоПродаж)) или
((Ставка = 17) и (ОбщаяБаза = ТабОтчета.ВсегоПродаж)) Тогда
ПечСуммаБезНДС20 = ТабОтчета.СуммаБезНДС20;
ПечНДС20 = ТабОтчета.НДС20;
Иначе
ПечСуммаБезНДС18 = ТабОтчета.СуммаБезНДС20;
ПечНДС18 = ТабОтчета.НДС20;
КонецЕсли;

Иначе
ПечСуммаБезНДС18 = ТабОтчета.СуммаБезНДС20;
ПечНДС18 = ТабОтчета.НДС20;
КонецЕсли;

Если ТабОтчета.Аванс <> 0 Тогда
ПечСуммаБезНДС20 = 0;
ПечСуммаБезНДС18 = 0;
ПечСуммаБезНДС10 = 0;
ПечНДС0 = 0;
ПечСуммаСовсемБезНДС = 0;
КонецЕсли;

ИтогСуммаБезНДС20=ИтогСуммаБезНДС20+ПечСуммаБезНДС20;
ИтогНДС20=ИтогНДС20+ПечНДС20;
ИтогСуммаБезНДС18=ИтогСуммаБезНДС18+ПечСуммаБезНДС18;
ИтогНДС18=ИтогНДС18+ПечНДС18;
ИтогСуммаБезНДС10=ИтогСуммаБезНДС10+ПечСуммаБезНДС10;
ИтогНДС10=ИтогНДС10+ПечНДС10;
ИтогНДС0=ИтогНДС0+ПечНДС0;
ИтогСуммаСовсемБезНДС=ИтогСуммаСовсемБезНДС+ПечСуммаСовсемБе­зНДС;
ИтогВсего=ИтогВсего+ТабОтчета.ВсегоПродаж;

Если ВариантФормирования<>3 Тогда

Если (ГруппироватьПоКонтрагентам = 1) и (СтандартнаяФорма=0) Тогда
Если Контр<>ТабОтчета.Контрагент Тогда
Если Ном>1 Тогда
Таб.ВывестиСекцию("ВсегоКонтрагент");
КонецЕсли;
Таб.ВывестиСекцию("Контрагент");
Контр=ТабОтчета.Контрагент;
ВсегоПродаж=0;
СуммаБезНДС20=0;
НДС20=0;
СуммаБезНДС18=0;
НДС18=0;
СуммаБезНДС10=0;
НДС10=0;
НДС0=0;
СуммаСовсемБезНДС=0;
КонецЕсли;
ВсегоПродаж=ВсегоПродаж+ТабОтчета.ВсегоПродаж;
СуммаБезНДС20=СуммаБезНДС20+ПечСуммаБезНДС20;
НДС20=НДС20+ПечНДС20;
СуммаБезНДС18=СуммаБезНДС18+ПечСуммаБезНДС18;
НДС18=НДС18+ПечНДС18;
СуммаБезНДС10=СуммаБезНДС10+ПечСуммаБезНДС10;
НДС10=НДС10+ТабОтчета.НДС10;
НДС0=НДС0+ПечНДС0;
СуммаСовсемБезНДС=СуммаСовсемБезНДС+ПечСуммаСовсемБезНДС;
КонецЕсли;
СписокРасшифровки = ТабОтчета.Док;

Таб.ВывестиСекцию("Строка");
Ном = Ном + 1;

КонецЕсли;
КонецЦикла;

Если ВариантФормирования<>3 Тогда
Если (ГруппироватьПоКонтрагентам = 1) и (СтандартнаяФорма=0) Тогда
Таб.ВывестиСекцию("ВсегоКонтрагент");
КонецЕсли;
КонецЕсли;

Если ВариантФормирования<>3 Тогда

Таб.ВывестиСекцию("Всего");

ГлБух = ФИО(Константа.ГлБухгалтер.Получить( КонДата ));
Таб.ВывестиСекцию("Подвал");

ВерхнийКолонтитул = "Книга продаж ("+ПериодСтр(НачДата, КонДата)+")";
НижнийКолонтитул = "Отчет сформирован "+ТекущаяДата()+" "+ТекущееВремя()+?(ПустоеЗначение(ИмяПользователя())=0," Пользователь: "+ИмяПользователя(),"");

Таб.Опции(0,0,13,2, "Параметры печати книги продаж" );
Таб.ОбластьПечати(2);
Таб.ПовторятьПриПечатиСтроки(9, 13);
Таб.ПараметрыСтраницы(2,,,,,,,,,1);
Таб.ТолькоПросмотр(1);
Таб.Показать("Книга продаж","");
2. Антон Паскаль (platon_) 10 25.10.11 10:41 Сейчас в теме
а почему бы не взять стандартный и не добавить условие в него лишнее?
3. Сергей Водаков (WaterSmith) 338 25.10.11 10:41 Сейчас в теме
Насколько я помню, "книга продаж" это отчет? Ну скопируйте его, добавьте проверку "на минус" при выводе строки, и наслаждайтесь результатом. Что конкретно не ясно?

P.S. Вот, и коллега так же считает.
4. max loginov (pinachet) 25.10.11 10:49 Сейчас в теме
не понятно как написать условие... я новичок и плохо понимаю еще язык 1с
6. max loginov (pinachet) 25.10.11 11:24 Сейчас в теме
БОЛЬШОЕ СПАСИБО, щас буду пробовать
8. max loginov (pinachet) 26.10.11 16:13 Сейчас в теме
тема офф))) разобрался! спасибо еще раз кто помогал)))
9. Shrek Shrek (Shrek2015) 22.11.11 16:06 Сейчас в теме
проще всего сохранить в эксель и там поставить фильтр на минусовые :)
10. Геннадий Бунякин (Natge2008) 24.11.11 16:01 Сейчас в теме
Добрый день! у меня вопрос! необходимо создать внешнюю обработку для пересчета цен из екселя! как переделать формат екселя в нужный! и в какой???заранее спасибо
11. hellf (hellf) 17 24.11.11 16:10 Сейчас в теме
(10) Natge2008, ничего не ясно. Есть эксель и надо из него цены обновить? Ищите какую-ниб. загрузку цен из эксель. Ни в какой формат ничего переделывать не надо, это вам не поможет.
12. Наталья Барская (Jewess) 01.12.11 09:53 Сейчас в теме
Natge2008, не обязательно прям загрузку цен из Эксель. Любую самую простенькую загрузку - Эксель в 1С.
А там уже вставляете что угодно - построчный обход документа Эксель, поиск Номенклатуры по реквизиту, запись цены, даты и т.д.
13. Elena Kho (chorochol) 20.01.12 15:36 Сейчас в теме
15. Наина Бикибалова (user602655_naina.biskibalova) 09.09.16 14:51 Сейчас в теме
Здравствуйте! Подскажите пож. мне в стандартной форме отчета -Книги Продаж нужно дописать отбор по коду вида операции...через конструктор запроса у меня что-то не получается...я еще новенькая в программировании 1С...Помогите!!!
Оставьте свое сообщение