Имя: Пароль:
1C
1С v8
Проведение. Запись в регистр сведений.
0 espanol
 
04.04.12
15:34
ОбработкаПроведения:
Если НЕ Отказ Тогда
       НаборЗаписейХК = Движения.ХранениеКолес;
   НаборЗаписейХК.ДокументОбъект        = ЭтотОбъект;
   НаборЗаписейХК.Контрагент            = Контрагент;
   НаборЗаписейХК.ПодразделениеКомпании = ПодразделениеКомпании;
   Отказ = НЕ НаборЗаписейХК.Хранение() ИЛИ Отказ;
КонецЕсли;

Обработка в модуле РС:

Перем ДокументОбъект        Экспорт;  // документ объект для записи
Перем Контрагент            Экспорт;  // контрагент
Перем ПодразделениеКомпании Экспорт;  // подразделение компании

// Функция производит запись хранения шин
Функция Хранение() Экспорт
   
   Результат = Истина;
   
   ДобавлениеЗаписиВХранение(ДокументОбъект.ШинаПЛ, ДокументОбъект.ДискПЛ, ДокументОбъект.ДефектШиныПЛ, ДокументОбъект.ДефектДискаПЛ);
   ДобавлениеЗаписиВХранение(ДокументОбъект.ШинаЗЛ, ДокументОбъект.ДискЗЛ, ДокументОбъект.ДефектШиныЗЛ, ДокументОбъект.ДефектДискаЗЛ);
   ДобавлениеЗаписиВХранение(ДокументОбъект.ШинаПП, ДокументОбъект.ДискПП, ДокументОбъект.ДефектШиныПП, ДокументОбъект.ДефектДискаПП);
   ДобавлениеЗаписиВХранение(ДокументОбъект.ШинаЗП, ДокументОбъект.ДискЗП, ДокументОбъект.ДефектШиныЗП, ДокументОбъект.ДефектДискаЗП);
   
   Возврат Результат;
   
КонецФункции

Процедура ДобавлениеЗаписиВХранение(Шина, Диск, ДефектШины, ДефектДиска)
   
   НоваяЗапись = Добавить();
   НоваяЗапись.Период                = ДокументОбъект.Дата;
   НоваяЗапись.Регистратор           = ДокументОбъект.Ссылка;
   НоваяЗапись.Контрагент            = Контрагент;
   НоваяЗапись.ПодразделениеКомпании = ПодразделениеКомпании;
   НоваяЗапись.Контейнер             = "";
   НоваяЗапись.Ячейка                = "";
   НоваяЗапись.Шина                  = Шина;
   НоваяЗапись.Диск                  = Диск;
   НоваяЗапись.ДефектШины            = ДефектШины;
   НоваяЗапись.ДефектДиска           = ДефектДиска;
   НоваяЗапись.НачалоХранения        = ДокументОбъект.Дата;
   НоваяЗапись.ОкончаниеХранения     = ДобавитьМесяц(ДокументОбъект.Дата, ДокументОбъект.СрокХранения);
   
КонецПроцедуры


РС подчинен регистратору.
При проведении пишет что: Запись с такими ключевыми полями уже существует!

Что я сделал не правильно?
1 asady
 
04.04.12
15:35
(0) объект пихаешь в РС??? - оригинально
2 asady
 
04.04.12
15:38
(1) претензия снимается - увидел что это экспортная переменная модуля НЗ
3 asady
 
04.04.12
15:38
(0) структура РС какая?
4 espanol
 
04.04.12
15:39
(3) Подчинен регистратору в пределах дня.
5 КМ155
 
04.04.12
15:41
(4) а у документа есть галка удалять движения при распроведении ?
6 asady
 
04.04.12
15:44
(4) измерения регистра хоть засвети чтоли
7 espanol
 
04.04.12
15:48
(5) стоит "Удалять автоматически".

(6) Контрагент, ПодразделениеКомпании, Контейнер, Ячейка, Шина, Диск, ДефектШины, ДефектДиска, НачалоХранения, ОкончаниеХранения.
8 asady
 
04.04.12
15:50
(7) РС периодический? - периодичность какая?
9 espanol
 
04.04.12
15:50
отбор можно делать только по регистратору, т.к. РС подчинен регистратору.
10 espanol
 
04.04.12
15:51
(8) По позиции регистратора делал, в пределах дня делал...
11 RomanYS
 
04.04.12
15:53
Посмотри в отладчике содержимое набора.
Скорей всего у каких-то записей совпали измерения.
12 RomanYS
 
04.04.12
15:56
+(11) Например, если
ДокументОбъект.ШинаПП = ДокументОбъект.ШинаЗП
ДокументОбъект.ДискПП = ДокументОбъект.ДискЗП
ДокументОбъект.ДефектШиныПП = ДокументОбъект.ДефектШиныЗП
ДокументОбъект.ДефектДискаПП = ДокументОбъект.ДефектДискаЗП

может быть реквизиты просто не заполнены в документе
13 espanol
 
04.04.12
16:09
(11) Да, дело было в дублирующихся записях... я сделал вот так:


НоваяЗапись.ШинаПЛ                = ДокументОбъект.ШинаПЛ;
   НоваяЗапись.ШинаЗЛ                = ДокументОбъект.ШинаЗЛ;
   НоваяЗапись.ШинаПП                = ДокументОбъект.ШинаПП;
   НоваяЗапись.ШинаЗП                = ДокументОбъект.ШинаЗП;
   НоваяЗапись.ДискПЛ                = ДокументОбъект.ДискПЛ;
   НоваяЗапись.ДискЗЛ                = ДокументОбъект.ДискЗЛ;
   НоваяЗапись.ДискПП                = ДокументОбъект.ДискПП;
   НоваяЗапись.ДискЗП                = ДокументОбъект.ДискЗП;
   НоваяЗапись.ДефектШиныПЛ          = ДокументОбъект.ДефектШиныПЛ;
   НоваяЗапись.ДефектШиныЗЛ          = ДокументОбъект.ДефектШиныЗЛ;
   НоваяЗапись.ДефектШиныПП          = ДокументОбъект.ДефектШиныПП;
   НоваяЗапись.ДефектШиныЗП          = ДокументОбъект.ДефектШиныЗП;
   НоваяЗапись.ДефектДискаПЛ         = ДокументОбъект.ДефектДискаПЛ;
   НоваяЗапись.ДефектДискаЗЛ         = ДокументОбъект.ДефектДискаЗЛ;
   НоваяЗапись.ДефектДискаПП         = ДокументОбъект.ДефектДискаПП;
   НоваяЗапись.ДефектДискаЗП         = ДокументОбъект.ДефектДискаЗП;


Ну тобишь кучу измерений создал, на сколько это оправданно делать столько измерений? по идее отчеты в разрезе этих измерений не строят, как бы вы сделали? Сделали бы их ресурсами?