|   |   | 
| 
 | v7: ПриЗаписи Справочника в списке | ☑ | ||
|---|---|---|---|---|
| 0
    
        Hans 05.02.14✎ 21:41 | 
        Вобщем задача - при изменении определенного реквизита справочника1 изменять справочник2.
 Если в процедуре "ПриЗаписи" выполнять процедуру изменяющую справочник2 на основе справочника1, то данные в БД еще старые. Туплю, не могу сообразить что надо делать. Справочник1 редактируется в списке. | |||
| 1
    
        Diter 05.02.14✎ 21:46 | 
        а не надо текущий элемент искать в справочнике 1 чтобы изменить справочник 2. достаточно просто использовать реквизиты текущего элемента - они уже будут изменены
 ну типа того что не надо делать Спр_1.НайтиЭлемент(ТекущийЭлемент()); Спр_2.Реквизит_2=Спр_1.Реквизит_1; достаточно просто Спр_2.реквизит_2=реквизит_2; в модуле списка | |||
| 2
    
        Злопчинский 05.02.14✎ 22:05 | 
        В процедуре ПриЗаписи в справочнике Спр1 - запись еще не произошла.
 поэтому . //в спр1 Процедура ПриЗаписи() Записать(); //делать что-то со справочником-2 . и вообще.. мне кажется что при редактировании строки в списке нет процедуры приЗаписи - см. ПриОконычанииРедактированияСтроки() | |||
| 3
    
        КонецЦикла 05.02.14✎ 22:11 | 
        Отладчиком попадал туда? Вот и проверяй     | |||
| 4
    
        Torquader 05.02.14✎ 22:16 | 
        (2) Есть, и это в помошнике есть.
 Процедура ПриЗаписи(<?>) КонецПроцедуры Синтаксис: ПриЗаписи(<СписокПериодРекв>) Назначение: Предопределенная процедура при интерактивной записи строки списка справочника. Параметры: <СписокПериодРекв> - строка со списком изменяемых периодических реквизитов справочника. Замечание: Данная процедура может располагаться только в программных модулях форм справочника. А вот как раз "ПриОкончании..." там нет. Но, записать можно и до, только реально запись нужна тогда, когда мы передаём куда-то ссылку на новый элемент и из неё кто-то и что-то будет получать. Например, не получится создать элементы подчинённых справочников, пока не записан владелец. Однако, это никак не влияет на запись реквизитов владельца, так что если элемент Выбран, то можно его и не писать. | |||
| 5
    
        Hans 05.02.14✎ 22:22 | 
        (4) Почему, то не получается.
 Делаю В Спр_1 ПриЗаписи() Записать() ПроцедураУстановкиНужногоЗначенияВСпр2(текущийЭлемент()); и все еще все реквизиты старые. | |||
| 6
    
        Hans 05.02.14✎ 22:27 | 
        тяжело идет эта семерочная модель объектов и ссылок если долго не заниматься.     | |||
| 7
    
        Torquader 05.02.14✎ 22:48 | 
        И где реквизиты старые ?
 В процедуру передаётся спозиционированный элемент, чтобы реквизиты были "новые" желательно его "прочитать" через объект, так как кеш-то ещё не знает, что кого-то записали (там у 1С с этим бывают проблемы, если по нескольку раз писать). | |||
| 8
    
        Torquader 05.02.14✎ 22:48 | 
        Что в справочнике2 меняется вообще ?     | |||
| 9
    
        Hans 05.02.14✎ 23:07 | 
        (8) В справочнике 2 меняется сама ссылка на справочник 1.
 (7) Чтение через объект - не помогает. Есть подозрение что Записать() в форме списка не работает вообще. | |||
| 10
    
        Hans 05.02.14✎ 23:11 | 
        (8) а идея вобще такая,
 В справочнике Номенклатура есть реквизит на справочник Наценки Справочник Наценки состоит из групп номенклатуры, производителей и самой наценки. Так вот косяк при смене группы в списке наценок, нужно переназначить скидку той группе которая была и той которая стала. Я скидки переназначаются через запросы. | |||
| 11
    
        Torquader 05.02.14✎ 23:36 | 
        (9) А действительно - кого мы записываем - у нас контекста элемента нет - так что нужно делать "ложное закрытие" при записи, а в закрытии уже обрабатывать всё, что нужно.     | |||
| 12
    
        Hans 05.02.14✎ 23:46 | 
        В итоге через список не получилось. Сделал через форму элемента, все обработки изменения справочников -  при закрытии формы.     | |||
| 13
    
        Torquader 05.02.14✎ 23:52 | 
        (12) Я же сказал - в списке делать "ложное закрытие", то есть в переменную модуля писать какое-то значение и делать Форма.Закрыть(0), чтобы после записи форма попыталась закрыться, а уже в процедуре ПриЗакрытии мы явно получаем уже сохранённый элемент.     | |||
| 14
    
        Злопчинский 06.02.14✎ 01:23 | 
        (4) значит ступил.. ;-) это я с ТЧ дока перепутал...
 . прям точно как в армии: . - Вода кипит при 90 градусах - товарищ прапорщик, вода кипит при 100 градусах! - а, точно! это я с прямым углом перепутал.. . ;-) | |||
| 15
    
        Torquader 06.02.14✎ 11:22 | 
        (14) Да не волнуйся ты так, что бы мы тут не советовали, а у автора "каменный цветок" так и не вышел.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |