![]() |
Изменение субконто в проводках напрямую Суть вопроса: возможно ли изменить значение субконто одной или нескольких проводок не через НаборЗаписей регистра бухгалтерии, т.е. не делая НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл ... КонецЦикла; НаборЗаписей.Записать(); Почему не хотелось бы так? Потому что регистратор в конкретном случае может содержать десятки тысяч проводок и запись Набора записей может занять продолжительное время. Можно ли как-то точечно изменять проводки и их изменения записывать? |
НаборЗаписей.Записать(Ложь) тебе в помощь. ЗЫ как планируешь обеспечивать скорость/параллельность при отмене проведения/перепроведении документа? |
Все люди делятся на две категории: те, которые никогда не изменяют проводки документов и те, которые больше этого никогда не будт делать... |
Синтаксис: Записать(<Замещать>) Параметры: <Замещать> (необязательный) Тип: Булево. Определяет режим замещения существующих записей в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям. А как поможет в данном случае Параметр Ложь? Задача заключается в том, чтобы изменить значение Субконто в проводке, то есть в одной из записей набора, если будет применен метод Записать с параметром Ложь, то записи из набора будут добавлены, а старые будут не затронуты? |
3-Franklin > Применение "в лоб" не поможет. Но по некоторому размышлению можно понять, что получить идентичный результат можно не изменяя проводку, а добавляя пару к уже существующему набору. ЗЫ 2-Климов Сергей > + 100500. |
На конкретном примере: Документ содержит 30 тыс. проводок, необходимо изменить только одну. По предлагаемому способу нужно в набор записей регистратора добавить одну запись, то есть создаем набор записей, добавляем в него запись, которая является результатом желаемых изменений, и делаем НаборЗаписей.Записать(Ложь). А неправильную запись как удаляем? Путем считывания записей в набор с отбором по регистратору, удалением этой записи из набора и далее НаборЗаписей.Записать(истина)? а в чем тогда оптимизация? |
5-Franklin > читай внимательней: [quote=roma n;28962480]добавляя пару[/quote] Сказано достаточно |
Я прочитал внимательно и видел слово "пару", то есть предлагается сделать старой записи ее "сторно"? Но задача именно изменить в той записи, что была. Поясни, пожалуйста, что значит пару? |
7-Franklin > правильно думаешь. Читай внимательней: нигде не сказано, что с помощью Записать(Ложь) задачу в таком виде можно решить. Можно получить идентичный (с точки зрения учета) результат. В 99,(9)% процентах случаев этого будет достаточно. |
Нет, в данном случае необходимо решить задачу именно изменением субконто в существующей записи, потому что нужно убрать упоминание об этом субконто в ряде документов за определенный период. Или же, например, если понадобилось бы удалить физически значение субконто, которое уже сидит в проводках. То есть, варианты решения этой задачи отсутствуют? |
9-Franklin > 1) ник Franklin никак не ассоциируется с "данным случаем" 2) увы, отсутствуют 3) [em]нужно убрать упоминание об этом субконто[/em] - зачем? такая потребность, действительно, реально существует при необходимости физически удалить элемент справочника, являющийся значением субконто. Но это регламент и делать его быстро совсем ни к чему. ЗЫ [em]Документ содержит 30 тыс. проводок[/em] - сам себе злобный буратина. Зато научит думать вперёд о последствиях :) |
Текущее время: 00:01. Часовой пояс GMT +3. |