7.7 ТТН в бух.учете 7.7

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

  1. TopicStarter Overlay
    Pacific84
    Offline

    Pacific84

    Регистрация:
    9 апр 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Организации понадобилась ТТН в бухгалтерии 7.7, я ее нашел в интернете и скачал. Она работает,но проблема в том,что если НДС сверху,то она считает все правильно,а если в сумме, то ТТН выводит на печать неправильную сумму. Например, сумма 61240, НДС 9341,69, всего к оплате должно быть 61240, в эту сумму ндс уже включен. А ттн к этой 61240 прибавляет еще раз ндс 9341,69 и на печать уже выводит сумму в 70581,69. Не подскажите где в модуле ттн можно поправить,чтобы она ндс в сумме расчитывала правильно? Я просто в программировании не силен, помогите, пожалуйста.
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Покажите для начала код...
  3. TopicStarter Overlay
    Pacific84
    Offline

    Pacific84

    Регистрация:
    9 апр 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Перем УчитыватьНДС, СуммаВклНДС, УчитыватьНП, СуммаВклНП, Скидка;
    Перем Конт,Фирма, Номер, Контрагент, ТабличнаяЧасть,
    СуммаНП, Сумма, ДатаДок, КоличествоСтрок,
    НазваниеДокумента, Валюта, Курс, Кратность;
    Процедура Печать() Далее
    //******************************************************************************
    // СчитатьДокумент(Конт)
    //
    // Параметры:
    // Конт - переданный контекст;
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    // Считывает необходимые для печати реквизиты документа, контекст которого передали через
    // параметр формы, в модульные переменные
    //
    Процедура СчитатьДокумент(Конт)

    Фирма = Константа.НазваниеОрганизации;
    Валюта = Конт.Договор.ВалютаДоговора;
    Курс = Конт.Курс;
    Кратность = 1;
    ДатаДок = Конт.ДатаДок;
    Номер = Конт.НомерДок;
    Контрагент = Конт.Контрагент;
    УчитыватьНДС = глПризнакУчетаНалога(Конт, "НДС");
    СуммаВклНДС = Конт.ВариантРасчетаНалогов;
    УчитыватьНП = Конт.УчитыватьНП;
    СуммаВклНП = 0;
    Сумма = Конт.Итог("Сумма");
    СуммаНП = Конт.Итог("НП");
    Скидка = 0;
    НазваниеДокумента = "";

    Конт.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
    КоличествоСтрок = ТабличнаяЧасть.КоличествоСтрок();
    КонецПроцедуры // СчитатьДокумент()
    //******************************************************************************
    // ПриИзмененииФлагаМы()
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    // При установке флага ЗаказчикСам очищает поле Заказчик и делает его
    // недоступным. При снятии флага делаем поле Заказчик доступным.
    //
    Процедура ПриИзмененииФлагаМы()

    Если ЗаказчикСам = 1 Тогда
    Форма.Заказчик.Доступность(0);
    Заказчик = "";
    Иначе
    Форма.Заказчик.Доступность(1);
    КонецЕсли;

    КонецПроцедуры // ПриИзмененииФлагаМы()
    //******************************************************************************
    // ФормПарПечШапки(Парметры)
    //
    // Параметры:
    // Параметры - сисок, содержащий значения для формирования шапки печатной формы
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    // Формирует список, содержащий значения полей для печати шапки документа
    //
    Процедура ФормПарПечШапки(Параметры)

    Параметры = СоздатьОбъект("СписокЗначений");
    // собственная фирма

    Банк = "";НомерСчета = "";БИКБанка = "";СчетБанка = "";
    глПлатежныеРеквизиты(Конт.РасчетныйСчет, , Банк, НомерСчета, БИКБанка, СчетБанка);
    Если (ПустоеЗначение(НомерСчета) = 1) ИЛИ (ПустоеЗначение(Банк) = 1) Тогда
    ФирмаРеквизиты = "";
    Иначе
    ФирмаРеквизиты = "р/с " + СокрЛП(НомерСчета) + " в " + Банк +
    ?(ПустоеЗначение(БИКБанка) = 0, " ,БИК " + СокрЛП(БИКБанка), "") +
    ?(ПустоеЗначение(СчетБанка) = 0, " ,корр/с " + СокрЛП(СчетБанка), "");
    КонецЕсли;

    Параметры.ДобавитьЗначение(СокрЛП(Константа.ОфициальноеНазваниеОрганизации)+", ИНН "+Константа.ИННОрганизации, "Фирма");
    Параметры.ДобавитьЗначение(глПредставлениеАдреса(Константа.АдресОрганизации), "ФирмаАдрес");
    Параметры.ДобавитьЗначение(Константа.ТелефоныОрганизации, "ФирмаТелефоны");
    Параметры.ДобавитьЗначение(ФирмаРеквизиты, "ФирмаРеквизиты");
    Параметры.ДобавитьЗначение(Константа.КодОКПО, "ФирмаОКПО");

    // контрагент

    Клиент = "";
    КлиентЮрАдрес = "";
    КлиентФактАдрес = "";
    КлиентОКПО = "";
    КлиентРевизиты = "";
    Если ПустоеЗначение(Контрагент) = 0 Тогда
    Клиент = СокрЛП(Контрагент.ПолнНаименование) +
    ?(ПустоеЗначение(Контрагент.ИНН) = 0, ", ИНН" + СокрЛП(Контрагент.ИНН), "");
    КлиентЮрАдрес = глПредставлениеАдреса(Контрагент.ЮридическийАдрес);
    КлиентФактАдрес = глПредставлениеАдреса(Контрагент.ПочтовыйАдрес);

    // у физ. лиц нет ОКПО
    Если Контрагент.ВидКонтрагента <> Перечисление.ВидыКонтрагентов.ЧастноеЛицо Тогда
    КлиентОКПО = "";
    КонецЕсли;

    Банк = "";НомерСчета = "";БИКБанка = "";СчетБанка = "";
    глПлатежныеРеквизиты(Контрагент.ОсновнойСчет, , Банк, НомерСчета, БИКБанка, СчетБанка);

    Если (ПустоеЗначение(НомерСчета) = 1) ИЛИ (ПустоеЗначение(Банк) = 1) Тогда
    КлиентРевизиты = "";
    Иначе
    КлиентРевизиты = "р/с " + СокрЛП(НомерСчета) + " в " + Банк +
    ?(ПустоеЗначение(БИКБанка) = 0, " ,БИК " + СокрЛП(БИКБанка), "") +
    ?(ПустоеЗначение(СчетБанка) = 0, " ,корр/с " + СокрЛП(СчетБанка), "");
    КонецЕсли;
    КонецЕсли;

    Параметры.ДобавитьЗначение(Клиент, "Клиент");
    Параметры.ДобавитьЗначение(КлиентЮрАдрес, "КлиентЮрАдрес");
    Параметры.ДобавитьЗначение(КлиентФактАдрес, "КлиентФактАдрес");
    Параметры.ДобавитьЗначение(КлиентОКПО, "КлиентОКПО");
    Параметры.ДобавитьЗначение(КлиентРевизиты, "КлиентРеквизиты");

    КонецПроцедуры // ФормПарПечШапки()
    //******************************************************************************
    Процедура Печать()
    Перем ПарамШапки;

    //Для простоты настройки печатной формы примем следующие соглашения:
    // - высота строк в таблице печатной формы задана жестко,
    // тогда известно, сколько строк помещается на странице;
    СтрокНаСтранице = 33;
    // - высота шапки и подвала задана жестко и кратна высоте строк таблицы,
    // тогда можно указать, сколько строк занимают шапка и подвал
    // в пересчете на строки таблицы;
    СтрокШапки = 18;
    СтрокПодвала = 13;
    // - для нормальной работы алгоритма необходимо, чтобы шапка и подвал
    // могли поместиться на одной странице + хотя бы одна строка таблицы:
    // СтрокНаСтранице >= СтрокШапки + СтрокПодвала + 1
    // - если подвал не помещается на странице, он переносится на другую
    // страницу с последней строкой; исключение составляет случай,
    // когда в таблице всего одна строка.
    Если КоличествоСтрок = 1 Тогда
    ПереноситьПоследнююСтроку = 0;
    Иначе
    ЦелыхСтраницСПодвалом = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
    ЦелыхСтраницБезПодвала = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
    ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
    КонецЕсли;
    // Если сумма НП в документе не нулевая, выведем его отдельной колонкой
    Если СуммаНП > 0 Тогда
    ФлагНП = 1;
    Иначе
    ФлагНП = 0;
    КонецЕсли;
    Таб = СоздатьОбъект("Таблица");

    //******************************************************************************
    // реквизиты шапки

    // инициализация переменных для печати шапки
    ФормПарПечШапки(ПарамШапки);

    // собственная фирма
    ФирмаОКПО = ПарамШапки.Получить("ФирмаОКПО");

    ПечФирма = ПарамШапки.Получить("Фирма");
    глДобавитьРеквизит(ПечФирма, ", ", глПредставлениеАдреса(ПарамШапки.Получить("ФирмаАдрес")));
    глДобавитьРеквизит(ПечФирма, ", ", " тел.: " + ПарамШапки.Получить("ФирмаТелефоны"));
    глДобавитьРеквизит(ПечФирма, ", ", ПарамШапки.Получить("ФирмаРеквизиты"));
    // контрагент

    КлиентОКПО = ПарамШапки.Получить("КлиентОКПО");

    ПечПлательщик = ПарамШапки.Получить("Клиент");
    глДобавитьРеквизит(ПечПлательщик, ", ", глПредставлениеАдреса(ПарамШапки.Получить("КлиентЮрАдрес")));
    глДобавитьРеквизит(ПечПлательщик, ", ", ПарамШапки.Получить("КлиентРеквизиты"));
    ПечГрузополучатель = ПарамШапки.Получить("Клиент");
    глДобавитьРеквизит(ПечГрузополучатель, ", ", глПредставлениеАдреса(ПарамШапки.Получить("КлиентФактАдрес")));
    глДобавитьРеквизит(ПечГрузополучатель, ", ", ПарамШапки.Получить("КлиентРеквизиты"));

    Таб.ВывестиСекцию("Шапка|БезНГСМиНП");
    НомерСтраницы = 1;
    ИтогоКоличествоНаСтранице = 0;
    ИтогоКоличество = 0;
    ИтогоСуммаСНДСНаСтранице = 0;
    ИтогоСуммаСНДС = 0;
    ИтогоНПНаСтранице = 0;
    ИтогоНП = 0;

    Таб.ВывестиСекцию("ЗаголовокТаблицы|БезНГСМиНП");
    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("ЗаголовокТаблицы|НП");
    КонецЕсли;
    Ном = 0;
    ТабличнаяЧасть.ВыбратьСтроки();
    Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл
    Ном = Ном + 1;
    //Начинаем новую страницу, если предыдущая строка была последней на странице
    //или пора переносить последнюю строку на последнюю страницу с подвалом.
    ЦелаяСтраница = (СтрокШапки+Ном-1)/СтрокНаСтранице;
    Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
    или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок))
    Тогда

    Таб.ВывестиСекцию("ИтогоПоСтранице|БезНГСМиНП");

    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("ИтогоПоСтранице|НП");
    КонецЕсли;

    ИтогоКоличествоНаСтранице = 0;
    ИтогоСуммаСНДСНаСтранице = 0;
    ИтогоНПНаСтранице = 0;

    Таб.НоваяСтраница();

    НомерСтраницы = НомерСтраницы + 1;
    Таб.ВывестиСекцию("ЗаголовокТаблицы|БезНГСМиНП");

    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("ЗаголовокТаблицы|НП");
    КонецЕсли;
    КонецЕсли;

    ПечТовар = ТабличнаяЧасть.Товар;
    ПечЕдиница = ТабличнаяЧасть.Товар.ЕдиницаИзмерения;
    ПечКоличество = ТабличнаяЧасть.Количество;
    КолВо = ?(ТабличнаяЧасть.Количество = 0, 1, ТабличнаяЧасть.Количество);

    ПечСумма = глПересчет(ТабличнаяЧасть.Сумма, Валюта, Курс, Валюта, Курс);
    Если УчитыватьНДС = 1 Тогда
    Если Число(СуммаВклНДС.Код) <> 3 Тогда
    ПечСумма = ПечСумма + глПересчет(ТабличнаяЧасть.НДС, Валюта, Курс, Валюта, Курс);
    КонецЕсли;
    КонецЕсли;
    Если УчитыватьНП = 1 Тогда
    ПечСуммаНП = глПересчет(ТабличнаяЧасть.НП, Валюта, Курс, Валюта, Курс);
    Если СуммаВклНП = 1 Тогда
    ПечСумма = ПечСумма - ПечСуммаНП;
    КонецЕсли;
    Иначе
    ПечСуммаНП = 0;
    КонецЕсли;

    ПечЦена = ?(КолВо = 0, ПечСумма, ПечСумма / Колво);
    ПечНП = ТабличнаяЧасть.НП;

    // Если цена, указанная в документе в рублях,
    // без налогов и без скидки
    // то в печ. форме надо отражть ее.
    Если ((УчитыватьНДС = 0) или (СуммаВклНДС = 0))
    и (СуммаВклНП = 0)
    и (Скидка = 0) Тогда
    ПечЦена = ТабличнаяЧасть.Цена;
    КонецЕсли;

    Таб.ВывестиСекцию("Строка|БезНГСМиНП");
    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("Строка|НП");
    КонецЕсли;

    // обновим итоги
    ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + ТабличнаяЧасть.Количество;
    ИтогоКоличество = ИтогоКоличество + ТабличнаяЧасть.Количество;
    ИтогоСуммаСНДСНаСтранице = ИтогоСуммаСНДСНаСтранице + ПечСумма;
    ИтогоСуммаСНДС = ИтогоСуммаСНДС + ПечСумма;
    ИтогоНПНаСтранице = ИтогоНПНаСтранице + ПечСуммаНП;
    ИтогоНП = ИтогоНП + ПечСуммаНП;
    КонецЦикла;

    СтрокаСуммы=глВыводСуммыПлатежныхДокументовПрописью(Сумма,);
    НаСумму = "на сумму " + Формат(ИтогоСуммаСНДС + ИтогоНП,"ЧПДС");
    Пропись("");

    // формируем строку для вывода количества листов накладной
    // Слово лист склоняется
    Если (НомерСтраницы > 10) И (НомерСтраницы < 20) Тогда
    Слово = " листах";
    Иначе
    ПоследняяЦифра = НомерСтраницы % 10;
    Если ПоследняяЦифра = 1 Тогда
    Слово = " листе";
    Иначе
    Слово = " листах";
    КонецЕсли;
    КонецЕсли;

    СтрокаКоличествоЛистов = Строка(НомерСтраницы) + Слово;

    Таб.ВывестиСекцию("ИтогоПоСтранице|БезНГСМиНП");
    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("ИтогоПоСтранице|НП");
    КонецЕсли;

    Таб.ВывестиСекцию("Всего|БезНГСМиНП");
    Если ФлагНП = 1 Тогда
    Таб.ПрисоединитьСекцию("Всего|НП");
    КонецЕсли;

    ПечГлавБух = глФамилияИмяОтчество(Константа.ГлБухгалтер.Получить(ДатаДок));

    Таб.ВывестиСекцию("Подвал|БезНГСМиНП");

    // Транспортный раздел выведем с новой страницы
    Таб.НоваяСтраница();

    ЗаказчикАдрес = "";

    Если ЗаказчикСам = 1 тогда
    ЗаказчикАдрес = Константа.НазваниеОрганизации;
    глДобавитьРеквизит(ЗаказчикАдрес, ", ", глПредставлениеАдреса(ЗаказчикАдрес));
    глДобавитьРеквизит(ЗаказчикАдрес, ", тел.: ", Константа.ТелефоныОрганизации);
    Иначе
    Если Заказчик.Выбран() = 1 Тогда
    ЗаказчикАдрес = СокрЛП(Заказчик.ПолнНаименование);
    глДобавитьРеквизит(ЗаказчикАдрес, ", ", глПредставлениеАдреса(Заказчик.ЮридическийАдрес));
    глДобавитьРеквизит(ЗаказчикАдрес, ", тел.: ", СокрЛП(Заказчик.Телефоны));
    КонецЕсли;
    КонецЕсли;

    Таб.ВывестиСекцию("Транспорт|БезНГСМиНП");

    Таб.Опции(0,0,0,0,"ОпцииПечатиНакладной","ОкноНакладной");
    Таб.ТолькоПросмотр(1);

    //Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
    Таб.Защита(0);
    //Иначе
    // Таб.Защита(0);
    //КонецЕсли;

    Таб.Показать(НазваниеДокумента,"");
    КонецПроцедуры //Печать
    //******************************************************************************
    // ПоКнопкеПечать()
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    //
    Процедура ПоКнопкеПечать()

    Печать();

    КонецПроцедуры // ПоКнопкеПечать()
    //******************************************************************************
    // Предопределенная процедура
    //
    Процедура ПриОткрытии()

    Если ПустоеЗначение(Форма.Параметр) = 1 Тогда
    Предупреждение("Данная обработка предназначена для печати товарно-транспортной накладной
    |и должна быть зарегистрирована в списке внешних печатных форм конфигурации.
    |Запуск обработки без параметра невозможен.",60);
    Статусвозврата(0);
    Возврат;
    КонецЕсли;
    Конт = Форма.Параметр.Получить("Контекст");
    СчитатьДокумент(Конт);

    Форма.Заказчик.ВыборГруппы(0);

    КонецПроцедуры // ПриОткрытии()
  4. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Оформляйте код в тэги!!
    Код:
    СуммаВклНДС = Конт.ВариантРасчетаНалогов;
    - поставьте условие на это выражение(на переменную СуммаВклНДС)...
  5. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    думаю в этом куске Вам нужно дописать под Вашу задачу:

    Код:
    Если УчитыватьНДС = 1 Тогда
    Если Число(СуммаВклНДС.Код) <> 3 Тогда
    ПечСумма = ПечСумма + глПересчет(ТабличнаяЧасть.НДС, Валюта, Курс, Валюта, Курс);
    КонецЕсли;
    КонецЕсли;
  6. TopicStarter Overlay
    Pacific84
    Offline

    Pacific84

    Регистрация:
    9 апр 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое, разобрался

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