Решение:
Для начала определимся что делать с загадочной фразой из условия: "Система должна обеспечивать пользователя возможностью ведения
складского учета не только на счете «Товары», но и на любом другом выбранным
пользователем счете".
Понял так, что пользователь может выбирать счет на котором будет вести учет товаров. Храниться это значение будет в константе.
Для решения задачи задействуем следующие объекты:
1) ПВХ "Виды субконто".
 
 
 
 
  
  
  
   
    
    
 
 
 
1) ПВХ "Виды субконто".
- Заполняем типы значений характеристик и дополнительные значения характеристик.
- Согласно условия задачи заводим предопределенные элементы "Номенклатура" и "Склад" (Новый справочник)
- на закладке "субконто" заполняем тип субконто и устанавливаем значение субконто=2.
- Редактируем предопределенные счета: "Товары" и "ПрибылиУбытки" добавляем субконто.
3) Добавляем регистр бухгалтерии "Управленческий".
- Связываем его с планом счетов
- Добавляем признак учета "количественный".
- Добавляем ресурсы ( сумма, количество). Количество - не балансовый, "Количественный"
- Выбираем регистраторы.
4) Не забываем о том, что в задачах бухгалтерского учета необходимо добавить документ,  с помощью которого можно добавлять записи в регистр вручную. Назовем его "РучнаяОперация".
 укажем что он является регистратором нашего регистра. 
добавим форму,на форму вытащим реквизит Объект-движения-управленческий.
Запретим проведение этого документа
 5) Потребуется регистр сведений "Состав комплекта".
Небольшая "защита от дурака"
&НаКлиенте
Процедура НоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
 Если ВыбранноеЗначение.ЭтоКомплект Тогда 
 СтандартнаяОбработка = Ложь;
 Сообщение = Новый СообщениеПользователю;
 Сообщение.Текст = "Комплект не может быть выбран";
 Сообщение.Сообщить(); 
 КонецЕсли;
КонецПроцедуры
 6) Переходим к Приходной накладной.
- С помощью конструктора движений формируем обработку проведения.
Процедура ОбработкаПроведения(Отказ, Режим)
 СчетУчета = Константы.СчетУчета.Получить();
 Движения.Управленческий.Записывать = Истина;
 Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
  Движение = Движения.Управленческий.Добавить();
  Движение.СчетДт = СчетУчета;
  Движение.СчетКт = ПланыСчетов.Управленческий.Поставщики;
  Движение.Период = Дата;
  Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
  Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = Склад;
  Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ТекСтрокаСписокНоменклатуры.Номенклатура;
  Движение.КоличествоДт = ТекСтрокаСписокНоменклатуры.Количество;
 КонецЦикла;
КонецПроцедуры
7) Переходим к Расходной накладной.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
 СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
 Движения.Управленческий.Записывать = Истина;
 Движения.Управленческий.Записать();
 СчетУчета = Константы.СчетУчета.Получить();
 Блокировка = Новый БлокировкаДанных;
 ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
 ЭлементБлокировки.УстановитьЗначение("Субконто1", Склад);
 ЭлементБлокировки.УстановитьЗначение("Счет", СчетУчета);
 ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
 ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Субконто2", "Номенклатура");
 Блокировка.Заблокировать();
 Запрос = Новый Запрос;
 Запрос.Текст = "ВЫБРАТЬ
 | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
 | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
 | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
 |ПОМЕСТИТЬ ДокТЧ
 |ИЗ
 | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
 |ГДЕ
 | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
 |
 |СГРУППИРОВАТЬ ПО
 | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
 |
 |ИНДЕКСИРОВАТЬ ПО
 | Номенклатура
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | СоставКомплекта.Номенклатура,
 | ЕСТЬNULL(СоставКомплекта.Количество, 1) * ДокТЧ.Количество КАК Количество,
 | ДокТЧ.Сумма КАК Сумма,
 | ДокТЧ.Номенклатура КАК Комплект,
 | ДокТЧ.Количество КАК КолДок
 |ПОМЕСТИТЬ ВТ
 |ИЗ
 | ДокТЧ КАК ДокТЧ
 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставКомплекта КАК СоставКомплекта
 |  ПО ДокТЧ.Номенклатура = СоставКомплекта.Комплект
 |ГДЕ
 | ДокТЧ.Номенклатура.ЭтоКомплект
 |
 |ОБЪЕДИНИТЬ ВСЕ
 |
 |ВЫБРАТЬ
 | ДокТЧ.Номенклатура,
 | ДокТЧ.Количество,
 | ДокТЧ.Сумма,
 | ДокТЧ.Номенклатура,
 | ДокТЧ.Количество
 |ИЗ
 | ДокТЧ КАК ДокТЧ
 |ГДЕ
 | НЕ ДокТЧ.Номенклатура.ЭтоКомплект
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | ВТ.Номенклатура КАК Номенклатура,
 | ВТ.Количество КАК Количество,
 | ВТ.Сумма КАК СуммаДок,
 | ЕСТЬNULL(УправленческийОстатки.СуммаОстаток, 0) КАК СуммаРег,
 | ЕСТЬNULL(УправленческийОстатки.КоличествоОстаток, 0) КАК КоличествоРег,
 | ВТ.Комплект КАК Комплект,
 | ВТ.КолДок КАК КолДок
 |ИЗ
 | ВТ КАК ВТ
 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(&ТочкаИтогов, Счет = &СчетУчета, , Субконто1 = &Склад) КАК УправленческийОстатки
 |  ПО ВТ.Номенклатура = УправленческийОстатки.Субконто2
 |ИТОГИ
 | МАКСИМУМ(СуммаДок),
 | МАКСИМУМ(КолДок)
 |ПО
 | Комплект";
 Запрос.УстановитьПараметр("Ссылка", Ссылка);
 Запрос.УстановитьПараметр("ТочкаИтогов", Новый Граница(МоментВремени(),ВидГраницы.Исключая)); 
 Запрос.УстановитьПараметр("СчетУчета", СчетУчета);
 Запрос.УстановитьПараметр("Склад", Склад);
 ВыборкаКомплект = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Комплект");
 Пока ВыборкаКомплект.Следующий() Цикл
  Движение = Движения.Управленческий.Добавить();
  Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
  Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
  Движение.Период = Дата;
  Движение.Сумма = ВыборкаКомплект.СуммаДок;
  Движение.КоличествоКт = ВыборкаКомплект.КолДок;
  Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаКомплект.Комплект;
  Выборка = ВыборкаКомплект.Выбрать();
  Пока Выборка.Следующий() Цикл
   Если Выборка.Количество <= Выборка.КоличествоРег Тогда
    Движение = Движения.Управленческий.Добавить();
    Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
    Движение.СчетКт = СчетУчета;
    Движение.Период = Дата;
    Если   Выборка.КоличествоРег <>0 Тогда
     Движение.Сумма = (Выборка.СуммаРег/ Выборка.КоличествоРег)* Выборка.Количество;
    КонецЕсли;
    Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склад] = Склад;
    Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
    Движение.КоличествоКт = Выборка.Количество;
    Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаКомплект.Комплект;
   Иначе
    Отказ =Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Недостаточно комплектущей " + Выборка.Номенклатура + " в количестве "+ (Выборка.Количество -Выборка.КоличествоРег);
    Сообщение.Сообщить();
   КонецЕсли;
  КонецЦикла;
 КонецЦикла;
КонецПроцедуры
8) Отчет 
Отчет строится из таблицы оборотов по счету "ПрибылиУбытки", поэтому  в субконто к этому счету добавлен вид  субконто "Номенклатура".
Задаем условие Субконто1.ЭтоКомплект  для того чтобы в отчет попадали только комплекты.
ВЫБРАТЬ
 УправленческийОбороты.Субконто1 КАК Комплект,
 УправленческийОбороты.КорСубконто2 КАК Материал,
 СУММА(УправленческийОбороты.СуммаОборотКт) КАК Продажа,
 СУММА(УправленческийОбороты.СуммаОборотДт) КАК Себестоимость,
 СУММА(УправленческийОбороты.КоличествоКорОборотДт) КАК Колво
ИЗ
 РегистрБухгалтерии.Управленческий.Обороты(, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , Субконто1.ЭтоКомплект, , ) КАК УправленческийОбороты
СГРУППИРОВАТЬ ПО
 УправленческийОбороты.Субконто1,
 УправленческийОбороты.КорСубконто2
 
все хорошо, но если количество молоко домик в деревне поставить на приходе в основном складе 20 шт вместо 100, то расходная накладная проведется и остатки уйдут в минус
ОтветитьУдалить