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

1. pinachet 25.10.11 10:39 Сейчас в теме
Ребят помогите реализовать внешний отчет по выдергиванию минусов из книги продаж. т.е. нужен отчет который будет собирать все минуса и выводить их
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. hellf 35 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. 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);
Таб.Показать("Книга продаж","");
14. пользователь 03.02.12 07:52
Сообщение было скрыто модератором.
...
2. platon_ 10 25.10.11 10:41 Сейчас в теме
а почему бы не взять стандартный и не добавить условие в него лишнее?
3. WaterSmith 353 25.10.11 10:41 Сейчас в теме
Насколько я помню, "книга продаж" это отчет? Ну скопируйте его, добавьте проверку "на минус" при выводе строки, и наслаждайтесь результатом. Что конкретно не ясно?

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

Программист 1С
Киров (Кировская обл.)
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день