![]() |
|
Не записывает в Регистр сведений | ☑ | ||
---|---|---|---|---|
0
john2013
12.06.19
✎
12:21
|
Здравствуйте, подскажите где ошибка, может кто сталкивался.
Имеется независимый, непериодический регистр сведений. Добавил измерение ссылка на документ. Хочу сделать запись в РС при проведении. Ошибок не выдает, но и записи не появляются. Если НовыйНаборЗаписей.Количество() = 0 Тогда Для Каждого СтрокаТЧ Из ТабельСотрудников Цикл НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить(); НоваяЗаписьНабора.ПериодДействия = Дата; НоваяЗаписьНабора.Организация = Организация.Ссылка; НоваяЗаписьНабора.Подразделение = Подразделение.Ссылка; НоваяЗаписьНабора.Показатель = Показатель.Ссылка; НоваяЗаписьНабора.pzСсылкаТабельПремий = ДокСсылка; Колво = 0; Для Сч = 1 По 31 Цикл Если СтрокаТЧ["Начислить" + Строка(Сч)] = Истина Тогда Колво = Колво + 1; КонецЕсли; КонецЦикла; НоваяЗаписьНабора.Сотрудник = СтрокаТЧ.Сотрудник.Ссылка; НоваяЗаписьНабора.Значение = Колво; КонецЦикла; КонецЕсли; |
|||
1
john2013
12.06.19
✎
12:23
|
Перед проверкой
ДокСсылка = Ссылка; НовыйНаборЗаписей = РегистрыСведений.ЗначенияПоказателейСхемМотивации.СоздатьНаборЗаписей(); Отбор = НовыйНаборЗаписей.Отбор; Отбор.pzСсылкаТабельПремий.Установить(ДокСсылка, Истина); |
|||
2
PuhUfa
12.06.19
✎
12:28
|
А записать то где?
|
|||
3
john2013
12.06.19
✎
12:29
|
хотел кусок, даю полную
ДокСсылка = Ссылка; НовыйНаборЗаписей = РегистрыСведений.ЗначенияПоказателейСхемМотивации.СоздатьНаборЗаписей(); Отбор = НовыйНаборЗаписей.Отбор; Отбор.pzСсылкаТабельПремий.Установить(ДокСсылка, Истина); Если НовыйНаборЗаписей.Количество() = 0 Тогда Для Каждого СтрокаТЧ Из ТабельСотрудников Цикл НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить(); НоваяЗаписьНабора.ПериодДействия = Дата; НоваяЗаписьНабора.Организация = Организация.Ссылка; НоваяЗаписьНабора.Подразделение = Подразделение.Ссылка; НоваяЗаписьНабора.Показатель = Показатель.Ссылка; НоваяЗаписьНабора.pzСсылкаТабельПремий = ДокСсылка; Колво = 0; Для Сч = 1 По 31 Цикл Если СтрокаТЧ["Начислить" + Строка(Сч)] = Истина Тогда Колво = Колво + 1; КонецЕсли; КонецЦикла; НоваяЗаписьНабора.Сотрудник = СтрокаТЧ.Сотрудник.Ссылка; НоваяЗаписьНабора.Значение = Колво; КонецЦикла; КонецЕсли; Иначе НовыйНаборЗаписей.Прочитать(); НовыйНаборЗаписей.Очистить(); Для Каждого СтрокаТЧ Из ТабельСотрудников Цикл Запись = НоваяЗаписьНабора[0]; Запись.ПериодДействия = Дата; Запись.Организация = Организация.Ссылка; Запись.Подразделение = Подразделение.Ссылка; Запись.Показатель = Показатель.Ссылка; Запись.pzСсылкаТабельПремий = Ссылка; Колво = 0; Для Сч = 1 По 31 Цикл Если СтрокаТЧ["Начислить" + Строка(Сч)] = Истина Тогда Колво = Колво + 1; КонецЕсли; КонецЦикла; НоваяЗаписьНабора.Сотрудник = СтрокаТЧ.Сотрудник.Ссылка; НоваяЗаписьНабора.Значение = Колво; КонецЦикла; КонецЕсли; НовыйНаборЗаписей.Записать(); |
|||
4
PuhUfa
12.06.19
✎
12:32
|
Ужас какой... Ты хоть сам, словами, можешь объяснить, что у тебя делается в той или иной строчке кода?
|
|||
5
john2013
12.06.19
✎
12:37
|
думаю что да
|
|||
6
Красный рассвет
12.06.19
✎
12:38
|
Запись.Записать(), а не НовыйНаборЗаписей.Записать() как минимум
|
|||
7
john2013
12.06.19
✎
12:38
|
при отладке считает и заполняются как надо, но вот запись в регистр не делается.
|
|||
8
john2013
12.06.19
✎
12:39
|
я до второй секции пока не дошел, потому что при проведении попадет в первую ветку
|
|||
9
PuhUfa
12.06.19
✎
12:41
|
(7) Запись в базу делается, вот только на момент: НовыйНаборЗаписей.Записать(); НовыйНаборЗаписей - у тебя пустой.
|
|||
10
Красный рассвет
12.06.19
✎
12:43
|
(8) Тогда - НоваяЗаписьНабора.Записать()
Будь мужиком, запиши запись! |
|||
11
john2013
12.06.19
✎
12:45
|
вот и я не могу понять где ошибка. при отладке, Сотрудник, колво все данные есть, а набор получается пустой
|
|||
12
PuhUfa
12.06.19
✎
12:51
|
(11) ну раз ты сам не хочешь проговорить свой код тогда давай попробуем мы.
Ты создаешь НаборЗаписей - НовыйНаборЗаписей Ты устанавливаешь для него отбор Потом ты перебирая ТЧ добавляешь в созданный набор записи (НовыйНаборЗаписей.Количество() в твоем коде всегда = 0) Потом ты читаешь данные из базы и затираешь все что добавил на этапе выше. Ты не успокаиваешься и делаешь своему набору еще и Очистить() Дальше ты опять перебираешь ТЧ и запихиваешь из нее данные в одну единственную структуру НоваяЗаписьНабора[0] после чего ты спокойно записываешь свой пустой НовыйНаборЗаписей в БД |
|||
13
Мимохожий Однако
12.06.19
✎
13:03
|
Отбор по периоду где?
|
|||
14
john2013
12.06.19
✎
13:14
|
(12) Убрал всех хлам что бы не путаться
ДокСсылка = Ссылка; НовыйНаборЗаписей = РегистрыСведений.ЗначенияПоказателейСхемМотивации.СоздатьНаборЗаписей(); Отбор = НовыйНаборЗаписей.Отбор; Отбор.pzСсылкаТабельПремий.Установить(ДокСсылка, Истина); Для Каждого СтрокаТЧ Из ТабельСотрудников Цикл НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить(); НоваяЗаписьНабора.ПериодДействия = Дата; НоваяЗаписьНабора.Организация = Организация.Ссылка; НоваяЗаписьНабора.Подразделение = Подразделение.Ссылка; НоваяЗаписьНабора.Показатель = Показатель.Ссылка; НоваяЗаписьНабора.pzСсылкаТабельПремий = ДокСсылка; Колво = 0; Для Сч = 1 По 31 Цикл Если СтрокаТЧ["Начислить" + Строка(Сч)] = Истина Тогда Колво = Колво + 1; КонецЕсли; КонецЦикла; НоваяЗаписьНабора.Сотрудник = СтрокаТЧ.Сотрудник.Ссылка; НоваяЗаписьНабора.Значение = Колво; КонецЦикла; НовыйНаборЗаписей.Записать(); |
|||
15
Красный рассвет
12.06.19
✎
13:14
|
(13) РС непереодический, независимый.
Необходимо и достаточно записать создаваемую запись соответствующей командой, но ТС этого делать пока не хочет. |
|||
16
Красный рассвет
12.06.19
✎
13:17
|
(14) В конце цикла - НоваяЗаписьНабора.Записать();
|
|||
17
john2013
12.06.19
✎
13:22
|
(16) Все рано пустой, данные не добавились
|
|||
18
PuhUfa
12.06.19
✎
13:24
|
(16) откуда у РегистрСведенийЗапись метод Записать()?
(17) а что отладчик то говорит? |
|||
19
john2013
12.06.19
✎
13:32
|
(18) НоваяЗаписьНабора = Данные в отладчике отражены согласно заполненному документу
Вот пример НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Объект.Установить(ПолеВводаНоменклатура); Для Каждого СтрокаТаблицы Из ТаблицаСвойств Цикл НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Объект = ПолеВводаНоменклатура; НоваяЗапись.Свойство = СтрокаТаблицы.Свойство; НоваяЗапись.Значение = СтрокаТаблицы.ЗначениеСвойства; КонецЦикла; НаборЗаписей.Записать(); |
|||
20
PuhUfa
12.06.19
✎
13:40
|
(19) смотри что у тебя в НоваяЗаписьНабора на момент Записать()
|
|||
21
PuhUfa
12.06.19
✎
13:40
|
+(20) в НовыйНаборЗаписей
|
|||
22
john2013
12.06.19
✎
13:42
|
в НовыйНаборЗаписей на момент записи пусто
а вот в цикле данные все ОК |
|||
23
john2013
12.06.19
✎
13:44
|
а вот почему пусто, не понимаю, где ошибка
|
|||
24
PuhUfa
12.06.19
✎
13:58
|
Ну посмотри еще внутри цикла что у тебя получается в НовыйНаборЗаписей.
Еще меня смущает твоя конструкция. Вроде должно быть нормально. но 1С такая 1С Отбор = НовыйНаборЗаписей.Отбор; Отбор.pzСсылкаТабельПремий.Установить(ДокСсылка, Истина); Перепиши на: НовыйНаборЗаписей.Отбор.pzСсылкаТабельПремий.Установить(ДокСсылка) |
|||
25
lEvGl
гуру
12.06.19
✎
14:19
|
(19) должно работать, единственное ПолеВводаНоменклатура сомнительный тип
|
|||
26
john2013
12.06.19
✎
14:32
|
(24) поменял, не помогает. После записи в НовыйНаборЗаписей остается только ссылка на документ, а значения полей пустые
|
|||
27
Мимохожий Однако
12.06.19
✎
15:57
|
Попробуй метод СоздатьМенеджерЗаписи()
|
|||
28
PuhUfa
12.06.19
✎
16:13
|
(26) Ты нам чего то не договариваешь -)
После цикла поставь точку останова и посмотри отладчиком, что в НовыйНаборЗаписей который в строке НовыйНаборЗаписей.Добавить() и что в НовыйНаборЗаписей который в строке НовыйНаборЗаписей.Записать() Кроме как, что это разные наборы других предположений больше нет. >>После записи в НовыйНаборЗаписей остается только ссылка на документ, а значения полей пустые Так у тебя НовыйНаборЗаписей все же совсем пустой или в нем строки с заполненным только "pzСсылкаТабельПремий"? |
|||
29
john2013
12.06.19
✎
18:27
|
(28) в записи только ссылка на документ, а пооя организация, сотрудник и т.д. пустые
|
|||
30
john2013
13.06.19
✎
09:07
|
Запись прошла, ее не было видно в форме списка, просмотрел запросом, все ОК
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |