Имя: Пароль:
1C
1C 7.7
v7: Изменение периодического реквизита из модуля формы элемента справочника
,
0 MiracMC
 
12.08.11
19:20
День добрый, коллеги.

с пятницей всех!

пол дня в ступоре.
не могу записать периодический реквизит в справочнике, находясь в элементе справочника.

по сути я открываю форму элемента справочника и меняю периодичский реквизит. потом, после этого, по нажатию на кнопку вызываю процедуру, которая в себе вызывает функцию запись(). так вот до этого вызова в моем периодическом реквизите есть значение, а после - нет(

вот код:

Процедура кЗаписать()
Пассворд = "222222";
....
Сообщить("Пассворд1 " + СокрЛП(Пассворд));
....
Сообщить("Пассворд2 " + СокрЛП(Пассворд));
Записать();
Сообщить("Пассворд3 " + СокрЛП(Пассворд));
КонецПроцедуры

в результате получаю вот такую штуку:

Пассворд1 222222
Пассворд2 222222
Пассворд3

Пытался обратится к периодическому реквизиту через Пассворд.Установить(), но получаю ошибку, что мол нет у моего "Пассворд" опции "Установить". собственно так же, как и "получить". но он 10000% периодический и с ручным изменением.

так же удивил тот факт, что после вызова Записать() входа в предопределенную процедуру "ПриЗаписи()" так же не было... так же не было таблички выбора изменяемых значений периодических реквизитов  (????)

уже все перепробовал.
подскажите как это сделать правельно....

заранее благодарен.
1 Нуф-Нуф
 
12.08.11
19:23
7ка? юзай объект периодический
2 DimaSar
 
12.08.11
19:30
ИспользоватьДату
3 DimaSar
 
12.08.11
19:33
если у тебя какая то типовая конфа посмотри обработку ЗаписьПериодическихРеквизитов, так записываются все реквизиты периодические в типовых конфигурациях, вызывается глЗаписьПериодическихРеквизитов(Контекст)
4 MiracMC
 
12.08.11
19:34
1  да 7-рка
2  в ПриОткрытии() делаю ИспользоватьДату(ТекущаяДата()).
не помогает(
5 MiracMC
 
12.08.11
19:35
3. пробую.. щас отпишусь....
6 MiracMC
 
12.08.11
19:36
так а все же почему нет входа в предопределенную процедуру ПриЗаписи() ???
7 DimaSar
 
12.08.11
19:38
"так же не было таблички выбора изменяемых значений периодических реквизитов"
эта табличка как раз таки и вызывается той обработкой, если мне не изменяет память
8 MiracMC
 
12.08.11
19:42
7
дело все в том, что я отошол от штатного вызова обработки записи, которую инициирует по умолчанию кнопка "Ок" на форме (#Записать Закрыть)... мне надо было в процедуре сделать запись, а после этого продолжить работу...
так #Записать инициирует табличку периодических реквизитов, а Записать() нет...

при этом вызова вышеупомянутой обработки (глЗаписьПериодическихРеквизитов(Контекст)) небыло в ПриЗаписи()

вот и ступор...
9 DimaSar
 
12.08.11
19:43
ПриЗаписи()- вызывается при интерактивной записи, а у тебя программная
10 DimaSar
 
12.08.11
19:43
да тебе проще всего через ИспользоватьДату сделать да и все
11 MiracMC
 
12.08.11
19:45
3
не помогло... и все равно нет таблицы выбора реквизитов для сохранения и все также зануляются все мои периодические реквизиты.

точнее сказать, они не зануляются... с них сбрасываются все изменения, которые я внес после открытия формы элемента...

т.е. было, например, в Пассворд "123"... сделал "1234" (дописал "4")... вот именно "4" и пропадет после вызова Записать()
.....
12 DimaSar
 
12.08.11
19:48
да правильно так и должно быть, делай как в 10
13 MiracMC
 
12.08.11
19:49
я ж в 4 писал.. не помогает...
или я ее не туда тулю?
14 DimaSar
 
12.08.11
19:50
вот как то так у тебя должно быть
СпрМатериал.ИспользоватьДату(РабочаяДата());
СпрМатериал.СтавкаНДС = СпрСтавкаНДС.ТекущийЭлемент();
15 MiracMC
 
12.08.11
19:55
14

СТОП!
я это все делаю в модуле формы самого элемента.
т.е. я открываю элемент руками.. что то меняю тоже руками... и потом нажимаю на кнопку и иниирую Записать().

оно у меня НЕ создается по принципу
Спр = СоздатьОбъект("Справочник.ИмяСправочника")

куда мне писать? в форму что ли?
Форма.ИспользоватьДату(РабочаяДата());
Форма.Пассворд = "12345";

так что ли?
16 marvak
 
12.08.11
19:56
(0)
почитай про периодический  объект
17 marvak
 
12.08.11
19:57
(16)+
и пассворд свой тут не свети особо
18 MiracMC
 
12.08.11
19:58
16 читал.. не дурак... не работает так. как там написано(
17 очень злой пароль)))
19 marvak
 
12.08.11
19:59
(18)
ты прям как MiramaX
:)
20 MiracMC
 
12.08.11
20:00
да не.... ))
21 marvak
 
12.08.11
20:01
(20)
а вообще там у тя тока нужно юзать ИспользоватьДату и ничего более
22 MiracMC
 
12.08.11
20:05
v8: v8: Изменение периодического реквизита из модуля формы элемента справочника

ну да я понимаю... вот только где? в каком моменте?

ИспользоватьДату(<?>,);
Синтаксис:
ИспользоватьДату(<Дата>,<Обновить>)
Назначение:
Установить дату, на которую будут записываться периодические реквизиты элемента справочника, форма которого открыта.
Параметры:
<Дата> - значение типа ''дата''. Дата, на которую будут записываться периодические реквизиты элемента справочника, форма которого открыта.
<Обновить> - необязательный параметр. Число: 1 - обновить периодические реквизиты формы на заданную дату; 0 - не обновлять периодические реквизиты формы. Значение по умолчанию - 0;
Замечание:
Метод доступен только в контексте Модуля формы элемента справочника. Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.


Установить дату, на которую будут записываться периодические реквизиты элемента справочника, форма которого открыта.

т.е. если использовать

ИспользоватьДату(ТекущаяДата(),1)

в процедуре ПриОткрытии()оно должно открыть "окно" на всю проделываемую работу в элементе... так?

вот я так и делаю... но только не помогает.

и что не так?
23 marvak
 
12.08.11
20:06
(22)
ты определись, у тя семерка или восьмерка усе такии?
24 MiracMC
 
12.08.11
20:07
7-ка... промахнулся с разделом я..
25 DimaSar
 
12.08.11
20:13
Процедура кЗаписать()
   ИспользоватьДату(ТекущаяДата());
   Записать();
КонецПроцедуры    // кЗаписать()
26 DimaSar
 
12.08.11
20:13
реквизит у тебя на форме выведен как реквизит?
27 DimaSar
 
12.08.11
20:16
(25) отлично работает, создал только что первому попавшемуся справочнику реквизит периодический, добавил кнопку повесил на неё кЗаписать() описаную в (25) и все хорошо отработало. Ты определись тебе табличка надо или тебе значение надо в реквизит записать?
28 AlexNew
 
12.08.11
20:56
Дайте уж человеку СП или типовую.
29 Креатив
 
12.08.11
21:01
(0)А записан ли у тебя сам элемент на момент установки реквизита?
30 MiracMC
 
15.08.11
11:05
26 - да реквизит объявлен как периодический и задан в справочнике

27 - ну а у меня не работает.

29 - ну с новым пока не пробовал. Уже существующий элемент пытаюсь отредактировать в нем значение п.р., и не могу...
31 DimaSar
 
15.08.11
13:05
покажи процедуру которой ты запись делаешь
32 MiracMC
 
15.08.11
13:11
(31)

вместо штатного обработчика на кнопке (#Записать) вызываю кЗаписать(), описаную в (0)
33 MiracMC
 
16.08.11
19:24
UP
34 KRV
 
16.08.11
19:36
Сперва обратись к реквизиту как к периодическому, потом записывай. А "Сообщить" не вылазит потому, что из процедуры вылетаешь.. да и Пассворд твой что - строка? число?  хоть бы пробелы, добавляемые платформой, отсек для начала..
35 Cthulhu
 
16.08.11
19:37
(33): тогла в процедуру кЗаписать() в коде поставль после процедуры ПриЗаписи, а в саму процедуру вставь (в начало):
ПриЗаписи(); Если СататусВозврата()=0 Тогда Возврат КонецЕсли;
36 Cthulhu
 
16.08.11
19:37
(35): а в саму процедуру - в смысле в кЗаписать()
37 MiracMC
 
18.08.11
14:17
не то..
ну по сути проблему решил.. вот только не могу понять как такое объяснить...

процедура моя вызываеться в теле элемента Справочник.Учетки
по сути код был такой:

Процедура кЗаписать()
Пассворд = "222222";
....
Сообщить("Пассворд1 " + окрЛП(Пассворд));
спр = создатьОбъект("Справочник.Учетки");
спр.ВыбратьЭлементы();
....
Сообщить("Пассворд2 " + СокрЛП(Пассворд));
Записать();
Сообщить("Пассворд3 " + СокрЛП(Пассворд));
....
КонецПроцедуры

в результате получаю вот такую штуку:

Пассворд1 222222
Пассворд2 222222
Пассворд3

прошу заметить, что к "Пассворд" я при переборе этого же справочника через "спр" я не обращался... пересечений нет.

НО.
убрал перебор справочника через "спр" - занулять перестало.

"вот такой он... северный олень" (С)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс