|
Добавить записи в регистр сведений ЗУП | ☑ | ||
---|---|---|---|---|
0
Тринадцать
02.03.23
✎
09:35
|
Всем привет конфа ЗУП 3.1.23.458. Добавляю записи в свой регистр сведений (непериодический, подчинен регистратору Исполнительный лист). При первом проведении запись создается, при повторном проведении - запись удаляется из регистра, никаких ошибок не выдает. Т.е записывается в регистр, только если нет записи с этим регистратором. Подскажите в чем ошибка?
НаборЗаписей = РегистрыСведений.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); // НаборЗаписей.Прочитать(); // НаборЗаписей.Очистить(); пробовала добавить, но нет Запрос = Новый Запрос; Запрос.Текст ... выбираем доп реквизиты из Испол.листа, их будем записывать в регистр Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); НоваяЗапись = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка); НоваяЗапись.Регистратор = Источник.Ссылка; НаборЗаписей.Записать(); |
|||
1
magicSan
02.03.23
✎
09:44
|
НаборЗаписей = РегистрыСведений.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписей.Прочитать(); Запрос = Новый Запрос; Запрос.Текст ... выбираем доп реквизиты из Испол.листа, их будем записывать в регистр наборЗаписей.загрузить(Запрос.Выполнить().Выбрать().выгрузить()); НаборЗаписей.Записать(); |
|||
2
Тринадцать
02.03.23
✎
12:17
|
(1) Запрос.Выполнить().Выбрать().выгрузить() - Выбрать() тут лишнее:))
Попробовала так, но при повторном проведение запись в регистре все-равно исчезает. первый раз проводу - записывается корректно, а второй раз - удаляется запись. Ошибок не выдает. |
|||
3
Serg_1960
02.03.23
✎
14:51
|
Цитата: "...Для удаления записей можно выполнять запись пустого набора без выполнения считывания..."
Источник: "Манипулирование записями регистров без использования регистратора" - https://its.1c.ru/db/metod8dev/content/2719/hdoc |
|||
4
Тринадцать
02.03.23
✎
15:49
|
(3) Если я правильно поняла, сделала так:
НаборЗаписей = РегистрыСведений.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП.СоздатьНаборЗаписей(); //создаю набор записей НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписей.Прочитать(); НаборЗаписей.Записать(); // записываю пустой набор по данному регистратору Потом Запрос.. Результат = Запрос.Выполнить(); ТЗ = Результат.выгрузить(); НаборЗаписей = РегистрыСведений.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписей.Загрузить(ТЗ); НаборЗаписей.Записать(); Ошибка сохраняется. При повторном проведении документа, когда запись уже есть в регистре, запись удаляется. |
|||
6
Skylark
02.03.23
✎
21:08
|
Прежде чем растекаться мыслею по древу, я бы сначала тупо посмотрел в отладчике, что в НаборЗаписей.
Точку останова на НаборЗаписей.Записать().Записать(); |
|||
7
rudnitskij
02.03.23
✎
22:20
|
(4) "НаборЗаписей = РегистрыСведений.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП.СоздатьНаборЗаписей(); //создаю набор записей
НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписей.Прочитать(); НаборЗаписей.Записать(); // записываю пустой набор по данному регистратор" ----------------- Если набор содержит записи - в какой момент и с какой радости он должен стать пустым? |
|||
8
Serg_1960
03.03.23
✎
09:02
|
(4) Скорее всего, имхо, запрос составлен таким образом, что при "первом" запуске он возвращает данные (набор записывается), а при "повторном" запуске - запроса ничего не возвращает (а запись "пустого" набора == удаление набора).
//Вместо Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); ... // напишите Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ... КонецЕсли; |
|||
9
Dmitrii
гуру
03.03.23
✎
10:44
|
Не занимайтесь ерундой. Движения по регистратору система очищает автоматически в общем модуле ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений.
Там же система определяет какие наборы записей будут записываться. Объект.Движения[ИмяРегистра].Записывать = Истина. Ваш регистр при повторном перепроведении непременно попадает в список тех, которые будут записываться, т.к. в нём есть записи (возникшие при первом проведении). Делайте всё через коллекцию Движений документа. Замените своё
на одну строчку
Уберите всякие Прочитать() и Очистить(). В конце вместо
напишите
И будет вам счастье. |
|||
10
Тринадцать
03.03.23
✎
11:09
|
(9)Dmitrii Большое спасибо!!! Получилось!
НаборЗаписей = Источник.Движения.ИНФ_РеквизитыИсполЛистовДляВыгрузкиБП; - не знала этой фишки |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |