Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:31

Печатная форма

Автор Элимдар Мингачёв, 14 дек 2016, 01:11

0 Пользователей и 1 гость просматривают эту тему.

Элимдар Мингачёв

Всем привет. Помогите с кодом. Нужно, чтоб не отображались строки, где кол-во учётное=количеству фактическому.
Функция Печать(СсылкаНаОбъект) Экспорт
   //ВидДокумента = СсылкаНаОбъект.Метаданные().Имя;
   //Если ЗначениеЗаполнено(СсылкаНаОбъект.ДокументОснование) Тогда
   //   МетаданныеОснования = СсылкаНаОбъект.ДокументОснование.Метаданные();
   //   ВидДокументаОснования = СсылкаНаОбъект.ДокументОснование.Метаданные().Имя;
   //КонецЕсли;
   //ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   //Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
   //   ВыводитьКоды    = Истина;
   //   Колонка         = "Артикул";
   //   ТекстКодАртикул = "Артикул";
   //ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
      ВыводитьКоды    = Истина;
      Колонка         = "Код";
      ТекстКодАртикул = "Код";
   //Иначе
   //   ВыводитьКоды    = Ложь;
   //   Колонка         = "";
   //   ТекстКодАртикул = "Код";
   //КонецЕсли;
   //Попытка
   //Документ = ссылка.ПолучитьОбъект();   
   //   
   //Исключение
   //   
   //Конецпопытки;
   
   Если ВыводитьКоды Тогда
      ОбластьШапки  = "ШапкаСКодом";
      ОбластьСтроки = "СтрокаСКодом";
   Иначе
      ОбластьШапки  = "ШапкаТаблицы";
      ОбластьСтроки = "Строка";
   КонецЕсли;
   
   //Если СсылкаНаОбъект.Склад.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда
   //   ВалютаПечати = мВалютаРегламентированногоУчета;
   //Иначе
      ВалютаПечати = мВалютаУпрУчета;
   //КонецЕсли;


   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
   Запрос.Текст ="
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |   Номер,
   |   Дата,
   |   Фирма,
   |   Склад.Представление КАК ПредставлениеСклада,
   |   Фирма,
   |   Склад
   |ИЗ
   |   Документ.Инвентаризация КАК Инвентаризация
   |
   |ГДЕ
   |   Инвентаризация.Ссылка = &ТекущийДокумент";
   Шапка = Запрос.Выполнить().Выбрать();
   
   Шапка.Следующий();
   
   //запрос по табличной части  Товары
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
   //Запрос.УстановитьПараметр("ВидСкладаНТТ",    Перечисления.ВидыСкладов.НТТ);
   Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |   Док.НомерСтроки КАК НомерСтроки,
   |   Док.Номенклатура,
   |   Док.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
   |   ВЫРАЗИТЬ(Док.Номенклатура.НаименованиеПолное КАК СТРОКА(250)) КАК Товар,
   |   Док.КоличествоФактическое КАК КоличествоФактическое,
   |   Док.КоличествоПревышений КАК КоличествоПревышений,
   |   Док.Количество КАК КоличествоПоУчету,
   |   Док.Единица.Наименование КАК ЕдиницаИзмерения,
   |   Док.ПриходнаяЦена,
      |   Док.ПриходнаяСумма,
   |   Док.ХарактеристикаНоменклатуры КАК Характеристика
   |ИЗ
    |   Документ.Инвентаризация.Товары КАК Док
   |ГДЕ
   |   Док.Ссылка = &ТекущийДокумент
   |
   |УПОРЯДОЧИТЬ ПО
   |   НомерСтроки";
   
   ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать();
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияТоваровНаСкладе_ИнвентаризацияТоваровНаСкладе";

   Макет = ПолучитьМакет("ИнвентаризацияТоваровНаСкладе");

   // Выводим шапку накладной
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ДатаЗаголовка = Формат(СсылкаНаОбъект.Дата, "Л=ru_RU; ДЛФ=DD");
   ОбластьМакета.Параметры.ТекстЗаголовка = "Инвентаризация товаров на складе " + "№ " +СсылкаНаОбъект.Номер + "  " + ДатаЗаголовка;
   ТабДокумент.Вывести(ОбластьМакета);

   // Выводим данные об организации и складе
   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(Шапка);
   //ОбластьМакета.Параметры.ПредставлениеОрганизации = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,");
   ОбластьМакета.Параметры.ВалютаНаименование = ВалютаПечати.Наименование;
   ОбластьМакета.Параметры.Валюта             = ВалютаПечати;
   ТабДокумент.Вывести(ОбластьМакета);

      // Выводим шапку таблицы
   ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
   
   Если ВыводитьКоды Тогда
      ОбластьМакета.Параметры.Колонка = Колонка;
   КонецЕсли;
   
   ТабДокумент.Вывести(ОбластьМакета);

   ИтогСуммы        = 0;
   ИтогСуммыПоУчету = 0;

   
   ИтогоРезультатИзлишекКолво   = 0;
   ИтогоРезультатИзлишекСумма   = 0;
   ИтогоРезультатНедостачаКолво = 0;
   ИтогоРезультатНедостачаСумма = 0;
   
   
   
   ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
   Пока ВыборкаСтрокТовары.Следующий() Цикл

      Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
         Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
         Продолжить;
      КонецЕсли;

      ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьМакета.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
      ОбластьМакета.Параметры.КоличествоПоУчету = ВыборкаСтрокТовары.КоличествоПоУчету-ВыборкаСтрокТовары.КоличествоПревышений;
       ОбластьМакета.Параметры.ПриходнаяСумма = (ВыборкаСтрокТовары.КоличествоПоУчету - ВыборкаСтрокТовары.КоличествоПревышений)* ВыборкаСтрокТовары.ПриходнаяЦена;
      ОбластьМакета.Параметры.ПриходнаяСуммаФакт = ВыборкаСтрокТовары.КоличествоФактическое*ВыборкаСтрокТовары.ПриходнаяЦена;
      //ОбластьМакета.Параметры.Серия = ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары);

      Если ВыводитьКоды Тогда
         ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
      КонецЕсли;

      Разница     = 0;
      РазницаСумм = 0;

      КоличествоУчетное = ВыборкаСтрокТовары.КоличествоПоУчету-ВыборкаСтрокТовары.КоличествоПревышений;
      Разница     = ВыборкаСтрокТовары.КоличествоФактическое -КоличествоУчетное;
      РазницаСумм = Разница      * ВыборкаСтрокТовары.ПриходнаяЦена;
      Если Разница = 0 Тогда
         строка
         ОбластьМакета.Параметры.РезультатНедостачаКолво = 0;
         ОбластьМакета.Параметры.РезультатНедостачаСумма = 0;
         ОбластьМакета.Параметры.РезультатИзлишекКолво   = 0;
         ОбластьМакета.Параметры.РезультатИзлишекСумма   = 0;
      ИначеЕсли Разница < 0 Тогда
         ОбластьМакета.Параметры.РезультатНедостачаКолво = - Разница;
         ОбластьМакета.Параметры.РезультатНедостачаСумма = - РазницаСумм;
         ОбластьМакета.Параметры.РезультатИзлишекКолво   = 0;
         ОбластьМакета.Параметры.РезультатИзлишекСумма   = 0;
         ИтогоРезультатНедостачаКолво = ИтогоРезультатНедостачаКолво + (- Разница);
         ИтогоРезультатНедостачаСумма = ИтогоРезультатНедостачаСумма + (- РазницаСумм);
         ИтогоРезультатИзлишекКолво   = ИтогоРезультатИзлишекКолво   + 0;
         ИтогоРезультатИзлишекСумма   = ИтогоРезультатИзлишекСумма   + 0;
      ИначеЕсли  Разница > 0 Тогда
         ОбластьМакета.Параметры.РезультатНедостачаКолво = 0;
         ОбластьМакета.Параметры.РезультатНедостачаСумма = 0;
         ОбластьМакета.Параметры.РезультатИзлишекКолво   = Разница;
         ОбластьМакета.Параметры.РезультатИзлишекСумма   = РазницаСумм;
         ИтогоРезультатНедостачаКолво = ИтогоРезультатНедостачаКолво + 0;
         ИтогоРезультатНедостачаСумма = ИтогоРезультатНедостачаСумма + 0;
         ИтогоРезультатИзлишекКолво   = ИтогоРезультатИзлишекКолво   + Разница;
         ИтогоРезультатИзлишекСумма   = ИтогоРезультатИзлишекСумма   + РазницаСумм;
      КонецЕсли;
        УчетнаяСумма = (ВыборкаСтрокТовары.КоличествоПоУчету - ВыборкаСтрокТовары.КоличествоПревышений)* ВыборкаСтрокТовары.ПриходнаяЦена;
      ИтогСуммы        = ИтогСуммы        + ВыборкаСтрокТовары.ПриходнаяСумма;
      ИтогСуммыПоУчету = ИтогСуммыПоУчету + УчетнаяСумма;
      ТабДокумент.Вывести(ОбластьМакета);

   КонецЦикла;

    //Вывести Итого
   ОбластьМакета                        = Макет.ПолучитьОбласть("Итого");
   //ОбластьМакета.Параметры.Всего        = ОбщегоНазначения.ФорматСумм(ИтогСуммы);
   ОбластьМакета.Параметры.Всего        = ИтогСуммы;
   //ОбластьМакета.Параметры.ВсегоПоУчету = ОбщегоНазначения.ФорматСумм(ИтогСуммыПоУчету);
   ОбластьМакета.Параметры.ВсегоПоУчету = ИтогСуммыПоУчету;
   //ОбластьМакета.Параметры.ИтогоРезультатИзлишекКолво = ОбщегоНазначения.ФорматСумм(ИтогоРезультатИзлишекКолво);
   ОбластьМакета.Параметры.ИтогоРезультатИзлишекКолво =ИтогоРезультатИзлишекКолво;
   //ОбластьМакета.Параметры.ИтогоРезультатИзлишекСумма = ОбщегоНазначения.ФорматСумм(ИтогоРезультатИзлишекСумма);
   ОбластьМакета.Параметры.ИтогоРезультатИзлишекСумма = ИтогоРезультатИзлишекСумма;
   //ОбластьМакета.Параметры.ИтогоРезультатНедостачаКолво = ОбщегоНазначения.ФорматСумм(ИтогоРезультатНедостачаКолво);
   ОбластьМакета.Параметры.ИтогоРезультатНедостачаКолво = ИтогоРезультатНедостачаКолво;
   //ОбластьМакета.Параметры.ИтогоРезультатНедостачаСумма = ОбщегоНазначения.ФорматСумм(ИтогоРезультатНедостачаСумма);
   ОбластьМакета.Параметры.ИтогоРезультатНедостачаСумма = ИтогоРезультатНедостачаСумма;

   
   Разница = ИтогоРезультатИзлишекСумма-ИтогоРезультатНедостачаСумма;
   //ОбластьМакета.Параметры.Разница = ОбщегоНазначения.ФорматСумм(Разница);
   ОбластьМакета.Параметры.Разница = Разница;
   ТабДокумент.Вывести(ОбластьМакета);

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

   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   ТабДокумент.ПолеСверху = 10;
   ТабДокумент.ПолеСлева  = 10;
   ТабДокумент.ПолеСнизу  = 10;
   ТабДокумент.ПолеСправа = 10;

   ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
   ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
   ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
   ТабДокумент.ВерхнийКолонтитул.ТекстСлева   = ЗаголовокДляПечати;
   ТабДокумент.ВерхнийКолонтитул.ТекстСправа  = "Лист [&НомерСтраницы]";
   ТабДокумент.ПовторятьПриПечатиСтроки =  ТабДокумент.Область("ШапкаСКодом");

   РаботаСПечатнымиФормами.НапечататьДокумент(ТабДокумент, РаботаСПечатнымиФормами.СформироватьЗаголовокДокумента(СсылкаНаОбъект), ДеревоНастроекПользователя);

   Возврат ТабДокумент;

КонецФункции // ПечатьДокумента()

мВалютаРегламентированногоУчета = Константы.ВалютаРегиональногоУчета.Получить();
мВалютаУпрУчета                 = Константы.ВалютаРегиональногоУчета.Получить();

LexaK

так в запросе добавьте условие



   //запрос по табличной части  Товары
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
   //Запрос.УстановитьПараметр("ВидСкладаНТТ",    Перечисления.ВидыСкладов.НТТ);
   Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |   Док.НомерСтроки КАК НомерСтроки,
   |   Док.Номенклатура,
   |   Док.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
   |   ВЫРАЗИТЬ(Док.Номенклатура.НаименованиеПолное КАК СТРОКА(250)) КАК Товар,
   |   Док.КоличествоФактическое КАК КоличествоФактическое,
   |   Док.КоличествоПревышений КАК КоличествоПревышений,
   |   Док.Количество КАК КоличествоПоУчету,
   |   Док.Единица.Наименование КАК ЕдиницаИзмерения,
   |   Док.ПриходнаяЦена,
      |   Док.ПриходнаяСумма,
   |   Док.ХарактеристикаНоменклатуры КАК Характеристика
   |ИЗ
    |   Документ.Инвентаризация.Товары КАК Док
   |ГДЕ
   |   Док.Ссылка = &ТекущийДокумент
   |и   Док.КоличествоФактическое <> Док.Количество //добавлено условие Факт <> Учету   |
   |УПОРЯДОЧИТЬ ПО
   |   НомерСтроки";
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск