|
ЗаполнитьЗначенияСвойств() при работе с ТЗ | ☑ | ||
---|---|---|---|---|
0
2S
11.11.18
✎
23:37
|
Откройте глаза на проблему
Кусок кода Для Каждого СтрокаПоказателей Из СтрокиНачисления Цикл Если СтрокаПоказателей.Показатели.Количество() = 0 Тогда ТекущийПроцентСН = 0; Иначе ТекущийПроцентСН = СтрокаПоказателей.Показатели[0].Значение; КонецЕсли; НовоеНачисление = Начисления.Добавить(); ЗаполнитьЗначенияСвойств(НовоеНачисление, СтрокаПоказателей); НовоеНачисление.ИдентификаторСтроки = СледующийИдентификатор; НовоеНачисление.Категория = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда; НовоеНачисление.Начисление = ПерсональнаяНадбавка; НовоеНачисление.Показатели[0].ИдентификаторСтроки = СледующийИдентификатор; НовоеНачисление.Показатели[0].Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Персональная надбавка", Истина); У ТЗ источника есть поле с типом ТаблицаЗначений, называется "Показатели". Казалось бы добавил новую строку, заполним данными от донора. Но почему-то две последние строки кода также меняют значение и в ТЗ источнике. ЗаполнитьЗначенияСвойств() ссылку тоже что ли передает? |
|||
1
Полбатона
11.11.18
✎
23:43
|
а где ты в НовоеНачисление.Показатели строку добавляешь?
|
|||
2
Casey1984
11.11.18
✎
23:46
|
(0) Потому что ТЗ надо копировать (читай создавать) и присваивать, а не просто присваивать.
|
|||
3
2S
11.11.18
✎
23:48
|
(1)
и так было НовыйПоказатель = НовоеНачисление.Показатели.Добавить(); НовыйПоказатель.ИдентификаторСтроки = СледующийИдентификатор; НовыйПоказатель.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Персональная надбавка", Истина); Добавляет и в Источник |
|||
4
2S
11.11.18
✎
23:50
|
(2) ТЗ уже есть, задача добавить новые строки. Уже и копию ТЗ создал, чтобы с него читать, а писать в основное, та же херня
|
|||
5
Casey1984
11.11.18
✎
23:51
|
(4) Покажи как создавал?)
|
|||
6
Полбатона
11.11.18
✎
23:53
|
обожаю, когда топикстартер чего-то недоговаривает или как всегда забывает скопировать кусок кода.
Для Каждого СтрокаПоказателей Из СтрокиНачисления Цикл НовоеНачисление = Начисления.Добавить(); ЗаполнитьЗначенияСвойств(НовоеНачисление, СтрокаПоказателей); Для Каждого табСтрокаПоказателей из СтрокаПоказателей Цикл НовыйПоказатель = НовоеНачисление.Показатели.Добавить(); ЗаполнитьЗначенияСвойств(НовыйПоказатель , табСтрокаПоказателей ); КонецЦикла КонецЦикла; |
|||
7
Casey1984
11.11.18
✎
23:53
|
(4) У тебя вот тут вот что думаешь с ТЗ происходит?
|
|||
8
Полбатона
11.11.18
✎
23:54
|
(6) сорян
Для Каждого табСтрокаПоказателей из СтрокаПоказателей.Показатели Цикл |
|||
9
2S
11.11.18
✎
23:54
|
(6) ок )
//1. удалим текущие строки персональной надбавки, т.к. записи должны быть привязаны только к СН. Сколько записей СН, столько и ПН //2. Заполним показатели относительно регистра соответствий шкал ПерсональнаяНадбавка = ПланыВидовРасчета.Начисления.НайтиПоКоду("ПН"); СевернаяНадбавка = ПланыВидовРасчета.Начисления.НайтиПоКоду("СН"); СтрокиНачисленияПерсональнойНадбавки = Начисления.НайтиСтроки(Новый Структура("Начисление", ПерсональнаяНадбавка)); СледующийИдентификатор = Начисления[Начисления.Количество() - 1].ИдентификаторСтроки + 1; Если СтрокиНачисленияПерсональнойНадбавки.Количество() > 0 Тогда //1. Для Каждого Строка Из СтрокиНачисленияПерсональнойНадбавки Цикл Начисления.Удалить(Строка); КонецЦикла; //2. НачисленияОбработка = Начисления.Скопировать(); СтрокиНачисленияСевернойНадбавки = НачисленияОбработка.НайтиСтроки(Новый Структура("Начисление", СевернаяНадбавка)); Для Каждого СтрокаПоказателей Из СтрокиНачисленияСевернойНадбавки Цикл Если СтрокаПоказателей.Показатели.Количество() = 0 Тогда ТекущийПроцентСН = 0; Иначе ТекущийПроцентСН = СтрокаПоказателей.Показатели[0].Значение; КонецЕсли; НовоеНачисление = Начисления.Добавить(); НовоеНачисление.ИдентификаторСтроки = СледующийИдентификатор; НовоеНачисление.Категория = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда; НовоеНачисление.Начисление = ПерсональнаяНадбавка; //НовоеНачисление.Показатели.Очистить(); //НовыйПоказатель = НовоеНачисление.Показатели.Добавить(); НовоеНачисление.Показатели[0].ИдентификаторСтроки = СледующийИдентификатор; НовоеНачисление.Показатели[0].Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Персональная надбавка", Истина); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ШкалаПерсональныхНадбавок.ПроцентПерсональнойНадбавки КАК ПроцентПерсональнойНадбавки |ИЗ | РегистрСведений.ШкалаПерсональныхНадбавок КАК ШкалаПерсональныхНадбавок |ГДЕ | ШкалаПерсональныхНадбавок.ПроцентСевернойНадбавки = &ПроцентСевернойНадбавки"; Запрос.УстановитьПараметр("ПроцентСевернойНадбавки", ТекущийПроцентСН); РезультатЗапросаВыборка = Запрос.Выполнить().Выбрать(); Если РезультатЗапросаВыборка.Следующий() Тогда НовоеНачисление.Показатели[0].Значение = РезультатЗапросаВыборка.ПроцентПерсональнойНадбавки; Иначе НовоеНачисление.Показатели[0].Значение = 0; КонецЕсли; СледующийИдентификатор = СледующийИдентификатор + 1; КонецЦикла; КонецЕсли; |
|||
10
Casey1984
11.11.18
✎
23:54
|
(7) -> ЗаполнитьЗначенияСвойств(НовоеНачисление, СтрокаПоказателей);
|
|||
11
Casey1984
11.11.18
✎
23:57
|
(9) и тут я не вижу откуда у тебя строка появилась... НовоеНачисление.Показатели[0] ?
|
|||
12
2S
11.11.18
✎
23:58
|
(9) Строку ЗаполнитьЗначенияСвойств(НовоеНачисление, СтрокаПоказателей); видите?
А она там есть ) случайно удалил, |
|||
13
2S
11.11.18
✎
23:59
|
(11) вот это меня и смущает,
после ЗаполнитьЗначенияСвойств(НовоеНачисление, СтрокаПоказателей); она уже есть Ощущение, что со ссылкой работаю |
|||
14
Casey1984
11.11.18
✎
23:59
|
(12) так вот она все и портит. сделай Показатели = Новый ТаблицаЗначений
|
|||
15
Casey1984
11.11.18
✎
23:59
|
(13) да! все, я спать)
|
|||
16
Casey1984
12.11.18
✎
00:02
|
(13) ты же объект присваиваешь, с чего он новый будет?) доброй ночи)
|
|||
17
2S
12.11.18
✎
00:02
|
(15) тьфу млин, туплю на ночь , спасибо
|
|||
18
Мимохожий Однако
12.11.18
✎
07:22
|
Для остроты восприятия всегда помогает отладчик.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |