Проковырялся день с поиском оптимального решения. Мож кому пригодится.
Задача
Для документа нужно формировать произвольные проводки по регл учету. Эти проводки должны добавляться к типовым.
Запросом собрать нужные данные не получалось, требовался алгоритм расчета: распределение и т.д.
Для формирования движений нужны были только данные документа. Результаты расчета себестоимости и т.д. не влияли на данные движений. Это можно считать ограничением применения описанного решения.
Решение
При проведении документа записываем нужные движения в Хозрасчетный. Важно, чтобы Статус документов в регистре ОтражениеДокументовВРеглУчете не менялся. Для этого в коде записи набора Хозрасчетный набора добавляем строку
Набор.ДополнительныеСвойства.Вставить("НеВыполнятьДопОбработкуПроводок", Истина);
В общем модуле РеглУчетПроведениеСервер находим функцию ВыборкиОтраженияДокументов.
В функции есть строка
ЗапросХозрасчетныйДополнение = РеглУчетВыборкиСерверПовтИсп.ЗапросХозрасчетныйДополнение();
Данные движений для Хозрасчетный, собираемые этим запросом, добавляются к движениям, собираемым ранее типовыми средствами. Этот запрос, конечно, тоже типовой, и это не Переопределяемый. Но в него влезть достаточно просто и предназначен он как раз для выборки существующих движений.
РеглУчетВыборкиСерверПовтИсп.ЗапросХозрасчетныйДополнение() забираем в расширение.
Первая часть запроса получает все движения отражаемых документов. Во второй части производится выборка нужных движений. Во второй части реализуем выборку нужных. Важно отобрать именно "наши", не собирая типовые. Иначе получим дублирование движений при закрытии месяца.
Внесенные изменения в запросе завернуты в комментарий ДОБАВЛЯЕМЫЕ ДВИЖЕНИЯ. Ключами выборки движений являются тип регистратора и реквизит "Содержание" регистра Хозрасчетный.
&Вместо("ЗапросХозрасчетныйДополнение")
Функция _ЗапросХозрасчетныйДополнение()
Возврат Новый Запрос(
"ВЫБРАТЬ
| Хозрасчетный.Регистратор КАК Ссылка,
| НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕНЬ) КАК ДатаОтражения,
| Хозрасчетный.Период КАК Период,
| Хозрасчетный.СчетДт КАК СчетДт,
| Хозрасчетный.СубконтоДт1 КАК СубконтоДт1,
| Хозрасчетный.ВидСубконтоДт1 КАК ВидСубконтоДт1,
| Хозрасчетный.СубконтоДт2 КАК СубконтоДт2,
| Хозрасчетный.ВидСубконтоДт2 КАК ВидСубконтоДт2,
| Хозрасчетный.СубконтоДт3 КАК СубконтоДт3,
| Хозрасчетный.ВидСубконтоДт3 КАК ВидСубконтоДт3,
| Хозрасчетный.СчетКт КАК СчетКт,
| Хозрасчетный.СубконтоКт1 КАК СубконтоКт1,
| Хозрасчетный.ВидСубконтоКт1 КАК ВидСубконтоКт1,
| Хозрасчетный.СубконтоКт2 КАК СубконтоКт2,
| Хозрасчетный.ВидСубконтоКт2 КАК ВидСубконтоКт2,
| Хозрасчетный.СубконтоКт3 КАК СубконтоКт3,
| Хозрасчетный.ВидСубконтоКт3 КАК ВидСубконтоКт3,
| Хозрасчетный.Организация КАК Организация,
| Хозрасчетный.ВалютаДт КАК ВалютаДт,
| Хозрасчетный.ВалютаКт КАК ВалютаКт,
| Хозрасчетный.ПодразделениеДт КАК ПодразделениеДт,
| Хозрасчетный.НаправлениеДеятельностиДт КАК НаправлениеДеятельностиДт,
| Хозрасчетный.ПодразделениеКт КАК ПодразделениеКт,
| Хозрасчетный.НаправлениеДеятельностиКт КАК НаправлениеДеятельностиКт,
| Хозрасчетный.Сумма КАК Сумма,
| Хозрасчетный.СуммаУУ КАК СуммаУУ,
| Хозрасчетный.СуммаФО КАК СуммаФО,
| Хозрасчетный.ВалютнаяСуммаДт КАК ВалютнаяСуммаДт,
| Хозрасчетный.ВалютнаяСуммаКт КАК ВалютнаяСуммаКт,
| Хозрасчетный.КоличествоДт КАК КоличествоДт,
| Хозрасчетный.КоличествоКт КАК КоличествоКт,
| Хозрасчетный.СуммаНУДт КАК СуммаНУДт,
| Хозрасчетный.СуммаНУКт КАК СуммаНУКт,
| Хозрасчетный.СуммаПРДт КАК СуммаПРДт,
| Хозрасчетный.СуммаПРКт КАК СуммаПРКт,
| Хозрасчетный.СуммаВРДт КАК СуммаВРДт,
| Хозрасчетный.СуммаВРКт КАК СуммаВРКт,
| Хозрасчетный.Содержание КАК Содержание,
| Хозрасчетный.НеКорректироватьСтоимостьАвтоматически КАК НеКорректироватьСтоимостьАвтоматически
|ПОМЕСТИТЬ ТекущееСостояние
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| ,
| ,
| Регистратор В
| (ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка
| ИЗ
| ДокументыКОтражению КАК Таблица)
| И НЕ ТИПЗНАЧЕНИЯ(Регистратор) В (&ДокументыОтражаемыеПоследовательно),
| ,
| ) КАК Хозрасчетный
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Хозрасчетный.Ссылка КАК Ссылка,
| Хозрасчетный.Период КАК Период,
| Хозрасчетный.СчетДт КАК СчетДт,
| Хозрасчетный.СубконтоДт1 КАК СубконтоДт1,
| Хозрасчетный.ВидСубконтоДт1 КАК ВидСубконтоДт1,
| Хозрасчетный.СубконтоДт2 КАК СубконтоДт2,
| Хозрасчетный.ВидСубконтоДт2 КАК ВидСубконтоДт2,
| Хозрасчетный.СубконтоДт3 КАК СубконтоДт3,
| Хозрасчетный.ВидСубконтоДт3 КАК ВидСубконтоДт3,
| Хозрасчетный.СчетКт КАК СчетКт,
| Хозрасчетный.СубконтоКт1 КАК СубконтоКт1,
| Хозрасчетный.ВидСубконтоКт1 КАК ВидСубконтоКт1,
| Хозрасчетный.СубконтоКт2 КАК СубконтоКт2,
| Хозрасчетный.ВидСубконтоКт2 КАК ВидСубконтоКт2,
| Хозрасчетный.СубконтоКт3 КАК СубконтоКт3,
| Хозрасчетный.ВидСубконтоКт3 КАК ВидСубконтоКт3,
| Хозрасчетный.Организация КАК Организация,
| Хозрасчетный.ВалютаДт КАК ВалютаДт,
| Хозрасчетный.ВалютаКт КАК ВалютаКт,
| Хозрасчетный.ПодразделениеДт КАК ПодразделениеДт,
| Хозрасчетный.НаправлениеДеятельностиДт КАК НаправлениеДеятельностиДт,
| Хозрасчетный.ПодразделениеКт КАК ПодразделениеКт,
| Хозрасчетный.НаправлениеДеятельностиКт КАК НаправлениеДеятельностиКт,
| Хозрасчетный.Сумма КАК Сумма,
| Хозрасчетный.СуммаУУ КАК СуммаУУ,
| Хозрасчетный.СуммаФО КАК СуммаФО,
| Хозрасчетный.ВалютнаяСуммаДт КАК ВалютнаяСуммаДт,
| Хозрасчетный.ВалютнаяСуммаКт КАК ВалютнаяСуммаКт,
| Хозрасчетный.КоличествоДт КАК КоличествоДт,
| Хозрасчетный.КоличествоКт КАК КоличествоКт,
| Хозрасчетный.СуммаНУДт КАК СуммаНУДт,
| Хозрасчетный.СуммаНУКт КАК СуммаНУКт,
| Хозрасчетный.СуммаПРДт КАК СуммаПРДт,
| Хозрасчетный.СуммаПРКт КАК СуммаПРКт,
| Хозрасчетный.СуммаВРДт КАК СуммаВРДт,
| Хозрасчетный.СуммаВРКт КАК СуммаВРКт,
| Хозрасчетный.Содержание КАК Содержание,
| Хозрасчетный.НеКорректироватьСтоимостьАвтоматически КАК НеКорректироватьСтоимостьАвтоматически
|ИЗ
| ТекущееСостояние КАК Хозрасчетный
| ЛЕВОЕ СОЕДИНЕНИЕ РазрезыКОтражению КАК РазрезыКОтражению
| ПО (Хозрасчетный.Ссылка = РазрезыКОтражению.Ссылка)
| И (Хозрасчетный.ДатаОтражения = РазрезыКОтражению.ДатаОтражения)
| И (Хозрасчетный.Организация = РазрезыКОтражению.Организация)
|ГДЕ
| РазрезыКОтражению.Ссылка ЕСТЬ NULL
|
// { ДОБАВЛЯЕМЫЕ ДВИЖЕНИЯ
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Хозрасчетный.Ссылка,
| Хозрасчетный.Период,
| Хозрасчетный.СчетДт,
| Хозрасчетный.СубконтоДт1,
| Хозрасчетный.ВидСубконтоДт1,
| Хозрасчетный.СубконтоДт2,
| Хозрасчетный.ВидСубконтоДт2,
| Хозрасчетный.СубконтоДт3,
| Хозрасчетный.ВидСубконтоДт3,
| Хозрасчетный.СчетКт,
| Хозрасчетный.СубконтоКт1,
| Хозрасчетный.ВидСубконтоКт1,
| Хозрасчетный.СубконтоКт2,
| Хозрасчетный.ВидСубконтоКт2,
| Хозрасчетный.СубконтоКт3,
| Хозрасчетный.ВидСубконтоКт3,
| Хозрасчетный.Организация,
| Хозрасчетный.ВалютаДт,
| Хозрасчетный.ВалютаКт,
| Хозрасчетный.ПодразделениеДт,
| Хозрасчетный.НаправлениеДеятельностиДт,
| Хозрасчетный.ПодразделениеКт,
| Хозрасчетный.НаправлениеДеятельностиКт,
| Хозрасчетный.Сумма,
| Хозрасчетный.СуммаУУ,
| Хозрасчетный.СуммаФО,
| Хозрасчетный.ВалютнаяСуммаДт,
| Хозрасчетный.ВалютнаяСуммаКт,
| Хозрасчетный.КоличествоДт,
| Хозрасчетный.КоличествоКт,
| Хозрасчетный.СуммаНУДт,
| Хозрасчетный.СуммаНУКт,
| Хозрасчетный.СуммаПРДт,
| Хозрасчетный.СуммаПРКт,
| Хозрасчетный.СуммаВРДт,
| Хозрасчетный.СуммаВРКт,
| Хозрасчетный.Содержание,
| Хозрасчетный.НеКорректироватьСтоимостьАвтоматически
|ИЗ
| ТекущееСостояние КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Ссылка ССЫЛКА Документ.АктВыполненныхРабот
| И Хозрасчетный.Содержание = ""НУЖНЫЕ ДВИЖЕНИЯ""
// } ДОБАВЛЯЕМЫЕ ДВИЖЕНИЯ
|
|УПОРЯДОЧИТЬ ПО
| Хозрасчетный.Ссылка
|
|ИТОГИ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ТекущееСостояние");
КонецФункции