1с при создании документа заполнять реквизиты
Автоматическое изменение значений реквизитов документа
У документа имеются следующий реквизиты: фильм, зал, стоимость, вместимость. При изменении.
Заполнение ТЧ Документа из Реквизитов справочника
нужно заполнить ТЧ документа из Реквизита справочника. &НаКлиенте Процедура.
Заполнение значений реквизитов формы в цикле
Программно создаю реквизиты формы Для Сч = 0 По КолвоОсей - 1 Цикл КЧ = Новый.
Видимость реквизитов на форме
Версия 7.7. Задача состоит в том, что в форме документа при выборе определенного значения реквизита.
Какая конфигурация, если типовая то вот так:
Это практическое задание, конфигурацию создавал с нуля. Суть задания создать договор с заполненными реквизитами. Создал справочник "Контрагенты" в нем заполняются реквизиты (адрес, ИНН,КПП), есть справочник "Договора", в нем форма с теми же полями, когда выбираешь контрагента, надо чтобы поля заполнялись. Создать событие "на клиенте" кликом. В нём вышеизложенное "на сервере".Объект - для модификации, присутствует в контексте формы. Ссылка Контрагент - для чтения.
Для начала решил попробовать так:
Что это?
Почитайте в Синтаксис помошнике что делает функция ЗначениеЗаполнено()
Глобальный контекст (Global context)
ЗначениеЗаполнено (ValueIsFilled)
Синтаксис:
Тип: Произвольный.
Значение для сравнения.
Возвращаемое значение:
Тип: Булево.
Для значений типа Булево всегда возвращается Истина.
Для значений типа Строка возвращается Истина, если в строке есть не пробельные символы.
Для массивов и коллекций возвращается Истина, если в них есть хотя бы 1 элемент.
Описание:
Функция проверяет, отличается ли переданное значение от значения по умолчанию того же типа.
Не работает с мутабельными значениями. При передаче мутабельного значения функция вызывает исключение.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
Источники данных не проверяются, значение считается заполненным всегда.
Да не морочте голову Alexey26 -у, всякими умняками, Alexey26 слухай сюда - Контрагент это агрегатный объект, т.е. состоит из всяких других, а развернуть агрегатный объект можно только на сервере, поэтому вызываеш фу-ю с директивой
&насервере
Получаеш знч и возвращаеш его . и так для каждого значения
Если есть объект, зачем есче получать .Ссылка? Масло масляное?
А вариантов семантики кода можно составить миллион(даже из HTML разметки)
))) не могу найти кнопку задать вопрос
Добавлено через 4 минуты
"ЗаполнитьЗначенияСвойств(Объект,Контрагент);"
а где "Город"?
Глобальный контекст (Global context)
ЗаполнитьЗначенияСвойств (FillPropertyValues)
Синтаксис:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>)
Параметры:
Тип: Произвольный.
Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>.
<Источник> (обязательный)
Тип: Произвольный.
Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>.
<СписокСвойств> (необязательный)
Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо заполнить.
Если свойства не указаны, то копируются только те, которые представлены и в <Источнике> и в <Приемнике>.
Если свойства указаны, то они обязательно должны присутствовать в обоих объектах.
Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение.
<ИсключаяСвойства> (необязательный)
Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения.
Описание:
Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств.
Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется.
В противном случае, если указан параметр <ИсключаяСвойства>, то свойства перечисленные в нем, исключаются из обработки.
Сегодня мы поработаем с формой документа: научимся ее создавать и добавлять на нее новые реквизиты.
Откроем документ "ПриходДенежныхСредств" и добавим реквизит "Договор" (Рисунок 1).
Укажем у реквизита "Договор" ссылку на справочник "Договоры" (Рисунок 1).
Теперь зайдем в пользователя и проверим изменения (Рисунок 2)!
Теперь я хочу сделать таким образом, что бы при выборе контрагента "Поставщик 3" показывались только те договоры, которые относятся к этому контрагенту! У нас для этого уже есть заготовки и просто необходимо включить этот функционал.
До этого мы указывали, что справочник "Договоры" является подчиненным для справочника "Контрагенты" - является владельцем.
Посмотрите на рисунок 2, сейчас в этом окне показываются все договоры, которые относятся к этому контрагенту и которые не относятся, а мне необходимо лишние отфильтровать по владельцу (контрагенту).
Для этого нужно открыть свойства реквизита "Договор" и найти свойство "Связи параметров выбора" (Рисунок 3).
У этого свойства необходимо нажать на значок многоточия и откроется окно (Рисунок 4).
В этом окне нам необходимо перетащить реквизит, по которому будет делаться отбор - это Контрагент. Нужно выделить реквизит и нажать на значок стрелки вправо и он переместится в правое окно (Рисунок 5).
В правом окне необходимо установить значения, которые показаны на рисунке 5 и нажать "Ок".
Если поле (столбец) "Имя" не отображается как на рисунке, то необходимо по нему дважды щелкнуть и в выпадающем списке выбрать необходимое значение.
После этого нужно перейти в режим пользователя и проверить изменения (Рисунок 6).
На рисунке 6 видно, что реквизит сам добавился и на форму документа и на форму списка, а так же, отбор по владельцу работает.
Работает это так: как только вы выбрали в поле "Контрагент" какой-то элемент, так сразу для поля "Договор" срабатывает отбор и будет показываться только то, что относится к этому владельцу (контрагенту).
Давайте продолжим. Добавим реквизит "Договор" (Рисунок 8) в документ "РасходДенег" - он будет абсолютно таким же, как и в прошлом документе, то есть нужно в свойствах указать отбор по владельцу (если не помните как, то посмотрите выше, там это описано), но перед этим добавим форму документа на вкладке "Формы" (Рисунок 7), выберите необходимые реквизиты, которые будут отображаться на форме и нажмите "Готово".
Закройте форму, она пока нам не нужна и теперь перейдите на вкладку "Данные" и создадим реквизит "Договор" (Рисунок 8).
После этого запустить пользователя и проверить изменения (Рисунок 9).
Посмотрите на рисунок 9, на форме документа нет реквизита "Договор"! Как так и почему? Ведь мы же его создали, а он тут не отображается!
Но, если закрыть форму документа и посмотреть на форму списка (Рисунок 10), то мы увидим, что этот реквизит на этой форме есть!
Как так получается? Почему в одном месте его нет, а в другом есть?
Все очень просто, все точно так же как и в справочнике! Мы создали реквизит после того, как создали форму! А в этом случае платформа понимает: "как только создана форма, она уходит в сторону и все работу по добавлению чего-то нового на форму, отдает полностью пользователю"!
Мы создали форму документа, а потом только создали реквизит. Именно поэтому он не добавился на форму, так как нам нужно добавлять его на форму вручную, а форму списка мы не трогали и именно поэтому платформа сама его добавила!
Давайте добавим реквизит на форму! Для этого откроем объект на вкладке "Формы" и откроем форму документа (Рисунок 11).
Теперь необходимо в правой части окна раскрыть список "Объект" и там найти реквизит "Договор" (Договор 12).
Проверим изменения в пользовательском режиме (Рисунок 13).
Все так и работает: как только создаете какую-то форму, так сразу платформа перестает сама добавлять реквизиты на форму, но если вы до создания формы создали все реквизиты и потом создали форму, то автоматически все реквизиты появятся на форме.
Мало того, что реквизит появился на форме, так и отбор работает - показываются только те договоры, которые относятся к определенному контрагенту!
Теперь проверим изменения в пользователе и убедимся в том, что она не появилась на форме документа - значит, нужно переместить ее сначала на форму в режиме разработчика (Рисунок 15).
Теперь проверим пользователя и будет выглядеть вот так (Рисунок 16).
Как видим по рисунку 16, табличка появилась выше первых двух таблиц, а не стала после таблички "Услуги" как на рисунке 17.
Так, как на рисунке 16, программа тоже будет работать, но не удобно будет, слишком много места занимает одна таблица, а нужно так, как на рисунке 17 - для экономии места и удобности.
Для этого перейдем на форму в режиме разработчика и сделаем следующее:
3. Рисунок 20 - Переименовать новую группу (Имя и Синоним)
4. Рисунок 21 - Переместить в папку "Дополнительно" таблицу "Дополнительно"
5. Рисунок 22 - Запустить пользователя и проверить изменения .
Рисунок 22 - Отображение таблицы в пользовательском режиме Рисунок 22 - Отображение таблицы в пользовательском режимеТеперь место сэкономлено, стало более удобнее работать!
При добавлении таблички в нужно место мы познакомились побольше с формой, а именно с созданием группировки (папки), которая помогает правильно отобразить элемент на форме. Более подробно с созданием группировки мы поработаем на следующем занятии и разберемся со всем.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том. что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Работая с программами 1С, пользователь должен заполнить определённые поля при вводе объекта в базу. Это и есть реквизиты.
Общие реквизиты документа
Заполняя поля в программах 1С, требуется указать автора документа, наименование организации и другие данные. На это требуется определённое время. Чтобы не заполнять один и тот же реквизит для каждого объекта метаданных, следует использовать общий для всех реквизит. В документах 1С он представляет собой отдельный объект метаданных.
К нему можно перейти, используя встроенный язык из модуля документа. Он доступен при редактировании формы документа.
Найти «Общие реквизиты» в программе 1С довольно просто. Следует зайти в неё, используя режим Конфигуратор. В дереве метаданных есть раздел «Общие». Там и находятся «Общие реквизиты», представляя отдельную ветвь раздела.
Остановимся подробней на свойствах таких объектов метаданных. Для этого нужно найти окно «Свойства». Перейти к ним можно двойным щелчком мышки.
Чтобы посмотреть список объектов, где используется данный реквизит, следует нажать на гиперссылку «Открыть». Кроме того, здесь можно посмотреть, где этот объект используется «Автоматически».
В свойствах общих реквизитов имеются следующие настройки.
- Если объект помечен как «Автоматический», он применяется в режиме «Автоиспользование».
- Чтобы реквизит использовался как входящий в состав нескольких объектов конфигурации, в поле «Разделение данных» нужно установить значение «Не использовать». Если установлено «Разделять», реквизит будет использоваться в качестве разделителя данных.
Если установить значение «Разделять», система в автоматическом режиме создаст параметры по умолчанию.
Для пояснения используем следующий пример. Предположим, в каждом объекте есть реквизит «Организация». Если пометить его как разделитель, система сформирует несколько областей, где будут находиться данные в разрезе этого разделителя. Это создаёт определённые удобства для пользователя. Он может получать как общие данные, так и сведения, касающиеся только своей организации.
Получая доступ к своим данным, пользователь также может работать с общими областями сведений, которые доступны для всех. Например, «Контрагенты», «Валюты», «Банки», другие неразделённые данные.
Создание общего реквизита
Следует навести мышку на общий реквизит и нажать на команду «Добавить». На клавиатуре можно воспользоваться клавишей «Ins».
В качестве примера назовём его «Организация». В полях, где нужно указать тип, укажем СправочникСсылка.Организации.
Затем установим разделение данных, указав значение «Разделять».
В документах, где он будет стоять, установим «Использовать». Например, в счёте на оплату покупателю.
Затем откроем форму документа. Это дерево метаданных «Документы» - «СчетНаОплатуПокупателю», раздел «ФормаДокумента». В списке и среди элементов будет добавленное поле. Кроме того, данные будут автоматически указываться на форме документа.
Теперь к нему можно обращаться из модуля документа, редактировать его, добавлять всевозможные объекты программы 1С. Например, поместим его в справочник «Номенклатура». Он окажется в списке реквизитов данного справочника.
Общие реквизиты могут быть указаны сразу для нескольких разделов метаданных. В остальном они ничем не отличаются от обычных реквизитов. Можно настроить разделение данных и область их хранения.
Вводя в программу общие реквизиты, надо делать это правильно. Любые ошибки могут привести к некорректной работе программы. Поэтому, мы рекомендуем перед любыми изменениями делать бэкап самостоятельно или доверить это специалистам.
Читайте также: