|
Свертка записей РС менеджером записи | ☑ | ||
---|---|---|---|---|
0
rowvg
naïve
14.11.22
✎
15:38
|
Есть регистр сведений, независимый, период День - Товар - Склад
Почему вот такой код Процедура Команда1НаСервере() Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ Период, Товар, Склад |ИЗ РегистрСведений.Цены"; Выборка = Запрос.Выполнить().Выбрать(); МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Пока Выборка.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Период = Выборка.Период; МенеджерЗаписи.Товар = Выборка.Товар; МенеджерЗаписи.Склад = Выборка.Склад; МенеджерЗаписи.Цена = 1; МенеджерЗаписи.Записать(Истина); КонецЦикла; КонецПроцедуры устанавливает всем записям в регистре цену = 1, а вот такой Процедура Команда1НаСервере() МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ Период, Товар, Склад |ИЗ РегистрСведений.Цены"; Выборка = Запрос.Выполнить().Выбрать(); МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Пока Выборка.Следующий() Цикл МенеджерЗаписи.Период = Выборка.Период; МенеджерЗаписи.Товар = Выборка.Товар; МенеджерЗаписи.Склад = Выборка.Склад; МенеджерЗаписи.Цена = 1; МенеджерЗаписи.Записать(Истина); КонецЦикла; КонецПроцедуры сворачивает все записи до одной. То есть в регистре остается только одна запись с измерениями, которые в выборке были последними. |
|||
1
vicof
14.11.22
✎
16:09
|
А немножко подумать? Совсем чуть-чуть?
|
|||
2
rowvg
naïve
14.11.22
✎
16:28
|
(1) Не выделывайся. Если знаешь - напиши, а нет - проходи мимо.
|
|||
3
Kassern
14.11.22
✎
16:35
|
(0)
МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Пока Выборка.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); VS МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Пока Выборка.Следующий() Цикл |
|||
4
rowvg
naïve
14.11.22
✎
16:38
|
(3) Не влияющая на процесс опечатка
МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ Период, Товар, Склад |ИЗ РегистрСведений.Цены"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МенеджерЗаписи.Период = Выборка.Период; МенеджерЗаписи.Товар = Выборка.Товар; МенеджерЗаписи.Склад = Выборка.Склад; МенеджерЗаписи.Цена = 1; МенеджерЗаписи.Записать(Истина); КонецЦикла; и Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ Период, Товар, Склад |ИЗ РегистрСведений.Цены"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Период = Выборка.Период; МенеджерЗаписи.Товар = Выборка.Товар; МенеджерЗаписи.Склад = Выборка.Склад; МенеджерЗаписи.Цена = 1; МенеджерЗаписи.Записать(Истина); КонецЦикла; |
|||
5
rowvg
naïve
14.11.22
✎
16:40
|
если использовать Прочитать() то работает правильно в обоих случаях. Всегда вызываю Прочитать() в таких случаях и с подобным раньше не встречался.
|
|||
6
rowvg
naïve
14.11.22
✎
16:51
|
Или без чтения данных нельзя работать с менеджером записи?
|
|||
7
SleepyHead
гуру
14.11.22
✎
16:56
|
(5) А у меня в подобной ситуации не помогало. Но я чайник тоже в 1с.
Помогло то, что всегда создавал новый менеджер, как и советовали выше. |
|||
8
rowvg
naïve
14.11.22
✎
17:02
|
(7) С прочитать все работает
МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ Период, Товар, Склад |ИЗ РегистрСведений.Цены"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МенеджерЗаписи.Период = Выборка.Период; МенеджерЗаписи.Товар = Выборка.Товар; МенеджерЗаписи.Склад = Выборка.Склад; МенеджерЗаписи.Прочитать(); Если МенеджерЗаписи.Выбран() Тогда МенеджерЗаписи.Цена = 1; МенеджерЗаписи.Записать(Истина); КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |