|
Запись с такими ключевыми полями существует! | ☑ | ||
---|---|---|---|---|
0
IT_PROGRAMMIST
01.11.11
✎
01:52
|
Привет всем.)УПП 1.3.11.5,пл.8.2.13.219.
Такая проблема.Есть кадровые документы(Прием,Отсутствие,Возврат,Увольнение),которые дают движения по регистру сведений СостояниеРаботниковПредприяти(Структура регистра: измерения:ФизЛицо,ДатаРаботы,ресурс: состояние).В данный регистр заносится состояние работника(т.е работает, на больничном, в отпуске и т.д.)Регистр подчинен регистратору с периодичностью "В пределах дня".Что только не перепробывал!!При проведении кадрового документа пишет ошибку: {Форма.Форма.Форма(52)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ОбработкаПроведения': {Документ.Увольнение(628)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : СостояниеРаботниковПредприятия: 13.10.2011 0:00:00, , 10.10.2011 13:14:20 (Регистр сведений: Состояние работников предприятия; Номер строки: 2) Пробовал: 1)менять периодичность на "По позиции регистратора" 2) добавил дополнительное измерение дата. Ничего не помогает.Помогите,как можно выйти из ситуации????Заранее благодарен |
|||
1
YauheniL
01.11.11
✎
01:54
|
(0) ПРоверь, нет ли в документе дублирующихся строк по измерениям.
|
|||
2
YauheniL
01.11.11
✎
01:55
|
Если у тебя 1 и 101 строи совпадают с учетом измерений, то ты будешь такую ошибку всегда ловить, независимо от периодичности. Тут только свертка таб. части нужда
|
|||
3
YauheniL
01.11.11
✎
01:55
|
*нужна
|
|||
4
IT_PROGRAMMIST
01.11.11
✎
01:58
|
в документе нет дублирующихся строк
|
|||
5
IT_PROGRAMMIST
01.11.11
✎
01:59
|
(2) а можешь по подробней объяснить.Как свертку сделать?
|
|||
6
YauheniL
01.11.11
✎
02:00
|
(4) я бы все-таки проверил. В противном случае, периодичность является измерением, и ты умудрился (в случае с периодичностью "по позиции регитсратора") создать документ с уже занятым GUID
|
|||
7
YauheniL
01.11.11
✎
02:02
|
(5) Это просто, строишь запрос к таб. части с группировкой по полям измерения, передаешь результат в таблицу для проведения...
Ну, или выгружаешь таб. часть в таблицу значений, затем используешь метод таблицы значений "Свернуть()". Только важно, чтобы по измерениям регистра она проводилась (при возможности), без посторонних полей группировки, а то дубли могут получится |
|||
8
IT_PROGRAMMIST
01.11.11
✎
02:02
|
Регистр подчинен регистратору с периодичностью "В пределах дня".Насчет по позиции регистратора" то я просто проверял,получится или нет
|
|||
9
IT_PROGRAMMIST
01.11.11
✎
02:05
|
(7) я так понимаю сдесь свертка нужна, чтобы не было повторений в табличной части. У меня к примеру в одном документе 2(разные) записи, при проведении пишет туже ошибку.
|
|||
10
YauheniL
01.11.11
✎
02:05
|
(8) Переподчини в "по позиции" и глянь, что идет в таблицу проведения по регистру. Там должно быть все видно. Если дублей нет, то запишется; если есть -- будет ясно откуда взялись
|
|||
11
YauheniL
01.11.11
✎
02:07
|
(9) Да. Именно для этого.
Хотя, при проведении, таблица проведения составляется особенным образом для каждого вида документа, поэтому надо глянуть в ту таблицу значений, которая идет в регистр, какие там значения |
|||
12
IT_PROGRAMMIST
01.11.11
✎
02:10
|
в таблице пишет:
Сотрудник Период НомерСтроки Дата Иванов 01.10.11 0 08.10.11 15:00:00 Петров 01.10.11 0 08.10.11 15:00:00 |
|||
13
IT_PROGRAMMIST
01.11.11
✎
02:10
|
из за номера строки?
|
|||
14
YauheniL
01.11.11
✎
02:11
|
(13) А какая структура регистра?
|
|||
15
YauheniL
01.11.11
✎
02:12
|
Я думаю, в состояние рабтников идет физ. лицо, а они -- разные
|
|||
16
IT_PROGRAMMIST
01.11.11
✎
02:13
|
Структура регистра: измерения:ФизЛицо,ДатаРаботы,ресурс: состояние
|
|||
17
YauheniL
01.11.11
✎
02:20
|
(12) Таблица при периодичности "В пределах дня"? Если да -- ищи документы с такими же строками. Если нет -- не понятно, физ лица разные, в пределах документа быть конфикта не должно
|
|||
18
catena
01.11.11
✎
06:28
|
Про дубли строк УПП вроде как сообщает.
Про другие документы - сомневаюсь, если ошибка валится на разных людях. Хотя, могли и сделать что-нить массовое :) Что в регистре-то на эту дату? Ну и, если регистр в порядке, я бы смотрела, не срабатывает ли два раза проведение. |
|||
19
Мимохожий Однако
01.11.11
✎
06:50
|
(0)Посмотри, кто во второй строке документа. Есть ли он в регистре до проведения документа. Есть ли он в табличной части документа еще. Измерение дата работы как дата или как ДатаВремя?
|
|||
20
SeraFim
01.11.11
✎
06:51
|
(18) +1
"Что в регистре-то на эту дату? " Быть может, одним документом ты отправил человека в отпуск а другим документом отмечаешь, что с этого же дня он болеет? Вот программа и не понимает, где сотрудник окажется - в отпуске или на больничном) |
|||
21
IT_PROGRAMMIST
01.11.11
✎
10:44
|
согласен с (20), так и есть. Получается у меня есть больничный, с 18 по 20, система в регистре прописывает,что человек на больничном с 18 по 20, а с 21 автоматически выходит на работу. Потом отдел кадров делает еще один документ, в котором указывают,что данный человек с 21 по 22 в отпуске.А так как он у меня уже работает система и ругается.Как выйти из ситуации??????
Вот для наглядности обработка проведения док отсутствие на работе: ДвиженияСостояние = Движения.СостояниеРаботниковПредприятия; Для каждого СтрокаТЧ Из Работники Цикл НовСтрока = ДвиженияСостояние.Добавить(); НовСтрока.Период = СтрокаТЧ.ДатаНачала; НовСтрока.ФизЛицо = СтрокаТЧ.Сотрудник.ФизЛицо; НовСтрока.ДатаПриказа = Дата; НовСтрока.Состояние = КадровыйУчет.ПолучитьСостояниеРаботника(СтрокаТЧ.ПричинаОтсутствия); Если ЗначениеЗаполнено(СтрокаТЧ.ДатаОкончания) тогда НовСтрока = ДвиженияСостояние.Добавить(); НовСтрока.Период = СтрокаТЧ.ДатаОкончания+24*3600; НовСтрока.ФизЛицо = СтрокаТЧ.Сотрудник.ФизЛицо; НовСтрока.Состояние = Перечисления.СостоянияРаботника.Работает; НовСтрока.ДатаПриказа = Дата; КонецЕсли; КонецЦикла; ДвиженияСостояние.Записать(); |
|||
22
catena
01.11.11
✎
10:50
|
Убрать строчку "работает" в больничном
|
|||
23
andrewks
01.11.11
✎
10:52
|
столкнулся примерно с таким же в ЗУП.
помогло: сначала распровести документ, потом опять провести |
|||
24
IT_PROGRAMMIST
01.11.11
✎
11:14
|
оно не даёт проводить с данной ошибкой
|
|||
25
IT_PROGRAMMIST
01.11.11
✎
11:25
|
какие ещё варианты есть?
|
|||
26
catena
01.11.11
✎
11:58
|
(25)->(22)
|
|||
27
IT_PROGRAMMIST
01.11.11
✎
15:15
|
(22) у меня при больничном не добавляется автоматически "работает".
|
|||
28
catena
01.11.11
✎
18:36
|
(27)Тогда галочку "Фактически произошло" :)
У меня, правда, Табель самописный и он эти ситуации отрабатывает, в типовой надо будет проверить. |
|||
29
IT_PROGRAMMIST
02.11.11
✎
10:33
|
всем спасибо за помошь!!!Все получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |