Как найти параметр в макете 1с

(0) Вот так правильно

// Функция определяет существует ли реквизит у какого-либо объекта.

//

Функция ЕстьРеквизитОбъекта(Объект, ИмяРеквизита) Экспорт

   
   КлючУникальности   = Новый УникальныйИдентификатор;

   СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);

   ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);

   
   Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;

   
КонецФункции // ЕстьРеквизитОбъекта()

Пример использования

               Для каждого ПараметрШаблона Из СтруктураШаблона.ПараметрыШаблона Цикл

                   Если ЕстьРеквизитОбъекта(Область.Параметры, ПараметрШаблона.Значение) Тогда

                       НаименованиеКолонки = СтруктураРезультата.СоответствиеПолейСКДКолонкамТаблицыТоваров.Получить(Справочники.ШаблоныЭтикетокИЦенников.ПолучитьИмяПоляВШаблоне(ПараметрШаблона.Ключ));

                       Если НаименованиеКолонки <> Неопределено Тогда

                           Область.Параметры[ПараметрШаблона.Значение] = СтрокаТовары[НаименованиеКолонки];

                       КонецЕсли;

                   КонецЕсли;

               КонецЦикла;

  1. здравствуйте. хотела спросить, как проверить, что параметр макета существует?

    ОбластьМакета.Параметры.Номер = …

    Если параметра Номер нету, то выдается ошибка, нужна какая-то проверка. Могу найти, перебирая все параметры макета. Нет ли варианта попроще?


  2. vartanet

    Offline

    vartanet
    Опытный в 1С
    Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.701
    Симпатии:
    15
    Баллы:
    29

    например, можно проигнорировать ошибку:

    Попытка
    ОбластьМакета.Параметры.Номер = 2131231;
    Исключение
    КонецПопытки;

  3. спасибо)) но это не очень хороший способ, правда работать будет. а другого нет, как-то напрямую?


  4. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

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

    Хотя. Не пробовал, надо посмотреть. Там же не структура.


  5. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    а зачем там выкручиваться? Универсальное что-то делаете?


  6. vartanet

    Offline

    vartanet
    Опытный в 1С
    Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.701
    Симпатии:
    15
    Баллы:
    29

    не работает ;) метод обЪекта на обнаружен..

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


  7. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    агаА для чего такое?
    Чтобы не заполнять каждый параметр используйте ОбластьМакета.Параметры.Заполнить() например.


  8. vartanet

    Offline

    vartanet
    Опытный в 1С
    Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.701
    Симпатии:
    15
    Баллы:
    29

    ну вот хочется человеку узнать есть ли в табличном документе параметр с заданым именем.. вроде простое желание, а решения нет..


  9. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104

    Где-то я видел код перебора параметров макета. Сейчас уже не помню…
    Но что-то типа такого:

    Для Каждого Параметр Из ОбластьМакета.Параметры Цикл
    Если Параметр.Имя = ...
    ....
    КонецЦикла;

    Или как-то похоже…Попробуйте, может, получится, отладчик примените))


  10. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    а посмотреть на макет? самое простое решение


  11. vartanet

    Offline

    vartanet
    Опытный в 1С
    Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.701
    Симпатии:
    15
    Баллы:
    29

    не работает. не знает что такое «имя».


  12. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    а в областьмакета что-то передано? приведите дословную ошибку


  13. mialord

    Offline

    mialord
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.460
    Симпатии:
    53
    Баллы:
    54

    Либо перебирать все параметры и сверять есть такие по имени или нет, либо бросить затею, разработчики 1С не считают подобную задачу актуальной, т.к. разработка универсальных печатных форм, как минимум, задача не адекватная.


  14. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104

    Ну я точно не помню…
    Поэкспериментируйте :rolleyes:

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


  16. mialord

    Offline

    mialord
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.460
    Симпатии:
    53
    Баллы:
    54

    Оператор Попытка Вам в помощь, на этом все


  17. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    дак раз у вас 2 разных макета, то собственно определить по ним разве нельзя??? если заполняете один макет — то такие параметры, а если заполняете второй макет — то такие-то параметры заполняются. Разве так не проще?

Похожие темы

  1. Galich
    Ответов:
    5
    Просмотров:
    770


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Есть ВыводимаяОбласть.Параметры, как проверить существует ли параметр СубконтоПредставление?

Спасибо, это я и сам знаю. Другого способа нет?

Может через перебор в коллекции?

ПараметрыМакетаТабличногоДокумента (SpreadsheetDocumentTemplateParameters) Свойства: Методы: Описание: Представляет собой коллекцию параметров, используемых в ячейках макета табличного документа. См. также: ТабличныйДокумент, свойство Параметры

Если через коллекцию выводятся значения параметров, а мне нужно узнать есть ли такой параметр по названию, например СубконтоПредставление или Расшифровка.

Тэги:

Комментарии доступны только авторизированным пользователям

Существует ли в макете Область

Автор skillful, 06 мар 2020, 20:08

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

Как известно есть функция для проверки существования в области параметра


НомСтрока = Макет.ПолучитьОбласть("НомСтрока");

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

ТабДок.Вывести(НомСтрока);

Функция ЕстьВОбластиПараметр(Область, ИмяПараметра)
    уникИД = новый УникальныйИдентификатор;
    СтруктураПараметров = Новый Структура(ИмяПараметра, уникИД);
    ЗаполнитьЗначенияСвойств(СтруктураПараметров, Область.Параметры);
    Если уникИД <> СтруктураПараметров[ИмяПараметра] Тогда
        Возврат Истина;   
    иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции

А можно ли тоже самое проделать с областью? Т. е. проверить существует ли область в макете?

Гугл кстати такой информации не дает)


Так же как и у Области есть Параметры, так и у Макета есть Области. В вами же приведенной функции меняем одно на другое и все.


Функция ЕстьОбластьВМакете(Макет, ИмяОбласти)
    уникИД = новый УникальныйИдентификатор;
    СтруктураПараметров = Новый Структура(ИмяОбласти, уникИД);
    ЗаполнитьЗначенияСвойств(СтруктураПараметров, Макет.Области);
Если уникИД <> СтруктураПараметров[ИмяОбласти] Тогда
        Возврат Истина;   
    иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции


(0) Макет.Области.Найти(«Подвал»)

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают


При помощи табличных документов, в 1С можно организовывать вывод печатных форм. В этой статье мы научимся создавать макеты табличных документов объектов, на примере макета печатной формы документа.

Чтобы при помощи табличного документа вести какую-то печатную форму, необходимо создать макет табличного документа.  Научимся создавать макеты конкретных объектов (справочники, документы). Для этого в конфигураторе 1С нужно выделить ветку «Макеты» ветки соответствующего объекта, вызвать правой клавишей мышки контекстное меню

Создание макета 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 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Понравилась статья? Поделить с друзьями:
  • Как составить промежуточный баланс при реорганизации
  • Как найти площадь диагонального сечения ромба
  • Как составить график моего режима дня
  • Как найти работу в физике в термодинамике
  • Как составить европротокол при аварии с одной машиной