1с табличный документ пустой или нет

Обновлено: 08.07.2024

В 1С существует замечательный метод ПроверитьВывод, о котором, к сожалению, знают далеко не все разработчики.

В самой справке (в синтаксис-помощнике) об этом методе сказано следующее: «Проверяет, умещаются ли переданные табличные документы на страницу при печати».

А теперь поподробнее о том, что это за метод и для чего он существует…

Не редко при выводе регламентированных многостраничных печатных форм перед разработчиком встает проблема самостоятельного, программного деления содержимого табличного документа на страницы. Например, если не допускается, чтобы на последней странице присутствовали только подписи и абсолютно необходимо наличие как минимум одной информативной строки. В подобных случаях необходимо предупреждать появление разрыва страниц, и ставить его (разрыв) в документ самостоятельно (после нужной правильной строки).

Как это делается.

Метод табличного документа ПроверитьВывод(МассивТаблиц) имеет один параметр МассивТаблиц - массив из таблиц или табличный документ. Метод проверяет, если к существующему табличному документу (такому, какой он есть сейчас) добавить еще строки – МассивТаблиц – будет ли произведен переход на следующую, новую страницу. Если говорить проще, «влезет» МассивТаблиц на текущую страницу табличного документа или нет. Соответственно, метод возвращает Истину или Ложь в качестве результата свой работы. А дальше, разработчик сам, «ручками», обрабатывает сложившуюся ситуацию:

На что следует обратить внимание при использовании этого метода.

Деление табличного документа на страницы зависит от настроек печати: от принтера по умолчанию, от отступов слева, справа, снизу, сверху, от размера колонтитулов и пр. Поэтому, в случае необходимости не стоит забывать/лениться указывать параметры печати табличного документа в тексте.

В качестве параметра метода МассивТаблиц передается массив таблиц. Здесь должны быть указаны только те таблицы, «умещение» которых мы проверяем. Не надо забывать чистить этот массив перед следующей проверкой.

Перед помещением таблицы в МассивТаблиц, ее необходимо заполнить таблицу всеми необходимыми параметрами. Это важно потому, что одна и та же таблица может иметь различную высоту в зависимости от заполняющих ее данных.

Примечание: в качестве массива таблиц может выступать массив областей макета табличного документа.

Здесь можно скачать пример отчета на платформе 8.2, использующего эту функцию.

Понятие "пустых" значений

В 1С:Предприятии 8 отсутствует такое понятие как "пустое" значение.

Существует значение Неопределено (типа Неопределено ). Оно применяется в основном как значение по умолчанию реквизитов (а также колонок таблиц значений и т.д.), имеющих составной тип. То есть, если в некотором реквизите могут содержаться значения более чем одного типа, то по умолчанию этот реквизит будет иметь значение Неопределено . Соответственно можно присвоить такому реквизиту значение Неопределено , как значение, обозначающее, отсутствие значения какого-либо другого из доступных типов. Такое значение будет иметь и объявленная переменная модуля пока ей не присвоили какое-либо значение. Заметим, что в объекте ОписаниеТипов фактически присутствует тип Неопределено , если в нем содержится более одного типа, так как если могут храниться значения двух типов, то всегда может быть и значение Неопределено . Таким образом, значение Неопределено обозначает отсутствие значения какого-либо определенного типа.

Существует значение Null (типа Null ). Оно обозначает отсутствие значения в выборке полученной из базы данных. Например, при выполнении левого и правого соединения поля невыбранных записей будут иметь значения Null . Кроме того, значение типа Null будут иметь реквизиты иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами. Аналогично и для элементов, значения Null будут иметь реквизиты доступные только для групп.

Заметим, что и значение Неопределено и значение Null имеют соответствующие типы и используются в специальных (описанных выше) случаях, а не в качестве "пустых" значений каких-либо типов.

Для большинства типов существуют значения по умолчанию, то есть значения, устанавливаемые системой в реквизите (колонке таблицы значений и т.д.) если для него задан соответствующий тип. Например, для числа – пустым значением является 0, для строки – строка, не содержащая ни одного символа, для даты – дата начала отсчета ('00010101').
Для типов ссылок на объекты базы данных существуют значения пустых ссылок. Их можно получить у соответствующих менеджеров вызовом метода ПустаяСсылка() . Именно это значение является значением по умолчанию для соответствующих типов. Заметим, что если реквизит имеет составной тип, включающий тип ссылки на объект базы данных, то данному реквизиту можно присвоить как значение Неопределено , так и значение соответствующей пустой ссылки. Соответственно в этих двух случаях будут храниться два разных значения. Решения, какое значение присваивать зависит от прикладного смысла. Например, если реквизит может иметь значения двух ссылочных типов и, исходя из значений других реквизитов, очевидно, что в нем должно быть значение определенного (одного из этих двух) ссылочного типа, но конкретная ссылка еще не выбрана пользователем, то можно присвоить значение пустой ссылки соответствующего типа. Например, это необходимо для того, чтобы поле ввода позволило бы пользователю ввести значение необходимого типа. А если, исходя из значений других реквизитов, этот реквизит вообще не должен быть заполнен, то тогда ему нужно присвоить значение Неопределено .

В 1С:Предприятии 8 используется понятие "незаполненного значения". Оно применяется для различных сервисных возможностей. Например, у измерений регистров можно установить свойство Запрет незаполненных значений . Тогда система при записи будет автоматически проверять заполнено соответствующее измерение или нет. Так же существуют свойства АвтоОтметкаНезаполненного и свойство АвтоВыборНезаполненного . Они управляют соответственно автоматическим подчеркиванием незаполненного значения и автоматическим началом выбора незаполненного значения.
Во всех случаях для проверки того заполнено значение или нет, используется единый принцип. Значение считается незаполненным, если оно равно значению по умолчанию для своего типа. Соответственно незаполненными значениями будет число 0, строка, не содержащая символов, пустая ссылка на элемент справочника и т.д.

Для строкового типа существует встроенная функция ПустаяСтрока() , однако, не следует считать, что он проверяет, является ли строковое значение значением по умолчанию. Данный метод проверяет, что строка не содержит ни одного значащего символа. При этом строка может содержать незначащие символы, такие как "пробел", "неразрывный пробел" и т.д.

Табличный Документ
Доброго времени суток проблемка заключается в следующем имеется код Процедура.

Табличный документ, обход
Здравствуйте. 1с8.1 Есть табличный документ с группировками(1 уровня). Нужно найти дубли текста.

Табличный документ автомасштаб
Здрасти. создал табДок = новый табличный документ. ТабДок.Автомасштаб = Истина; при выводе на.


Табличный документ - скролл
День добрый, не могу реализовать банальную весчь: есть форма с полем табличного документа, в.

ужасный запрос в цикле, фу фу фу , он вам ваще что то возвращает?

Добавлено через 16 минут
можно же эту строку убрать из цикла и воспользоваться поиском типа

это удалить и из запроса тоже

Добавлено через 4 минуты
А вот эти вещи как бы нужно избегать ,

А если они наименование сменят? ну тупо пробел воткнут после слова Ширина?? что тогда с вашей обработкой будет, страшно сказать в крайняк выносите их как параметры и хотя бы

Добавлено через 3 минуты
у вас во всей обработке запросы в цикле

irifka2012, запрос возвращает все что нужно

никто ничего переименовывать не будет
вопрос стоял в другом

База рабочая или учебная. если рабочая, то не нужно говорить за всех. Юзвери разные звери быват есть и олени, и лоси, и овцы)))

Добавлено через 1 минуту
Синтаксис:

ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>)
Параметры:

Тип: Произвольный.
Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>.
<Источник> (обязательный)

Тип: Произвольный.
Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>.
<СписокСвойств> (необязательный)

Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо заполнить.
Если свойства не указаны, то копируются только те, которые представлены и в <Источнике> и в <Приемнике>.
Если свойства указаны, то они обязательно должны присутствовать в обоих объектах.
Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение.
<ИсключаяСвойства> (необязательный)

Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения.
Описание:

Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств.
Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется.
В противном случае, если указан параметр <ИсключаяСвойства>, то свойства перечисленные в нем, исключаются из обработки.
вам в помощь

Добавлено через 2 минуты
Ну или присвойте параметры на прямую. что не позволяет?

Читайте также: