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