|
ПометкаУдаления автоматически | ☑ | ||
---|---|---|---|---|
0
anikulnikova
07.04.16
✎
14:12
|
День добрый, нобходимо при установке пометки удаления элемента в справочнике ДолжностиОрганизации, чтоб автоматически устанавливалась данная пометка и в справочнике Должности, при условии, что код и наименование совпадает. Как можно реализовать? Наброски вот, но они не пашут:
П.С Процедура выбрана правильно? Процедура ОбновлениеОтображения() Объект = Справочники.ДолжностиОрганизаций. ТекДолжность = Справочники.Должности.НайтиПоКоду(Объект.Код); Если Объект.ПометкаУдаления = Истина Тогда ТекДолжность.ПометкаУдаления = Истина; КонецЕсли; КонецПроцедуры |
|||
1
Игорь Коломойский
07.04.16
✎
14:13
|
при условии, что код и наименование совпадает
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Запросом тут. |
|||
2
salvator
07.04.16
✎
14:17
|
В модуле объекта ДолжностиОрганизации в процедуре ПередУдалением думаю лучше это делать.
|
|||
3
anikulnikova
07.04.16
✎
14:22
|
Что значит "Запросом Тут"?
Модуль объекта пустой. |
|||
4
Jonny_Khomich
07.04.16
✎
14:28
|
(3) наполни его знаниями
|
|||
5
Игорь Коломойский
07.04.16
✎
14:29
|
(3) Запросом найти элемент справочника по коду и наименованию. Если код уникальный во всём справочнике, то достаточно только по коду.
|
|||
6
marty0701
07.04.16
✎
14:30
|
(0)Запись шеф, где у тебя запись?
|
|||
7
marty0701
07.04.16
✎
14:31
|
Бл... Какая пометкаудаления = Истина? УстановитьПометкуУдаления()
|
|||
8
anikulnikova
07.04.16
✎
14:34
|
(4) спасибо, за остроумность. Вы тоже начали заниматься 1с и сразу все знали? (7) Спасибо. Я же сказала, наброски, и про эту функцию я не знала.
Понимающие люди, вы такие умные! Так лучше доступно поделиться своими знаниями, а не материться и умничать. |
|||
9
letni88
07.04.16
✎
14:35
|
записать()
|
|||
10
marty0701
07.04.16
✎
14:36
|
Объект = Справочники.ДолжностиОрганизаций.
ТекДолжность = Справочники.Должности.НайтиПоКоду(Объект.Код); Если Объект.ПометкаУдаления = Истина Тогда ТекДолжность.УстановитьПометкуУдаления(Истина); ТекДолжность.Записать(); КонецЕсли; Попытки исключения сама расставь, ну и место выбрано неудачно, уже сказали про это. |
|||
11
anikulnikova
07.04.16
✎
14:36
|
Окей, если я создам процедуру в модуле объекта, я должна же буду ее вызвать с формы? Вопрос, в какой процедуре?
|
|||
12
salvator
07.04.16
✎
14:37
|
Хотя нет, лучше в процедуре ПередЗаписью()
Запросом получай все элементы второго справочника и в обходе выборки проверяй пометку удаления текущего объекта. Если она равна Истина, то помечай на удаление второй, если нет, то снимай пометку. |
|||
13
salvator
07.04.16
✎
14:37
|
+(12)
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Код",Код); Запрос.УстановитьПараметр("Наименование",Наименование); Запрос.Текст = "ВЫБРАТЬ Спр.Ссылка ИЗ Справочник.Должности КАК Спр ГДЕ Спр.Код = &Код И Спр.Наименование = &Наименование"; Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл СпрОбъект = Выборка.Ссылка.ПолучитьОбъект(); Если ПометкаУдаления Тогда СпрОбъект.УстановитьПометкуУдаления(Истина); Иначе СпрОбъект.УстановитьПометкуУдаления(Ложь); КонецЕсли; КонецЦикла; КонецЕсли; |
|||
14
marty0701
07.04.16
✎
14:37
|
(11)Держи, http://catalog.mista.ru/public/153748/
|
|||
15
letni88
07.04.16
✎
14:37
|
ТекДолжность.УстановитьПометкуУдаления(Истина);
ТекДолжность.Записать(); Записать лишнее, т.к. |
|||
16
letni88
07.04.16
✎
14:37
|
Синтаксис:
УстановитьПометкуУдаления(<ПометкаУдаления>, <ВключаяПодчиненные>) Параметры: <ПометкаУдаления> (обязательный) Тип: Булево. Признак установки / снятие пометки на удаление. Истина - пометка будет установлена; Ложь - пометка будет снята. <ВключаяПодчиненные> (необязательный) Тип: Булево. Если параметр установлен в Истина, то будут помечены на удаление, кроме данного элемента, все его подчиненные элементы в данном справочнике и во всех подчиненных справочниках. Если параметр установлен в Ложь, то будет помечен на удаление только данный элемент. Значение по умолчанию: Истина. Описание: Устанавливает/снимет пометку на удаление. Объект при этом не удаляется из базы данных. Окончательное удаление помеченных элементов справочника происходит при удалении помеченных объектов. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Применение метода влечет инициирование события ПередЗаписью, т.к. происходит сохранение измененного свойства ПометкаУдаления. Если объект модифицирован, то выполнение метода вызывает исключение. Пример: Объект.УстановитьПометкуУдаления(Истина,Истина); |
|||
17
marty0701
07.04.16
✎
14:40
|
Объект получить еще треба.
|
|||
18
anikulnikova
07.04.16
✎
14:42
|
(12) Спасибо, попробую воспроизвеси ваш пример. А почему запросом лучше? (14) спасибо. (15) спасибо
|
|||
19
salvator
07.04.16
✎
14:42
|
(18) Потому что заодно научишься их писать :)
|
|||
20
salvator
07.04.16
✎
14:44
|
+(19) А если серьезно, то для того, чтобы если вдруг в справочнике отключен контроль уникальности по коду, то можно было получить все эти элементы.
|
|||
21
anikulnikova
07.04.16
✎
14:50
|
(20) в процедуре перед записью не выполняется ничего, точка даже не попадает туда. Возможно в другой процедуре выполнять надо?
|
|||
22
salvator
07.04.16
✎
14:52
|
(21) Процедура "ПередЗаписью" модуля объекта справочника "ДолжностиОрганизации". Все верно?
|
|||
23
marty0701
07.04.16
✎
14:52
|
(21)Включи отладку, сохрани конфигурацию, etc., сейчас шар протру, еще что-то увижу.
|
|||
24
anikulnikova
07.04.16
✎
14:56
|
(22) нет ))) я в моделей формы элемента делаю. А если делать в модуле объект, то в модуле формы эту процедуру вызывать надо?
|
|||
25
anikulnikova
07.04.16
✎
14:57
|
(24) там словарь меня исправил )
|
|||
26
salvator
07.04.16
✎
14:57
|
(24) А зачем ты делаешь в модуле формы, если написано, что в модуле объекта? В модуле объекта нажми Ctrl+Alt+P и выбери "ПередЗаписью". Остальное уже все написано.
|
|||
27
anikulnikova
07.04.16
✎
19:34
|
Есть еще вопрос, чтоб не множить темы, необходимо было сделать автоматическое создание должности в справочнике "Должности" из справочника "Должности организации", задача выполнена, а как теперь реализовать еще один момент, чтоб при изменении наименования в ДолжностиОрганизации в справочнике Должности оно тоже менялось?
По добавлению данных из одного справочника в другой использовала форму элемента, дополнила процедуру ПослеЗаписи. а здесь как быть? Может как-то модифицировать код с добавлением? Если он нужен, то вот: Объект = Ссылка; //Если Объект.Ссылка.Пустая() Тогда ТекДолжность = Справочники.Должности.НайтиПоКоду(Объект.Код); Если ТекДолжность.Пустая() Тогда НовДолжность = Справочники.Должности.СоздатьЭлемент(); НовДолжность.Код = Объект.Код; НовДолжность.Наименование = Объект.Наименование; НовДолжность.Записать(); КонецЕсли; //КонецЕсли; А так пока набросков по изменению наименования нет. |
|||
28
hhhh
07.04.16
✎
21:01
|
Процедура НаименованиеПриИзменении(...... ......)
Если Наименование <> Ссылка.Наименование Тогда ТекДолжность = Справочники.Должности.НайтиПоНаименованию(Ссылка.Наименование, Истина); Если ЗначениеЗаполнено(ТекДолжность) Тогда ТекОбъект = ТекДолжность.ПолучитьОбъект(); ТекОбъект.Наименование = Наименование; ТекОбъект.Записать(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
29
anikulnikova
08.04.16
✎
04:53
|
(28) в форму элемента вставить? Или в модуль объекта?
|
|||
30
anikulnikova
08.04.16
✎
05:01
|
(28) программа даже в процедуру не заходит... (
|
|||
31
hhhh
08.04.16
✎
05:22
|
(29) вы самого главного не усвоили. Есть события на форме. К событиям привязаны процедуры.
то есть на форме у вас есть поле Наименование, по нему щелкаете, справа открываются его свойства, там находите событие ПриИзменении, щелкаете по нему, открывается процедура, в нее вставляете. (30) привязали ли вы эту процедуру к какому нибудь событию на форме? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |