|   |   | 
| 
 | ПометкаУдаления автоматически | ☑ | ||
|---|---|---|---|---|
| 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) привязали ли вы эту процедуру к какому нибудь событию на форме? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |