Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
24 Сен 2018, 05:18
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Высота табличного документа ( и отдельного поля)  (Прочитано 135 раз)

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

Оффлайн shd3

  • *
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-03-05
  • Сайт: 
  • Профессия: Ученик 1С
 - Подскажите , способ рассчитать высоту табличного документа( листа , отдельного поля ) ? Спасибо !


( На сколько я понял , ТабличныйДокумент.ПроверитьВывод может проверить границу ( заполнения) ..... мне по сути нужно вывод "текста" табличного документа отношение заполнение на 95% + поле подвала ( поле подвала не должно плавать по табличной части , всегда должно выводится (снизу табличного документа) в одном и том же месте , на каждом листе ! Потом,( плюсом вывести ГоризональныйРазделитель)


Оффлайн wise

  • *****
  • Сообщений: 630
  • РЕПУТАЦИЯ: 86
  • КПД: 14%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
(0) используйте нижний колонтитул
будет - "всегда должно выводится (снизу табличного документа) в одном и том же месте"
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Оффлайн shd3

  • *
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-03-05
  • Сайт: 
  • Профессия: Ученик 1С
(0) используйте нижний колонтитул
будет - "всегда должно выводится (снизу табличного документа) в одном и том же месте"

Спасибо за совет , сейчас буду крутить - колонтитул .
Скажите пожалуйста , в принципе высоту табличного поля можно вычислить ? . Спасибо!

Оффлайн Sy4a

  • **
  • Сообщений: 90
  • РЕПУТАЦИЯ: 17
  • КПД: 19%
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Скажите пожалуйста , в принципе высоту табличного поля можно вычислить ? . Спасибо!
Я не уверен но очень в этом сомневаюсь. Плюс если вы будете использовать автомасштаб, чтобы на всех принтерах всё помещалась на страницу примерно одинакого, то размер полей вам ничего не даст, в 1С можно вычислить количество строк в табличном документе, а от них уже плясать, правда если у вас в 1 строку чтото не уместится и она расширется высотой в 2 то 1С будет считать это всё равно одной строкой. А В целом посмотрите типовые печатные формы ТОРГ-12 если они у вас есть в вашей конфигурации, там обычно прописано что бы подвал сам по себе на другую сторону страницу без части информации перед ней не уходил (чтобы нельзя было вставить листы между подвалом и основной информацией документа), это не совсем то что вам нужно, но может пригодится в дальнейшем.



Оффлайн wise

  • *****
  • Сообщений: 630
  • РЕПУТАЦИЯ: 86
  • КПД: 14%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
(2) конечно, можно.
просто считай высоту КАЖДОЙ области, которую ты выводишь в табличный документ.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Оффлайн shd3

  • *
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-03-05
  • Сайт: 
  • Профессия: Ученик 1С
Скажите пожалуйста , в принципе высоту табличного поля можно вычислить ? . Спасибо!
Я не уверен но очень в этом сомневаюсь. Плюс если вы будете использовать автомасштаб, чтобы на всех принтерах всё помещалась на страницу примерно одинакого, то размер полей вам ничего не даст, в 1С можно вычислить количество строк в табличном документе, а от них уже плясать, правда если у вас в 1 строку чтото не уместится и она расширется высотой в 2 то 1С будет считать это всё равно одной строкой. А В целом посмотрите типовые печатные формы ТОРГ-12 если они у вас есть в вашей конфигурации, там обычно прописано что бы подвал сам по себе на другую сторону страницу без части информации перед ней не уходил (чтобы нельзя было вставить листы между подвалом и основной информацией документа), это не совсем то что вам нужно, но может пригодится в дальнейшем.

Простите за назойливость , Скажите пожалуйста , примером показать (  или все есть в ТОРГ12 ? )  вычисления строк в табличном документе ( отрывок кода ) ? Спасибо !
 
PS. если вернуться колонтитулам , (как я понял )можно вывести текстовку ( с установленной высотой) , .... но не  область табличного поля ( те загнать область в колонтитул  ) 
Добавлено: 14 Сен 2018, 15:11

(2) конечно, можно.
просто считай высоту КАЖДОЙ области, которую ты выводишь в табличный документ.

 - Можно отрывок кода , подсчета высоты ТД (или ссылку на ресурс ) если не затруднит? Спасибо!
PS. подозреваю ,что я делал что-то не правильно , -ТабДокумент.Область  - возвращает значение - ТабличныйДокумент 

Последний раз редактировалось: shd3; 14 Сен 2018, 15:13

Оффлайн Sy4a

  • **
  • Сообщений: 90
  • РЕПУТАЦИЯ: 17
  • КПД: 19%
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Процедура ЗаполнитьТабличныйДокументТОРГ12(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати, КомплектыПечати)

ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
КоэффициентПересчетаВТонны     = НоменклатураСервер.КоэффициентПересчетаВТонны(Константы.ЕдиницаИзмеренияВеса.Получить());

ДанныеПечати      = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ВыводитьГТД = ?(ПараметрыПечати.Свойство("ВыводитьГТД"), ПараметрыПечати.ВыводитьГТД, Ложь);

Если ВыводитьГТД Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_ТОРГ12_ГТД");
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_ТОРГ12");
КонецЕсли;

ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл

// Для печати комплектов
Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено Тогда
КомплектПечатиПоСсылке = КомплектыПечати.Найти(ДанныеПечати.Ссылка,"Ссылка");
Если КомплектПечатиПоСсылке = Неопределено Тогда
КомплектПечатиПоСсылке = КомплектыПечати[0];
КонецЕсли;
Если КомплектПечатиПоСсылке.Экземпляров = 0 Тогда
Продолжить
КонецЕсли;
КонецЕсли;

СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.Сбросить();
Если НЕ ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска) Тогда
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для документа %1 печать ТОРГ-12 не требуется'"),
ДанныеПечати.Ссылка);
Иначе
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют товары. Печать товарной накладной без услуг не требуется'"),
ДанныеПечати.Ссылка);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ДанныеПечати.Ссылка);
Продолжить;
КонецЕсли;

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

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

ЗаполнитьРеквизитыШапкиТОРГ12(ДанныеПечати, Макет, ТабличныйДокумент);

НомерСтраницы = 1;
ИтоговыеСуммы = СтруктураИтоговыеСуммы();

// Создаем массив для проверки вывода
МассивВыводимыхОбластей = Новый Массив;

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

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

ВыводШапки = 0;

Если ДанныеДляПечати.РезультатПоШапке.Колонки.Найти("ВыводитьКодНоменклатуры") <> Неопределено Тогда
ВыводитьКодНоменклатуры = ДанныеПечати.ВыводитьКодНоменклатуры;
Иначе
ВыводитьКодНоменклатуры = Истина;
КонецЕсли;

СтрокаТовары = ВыборкаПоДокументам.Выбрать();
КоличествоСтрок = СтрокаТовары.Количество();
НомерСтроки = 0;
Пока СтрокаТовары.Следующий() Цикл

Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьМакета = ОбластьМакетаНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
ОбластьМакета = ОбластьМакетаКомплектующие;
Иначе
ОбластьМакета = ОбластьМакетаСтандарт;
КонецЕсли;

Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, НомерСтроки);
КонецЕсли;

Если НомерСтроки = 0 И ВыводШапки <> 2 Тогда
ВыводШапки = 1;
КонецЕсли;

Если (НомерСтроки = 1 И ВыводШапки = 0) ИЛИ (НомерСтроки = 0 И ВыводШапки = 1) Тогда

ВыводШапки = 2;

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

КонецЕсли;

МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
Если НомерСтроки = КоличествоСтрок Тогда
ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ВалютаРегламентированногоУчета);
ОбластьПодвала = ЗаполнитьРеквизитыПодвалаТОРГ12(ДанныеПечати, ИтоговыеСуммы, Макет, КоэффициентПересчетаВТонны);
МассивВыводимыхОбластей.Добавить(ОбластьВсего);
МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
КонецЕсли;

Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
ОбластьИтоговПоСтранице.Параметры.Заполнить(ИтоговыеСуммы);
ТабличныйДокумент.Вывести(ОбластьИтоговПоСтранице);

ОбнулитьИтогиПоСтранице(ИтоговыеСуммы);

НомерСтраницы = НомерСтраницы + 1;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();

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

КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьМакета);

Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары);
КонецЕсли;

КонецЦикла;

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

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

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

ТабличныйДокумент.Вывести(ОбластьМакета);

// Выводим подвал документа
ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ВалютаРегламентированногоУчета);
ОбластьПодвала = ЗаполнитьРеквизитыПодвалаТОРГ12(ДанныеПечати, ИтоговыеСуммы, Макет, КоэффициентПересчетаВТонны);
ТабличныйДокумент.Вывести(ОбластьПодвала);

// Выведем нужное количество экземпляров (при печати комплектов)
Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено И КомплектПечатиПоСсылке.Экземпляров > 1 Тогда
ОбластьКопирования = ТабличныйДокумент.ПолучитьОбласть(НомерСтрокиНачало,,ТабличныйДокумент.ВысотаТаблицы);
Для Итератор = 2 По КомплектПечатиПоСсылке.Экземпляров Цикл
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьКопирования);
КонецЦикла;
КонецЕсли;

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

КонецЦикла;

КонецПроцедуры

// Задает область печати объекта в табличном документе.
// Применяется для связывания области в табличном документе, с объектом печати (ссылка).
// Необходимо вызывать при формировании очередной области печатной формы в табличном
// документе.
//
// Параметры:
//  ТабличныйДокумент - ТабличныйДокумент - печатная форма;
//  НомерСтрокиНачало - Число - позиция начала очередной области в документе;
//  ОбъектыПечати - СписокЗначений - список объектов печати;
//  Ссылка - ЛюбаяСсылка - объект печати.
Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт

Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
Если Элемент = Неопределено Тогда
ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=");
ОбъектыПечати.Добавить(Ссылка, ИмяОбласти);
Иначе
ИмяОбласти = Элемент.Представление;
КонецЕсли;

НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы;
ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти;

КонецПроцедуры


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4993
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 17931
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1546
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 8453
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5921
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

alexandr_ll
59 Сообщений
alex0402
49 Сообщений
AIFrame AIFrame
42 Сообщений
MuI_I_Ika MuI_I_Ika
30 Сообщений
wise wise
29 Сообщений
LexaK
29 Сообщений
Каримдат Каримдат
25 Сообщений
Sy4a
19 Сообщений
BuhRust
18 Сообщений
Golickoff Golickoff
18 Сообщений

* Кто онлайн

  • Точка Гостей: 159
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal