(0) Вот так правильно
// Функция определяет существует ли реквизит у какого-либо объекта.
//
Функция ЕстьРеквизитОбъекта(Объект, ИмяРеквизита) Экспорт
КлючУникальности = Новый УникальныйИдентификатор;
СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);
Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;
КонецФункции // ЕстьРеквизитОбъекта()
Пример использования
Для каждого ПараметрШаблона Из СтруктураШаблона.ПараметрыШаблона Цикл
Если ЕстьРеквизитОбъекта(Область.Параметры, ПараметрШаблона.Значение) Тогда
НаименованиеКолонки = СтруктураРезультата.СоответствиеПолейСКДКолонкамТаблицыТоваров.Получить(Справочники.ШаблоныЭтикетокИЦенников.ПолучитьИмяПоляВШаблоне(ПараметрШаблона.Ключ));
Если НаименованиеКолонки <> Неопределено Тогда
Область.Параметры[ПараметрШаблона.Значение] = СтрокаТовары[НаименованиеКолонки];
КонецЕсли;
КонецЕсли;
КонецЦикла;
-
здравствуйте. хотела спросить, как проверить, что параметр макета существует?
ОбластьМакета.Параметры.Номер = …
Если параметра Номер нету, то выдается ошибка, нужна какая-то проверка. Могу найти, перебирая все параметры макета. Нет ли варианта попроще?
-
Offline
vartanet
Опытный в 1С
Команда форума- Регистрация:
- 16 ноя 2010
- Сообщения:
- 2.701
- Симпатии:
- 15
- Баллы:
- 29
например, можно проигнорировать ошибку:
Попытка
ОбластьМакета.Параметры.Номер = 2131231;
Исключение
КонецПопытки; -
спасибо)) но это не очень хороший способ, правда работать будет. а другого нет, как-то напрямую?
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Если ОбластьМакета.Параметры.Свойство("Номер") Тогда ОбластьМакета.Параметры.Номер = КонецЕсли;
Хотя. Не пробовал, надо посмотреть. Там же не структура.
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
а зачем там выкручиваться? Универсальное что-то делаете?
-
Offline
vartanet
Опытный в 1С
Команда форума- Регистрация:
- 16 ноя 2010
- Сообщения:
- 2.701
- Симпатии:
- 15
- Баллы:
- 29
не работает
метод обЪекта на обнаружен..
чета не знаю другой способ. даже не знаю как получить имя параметра, чтобы в процессе перебора всех параметров сравнивать имя параметра с искомым..
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
агаА для чего такое?
Чтобы не заполнять каждый параметр используйте ОбластьМакета.Параметры.Заполнить() например. -
Offline
vartanet
Опытный в 1С
Команда форума- Регистрация:
- 16 ноя 2010
- Сообщения:
- 2.701
- Симпатии:
- 15
- Баллы:
- 29
ну вот хочется человеку узнать есть ли в табличном документе параметр с заданым именем.. вроде простое желание, а решения нет..
-
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.151
- Симпатии:
- 217
- Баллы:
- 104
Где-то я видел код перебора параметров макета. Сейчас уже не помню…
Но что-то типа такого:Для Каждого Параметр Из ОбластьМакета.Параметры Цикл Если Параметр.Имя = ... .... КонецЦикла;
Или как-то похоже…Попробуйте, может, получится, отладчик примените))
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
а посмотреть на макет? самое простое решение
-
Offline
vartanet
Опытный в 1С
Команда форума- Регистрация:
- 16 ноя 2010
- Сообщения:
- 2.701
- Симпатии:
- 15
- Баллы:
- 29
не работает. не знает что такое «имя».
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
а в областьмакета что-то передано? приведите дословную ошибку
-
Offline
mialord
Модераторы
Команда форума
Модератор- Регистрация:
- 31 июл 2009
- Сообщения:
- 5.460
- Симпатии:
- 53
- Баллы:
- 54
Либо перебирать все параметры и сверять есть такие по имени или нет, либо бросить затею, разработчики 1С не считают подобную задачу актуальной, т.к. разработка универсальных печатных форм, как минимум, задача не адекватная.
-
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.151
- Симпатии:
- 217
- Баллы:
- 104
Ну я точно не помню…
Поэкспериментируйте -
да ничего такого особого не делаю. просто есть 2 макета. в одном одни параметры, в другом немного другие. а процедура печати одна. заполнить() не подходит. там вычисляемое значение присваивается. да и не мной уже сделано, я вношу доработки. и если заполняются параметры нового макета, для печати старого документа — то ошибки летят. могу по дате документа отслеживать.
-
Offline
mialord
Модераторы
Команда форума
Модератор- Регистрация:
- 31 июл 2009
- Сообщения:
- 5.460
- Симпатии:
- 53
- Баллы:
- 54
Оператор Попытка Вам в помощь, на этом все
-
Offline
Tiger86
Модераторы
Команда форума
Модератор- Регистрация:
- 24 мар 2011
- Сообщения:
- 6.407
- Симпатии:
- 108
- Баллы:
- 104
дак раз у вас 2 разных макета, то собственно определить по ним разве нельзя??? если заполняете один макет — то такие параметры, а если заполняете второй макет — то такие-то параметры заполняются. Разве так не проще?
- Похожие темы
-
- Ответов:
- 5
- Просмотров:
- 770
Есть ВыводимаяОбласть.Параметры, как проверить существует ли параметр СубконтоПредставление?
Спасибо, это я и сам знаю. Другого способа нет?
Может через перебор в коллекции?
ПараметрыМакетаТабличногоДокумента (SpreadsheetDocumentTemplateParameters) Свойства: Методы: Описание: Представляет собой коллекцию параметров, используемых в ячейках макета табличного документа. См. также: ТабличныйДокумент, свойство Параметры
Если через коллекцию выводятся значения параметров, а мне нужно узнать есть ли такой параметр по названию, например СубконтоПредставление или Расшифровка.
Тэги:
Комментарии доступны только авторизированным пользователям
Существует ли в макете Область
Автор skillful, 06 мар 2020, 20:08
0 Пользователей и 1 гость просматривают эту тему.
Как известно есть функция для проверки существования в области параметра
НомСтрока = Макет.ПолучитьОбласть("НомСтрока");
Если ЕстьВОбластиПараметр(НомСтрока, "Код") = Истина Тогда
НомСтрока.Параметры.Код = Результат.Код;
КонецЕсли;
ТабДок.Вывести(НомСтрока);
Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
уникИД = новый УникальныйИдентификатор;
СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
Возврат Истина;
иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
А можно ли тоже самое проделать с областью? Т. е. проверить существует ли область в макете?
Гугл кстати такой информации не дает)
Так же как и у Области есть Параметры, так и у Макета есть Области. В вами же приведенной функции меняем одно на другое и все.
Функция ЕстьОбластьВМакете(Макет, ИмяОбласти)
уникИД = новый УникальныйИдентификатор;
СтруктураПараметров = Новый Структура(ИмяОбласти, уникИД);
ЗаполнитьЗначенияСвойств(СтруктураПараметров, Макет.Области);
Если уникИД <> СтруктураПараметров[ИмяОбласти] Тогда
Возврат Истина;
иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
(0) Макет.Области.Найти(«Подвал»)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают
При помощи табличных документов, в 1С можно организовывать вывод печатных форм. В этой статье мы научимся создавать макеты табличных документов объектов, на примере макета печатной формы документа.
Чтобы при помощи табличного документа вести какую-то печатную форму, необходимо создать макет табличного документа. Научимся создавать макеты конкретных объектов (справочники, документы). Для этого в конфигураторе 1С нужно выделить ветку «Макеты» ветки соответствующего объекта, вызвать правой клавишей мышки контекстное меню
После выполнения команды откроется конструктор 1С, где можно поменять название макета, но необходимо оставить тип макета «Табличный документ».
Нажимаем кнопку «Готово», после этого будет создан макет табличного документа, который имеет форму таблицы.
Этот макет состоит из строк, столбцов и ячеек. Каждая ячейка имеет свои свойства. Для того, чтобы открыть палитру свойств ячейки, необходимо выделить нужную ячейку, вызывать контекстное меню, и в этом меню выполнить команду «Свойства».
В палитре свойств ячейки можно осуществлять различные настройки, мы же заполним текст ячейки.
Этот текст отобразится в нашей ячейки, и вы заметили, что он как бы сдвинулся относительно самой ячейки. И у нас автоматически появились пунктирные линии. Пунктирные линии ограничивают область, которая выведется на печать. И как вы видите на предыдущей картинке, наш текст немного сдвинулся относительно пунктира. Это значит, что мы хоть и увидим весь текст при просмотре, на печать выйдет только та часть текста, что была до пунктира.
В том случае, когда текст не помещается в ячейку (как у нас сейчас), сделать так, чтобы он весь отображался можно двумя способами: расширить саму ячейку и объединить ячейки.
Объединим ячейки. Для этого выделим нужную область, вызовем контекстное меню и выполним команду «Объединить»
После этого, ячейки, куда входит наша строка, объединятся, а линии печати сдвинутся.
Области макета табличного документа 1С
В макете табличного документа существует возможность задать области. Для чего нужны области? Для того, чтобы более оптимально работать с макетом в программном коде: мы можем несколько раз получать одну и туже область и выводить её в результирующем табличном документе (по сути, на печать).
Зададим в нашем макете табличного документа три области: Шапка, ШапкаТаблицы, СтрокаТаблицы и Подвал. Это будут области строк.
Для того, чтобы задать область, необходимо выделить нужное количество строк (или столбцов), из которых мы хотим сделать область, после выполнить команду «Назначить имя» (Главное меню – Таблица – Имена).
После этого нужно указать имя области (все имена в макете должны быть уникальны)
После этого внешний вид нашего макета изменится – слева появится название области.
После того, как мы добавим ещё три области, наш макет табличного документа будет выглядеть следующим образом.
Области Шапка, ШапкаТаблицы и Подвал будут выводится один раз, а область СтрокаТаблицы будет выводится столько раз сколько строк в табличной части документа.
В нашей выводимой таблице будет 5 столбцов: номер, номенклатура, количество, цена и сумма. Оформим теперь шапку таблицы, написав название каждого столбца. Также мы расширим или сузим ячейки для более удобного просмотра. И сдвинем наш заголовок в шапке на одну ячейку влево (для этого нужно выделить объединенные ячейки и перетащить их мышкой влево)
Параметры макета табличного документа
В область СтрокаТаблицы скопируем те же названия, что из области шапки (кроме №, его так и назовем НомерТаблицы), но это у нас будут не просто названия, а параметры, в которые мы будем передавать данные, при формировании табличного документа. Для того, чтобы сделать данные названия параметрами, первым делом выделим все заполненные ячейки области СтрокаТаблицы, вызовем контекстное меню и выполним команду свойства.
У свойств всех пяти ячеек мы изменим одно только свойство Заполнение — выберем у него значение Параметр.
После этого вид нашего макета табличного документа опять изменится.
Теперь нам осталось сделать нашу таблицу таблицей в прямом смысле. Для этого нужно выделить каждую ячейку шапки и строки (удерживаете клавишу CTRL, кликаете по каждой ячейке мышкой, тогда будет выделена каждая ячейка в отдельности), вызвать, уже знакомым способом, контекстное меню, и в группе Оформление, изменить параметр Обвести.
После этих действий, все нужные ячейки будут обведены.
Печатная форма почти готова, нам осталось сделать, чтобы в шапке вместе с поступлением товара выходил номер и дата документа. Для этого мы выделим ячейку, где введен тест «Документ…» вызовем контекстное меню и в свойстве Заполнение укажем значение Шаблон.
И в тексте ячейки укажем параметры, в которые будем передавать значения. Если в тексте шаблона мы указываем какое-то слово в квадратных скобках, то в эту «переменную» будут переданы параметры при формировании отчета.
Я добавил левую ячейку в объединение ячеек. Чтобы это сделать нужно снять объединение, и создать новое объединение ячеек с еще одной ячейкой.
Всё наш макет готов, в следующей статье научимся выводить его на печать.
Простой пример вывода на печать:
Вывод на печать табличного документа в 1С 8.3
Пример вывода на печать, с использованием команды объекта:
Вывод на печать табличного документа в 1С 8.3. Используем команды объектов
Вывод табличного документ на управляемой форме
Табличный документ на управляемой форме 1С 8.3
Использование расшифровки табличного документа
Расшифровка в табличном документе 1С 8.3
Как использовать расшифровку табличного документа на управляемой форме 1С
Расшифровка в табличном документе на управляемой форме 1С 8.3
Более подробно и основательно работа с печатными формами в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009