Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Изменение субконто в проводках напрямую (http://forums.kuban.ru/f1040/izmenenie_subkonto_v_provodkah_napryamuyu-3672279.html)

DenisV 08.02.2013 09:58

Изменение субконто в проводках напрямую
 
Суть вопроса: возможно ли изменить значение субконто одной или нескольких проводок не через НаборЗаписей регистра бухгалтерии, т.е. не делая
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
...
КонецЦикла;
НаборЗаписей.Записать();
Почему не хотелось бы так? Потому что регистратор в конкретном случае может содержать десятки тысяч проводок и запись Набора записей может занять продолжительное время. Можно ли как-то точечно изменять проводки и их изменения записывать?

roma n 08.02.2013 10:05

НаборЗаписей.Записать(Ложь) тебе в помощь.
ЗЫ как планируешь обеспечивать скорость/параллельность при отмене проведения/перепроведении документа?

Климов Сергей 08.02.2013 10:55

Все люди делятся на две категории: те, которые никогда не изменяют проводки документов и те, которые больше этого никогда не будт делать...

Franklin 08.02.2013 12:17

Синтаксис:

Записать(<Замещать>)
Параметры:

<Замещать> (необязательный)

Тип: Булево.
Определяет режим замещения существующих записей в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям.

А как поможет в данном случае Параметр Ложь? Задача заключается в том, чтобы изменить значение Субконто в проводке, то есть в одной из записей набора, если будет применен метод Записать с параметром Ложь, то записи из набора будут добавлены, а старые будут не затронуты?

roma n 08.02.2013 12:28

3-Franklin > Применение "в лоб" не поможет. Но по некоторому размышлению можно понять, что получить идентичный результат можно не изменяя проводку, а добавляя пару к уже существующему набору.
ЗЫ 2-Климов Сергей > + 100500.

Franklin 08.02.2013 12:37

На конкретном примере:
Документ содержит 30 тыс. проводок, необходимо изменить только одну. По предлагаемому способу нужно в набор записей регистратора добавить одну запись, то есть создаем набор записей, добавляем в него запись, которая является результатом желаемых изменений, и делаем НаборЗаписей.Записать(Ложь). А неправильную запись как удаляем? Путем считывания записей в набор с отбором по регистратору, удалением этой записи из набора и далее НаборЗаписей.Записать(истина)? а в чем тогда оптимизация?

roma n 08.02.2013 12:40

5-Franklin > читай внимательней: [quote=roma n;28962480]добавляя пару[/quote]
Сказано достаточно

Franklin 08.02.2013 12:45

Я прочитал внимательно и видел слово "пару", то есть предлагается сделать старой записи ее "сторно"? Но задача именно изменить в той записи, что была. Поясни, пожалуйста, что значит пару?

roma n 08.02.2013 12:54

7-Franklin > правильно думаешь. Читай внимательней: нигде не сказано, что с помощью Записать(Ложь) задачу в таком виде можно решить. Можно получить идентичный (с точки зрения учета) результат. В 99,(9)% процентах случаев этого будет достаточно.

Franklin 08.02.2013 12:57

Нет, в данном случае необходимо решить задачу именно изменением субконто в существующей записи, потому что нужно убрать упоминание об этом субконто в ряде документов за определенный период. Или же, например, если понадобилось бы удалить физически значение субконто, которое уже сидит в проводках. То есть, варианты решения этой задачи отсутствуют?

roma n 08.02.2013 13:17

9-Franklin >
1) ник Franklin никак не ассоциируется с "данным случаем"
2) увы, отсутствуют
3) [em]нужно убрать упоминание об этом субконто[/em] - зачем? такая потребность, действительно, реально существует при необходимости физически удалить элемент справочника, являющийся значением субконто. Но это регламент и делать его быстро совсем ни к чему.
ЗЫ [em]Документ содержит 30 тыс. проводок[/em] - сам себе злобный буратина. Зато научит думать вперёд о последствиях :)


Текущее время: 00:01. Часовой пояс GMT +3.