|
дублирование записей | ☑ | ||
---|---|---|---|---|
0
wwwqwert2014
20.08.14
✎
21:35
|
Не могу понять, почему происходит дублирование записей. То есть один раз провел документ начисление зарплаты, сформировались записи. Второй раз провел, сформировались ЕЩЕ записи, а старые не очистились. И так далее.
Например, если 10 раз провести документ, то сформируется 10 записей Взносы в РР Удержания |
|||
1
wwwqwert2014
20.08.14
✎
21:41
|
вот скрин. Как думаете, в чем может быть дело? http://i67.fastpic.ru/big/2014/0820/f8/5d8806a894211669b6c6a802b97724f8.png
|
|||
2
Мимохожий Однако
20.08.14
✎
21:41
|
Добавь удаление записей перед проведением
|
|||
3
wwwqwert2014
20.08.14
✎
21:41
|
обработка проведения
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Экспорт // Вставить содержимое обработчика. Движения.ОсновныеНачисления.Записывать = Истина; Движения.ДополнительныеНачисления.Записывать = Истина; Движения.Удержания.Записывать = Истина; Движения.ОсновныеНачисления.Записать(); Движения.ДополнительныеНачисления.Записать(); Движения.Удержания.Записать(); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыОсновныеНачисления.Сотрудник, | НачислениеЗарплатыОсновныеНачисления.Подразделение, | НачислениеЗарплатыОсновныеНачисления.Должность, | НачислениеЗарплатыОсновныеНачисления.ВидРасчета, | НачислениеЗарплатыОсновныеНачисления.ПериодДействияНачало, | КОНЕЦПЕРИОДА(НачислениеЗарплатыОсновныеНачисления.ПериодДействияКонец, ДЕНЬ) КАК ПериодДействияКонец, | НачислениеЗарплатыОсновныеНачисления.Результат, | НачислениеЗарплатыОсновныеНачисления.Ссылка КАК Регистратор, | НачислениеЗарплатыОсновныеНачисления.Ссылка.ПериодРегистрации, | ЕСТЬNULL(ФиксированнаяСумма.Сумма, 0) КАК ФиксированнаяСумма, | ЕСТЬNULL(ГрафикиПодразделений.График, ЗНАЧЕНИЕ(Справочник.Графики.ПустаяСсылка)) КАК График, | НачислениеЗарплатыОсновныеНачисления.Переработка |ИЗ | Документ.НачислениеЗарплаты.ОсновныеНачисления КАК НачислениеЗарплатыОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФиксированнаяСумма КАК ФиксированнаяСумма | ПО (ИСТИНА) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиПодразделений КАК ГрафикиПодразделений | ПО НачислениеЗарплатыОсновныеНачисления.Подразделение = ГрафикиПодразделений.Подразделение |ГДЕ | НачислениеЗарплатыОсновныеНачисления.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НачислениеЗарплатыДополнительныеНачисления.Сотрудник, | НачислениеЗарплатыДополнительныеНачисления.Подразделение, | НачислениеЗарплатыДополнительныеНачисления.Должность, | НачислениеЗарплатыДополнительныеНачисления.ВидРасчета, | НачислениеЗарплатыДополнительныеНачисления.Результат, | НачислениеЗарплатыДополнительныеНачисления.Процент, | НачислениеЗарплатыДополнительныеНачисления.Ссылка КАК Регистратор, | НачислениеЗарплатыДополнительныеНачисления.Ссылка.ПериодРегистрации |ИЗ | Документ.НачислениеЗарплаты.ДополнительныеНачисления КАК НачислениеЗарплатыДополнительныеНачисления |ГДЕ | НачислениеЗарплатыДополнительныеНачисления.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.ВыполнитьПакет(); ВыборкаОсновные = РезультатЗапроса[0].Выбрать(); ВыборкаДополнительные = РезультатЗапроса[1].Выбрать(); Пока ВыборкаОсновные.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Движение = Движения.ОсновныеНачисления.Добавить(); ЗаполнитьЗначенияСвойств(Движение, ВыборкаОсновные,,"Результат"); Если ВыборкаОсновные.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Фикс Тогда Движение.Результат = ВыборкаОсновные.ФиксированнаяСумма; КонецЕсли; Если ВыборкаОсновные.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Фикс Тогда Движение = Движения.Удержания.Добавить(); ЗаполнитьЗначенияСвойств(Движение, ВыборкаОсновные,, "Результат, ВидРасчета"); Движение.ВидРасчета = ПланыВидовРасчета.Удержания.Взносы; Движение.БазовыйПериодНачало = НачалоМесяца(ПериодРегистрации); Движение.БазовыйПериодКонец = КонецМесяца(Движение.БазовыйПериодНачало); КонецЕсли; Если ВыборкаОсновные.видРасчета = ПланыВидовРасчета.ОсновныеНачисления.Сверхурочные Тогда Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(ПериодРегистрации, -1)); Движение.БазовыйПериодКонец = КонецМесяца(Движение.БазовыйПериодНачало); КонецЕсли; КонецЦикла; Движения.ОсновныеНачисления.Записать(); Движения.Удержания.Записать(); Пока ВыборкаДополнительные.Следующий() Цикл Движение = Движения.ДополнительныеНачисления.Добавить(); ЗаполнитьЗначенияСвойств(Движение, ВыборкаДополнительные, ,"Результат"); Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(ПериодРегистрации, -1)); Движение.БазовыйПериодКонец = КонецМесяца(Движение.БазовыйПериодНачало); КонецЦикла; Движения.ДополнительныеНачисления.Записать(); Рассчет.РассчитатьОсновныеНачисления(Движения.ОсновныеНачисления, Ссылка); Рассчет.РассчитатьДополнительныеНачисления(Движения.ДополнительныеНачисления, Ссылка); Рассчет.РассчитатьУдержания(Движения.Удержания, Ссылка); КонецПроцедуры |
|||
4
wwwqwert2014
20.08.14
✎
21:42
|
я добавил удаление записей перед проведением. Видите? пустые движения записываю.
Да и какое удаление! Движения.ИмяРегистра.Записать() используется для того, чтобы при записи не учитывались старые движения документа |
|||
5
wwwqwert2014
20.08.14
✎
21:42
|
тут что-то другое, а что не могу понять
|
|||
6
ДенисЧ
20.08.14
✎
21:43
|
Движения.ОсновныеНачисления.Очистить();
Движения.ОсновныеНачисления.Записать(Истина); |
|||
7
Мимохожий Однако
20.08.14
✎
21:44
|
У регистратора включи свойство "Удалять движения перед.."
|
|||
8
wwwqwert2014
20.08.14
✎
21:48
|
Движения.ОсновныеНачисления.Очистить(); помогло
|
|||
9
wwwqwert2014
20.08.14
✎
21:49
|
Только такой вопрос. Почему такая фигня происходит с РР? с РН и РБ такого не было? Почему сохраниются движения после завершения работы процедуры ОбработкаПроведения?
|
|||
10
wwwqwert2014
20.08.14
✎
21:50
|
Сейчас специально открыл код примера 1С. У них все работает без всяких там Очистить(). Почему у меня тогда без Очистить() не работает?
|
|||
11
wwwqwert2014
20.08.14
✎
21:57
|
Почему в примере 1С все работает как надо без Очистить, в моем требуется очистка движений и они автоматом не очищаются?
Вот в архиве пример 1с (пример решения экзаменационного задания спеца по платформе) и мой код http://rghost.ru/57577598 |
|||
12
Мимохожий Однако
20.08.14
✎
22:09
|
В твоей конфигурации в свойстве Удалять движения наверняка установлено "Не удалять автоматически". Поэтому и помогло то, что подсказали. Либо свойством регулируешь, либо программным кодом. ИМХО, зря удивляешься. Просто не добрался до истины.
|
|||
13
wwwqwert2014
20.08.14
✎
22:12
|
А вот и нифига. Стоит у меня "Удалять автоматически при отмене проведения". Я всегда такое стояло. И работало
|
|||
14
wwwqwert2014
20.08.14
✎
22:12
|
И всегда такое ставил
|
|||
15
wwwqwert2014
20.08.14
✎
22:13
|
Посмотрел в код примера 1С. У них тоже стоит Удалять автоматически при отмене проведения
|
|||
16
Мимохожий Однако
20.08.14
✎
22:16
|
А ты поставь просто "Удалять автоматически".
Или в Запись движений при проведении значение "Удаление движений". Всегда есть вариации. |
|||
17
wwwqwert2014
20.08.14
✎
23:03
|
С этим моментом все понятно. Непонятно одно: почему в примере 1С все без танцев с бубном работает?
|
|||
18
1sanekmaloi1
21.08.14
✎
01:02
|
У тебя при открытии формы читаются движения на форму, поэтому в обработке проведения наборы не пустые, убери с формы обращение к Объект.Движения и будет работать без принудительной очистки движений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |