Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 окт 2021, 19:44

Изменить макет печатной формы(убрать колонки и строки)

Автор Afellay, 29 мар 2017, 13:38

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

Afellay

Здравствуйте, подскажите как исправить в макете печатной форме, нужно убрать некоторые столбцы и колонки, чтобы не выводились Пробовал просто убирать в макете данные колонки, но тогда ругается 1с. Я так понимаю нужно в коде тоже закомментировать эти колонки.

pavl_vs

Цитата: Afellay от 29 мар 2017, 13:38... в макете печатной форме, нужно убрать некоторые столбцы и колонки, чтобы не выводились Пробовал просто убирать в макете данные колонки, но тогда ругается 1с. Я так понимаю нужно в коде тоже закомментировать эти колонки.

Естественно, если Вы их просто удалили в макете, но в коде остались ссылки на соответствующие параметры.
Если речь идет только о том, что бы колонки не выводились, то в свойствах снимите флажок Видимость.

Afellay

Цитата: pavl_vs от 29 мар 2017, 13:53
Цитата: Afellay от 29 мар 2017, 13:38... в макете печатной форме, нужно убрать некоторые столбцы и колонки, чтобы не выводились Пробовал просто убирать в макете данные колонки, но тогда ругается 1с. Я так понимаю нужно в коде тоже закомментировать эти колонки.

Естественно, если Вы их просто удалили в макете, но в коде остались ссылки на соответствующие параметры.
Если речь идет только о том, что бы колонки не выводились, то в свойствах снимите флажок Видимость.
Функция СформироватьПечатнуюФормуТоварногоЧека(МассивОбъектов, ОбъектыПечати)

//Инициализируем и устанавливаем параметры таблибличного документа для печати
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Товарный_Чек";
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

Колонка = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
ВыводитьКоды = ЗначениеЗаполнено(Колонка);

//Делаем запрос к объектам, указанным в массиве МассивОбъектов
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);

Запрос.Текст =
"ВЫБРАТЬ
| Док.Номер                     КАК Номер,
| Док.Дата                      КАК Дата,
| Док.Ссылка                    КАК Ссылка,
| Док.Валюта                    КАК Валюта,
| Док.ЦенаВключаетНДС           КАК ЦенаВключаетНДС,
| Док.КассаККМ.Представление    КАК Покупатель,
| Док.НомерЧекаККМ КАК НомерЧекаККМ,
| Док.Склад.Представление КАК Магазин,
| Док.Организация               КАК Организация,
| Док.Организация.Префикс       КАК Префикс,
| Док.Организация.Представление КАК Поставщик,
| Док.СуммаДокумента            КАК СуммаДокумента,
| Док.Товары.(
| НомерСтроки                     КАК НомерСтроки,
| Номенклатура                    КАК Номенклатура,
| Номенклатура.Представление      КАК Товар,
| Номенклатура.НаименованиеПолное КАК ТоварПолноеНаименование,
| Номенклатура.НаименованиеПолное   КАК ПолноеНаименованиеНоменклатуры,
| Номенклатура.Код                КАК Код,
| Номенклатура.Артикул            КАК Артикул,
| Характеристика                  КАК Характеристика,
| Характеристика.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
| КоличествоУпаковок              КАК Количество,
| ВЫБОР
| КОГДА Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Упаковка.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Цена КАК Цена,
| Док.Товары.КоличествоУпаковок * Док.Товары.Цена - Док.Товары.Сумма КАК Скидка,
| Сумма    КАК Сумма,
| СуммаНДС КАК СуммаНДС,
| ЛОЖЬ КАК ЭтоВозвратнаяТара
| )
|ИЗ
| Документ.ЧекККМ КАК Док
|ГДЕ
| Док.Ссылка В (&МассивДокументов)
|";

Если ТипЗнч(МассивОбъектов[0]) <> Тип("ДокументСсылка.ЧекККМ") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Док.КассаККМ.Представление", "Док.Контрагент");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Док.НомерЧекаККМ", """""");
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.ЧекККМ", "Документ." + МассивОбъектов[0].Метаданные().Имя);
Если Метаданные.Перечисления.ТипыНоменклатуры.ЗначенияПеречисления.Найти("МногооборотнаяТара") <> Неопределено
И МассивОбъектов[0].Метаданные().Реквизиты.Найти("ВернутьМногооборотнуюТару") <> Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ЛОЖЬ КАК ЭтоВозвратнаяТара", "
| ВЫБОР
| КОГДА Док.Ссылка.ВернутьМногооборотнуюТару
| И Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|");
КонецЕсли;

Если УТ112 Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, ".УпаковкиНоменклатуры.", ".УпаковкиЕдиницыИзмерения.");
КонецЕсли;   

Выборка = Запрос.Выполнить().Выбрать();

//штатный функционал
ПервыйДокумент = Истина;
//штатный функционал

//Обработка результата запроса и формирование табличного документа
Пока Выборка.Следующий() Цикл

//штатный функционал
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
//штатный функционал

// Макет необходимо получать для каждого документа в выборке, т.к. размеры колонок изменяются динамически
Макет = ПолучитьМакет("ПФ_MXL_ТоварныйЧек");

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

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

ОбластьМакета = Макет.ПолучитьОбласть("Магазин");
ОбластьМакета.Параметры.Магазин = Выборка.Магазин;
ТабДокумент.Вывести(ОбластьМакета);

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

ЕстьСкидки = Ложь;
ЕстьНДС = Ложь;
ВыборкаСтрокТовары = Выборка.Товары.Выбрать();
Пока ВыборкаСтрокТовары.Следующий() Цикл
Если ВыборкаСтрокТовары.Скидка <> 0 Тогда
ЕстьСкидки = Истина;
КонецЕсли;
Если ВыборкаСтрокТовары.СуммаНДС <> 0 Тогда
ЕстьНДС = Истина;
КонецЕсли;
КонецЦикла;

ОбластьНомера   = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов    = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьАртикулов= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаАртикулов");
ОбластьДанных   = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСкидок   = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
ОбластьСуммыНДС = Макет.ПолучитьОбласть("ШапкаТаблицы|СуммаНДС");
ОбластьСуммы    = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

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

ТабДокумент.Присоединить(ОбластьАртикулов);

ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
Если ЕстьНДС Тогда
ТабДокумент.Присоединить(ОбластьСуммыНДС);
КонецЕсли;

ТабДокумент.Присоединить(ОбластьСуммы);

ОбластьКолонкаТовар = Макет.Область("Товар");
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                  + Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если Не ЕстьСкидки Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                  + Макет.Область("СуммаБезСкидки").ШиринаКолонки
                                  + Макет.Область("СуммаСкидки").ШиринаКолонки;
КонецЕсли;

ОбластьНомера   = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов    = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьАртикулов= Макет.ПолучитьОбласть("Строка|КолонкаАртикулов");
ОбластьДанных   = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСкидок   = Макет.ПолучитьОбласть("Строка|Скидка");
ОбластьСуммыНДС = Макет.ПолучитьОбласть("Строка|СуммаНДС");
ОбластьСуммы    = Макет.ПолучитьОбласть("Строка|Сумма");

Сумма          = 0;
ВсегоСкидок    = 0;
ВсегоБезСкидок = 0;

ВыборкаСтрокТовары = Выборка.Товары.Выбрать();
Пока ВыборкаСтрокТовары.Следующий() Цикл

ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Вывести(ОбластьНомера);

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

ОбластьАртикулов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
ТабДокумент.Присоединить(ОбластьАртикулов);

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
Если ЕстьОбщийМодуль("НоменклатураКлиентСервер") Тогда
ОбластьДанных.Параметры.Товар = Вычислить("
|НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
|ВыборкаСтрокТовары.ПолноеНаименованиеНоменклатуры,
|ВыборкаСтрокТовары.Характеристика,
|,
|,
|,
|ВыборкаСтрокТовары.ЭтоВозвратнаяТара)");
Иначе
ОбластьДанных.Параметры.Товар = Вычислить("ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаСтрокТовары.ПолноеНаименованиеНоменклатуры, ВыборкаСтрокТовары.Характеристика)");
КонецЕсли;

ТабДокумент.Присоединить(ОбластьДанных);

Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Скидка         = ВыборкаСтрокТовары.Скидка;
ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокТовары.Сумма + ВыборкаСтрокТовары.Скидка;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;

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

Если Не Выборка.ЦенаВключаетНДС Тогда
СуммаСНДС = ВыборкаСтрокТовары.Сумма + ВыборкаСтрокТовары.СуммаНДС;
Иначе
СуммаСНДС = ВыборкаСтрокТовары.Сумма;
КонецЕсли;

ОбластьСуммы.Параметры.Сумма = СуммаСНДС;
ТабДокумент.Присоединить(ОбластьСуммы);

ВсегоСкидок    = ВсегоСкидок    + ВыборкаСтрокТовары.Скидка;
ВсегоБезСкидок = ВсегоБезСкидок + ВыборкаСтрокТовары.Сумма + ВыборкаСтрокТовары.Скидка;

КонецЦикла;

Товары = Выборка.Товары.Выгрузить();

// Вывести Итого.
ОбластьНомера   = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов    = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьАртикулов= Макет.ПолучитьОбласть("Итого|КолонкаАртикулов");
ОбластьДанных   = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСкидок   = Макет.ПолучитьОбласть("Итого|Скидка");
ОбластьСуммы    = Макет.ПолучитьОбласть("Итого|Сумма");
ОбластьСуммыНДС = Макет.ПолучитьОбласть("Итого|СуммаНДС");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьАртикулов);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.ВсегоСкидок    = ВсегоСкидок;
ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;

СуммаНДС = Товары.Итог("СуммаНДС");
Сумма    = Товары.Итог("Сумма");

Если ЕстьНДС Тогда
ОбластьСуммыНДС.Параметры.СуммаНДС = СуммаНДС;
ТабДокумент.Присоединить(ОбластьСуммыНДС);
КонецЕсли;

Если Не Выборка.ЦенаВключаетНДС Тогда
СуммаДокумента = Сумма + СуммаНДС;
Иначе
СуммаДокумента = Сумма;
КонецЕсли;

ОбластьСуммы.Параметры.Сумма = СуммаДокумента;
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести Сумму прописью.
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ВыборкаСтрокТовары.Количество()
                                       + ", на сумму " + ФормированиеПечатныхФорм.ФорматСумм(Выборка.СуммаДокумента);
ОбластьМакета.Параметры.СуммаПрописью  = РаботаСКурсамиВалют.СформироватьСуммуПрописью(Выборка.СуммаДокумента, Выборка.Валюта);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести подписи.
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(Выборка);
ТабДокумент.Вывести(ОбластьМакета);

//штатный функционал
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.Ссылка);
//штатный функционал

КонецЦикла;

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

  Подскажите где тут закоментировать нужно?

pavl_vs

Цитата: Afellay от 29 мар 2017, 14:07Подскажите где тут закоментировать нужно?
Во-первых, следовало бы указать что необходимо скрыть.
Во-вторых, более разумно в свойствах самого макета указать, что для конкретной колонки Видимость = Ложь, т.е. стать на заголовок столбца и в окне свойств, снять флажок Видимость.

Afellay

Цитата: pavl_vs от 29 мар 2017, 14:26
Цитата: Afellay от 29 мар 2017, 14:07Подскажите где тут закоментировать нужно?
Во-первых, следовало бы указать что необходимо скрыть.
Во-вторых, более разумно в свойствах самого макета указать, что для конкретной колонки Видимость = Ложь, т.е. стать на заголовок столбца и в окне свойств, снять флажок Видимость.
Нужно скрыть, магазин, покупатель, сумма без скидки, скидка(наценка), сумма НДС
Добавлено: 29 мар 2017, 14:47


Цитата: pavl_vs от 29 мар 2017, 14:26Во-вторых, более разумно в свойствах самого макета указать, что для конкретной колонки Видимость = Ложь, т.е. стать на заголовок столбца и в окне свойств, снять флажок Видимость.
Не могу найти это свойство

Добавлено: 29 мар 2017, 14:55


Цитата: Afellay от 29 мар 2017, 14:44
Цитата: pavl_vs от 29 мар 2017, 14:26
Цитата: Afellay от 29 мар 2017, 14:07Подскажите где тут закоментировать нужно?
Во-первых, следовало бы указать что необходимо скрыть.
Во-вторых, более разумно в свойствах самого макета указать, что для конкретной колонки Видимость = Ложь, т.е. стать на заголовок столбца и в окне свойств, снять флажок Видимость.
Нужно скрыть, магазин, покупатель, сумма без скидки, скидка(наценка), сумма НДС
Добавлено: 29 мар 2017, 14:47


Цитата: pavl_vs от 29 мар 2017, 14:26Во-вторых, более разумно в свойствах самого макета указать, что для конкретной колонки Видимость = Ложь, т.е. стать на заголовок столбца и в окне свойств, снять флажок Видимость.
Не могу найти это свойство
Очень благодарен был бы, если показали как скрывать в свойствах столбцы или колонки

Анатолий Анпилогов

Цитата: Afellay от 29 мар 2017, 14:07ОбластьМакета = Макет.ПолучитьОбласть("Магазин"); ОбластьМакета.Параметры.Магазин = Выборка.Магазин; ТабДокумент.Вывести(ОбластьМакета);
скроем магазин, можно комментировать весь код, или только последнюю строку

Цитата: Afellay от 29 мар 2017, 14:07Если ТипЗнч(Выборка.Ссылка) <> Тип("ДокументСсылка.ЧекККМ") Тогда ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); ПредставлениеПолучателя = Выборка.Покупатель; Если ТипЗнч(Выборка.Ссылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда ПредставлениеПолучателя = Строка(ПредставлениеПолучателя) + " (заказ № " + ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Выборка.Номер, Истина, Истина) + ")"; КонецЕсли; ОбластьМакета.Параметры.Заполнить(Выборка); ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ТабДокумент.Вывести(ОбластьМакета); КонецЕсли;
скроем покупателя, либо выше смотрите

с табличной частью, сложнее (скрыть отдельно шапка, отдельно строку по шапке и итоги)

Afellay

Цитата: Afellay от 29 мар 2017, 14:07Если речь идет только о том, что бы колонки не выводились, то в свойствах снимите флажок Видимость.
Можно более подробно объяснить как это сделать? Если можно со скриншотом, весь макет облазил, не нашёл такого свойства

Vasia Povar

ОбластьМакета = Макет.ПолучитьОбласть("Магазин");
        ОбластьМакета.Параметры.Магазин = Выборка.Магазин;
        ТабДокумент.Вывести(ОбластьМакета);
Тут Вы выводите ОбластьМакета, где прописан параметр магазин. Закомментируйте ТабДокумент.Вывести(ОбластьМакета)


Afellay

Все убрал все лишние колонки, закоментив код, осталась маленькая проблмка, нужно чтобы  при печати выводась сумма прописью с названием валюты. Т.е наприер тысяча рублей, 15 копеек. Как это сделать, код вывода на печать у меня в обработки такой
// Вывести Сумму прописью. 
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ВыборкаСтрокТовары.Количество()
                                       + ", на сумму " + ФормированиеПечатныхФорм.ФорматСумм(Выборка.СуммаДокумента);
ОбластьМакета.Параметры.СуммаПрописью  = РаботаСКурсамиВалют.СформироватьСуммуПрописью(Выборка.СуммаДокумента, Выборка.Валюта);
ТабДокумент.Вывести(ОбластьМакета);

Vasia Povar

СформироватьСуммуПрописью()
Смотрите эту функцию, там есть логика как это делается
Примерно так:
СуммаПрописью = ЧислоПрописью(СуммаДокумента,, "Рубль, рублей, рубля, м, копейка, копейки, копеек, ж, 2");

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

Рейтинг@Mail.ru Rambler's Top100

Поиск