Имя: Пароль:
1C
1С v8
Не понимаю, как пользователь создает такую ситуацию
, ,
0 Adgjj
 
16.03.12
14:47
Здравствуйте!
Есть документ "Счет", в строки таб.части которого заносятся данные из документов "ТТД" по кнопке "Заполнить" (за период, указанный на форме "Заполнить").
http://s019.radikal.ru/i636/1203/a7/7b080cf5db49.png

Пользователям нужно, чтобы если данная ТТД уже участвует в каком-то Счете, при создании нового счета (нажатии "Заполнить") эта ТТД снова в таб. часть документа Счет не попадала.

Для этого в регистр накопления документа "ТТД" я добавила поле "Счет", к-рое заполняется в процедуре ПриЗакрытии() формы док-та Счет.
Ну и при заполнении нового док-та Счет идет проверка заполнения этого поля регистра.
Пользователь жалуется, что часто в Счет все же попадают ТТД из других Счетов. Открываю Счет (названный польз-лем), в к-ром уже есть эта ТТД, проваливаюсь из строки ТЧ в ТТД, затем в регистр - в регистре поле Счет не заполнено. Как пользователь могла закрыть документ так, чтобы это поле не заполнилось? У меня и у польз-ля, к-рая делает то же самое в периферийной базе такой ситуации не получается.
1 Adgjj
 
16.03.12
14:48
Процедура ПриЗакрытии()
   
   Если мОбновлятьВладельца Тогда
       ОповеститьОЗаписиНовогоОбъекта(ЭтотОбъект);
   КонецЕсли;
   
   //нач
   для каждого СтрокаУслуги из Услуги Цикл
       НЗ = РегистрыНакопления.уатВыработкаПоСтоимости.СоздатьНаборЗаписей();
       НЗ.Отбор.Регистратор.Значение = СтрокаУслуги.ДокументОснование;
       НЗ.Отбор.Регистратор.Использование = Истина;
       НЗ.Прочитать();
       Для Каждого Запись Из НЗ Цикл
           Запись.Счет = ДокументОбъект.Ссылка;
       КонецЦикла;
       НЗ.Записать();
   конеццикла;
   //кон    
КонецПроцедуры // ПриЗакрытии()
2 Kashemir
 
16.03.12
14:54
Копирование
3 Sonny
 
16.03.12
15:03
Хорошо что ТС не пошла работать в медицину. 1С всё стерпит.
4 Kashemir
 
16.03.12
15:06
(3) Код ужасен - спору нет :D
5 jsmith
 
16.03.12
15:08
что-то знакомый код
по-моему, я автор этого кода
6 Господин ПЖ
 
16.03.12
15:10
(5) попался сукин сын прелюбодей Якин!
7 jsmith82
 
16.03.12
15:12
не могу ветку найти
8 jsmith
 
16.03.12
15:14
9 n koretsky
 
16.03.12
15:18
(8) а в прошлой ветке все получилось у ТС...
а тут - снова пичалька...
10 jsmith
 
16.03.12
15:20
ну что можно сказать
для начала отладить код под тем пользователем
11 Adgjj
 
16.03.12
15:22
большое спасибо за ценные ответы
12 PVV65
 
16.03.12
15:22
(0) Такое может произойти, когда создается новый счет и перед закрытием формы не записывается. А такое должно происходить всегда. Удивляет - почему это не происходит "всегда"? Наверное пользователи перед закрытием формы записывают документ.
13 Adgjj
 
16.03.12
15:26
Зачем записывать Счет перед закрытием формы "Заполнить"??
14 Adgjj
 
16.03.12
15:28
(4)  предложите лучший вариант!
15 PVV65
 
16.03.12
15:30
(12)Не прав. Уже будет Объект.
16 Kashemir
 
16.03.12
15:35
(14) Не вникая в суть проблемы - чисто технически так будет быстрее:

   НЗ = РегистрыНакопления.уатВыработкаПоСтоимости.СоздатьНаборЗаписей();
   НЗ.Отбор.Регистратор.Использование = Истина;
   для каждого СтрокаУслуги из Услуги Цикл
       НЗ.Отбор.Регистратор.Значение = СтрокаУслуги.ДокументОснование;
       НЗ.Прочитать();
       Для Каждого Запись Из НЗ Цикл
           Запись.Счет = ДокументОбъект.Ссылка;
       КонецЦикла;
       НЗ.Записать();
   конеццикла;
17 Kashemir
 
16.03.12
15:37
(14) Изменять данные (причем чужих/других объектов) при событиях формы - это также сильный ход.
18 Adgjj
 
16.03.12
15:42
(16) спасибо
(17) почему так нельзя?
19 Kashemir
 
16.03.12
15:45
(18) Ибо нет прямой связи события закрытия формы и записи объекта.
20 Adgjj
 
16.03.12
16:01
вот я ее и создаю
21 Kashemir
 
16.03.12
16:05
(20) Печально - удаляюсь.
22 Adgjj
 
16.03.12
16:07
мне нужно чтобы ПриЗакрытии() записывался
как тогда поступить?
23 Adgjj
 
16.03.12
16:08
я для того сюда и вышла чтоб научиться всего знать невозможно
и вообще я не программист
24 teapot123
 
16.03.12
16:14
(0) а не проще при нажатии кнопки "Заполнить" делать проверку запросом?
25 teapot123
 
16.03.12
16:15
+(24) вопрос снят
26 teapot123
 
16.03.12
16:22
(0) перенеси код в процедуру ПриЗаписи модуля объекта