|
Создание набора записей регистра накопления с пересекающимися измерениями |
☑ |
0
Bon Jovi
25.03.21
✎
14:27
|
Добрый день. УТ 10, 8.3, обычные формы. Подскажите пожалуйста, в обработчике события "ОбработкаПроведения" документа хочу добавить возможность добавить создание дополнительной записи в регистр накопления. То есть в определённый регистр запись уже формируется, но при определённом условие в этот же регистр с формированием первой записи хочу добавить формирование ещё одной записи. В этом регистре накопления (к примеру) 7 измерений и 2 ресурса. При формировании первой записи используются все поля, а при формировании ДОПОЛНИТЕЛЬНОЙ записи используются 4 измерения и 1 ресурс. Получается не используются 3 измерения и 1 ресурс, и одно из одинаковых измерений имеет разные данные. По факту это же разные записи/движения в регистре, но никак не создаётся дополнительная запись. Добавляю так:
НаборДвижений = РегистрыНакопления.НазваниеРегистраНакопления.СоздатьНаборЗаписей();
НаборДвижений.Отбор.Регистратор.Установить(Ссылка);
НаборДвижений.Период = Дата;
НаборДвижений.ТаблицаСоВсемиПолямиРегистра = ТаблицаСоВсемиЗначениямиДляВсехПолейРегистра;
НаборДвижений.Записать();
|
|
1
Почему 1С
25.03.21
✎
14:33
|
НаборДвижений = Движения.НазваниеРегистраНакопления;
|
|
2
Bon Jovi
25.03.21
✎
14:36
|
(1) предыдущая запись (основная) так и формируется. Получалось так. Я переопределял значение НаборДвижений.ТаблицаСоВсемиПолямиРегистра (старое) на ТаблицаСоВсемиЗначениямиДляВсехПолейРегистра (новое) , и результат не менялся, формировалась только основная запись.
|
|
3
Почему 1С
25.03.21
✎
14:44
|
(2) Подозреваю
Что после записи набора из (0)
Происходит запись (стандартная запись движений) старого набора, который возвращает все как было без твоих добавлений
|
|
4
Bon Jovi
25.03.21
✎
14:47
|
(3) я тоже так думаю, но как обойти этот момент, чтобы в одном месте (где создаются движения по всем регистрам), добавить мой функционал и он работал... Он отрабатывает, если включить его в запись к основному функционал, но это не совсем верно, так как проходит всё в одной транзакции и номера строки первого движения и второго соединяются в единый список (от 1 до ...)
|
|
5
Bon Jovi
25.03.21
✎
14:49
|
(3) хотя опять же, я по факту, опережаю конечную запись основного функционала и создаю свою запись со своими уникальными полями (разными измерениями) и по идеи ничего удалять основной функционал не должен, даже если учесть то, что при записи основного функционал стоит режим записи Записать(Истина) - что по идеи удаляет предыдущие значения .
|
|
6
Почему 1С
25.03.21
✎
15:00
|
короче или добавляй в регистр через Движения
или уже после транзакции (проведения)
НаборДвижений = РегистрыНакопления.НазваниеРегистраНакопления.СоздатьНаборЗаписей();
НаборДвижений.Отбор.Регистратор.Установить(Ссылка);
НаборДвижений.Прочитать()
добавить свою новую запись
НаборДвижений.Записать();
|
|
7
Bon Jovi
25.03.21
✎
17:04
|
(6) при любом раскладе он добавляет записи уже к существующим, и нумерация строк этих движений по 1у документу становится общей.
|
|
8
Bon Jovi
25.03.21
✎
17:25
|
Тема закрыта. Всё правильно делал и советы были верны. По одному регистратору создаётся общий набор записей и его нельзя разбить . Неправильно поняли друг друга с коллегой.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший