Имя: Пароль:
1C
1С v8
Напомните механизм проведение доков по одному регистру при это не трогая записи по другим.
0 Обработка
 
04.12.20
09:09
Я еще со времен 1с77 реализовывал такое.
Но вот в УТ обычные формы хочу сделать такое но не могу вспомнить как.
Документ имеет записи по 11 регистрам хочу в модуле проведения прописать так чтоб проводился участок именно
только по одному. Как это делать?

Требование такое что при перепроведении вообще не затрагивались участки кода по другим РН.
Погуглил и нашел механизм через обработку где в транзакции проводится док целиком но прерывается транзакция а после только требуемый регистр записывается.
Мне это не подходит ибо главное требование это время проведения.
А второе требование не трогать записи по другим.
1 Обработка
 
04.12.20
09:12
+ Возможно надо мне и подписки глянуть.
Пока не дошло до этого.
2 2S
 
04.12.20
09:12
разовая обработка?
3 Обработка
 
04.12.20
09:15
(2) Пока как разовая идет. Если проблема учета не решится будет постоянной еще пол года проводить  будем раз в месяц.
4 Обработка
 
04.12.20
09:17
Все таки предлагаете не в модуле дока менять а сделать внешнюю обработку по замене его движений?
5 2S
 
04.12.20
09:17
ну ник обязывает написать обработку корректировок регистров с отбором по регистратору
6 ДенисЧ
 
04.12.20
09:17
Своя процедура, формирующая нужные записи. И потом запись в набор записей соответствующего регистры.
7 Dmitrii
 
гуру
04.12.20
09:39
(0) Способов множество. Применение конкретного зависит от конфигурации, от ситуации и от ответа на вопрос из (2).

Один из общих универсальных вариантов.
1. Написать обработку, которая перебирая документы сохраняет в ДополнительныеСвойства документа-объекта существующие наборы записей всех регистров (движения) по документу. Плюс установливает какой-нибудь флаг там же в ДополнительныеСвойства документа, что надо будет чистить движения.
2. Либо в  расширении после ОбработкаПроведения, либо в подписке на событие ОбработкаПроведения добавить код, который анализировал бы ДополнительныеСвойства документа на наличие и значение флага указывающего на необходимость чистки движений. Если свойство есть и его значение Истина, то возвращаем все наборы записей по этому документу (кроме одного - который надо поменять) в исходное состояние, какое было на шаге 1.
Можно еще в п.3 попробовать установить для соответствующих наборов записей свойство Записывать=Ложь. Но это уже зависит от конфигурации - установлено ли у документа свойство Запись движений при проведении "Записывать выбранные" и нет ли где-нибудь в коде обработки проведения принудительной записи наборов.
8 Обработка
 
04.12.20
11:09
(7) Не то. Главное требование не проводить сам документ полноценно а проводить только по одному РН.
Это колосально экономит время. И данные не меняюся по остальным РН
9 Обработка
 
04.12.20
11:10
(5) (6) Если не найду другого решение придется так и сделать.
10 Фрэнки
 
04.12.20
11:16
(9) ты так это пишешь, как будто это какой-то кошмар.

Создаешь нужный набор записей регистра, по отбору регистратор получаешь все его записи. Создаешь новые записи для этого набора, грузишь их в него, записываешь.
Остальные наборы записей регистров, формально связанные с этим же регистратором, никак не будут перезаписываться. Регистратор и все его данные даже не заметят такого действия.
11 Вафель
 
04.12.20
11:19
в 8 можно просто записывать движения в регистр.
чтобы было удобно по отдельности это делать, то должны быть экспортные процедуры формирования движения по отдельности
12 mikecool
 
04.12.20
11:21
процедуры формирования движений вынести в общедоступное место(ОМ, модуль менеджера регитсра)
запускать из из обработки
профит
13 mikecool
 
04.12.20
11:22
+12 в обработке проведения - только вызовы этих процедур
14 Обработка
 
04.12.20
11:25
(10) ДА не кошмар.
Просто ведь надо сделать подготовительные таблицы. А это лень.
15 БаксПо90
 
04.12.20
11:26
вообще все типовые написаны так что у них уже видно как пакет готовит конкретный набор записей, потом эти наборы попадают в нужные движение ..но правда пишется все вместе ..
правда есть примеры в тех же типовых когда там даже сравнивается что писалось и что надо писать ..
но вот в боевом решении
в обработке что то переписывать еще можно ..ну когда там сломал что то или решил поменять по одному регистру ..
но вот разрывать запись по регистрам стремно .. хотя раньше каждый по отдельности вроде и писался .. давно правда это было
16 Вафель
 
04.12.20
11:26
(12) вполне можно и в модуле объекта оставить
Объект.СформироватьДвиженияПоРегистру()
Объект.Движения.Регистр.Записать()
17 Обработка
 
04.12.20
11:28
Ааа
У меня же в некоторых доках еще идет запись в ТЧ дока другие данные для проведения.
Готовлю данные
Записываю в ТЧ без проведения так
Потом обработкой провожу так?
18 Обработка
 
04.12.20
11:30
+(17) В процедуре ПередЗаписью()
19 Serg_1960
 
04.12.20
11:31
20 БаксПо90
 
04.12.20
11:31
проведение это и запись движений в коде.. как ты ее организуешь так и будет ..
можешь частями можешь сразу .. просто все хорошо, когда в меру .. а то потом ошибки устанешь ловить ..
я тут долохматил свою базу .. что у меня регистры писались а проводки нет ..
пользователи отменяют проведение а у них все на месте)
21 Вафель
 
04.12.20
11:32
(18) если нужно еще и документы менять, то лучше разделить процесс на 2 части
22 Обработка
 
04.12.20
11:34
(19) Не подходит. Выше уже сказал. Хочу быстро.
А проведении дока даже с отменой транзакции все равно время.
23 Serg_1960
 
04.12.20
11:38
PS: имхо, при написании своего алгоритма перепроведения документа по выбранному регистру, следую не забывать о ситуации, когда документ не может быть перепроведен (по причине возникновения такой ситуации с перепроведением по другим регистрам, кроме выбранного).
24 Serg_1960
 
04.12.20
11:42
(22) Тогда у Вас единственный путь: изучить типовые алгоритмы с целью возможности их вынесения в свою обработку. Иногда бывает везёт - в типовой конфигурации нужное движение формируется отдельной процедурой/функцией.
25 Serg_1960
 
04.12.20
11:46
В типовых есть нечто подобное - называется "отложенное проведение"
26 Фрэнки
 
04.12.20
11:48
(24) вангую - даже если она у него была "типовая", то от той типовой уже много-много лет прошло и следов от типовой почти не осталось.
27 БаксПо90
 
04.12.20
11:54
судя по всему типовой нет .. там код допроведения очевиден .. просто его для каждого конкретного случая еще доковырять надо ..
28 Обработка
 
04.12.20
12:06
Тем кто  вангует.
У нас УТ для каз 2.2 (2.2.11.7) Это аналог УТ 10.Х.ХХ
Получается не обновляли с 2011-го года. Но что-то переносили.
Прикрутили туда до меня учет по Источникам происхождения.
И Учет по нему велся ужасно бардачно.
Задача у меня привести этот учет в порядок.
Учет по источникам начали с октября 2017 года.
И учет ведется в отдельном регистре.
29 Фрэнки
 
04.12.20
12:10
(28) ну я потому и написал как можно более кратко, выше.

Да, придется каким-то образом сформировать новую таблицу скорректированных движений, которую где-то что-то формировало само, если бы перезаполняли и перепроводили документ целиком.

А если и тем более, что учет ведется в отдельном регистре, то вот так и придется действовать, что повторить кусок процедур проведения в отдельной служебной процедуре/обработке :-)
30 Serg_1960
 
04.12.20
16:11
PS: зря я использовал словосочетание "типовые алгоритмы"- это увело обсуждение в неверное русло. "Штатные", "стандартные", "используемые" алгоритмы - лишь бы это не отождествлялось с устойчивым словосочетанием "типовая конфигурация".
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший