Имя: Пароль:
1C
1C 7.7
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) Да не волнуйся ты так, что бы мы тут не советовали, а у автора "каменный цветок" так и не вышел.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший