Имя: Пароль:
1C
1С v8
вопрос по рег.сведений
0 zippygrill
 
15.03.13
11:10
не каждый день создаю регистры сведений и прошу сильно не ругать.
создал рег.Сведений с сл. структуры https://dl.dropbox.com/u/9627383/Screens/2013-03-15_1056.swf
также на форме есть кнопки ОК и Записать которые ссылаются на одну процедуру:

   Если КодВозвратаДиалога.Да = Вопрос("Сохранить значения?", РежимДиалогаВопрос.ДаНет,100,,) Тогда        
       МЗ    = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
       ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
       МЗ.Записать();        
   КонецЕсли;    
   
   Если Кнопка.Имя = "ОсновныеДействияФормыОК" Тогда
       ЭтаФорма.Закрыть();
   КонецЕсли;

если делаю изменение в данных и нажимаю кнопку ОК то ругается на то что записи с такими ключевыми полями сушествует https://dl.dropbox.com/u/9627383/Screens/2013-03-15_1104.swf
ошибку понимаю, нужно замещать уже существуюшие записи.
з.ы. с пятницой всех :)
1 zippygrill
 
15.03.13
11:10
2 Maxus43
 
15.03.13
12:08
МЗ     = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
МЗ.Номенклатура = НужнаяНоменклатура;
МЗ.Прочитать();        
ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
       МЗ.Записать();
3 Maxus43
 
15.03.13
12:08
ну и заполнять менеджер записи значение ЭтаФорма - помойму перебор. Точно заполняется?
4 zippygrill
 
15.03.13
12:52
(3) ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма); - заполняется конечно :)
5 zippygrill
 
15.03.13
12:56
ща через Прочитать() попробую
6 zippygrill
 
15.03.13
13:08
ну также "записи с такими ключевыми полями существует"
7 zippygrill
 
15.03.13
13:37
блин чего-то не получается
8 cw014
 
15.03.13
13:39
МЗ.Записать(Истина);
9 cw014
 
15.03.13
13:40
И (2) тут не нужно
10 zippygrill
 
15.03.13
13:41
МЗ = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
МЗ.Записать(Истина);
11 cw014
 
15.03.13
13:42
(10) И?
12 zippygrill
 
15.03.13
13:43
она у меня ругается при нажатие на ОК, то есть ЭтаФорма.Закрыть();
13 Chikko
 
15.03.13
13:44
А какова вероятность что сюда
МЗ = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
МЗ.Записать(Истина);

оно не заходит?
14 zippygrill
 
15.03.13
13:45
она всегда заходит. надо ж сохранить.
15 Chikko
 
15.03.13
13:48
Сохранит она и без тебя, а вот какова вероятность что оно всеж не заходит?=)
16 Reset
 
15.03.13
13:50
Может измерение в записи не инициализируется по кнопке ОК?
17 cw014
 
15.03.13
13:52
Подскажи, а как называется "которые ссылаются на одну процедуру"
18 cw014
 
15.03.13
13:52
Какое имя у процедуры?
19 Reset
 
15.03.13
13:53
(18) "Сохранить" :)
20 zippygrill
 
15.03.13
13:58
еще разок. на форме записи есть 2 кнопки "ОК" и "Сохранить", оба они ссылаются на процедуру:

Если КодВозвратаДиалога.Да = Вопрос("Сохранить значения?", РежимДиалогаВопрос.ДаНет,100,,) Тогда        
       МЗ     = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
       ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
       МЗ.Записать();        
   КонецЕсли;    
   
   Если Кнопка.Имя = "ОсновныеДействияФормыОК" Тогда
       ЭтаФорма.Закрыть();
   КонецЕсли;
21 cw014
 
15.03.13
14:04
(12) Ругается так же?
22 Chikko
 
15.03.13
14:04
Давай ты перестанешь игнорировать мои посты и признаешься что предупреждение вылезает при записи по модифицированности формы, а в твою
МЗ     = РегистрыСведений._АкцидентыНоменклатуры.СоздатьМенеджерЗаписи();
       ЗаполнитьЗначенияСвойств(МЗ, ЭтаФорма);
       МЗ.Записать();
при этом никак не хочет заходить.
23 Reset
 
15.03.13
14:05
По моему, у тебя просто неверно спроектирована форма.
Если цель - спрашивать перед записью, не нужно переписывать обработчики кнопок ОК и Записать.
Достаточно поместить Вопрос в ПередЗаписью и выставлять там при необходимости Отказ в истину
24 Reset
 
15.03.13
14:06
Вот это помести в ПередЗаписью

Если Вопрос("Сохранить значения?", РежимДиалогаВопрос.ДаНет,100,,)<>КодВозвратаДиалога.Да Тогда
 Отказ=Истина;
КонецЕсли;  

а все остальное не нужно
25 Chikko
 
15.03.13
14:08
Если Кнопка.Имя = "ОсновныеДействияФормыОК" Тогда
ЭтаФорма.Модифицированность = Ложь;
       ЭтаФорма.Закрыть();
   КонецЕсли;

от так аще будет красиво=))
ну а (23) прав конечно же, не изобретай колесо а используй обработчики. она почти на все случаи жизни предусмотрены.
26 zippygrill
 
15.03.13
14:12
(22) да заходит она в мою процедуру :), с чего мне врать :) https://dl.dropbox.com/u/9627383/Screens/2013-03-15_1409.swf
(23) ну мысли такова чтобы спрашивал перед тем как сохранить изменении в новую/существующую записи.
27 Reset
 
15.03.13
14:13
(26) Тогда к (24) нечего добавить
28 cw014
 
15.03.13
14:14
А нафига ты вообсче это делаешь? Он автоматом как то сам сохранить должен запись то твою
29 Chikko
 
15.03.13
14:19
Просто вопрос хочет задавать.
(24) используй, не нужно никаких менеджеров создавать, уже все само создалось.
(26) да он зашел в твою процедуру, но потом, при Закрыть(), вызывается запись еще раз, тк форма.Модифицированность = истина. вот тут-то обработчика у тебя нету.
30 zippygrill
 
15.03.13
14:22
форма.Модифицированность = ложь; как в (25) чтоли.
31 Chikko
 
15.03.13
14:27
(30) Делай грамотно. Возьми вариант из (24) и скажи ему спасибо.
32 zippygrill
 
15.03.13
14:56
(31) да я тоже красиво хочу написать.
поместил в ПередЗаписью, востановил действие кнопок по умолчанию, в итоге при сохранение или ок всегда сначала мой диалог а потом предупреждение. https://dl.dropbox.com/u/9627383/Screens/2013-03-15_1456.swf
33 cw014
 
15.03.13
15:01
А теперь покажи, какие формы у тебя там созданы
34 Chikko
 
15.03.13
15:02
Так мы про форму говорили, зачем модуль набора... Небось оставил свою процедуру?=)
35 Chikko
 
15.03.13
15:04
Ну и конечно же учитывай:
Синтаксис:
Вопрос(<ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)

Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
36 Reset
 
15.03.13
15:08
(32) В форме записи все должно происходить
37 zippygrill
 
15.03.13
15:39
(33) ну у меня еще форма списка, но передОткрытием ставлю Отказ = Истина, запросом ищу возможные записи по текущей номенклатуре и открываю формуЗаписи уже.
38 zippygrill
 
15.03.13
15:40
(36) у формы? событие ПерезЗаписью? :)
39 Chikko
 
15.03.13
15:51
(38) Да, ты верно прочитал.
(37) Тут дело такое: у формы записи уже будет нужный менеджер.
Удали всё из всех форм. Оставь что написал Ресет. В обраотчике передзаписью. В форме.
40 zippygrill
 
15.03.13
16:01
(39) сорри я тупил, забыл прокрутить чтобы увидеть событие ПередЗаписью у формы :)
41 zippygrill
 
15.03.13
16:09
удалил все из модуле формы, оставив только ПередЗаписью.
для новой записи не выдает сообщение, а вот если повторно открыть и менять то уже выдает.
42 hhhh
 
15.03.13
16:11
(41) ну так и есть. Новая запись пишется один раз, не новая - два раза. Это давным давно известно. Чего ты там Америку для себя открываешь?
43 zippygrill
 
15.03.13
16:16
(42) так мне нужно чтобы она перезаписывала записи если существует.
44 hhhh
 
15.03.13
16:21
(43) ну все с детского сада знают, что перезапись в регистрах сведений не реализована. Реализовано через удаление-добавление. Две операции. Вы чего книжек совсем не читаете?
45 hhhh
 
15.03.13
16:23
(44)+ похоже и в регистрах накопления тоже.
46 zippygrill
 
15.03.13
16:26
как меня все это бесит!
(44) я поэтому и создал 2 кнопки "ок" и "сохранить" с одинаковой процедуры.
47 hhhh
 
15.03.13
16:41
(46) что-то я вообще теперь не понял. То есть у тебя 2 менеджера, у записи менеджер, и у тебя МЗ. Как же они вдвоем работают?
48 hhhh
 
15.03.13
16:42
ФормаОсновная - это что за форма? Форма записи?
49 zippygrill
 
15.03.13
16:45
(48) да
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан