Очистить реквизит формы |
Я |
16.03.20 — 09:50
У формы есть реквизит, с типом СправочникСсылка. Подскажите, пжл, как его программно очистить? Формы управляемые.
1 — 16.03.20 — 09:51
очистить в где?
2 — 16.03.20 — 09:57
На форме есть элемент управления, связанный с этим реквизитом. Когда пользователь выполнит определенные действия нужно в этом элементе управления его очистить.
3 — 16.03.20 — 09:58
(2) в чем вопрос?
4 — 16.03.20 — 10:00
как это сделать? На клиенте справочники недоступны, есл реквизиту присвоить пустое значение на сервере, то на клиента это никак не влияет, при возращении на клиента реквизит остается заполненным
5 — 16.03.20 — 10:02
(4) ты определись или реквизит формы или поле объекта
если реквизит формы, то на клиенте, если объекта то на сервере
от этого и пляши
6 — 16.03.20 — 10:03
4+ То есть на клиенте
ЭтотОбъект.Элементы.Собственник = Справочники.Контрагенты.ПустаяСсылка(); выполнить нельзя
на сервере такое присваивание срабатывает, но при возращении в клиентскую процедуру ЭтотОбъект.Элементы.Собственник снова заполнен.
7 — 16.03.20 — 10:04
5+ я однозначно в теме написал — реквизит формы
8 — 16.03.20 — 10:05
(6) врешь, наверное или не правильно написал
9 — 16.03.20 — 10:05
.Собственник = Справочники.Контрагенты.ПустаяСсылка();
10 — 16.03.20 — 10:06
без точки
11 — 16.03.20 — 10:07
(6) Срочно книжки читать по управляемому интерфейсу и не трепать форум
12 — 16.03.20 — 10:14
(11) Спасибо, получилось
Почему вот так нельзя ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка(); ?
13 — 16.03.20 — 10:19
(12) так можно
14 — 16.03.20 — 10:19
(12)
&К
Процедура Сменить()
СменитьНаСервере()
Конецпроцедуры
&С
СменитьНаСервере()
ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка()
Конецпроцедуры
15 — 16.03.20 — 10:23
(14)
&НаСервере
Процедура ДобавитьСобственникаНаСервере()
ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
Верхняя строчка не срабатывает…
16 — 16.03.20 — 10:26
Можешь на клиенте сделать
Объект.Собственник = Неопределено
17 — 16.03.20 — 10:27
18 — 16.03.20 — 10:29
(14) Реквизит формы можно очистить и без вызова сервера.
19 — 16.03.20 — 10:31
15+ Вернее не срабатывает вот такой вызов
&НаКлиенте
Процедура ДобавитьСобственника(Команда)
ДобавитьСобственникаНаСервере(ЭтотОбъект.Собственник);
КонецПроцедуры
&НаСервере
Процедура ДобавитьСобственникаНаСервере(Собственник)
ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
20 — 16.03.20 — 10:32
(16) Александр Б, у меня реквизит формы, а не объекта
21 — 16.03.20 — 10:33
19+ А вот так все прекрасненько срабатывает!
15+ Вернее не срабатывает вот такой вызов
&НаКлиенте
Процедура ДобавитьСобственника(Команда)
ДобавитьСобственникаНаСервере();
КонецПроцедуры
&НаСервере
Процедура ДобавитьСобственникаНаСервере()
ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
Это что за фокусы?
22 — 16.03.20 — 10:33
(20) Тогда просто на клиенте делаешь Собственник = ПредопределенноеЗначение(«Справочник.Контрагенты.ПустаяСсылка»);
23 — 16.03.20 — 10:34
(21) Реквизит формы находится в контексте формы. Тебе не нужно обращаться к форме через ЭтотОБъект. Можно сразу обращаться к реквизиту.
24 — 16.03.20 — 10:35
22 Спасибо, не знал
25 — 16.03.20 — 10:36
23 Это я для читабельности. Меня интересует почему если я реквизит формы передал аргументом на сервер, то ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка(); не срабатывает?
26 — 16.03.20 — 10:37
Вы тут прикалываетесь, что-ли?
Реквизит1 = Неопределено;
и всё
27 — 16.03.20 — 10:38
(25) Не думай об этом. Два глупых и бесполезных действия одновременно
28 — 16.03.20 — 10:39
(26) не ломай кайф
29 — 16.03.20 — 10:41
(27) Вопрос уже не об очистке реквизита, что меняется от вызова с параметром и без него?
30 — 16.03.20 — 10:41
(25) почитай что-нибудь про формальные и фактические параметры, как они работают при клиент-серверных вызовах, заодно и этот пример проверишь:
&НаСервере
Процедура ДобавитьСобственникаНаСервере(ЗНАЧ Собственник)
ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
31 — 16.03.20 — 10:43
(25) Вообще тебе на заметку. Реквизиты формы существуют одновременно и на клиенте и на сервере. Если ты вызываешь процедуры &НаСервере или &НаКлиенте.
Реквизит формы с клиента на сервер имеет смысл передавать только тогда, когда ты делаешь безконтекстный вызов &НаСервереБезКонтекста. Тогда в этом методе форма и её реквизиты не будут видны, кроме того, что ты передашь в параметрах.
32 — 16.03.20 — 11:02
(30) Все, спасибо, разобрался. Оказывается 1С для того чтобы уменьшить трафик не передает параметр, который передавался по значению, обратно на клиента. Хотя как можно передавать по значению ссылочный объект?
33 — 18.03.20 — 13:41
(32) нет, не для этого. И ссылка — это ещё не весь объект.
34 — 18.03.20 — 13:49
(0) Выбрать их «программно», пройтись по массиву реквизитов и понять, что данный реквизит содержит тип «СправочникСсылка». И очистить.
DrZombi
35 — 18.03.20 — 13:49
(30) Можно просто:
Объект.Собственник = Неопределено;
184 / 101 / 8 Регистрация: 30.05.2009 Сообщений: 782 |
|
1 |
|
Очищение всех реквизитов документа10.03.2018, 18:34. Показов 10389. Ответов 1
Добрый день.
0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||
10.03.2018, 19:20 |
2 |
|||
ПростоЯ, универсальный код для любого объекта конфигурации(и не только документа):
1 |
Как очистить все реквизиты и табличные части документа
Бывает необходимо программно очистить все табличные части и реквизиты документа.
Ниже приведена процедура очистки любого документа
Процедура ОчиститьДокумент(Документ)
Для Каждого Рек Из Документ.Метаданные().Реквизиты Цикл
Документ[Рек.Имя]=Неопределено;
КонецЦикла;
Для Каждого Тч Из Документ.Метаданные().ТабличныеЧасти Цикл
Документ[Тч.Имя].Очистить();
КонецЦикла;
КонецПроцедуры
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С Предприятие что это? 12
Что такое 1С?
1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С .
Что такое
COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
НаКлиенте
Процедура Загрузки()
ПутьКБазе=» D:ВашаБаза1с77″ ;
Пользователь=
Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» .
https://helpf.pro/uploads/img
Посмотреть все результаты поиска похожих
Не так давно пришлось приводить конфигурацию заказчика в соответствие с законом «О защите персональных данных», который гласит, что при отказе клиенту в одобрении заявки все личные данные о нем должны удаляться из информационной системы обработки персональных данных, которой является 1С. Реквизитов и таблиц с личными данными было достаточно много, поэтому вручную прописывать очистку было нецелесообразно. А удалять сам элемент справочника было нельзя, потому что к нему был привязан документ рассмотрения заявки, и удаление нарушило бы логическую целостность информационной базы.
Поэтому необходим был механизм, который позволил бы получить полный список реквизитов и табличных частей. Для этого у объектов 1С существует встроенная функция Метаданные().
Эта функция возвращает значение особого типа — ОбъектМетаданных. В нем содержатся практически все свойства объекта. Например для элемента справочника это будут: длина наименования и кода, автонумерация, основные формы, вообще все существующие формы, представление объекта, иерархичность, макеты и многое другое.
В нашем случае потребуются Реквизиты и Табличные части. Эти компоненты метаданных содержат значение КоллекцияОбъектовМетаданных, которую можно обойти в цикле Для каждого.
У каждого из элементов коллекции тоже много свойств, в частности есть очень полезное свойство Тип, через которое можно получить тип того или иного реквизита. Полный список свойств можно узнать, например, в режиме отладки через команду Вычислить выражение. Мне же для обращения к реквизиту или табличной части потребуется свойство Имя.
В итоге модуль, очищающий реквизиты и табличные части, выглядит так:
Контрагент=КонтрагентСсылка.ПолучитьОбъект();
//Переменная КонтрагентСсылка должна содержать ссылку на элемент</p>
Для Каждого Реквизит Из Контрагент.Метаданные().Реквизиты Цикл
Контрагент[Реквизит.Имя] = Неопределено;
КонецЦикла;
Для Каждого ТаблЧасть Из Контрагент.Метаданные().ТабличныеЧасти Цикл
Контрагент[ТаблЧасть.Имя].Очистить();
КонецЦикла;
Контрагент.Записать();
Функция Метаданные() применяется как для самого объекта, так и для ссылки на него. В нашем случае необходимо было изменить значения реквизитов, поэтому объект нужно было получить. Данная функция работает не только для справочников, но и для других объектов конфигурации 1С, но состав свойств будет иным.
Приведенный в заметке пример — это только один из многочисленных способов применения функции Метаданные(). Другие варианты и проблемы с использованием метаданных готов обсудить в комментариях.
You are here:
You are here
Home » Blogs » Nicholas’s blog
Как очистить реквизит ссылочного типа на клиенте?
27 May
Published by Nicholas
Например, реквизит объекта «Состояние» имеет тип «СправочникСсылка.Состояния», в этом случае, чтобы программно его очистить &НаКлиенте необходимо выполнить следующий код:
Объект.Состояние = ПредопределенноеЗначение("Справочник.Состояния.ПустаяСсылка");
Тэги
1С 8
- Nicholas’s blog
- Add new comment
Comments
Никита (not verified)Wed, 02/03/22
Спасибо
Спасибо
- reply
Add new comment
Your name
Comment *
More information about text formats
Plain text
- No HTML tags allowed.
- Lines and paragraphs break automatically.
CAPTCHA
Are you a human visitor or automated spam submissions?
Drag or click the correct shape to the grey «drop area».