|
Периодический регистр сведений | ☑ | ||
---|---|---|---|---|
0
kosmax1991
21.11.13
✎
10:07
|
Доброго времени суток!
Ситуация следующая. В табличном поле документа "Заявка в техподдержку", в котором указываются работы и специалисты, их выполнившие, в модуле объекта создается запись в периодический регистр сведений. Проблема в том, что когда в табличном поле указано более одного специалиста, то записывается инфа только по первому специалисту. Организовал цикл перебора строк табличной части, в котором в начале создается новая запись регистра, но при проведении документа выдается ошибка, что запись с такими ключевыми полями уже существует. В регистре сведений "сотрудник" является измерением, т.е., если не ошибаюсь, должен участвовать в формировании ключа записи. Дак почему же нарушается уникальность и что с этим делать? |
|||
1
МойКодУныл
21.11.13
✎
10:09
|
(0) а код, который записывал только одного сотрудника удалил?
|
|||
2
Rie
21.11.13
✎
10:10
|
(0) Код покажи.
|
|||
3
МойКодУныл
21.11.13
✎
10:12
|
(2) не прилично просить показать человека код на первом свидании.
|
|||
4
kosmax1991
21.11.13
✎
10:14
|
Нет. Он остался тем же, только записываться теперь, как я это представляю, должен n-количество раз, где n-количество сотрудников, указанных в табличной части.
Движение = Движения.УЗ_ЗаявкиВТехподдержкуВыезды.Добавить(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Организация = Организация; Движение.ОтветственныйЗаВыполнениеЗаявки = ОтветственныйЗаВыполнениеЗаявки; Движение.ДатаВыезда = ДатаВыезда; Движение.ВремяВыезда = ВремяВыезда; Движение.Сотрудник = Сотрудник; Движение.ВидЗаявки = ВидЗаявки; Движение.ТипЗаявки = ТипЗаявки; Движение.ДатаЗаявки = Дата; Движение.ДатаЗакрытия = ДатаЗакрытия; Движение.ЗаявкуПринял = ОтветственныйЗаявкуПринял; Движение.Сотрудник = Сотрудник; Движение.Закрыта = Закрыта; Движение.Аппаратура = Аппаратура; Движение.Уехал = Уехал; Движение.ВремяТочноНазначено = ВремяТочноНазначено; Движение.ПромежутокВыезда = ПромежутокВыезда; |
|||
5
МойКодУныл
21.11.13
✎
10:15
|
0_о а где обращение к строкам ТЧ? Или ты N раз записываешь одно и то же.
|
|||
6
CHerypga
21.11.13
✎
10:16
|
(4) ЗаполнитьЗначенияСвойств() смотрелось бы лучше
|
|||
7
AllJoke
21.11.13
✎
10:16
|
Для Каждого Строка Из ТабЧастьДокумента Цикл
//Добавляешь движения КонецЦикла; |
|||
8
AllJoke
21.11.13
✎
10:17
|
Код бердовый. Или задвоился может чёто....
|
|||
9
catena
21.11.13
✎
10:20
|
Движение.Сотрудник = Сотрудник;
Этот Сотрудник откуда берется? Где обращение к ТЧ? |
|||
10
kosmax1991
21.11.13
✎
10:37
|
Код написан такой
Для Каждого ТаблВыездыПоЗаявке Из ВыездыПоЗаявке Цикл Движение = Движения.УЗ_ЗаявкиВТехподдержкуВыезды.Добавить(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Организация = Организация; Движение.ОтветственныйЗаВыполнениеЗаявки = ОтветственныйЗаВыполнениеЗаявки; Движение.ДатаВыезда = ДатаВыезда; Движение.ВремяВыезда = ВремяВыезда; Движение.Сотрудник = Сотрудник; Движение.ВидЗаявки = ВидЗаявки; Движение.ТипЗаявки = ТипЗаявки; Движение.ДатаЗаявки = Дата; Движение.ДатаЗакрытия = ДатаЗакрытия; Движение.ЗаявкуПринял = ОтветственныйЗаявкуПринял; Движение.Сотрудник = Сотрудник; Движение.Закрыта = Закрыта; Движение.Аппаратура = Аппаратура; Движение.Уехал = Уехал; Движение.ВремяТочноНазначено = ВремяТочноНазначено; Движение.ПромежутокВыезда = ПромежутокВыезда; КонецЦикла; |
|||
11
kosmax1991
21.11.13
✎
10:40
|
Может я чего то не догоняю, но в этом цикле он должен обойти все строки, обратиться к одним и тем же полям и сделать столько же записей, сколько и строк.
|
|||
12
CHerypga
21.11.13
✎
10:41
|
(10) при первом проходе по такому циклу в переменную ТаблВыездыПоЗаявке будет помещена строка табличной части, соответственно обращаться следует ТаблВыездыПоЗаявке.Контрагент, а не Контрагент. ну и все остальные так же.
|
|||
13
CHerypga
21.11.13
✎
10:42
|
(12)+ соответственно при втором проходе в ТаблВыездыПоЗаявке будет вторая строка
|
|||
14
kosmax1991
21.11.13
✎
10:42
|
А сотрудник берется из ТЧ документа
|
|||
15
CHerypga
21.11.13
✎
10:43
|
(14) ты берешь какую-то переменую Сотрудник, а к элементу строки табличной части следует обращаться ТаблВыездыПоЗаявке.Сотрудник
|
|||
16
vhl
21.11.13
✎
10:45
|
Для Каждого ТаблВыездыПоЗаявке Из ВыездыПоЗаявке Цикл
Движение = Движения.УЗ_ЗаявкиВТехподдержкуВыезды.Добавить(); ЗаполнитьЗначениеСвойств(Движение,ЭтотОбъект); ЗаполнитьЗначениеСвойств(Движение,ТаблВыездыПоЗаявке); Движение.ДатаЗаявки = Дата; Движение.Период = Дата; Конеццикла; |
|||
17
Ork
21.11.13
✎
10:45
|
(14) Почитайте уже за работу с коллекциями. У вас в коде нигде нет ссылки на текущую строку выборки. Или вы думаете оно само догадается из какой строки брать например "ОтветственныйЗаявкуПринял"?
|
|||
18
kosmax1991
21.11.13
✎
10:59
|
Кто может написать пример, как в цикле обратиться именно к "текущей", "перебираемой" строке, дабы из нее получить инфу?
|
|||
19
kosmax1991
21.11.13
✎
11:07
|
Поправил код, ошибку не выдает при проведении, но все равно в отчет только по первому инфа попадает.
Для Каждого ТаблВыездыПоЗаявке Из ВыездыПоЗаявке Цикл // регистр УЗ_ЗаявкиВТехподдержкуВыезды Движение = Движения.УЗ_ЗаявкиВТехподдержкуВыезды.Добавить(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Организация = Организация; Движение.ОтветственныйЗаВыполнениеЗаявки = ОтветственныйЗаВыполнениеЗаявки; Движение.ДатаВыезда = ДатаВыезда; Движение.ВремяВыезда = ТаблВыездыПоЗаявке.ВремяВыезда; Движение.Сотрудник = ТаблВыездыПоЗаявке.Сотрудник; Движение.ВидЗаявки = ВидЗаявки; Движение.ТипЗаявки = ТипЗаявки; Движение.ДатаЗаявки = Дата; Движение.ДатаЗакрытия = ДатаЗакрытия; Движение.ЗаявкуПринял = ОтветственныйЗаявкуПринял; Движение.Закрыта = Закрыта; Движение.Аппаратура = Аппаратура; Движение.Уехал = Уехал; Движение.ВремяТочноНазначено = ВремяТочноНазначено; Движение.ПромежутокВыезда = ПромежутокВыезда; КонецЦикла; |
|||
20
catena
21.11.13
✎
11:08
|
(19)В какой отчет?
|
|||
21
vhl
21.11.13
✎
11:13
|
(18) В (16) слишком короткий чтоли для тебя?
|
|||
22
hhhh
21.11.13
✎
11:16
|
(21) там похоже что-то из ТЧ, а что-то из шапки документа берется у него.
|
|||
23
CHerypga
21.11.13
✎
11:22
|
(18) какие именно данные находятся в табличной части?
|
|||
24
kosmax1991
21.11.13
✎
11:27
|
Сотрудник
ДатаВыезда ВремяВыезда ПромежутокВыезда |
|||
25
catena
21.11.13
✎
11:29
|
(24)В какой отчет попадает инфа только по первому сотруднику???
|
|||
26
CHerypga
21.11.13
✎
11:31
|
(24) почему тогда пишешь
Движение.ДатаВыезда = ДатаВыезда; а не Движение.ДатаВыезда = ТаблВыездыПоЗаявке.ДатаВыезда; и Движение.ПромежутокВыезда = ПромежутокВыезда; а не Движение.ПромежутокВыезда = ТаблВыездыПоЗаявке.ПромежутокВыезда; эти данные ведь в строке табличной части, а не где-то там |
|||
27
CHerypga
21.11.13
✎
11:33
|
(26)+ а еще бы не помешало увидеть где в коде находится запись в регистр. и где предварительная очистка регистра
|
|||
28
vhl
21.11.13
✎
11:43
|
(22) ЗаполнитьЗначениеСвойств(Движение,ЭтотОбъект) для чего по твоему?
|
|||
29
vhl
21.11.13
✎
11:44
|
(27) Кстати да, автор пишет "в модуле объекта", но в процедуре ли это проведения - не факт :)
|
|||
30
kosmax1991
21.11.13
✎
11:47
|
Документ является регистратором данного регистра, этого не достаточно для записи?
|
|||
31
vhl
21.11.13
✎
11:50
|
(30) В каком месте модуля ты пишешь этот текст?
|
|||
32
hhhh
21.11.13
✎
11:50
|
(28) извини, что-то не увидел эту строчку.
|
|||
33
hhhh
21.11.13
✎
11:51
|
(30) недостаточно
|
|||
34
1dvd
21.11.13
✎
11:53
|
Записывать ещё не предлагали?
|
|||
35
vhl
21.11.13
✎
11:54
|
(24) у тебя код не верный в (19).
Сколько раз тебе еще надо накосячить, чтобы скопипастить код из (16) ? |
|||
36
kosmax1991
21.11.13
✎
11:59
|
Процедура ОбработкаПроведения(Отказ, Режим)
|
|||
37
exwill
21.11.13
✎
12:03
|
(19) Значит, такой отчет.
|
|||
38
1dvd
21.11.13
✎
12:03
|
|
|||
39
kosmax1991
21.11.13
✎
12:06
|
Когда пробую с кодом из (16), выдает ошибку: "Процедура или функция с указанным именем не определена"
|
|||
40
catena
21.11.13
✎
12:08
|
(39)ЗаполнитьЗначени_Я_Свойств
И все-таки ответь: в каком отчете ты смотришь, что движения делаются не правильно? |
|||
41
kosmax1991
21.11.13
✎
12:10
|
Отчет называется "РаботыПоЗаявкам". Ошибка ушла) Но все равно в отчет только по одному попадает.
|
|||
42
vhl
21.11.13
✎
12:14
|
(39) ЗаполнитьЗначенияСвойств
|
|||
43
exwill
21.11.13
✎
12:15
|
(41) Это хорошо, что он так называется. А что в ем внутри?
|
|||
44
vhl
21.11.13
✎
12:18
|
(43) неонка же :)
|
|||
45
catena
21.11.13
✎
12:37
|
(41)А что говорит выборка из регистра по регистратору?
|
|||
46
kosmax1991
21.11.13
✎
12:53
|
В регистре нет никаких кодов.
|
|||
47
catena
21.11.13
✎
12:56
|
(46)А какие там должны быть кода?
|
|||
48
1dvd
21.11.13
✎
12:56
|
Нет. стоп. (38) надо в цикл вставить
|
|||
49
kosmax1991
21.11.13
✎
13:01
|
Вставил в цикл - ничего не изменилось.
|
|||
50
kosmax1991
21.11.13
✎
13:03
|
Чтобы тестовую выборку из регистра сделать - надо код писать?
|
|||
51
catena
21.11.13
✎
13:05
|
(50)Можно форму списка регистра открыть и посмотреть. Если с кодом совсем тяжко. Всё-таки подозрение, что отчет кривой, а не документ.
|
|||
52
vhl
21.11.13
✎
13:10
|
(49) ты (16)+(42) сделал? Или так и будешь гадать на кофейно гуще?
|
|||
53
kosmax1991
21.11.13
✎
13:39
|
сделал
|
|||
54
1dvd
21.11.13
✎
13:40
|
(53) выкладывай
|
|||
55
kosmax1991
21.11.13
✎
13:40
|
и ничего не изменилось
|
|||
56
vhl
21.11.13
✎
14:50
|
(55) Ну, значит судьба
|
|||
57
kosmax1991
21.11.13
✎
14:58
|
Не вариант
|
|||
58
hhhh
21.11.13
✎
15:14
|
в меню открываешь Операции-Регистры сведений - УЗ_ЗаявкиВТехподдержкуВыезды и смотри. Нафига отчеты какие-то тебе?
|
|||
59
kosmax1991
02.12.13
✎
08:31
|
Всем спасибо. Ваши советы + немного поправил отчет и все заработало!)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |