1с 8.2: Разбивает Строки В Печатной Форме Накладной

RZX

Active member
03.11.2009
42
0
#1
Добрый день!

Нужна помощь профессионалов по такому вопросу:

Платформа 1С:Предприятие 8.2 релиз 8.2.12.80
Конфигурация Управление Торговлей для Беларуси 2.0 релиз 2.0.19.2

В документе РеализацияТоваровУслуг в печатной форме накладной ТТН-1 выртикальной бывает, что некоторые позиции разбиваются на две, т.е. в документе может быть 4-е строки, а в печатной форме 5, причем количество и сумма товаров в документе и печатной форме совпадают.

Например в документе так:

Товар Количество Цена Сумма
Наименование 1 3400 шт. 1,15 3910,00
Наименование 2 1740 шт. 1,20 2088,00
Наименование 3 1170 шт. 0,52 608,40
Наименование 4 2000 шт. 1,90 3800,00

А в печатной форме накладной этого же документа так:
Товар Количество Цена Сумма
Наименование 1 3400 шт. 1,15 3910,00
Наименование 2 1740 шт. 1,20 2088,00
Наименование 3 1170 шт. 0,52 608,40
Наименование 4 368 шт. 1,90 699,20
Наименование 4 1632 шт. 1,90 3100,80


Т.е. в сумме как бы все нормально, но в печатной форме - бред какой-то. Причем товары не разбиты на партии,
коэффициент везде 1, в настройках грузомест тоже ничего не указано.
С чем это связано???

Хотя иногда выдает правильно:
Если в документе так:

Товар Количество Цена Сумма
Наименование 1 3400 шт. 1,15 3910,00
Наименование 2 1740 шт. 1,20 2088,00
Наименование 3 1170 шт. 0,52 608,40
Наименование 4 500 шт. 1,90 950,00

то в печатной форме тоже все нормально.

В функции печати вначале есть строки:

Код:
Функция ПечатьТТН_1(ВертикальнаяФорма = Ложь, СПриложением = Ложь)
....
ТаблицаТоваров = ПолучитьТаблицуДанныхТабличныхЧастейДляНакладных();
КоличествоСтрок = ТаблицаТоваров.Количество();

...

КонецФункции
И в первом случае (когда разбиваются позиции) КоличествоСтрок почему-то равно 5, а не 4.
Насколько я понял, то ошибка где-то в функции ПолучитьТаблицуДанныхТабличныхЧастейДляНакладных() - в ней выполняется запрос к табличной части документа.

Вот ее код:

Код:
Функция ПолучитьТаблицуДанныхТабличныхЧастейДляНакладных()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	ВложенныйЗапрос.Номенклатура,
|	ЕСТЬNULL(ВложенныйЗапрос.ПредприятиеИзготовитель, """") КАК ПредприятиеИзготовитель,
|	ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
|	ЕСТЬNULL(ВложенныйЗапрос.ВидУпаковки, ""н/у"") КАК ВидУпаковки,
|	ЕСТЬNULL(ВложенныйЗапрос.КоличествоВОдномМесте, ""-"") КАК КоличествоВОдномМесте,
|	ВложенныйЗапрос.КоличествоМест КАК КоличествоМест,
|	ВложенныйЗапрос.МассаБрутто,
|	ВложенныйЗапрос.СтавкаНДС,
|	ВложенныйЗапрос.Цена,
|	ВложенныйЗапрос.Сумма,
|	ВложенныйЗапрос.СуммаНДС,
|	ВложенныйЗапрос.Количество,
|	ВложенныйЗапрос.ЦенаИмпортераИзготовителя,
|	ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК НаименованиеТовара,
|	ВложенныйЗапрос.ДокументОприходования КАК Партия,
|	ВложенныйЗапрос.ХарактеристикаНоменклатуры,
|	ВложенныйЗапрос.СерияНоменклатуры,
|	ЕСТЬNULL(ПрейскурантПартииСрезПоследних.Прейскурант.Представление, """") КАК Прейскурант,
|	ЕСТЬNULL(ВложенныйЗапрос.Номенклатура.НоменклатурнаяГруппа.Наименование, """") КАК 

НоменклатурнаяГруппа,
|	ВЫБОР
|		КОГДА 

ВложенныйЗапрос.Реализация.ДоговорКонтрагента.ВыводитьСертификатВСГрузомСледуютД
окументы
|			ТОГДА ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры.Сертификат, """")
|		ИНАЧЕ """"
|	КОНЕЦ КАК Сертификат,
|	ВЫБОР
|		КОГДА ВложенныйЗапрос.Реализация.ДоговорКонтрагента.ВыводитьГТДВСГрузомСледуютДокумент
ы
|			ТОГДА ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры.НомерГТД, """")
|		ИНАЧЕ """"
|	КОНЕЦ КАК НомерГТД,
|	ВложенныйЗапрос.СтавкаНП,
|	ВложенныйЗапрос.СуммаНП,
|	ЕСТЬNULL(ВложенныйЗапрос.Номенклатура.Артикул, """") КАК Артикул,
|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
|	0 КАК НомерТабличнойЧасти,
|	ВложенныйЗапрос.ЦенаСоСкидкой,
|	ВложенныйЗапрос.ПроцентСкидкиНаценки
|ИЗ
|	(ВЫБРАТЬ
|		Реализация.Номенклатура КАК Номенклатура,
|		Реализация.Номенклатура.ПредприятиеИзготовитель.Представление КАК ПредприятиеИзготовитель,
|		Реализация.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
|		Реализация.ЕдиницаИзмеренияМест.Представление КАК ВидУпаковки,
|		СУММА(ВЫРАЗИТЬ(Реализация.ЕдиницаИзмеренияМест.Коэффициент / Реализация.Коэффициент КАК 

ЧИСЛО(15, 0))) КАК КоличествоВОдномМесте,
|		СУММА(ВЫРАЗИТЬ(Реализация.КоличествоМест / Реализация.Количество * ПартииТоваров.Количество 

КАК ЧИСЛО(15, 0))) КАК КоличествоМест,
|		СУММА(ВЫБОР
|				КОГДА Реализация.КоличествоМест > 0
|					ТОГДА ВЫРАЗИТЬ(Реализация.КоличествоМест / Реализация.Количество * 

ПартииТоваров.Количество / Реализация.Количество * ПартииТоваров.Количество / Реализация.Коэффициент * 

Реализация.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * Реализация.ЕдиницаИзмеренияМест.Вес / 1000 КАК 

ЧИСЛО(15, 3))
|				ИНАЧЕ ВЫРАЗИТЬ(ПартииТоваров.Количество / Реализация.Коэффициент * 

Реализация.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * Реализация.ЕдиницаИзмерения.Вес / 1000 КАК ЧИСЛО(15, 

3))
|			КОНЕЦ) КАК МассаБрутто,
|		Реализация.СтавкаНДС КАК СтавкаНДС,
|		Реализация.Цена КАК Цена,
|		СУММА(ВЫРАЗИТЬ(Реализация.Сумма / Реализация.Количество * 

Реализация.ЕдиницаИзмерения.Коэффициент / Реализация.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * 

ПартииТоваров.Количество КАК ЧИСЛО(15, 2))) КАК Сумма,
|		СУММА(ВЫРАЗИТЬ(Реализация.СуммаНДС / Реализация.Количество * 

Реализация.ЕдиницаИзмерения.Коэффициент / Реализация.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * 

ПартииТоваров.Количество КАК ЧИСЛО(15, 2))) КАК СуммаНДС,
|		СУММА(ПартииТоваров.Количество) КАК Количество,
|		ВЫБОР
|			КОГДА 

Реализация.Ссылка.ДоговорКонтрагента.ИспользоватьЦенуИмпортераИзготовителяДокуме
нта
|				ТОГДА Реализация.ЦенаИмпортераИзготовителя
|			ИНАЧЕ ПартииТоваров.ЦенаИмпортераИзготовителя
|		КОНЕЦ КАК ЦенаИмпортераИзготовителя,
|		Реализация.Ссылка КАК Реализация,
|		ПартииТоваров.ДокументОприходования КАК ДокументОприходования,
|		Реализация.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|		Реализация.СерияНоменклатуры КАК СерияНоменклатуры,
|		Реализация.СтавкаНП КАК СтавкаНП,
|		СУММА(ВЫРАЗИТЬ(Реализация.СуммаНП / Реализация.Количество * 

Реализация.ЕдиницаИзмерения.Коэффициент / Реализация.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * 

ПартииТоваров.Количество КАК ЧИСЛО(15, 2))) КАК СуммаНП,
|		Реализация.НомерСтроки КАК НомерСтроки,
|		Реализация.ЦенаСоСкидкой КАК ЦенаСоСкидкой,
|		ЕСТЬNULL(Реализация.ПроцентАвтоматическихСкидок, 0) + 

ЕСТЬNULL(Реализация.ПроцентСкидкиНаценки, 0) КАК ПроцентСкидкиНаценки
|	ИЗ
|		РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваров
|			ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Реализация
|			ПО ПартииТоваров.НомерСтрокиДокумента = Реализация.НомерСтроки
|	ГДЕ
|		Реализация.Ссылка = &Ссылка
|		И ПартииТоваров.Регистратор = &Ссылка
|		И ПартииТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|	
|	СГРУППИРОВАТЬ ПО
|		Реализация.СтавкаНДС,
|		Реализация.ЕдиницаИзмеренияМест.Представление,
|		Реализация.Номенклатура,
|		Реализация.Номенклатура.ПредприятиеИзготовитель.Представление,
|		Реализация.ЕдиницаИзмерения,
|		Реализация.Цена,
|		ПартииТоваров.ЦенаИмпортераИзготовителя,
|		Реализация.Ссылка,
|		ПартииТоваров.ДокументОприходования,
|		Реализация.СерияНоменклатуры,
|		Реализация.ХарактеристикаНоменклатуры,
|		ВЫБОР
|			КОГДА 

Реализация.Ссылка.ДоговорКонтрагента.ИспользоватьЦенуИмпортераИзготовителяДокуме
нта
|				ТОГДА Реализация.ЦенаИмпортераИзготовителя
|			ИНАЧЕ ПартииТоваров.ЦенаИмпортераИзготовителя
|		КОНЕЦ,
|		Реализация.СтавкаНП,
|		Реализация.НомерСтроки,
|		Реализация.ЦенаСоСкидкой,
|		ЕСТЬNULL(Реализация.ПроцентАвтоматическихСкидок, 0) + 

ЕСТЬNULL(Реализация.ПроцентСкидкиНаценки, 0)) КАК ВложенныйЗапрос
|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрейскурантПартии.СрезПоследних(
|				&МоментДокумента,
|				ТипЦен = &ТипЦенДокумента
|					И ЦельПриобретенияТовара = &ЦельПриобретенияДокумента) КАК 

ПрейскурантПартииСрезПоследних
|		ПО ВложенныйЗапрос.ДокументОприходования = ПрейскурантПартииСрезПоследних.Партия
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|	РеализацияТоваровУслугУслуги.Номенклатура,
|	"""",
|	РеализацияТоваровУслугУслуги.Номенклатура.БазоваяЕдиницаИзмерения,
|	""-"",
|	""-"",
|	0,
|	0,
|	РеализацияТоваровУслугУслуги.СтавкаНДС,
|	РеализацияТоваровУслугУслуги.Цена,
|	РеализацияТоваровУслугУслуги.Сумма,
|	РеализацияТоваровУслугУслуги.СуммаНДС,
|	РеализацияТоваровУслугУслуги.Количество,
|	0,
|	РеализацияТоваровУслугУслуги.Содержание,
|	"""",
|	"""",
|	"""",
|	ЕСТЬNULL(РеализацияТоваровУслугУслуги.Номенклатура.Прейскурант.Представление, """"),
|	"""",
|	"""",
|	"""",
|	РеализацияТоваровУслугУслуги.СтавкаНП,
|	РеализацияТоваровУслугУслуги.СуммаНП,
|	"""",
|	РеализацияТоваровУслугУслуги.НомерСтроки,
|	1,
|	РеализацияТоваровУслугУслуги.ЦенаСоСкидкой,
|	ЕСТЬNULL(РеализацияТоваровУслугУслуги.ПроцентСкидкиНаценки, 0)
|ИЗ
|	Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
|ГДЕ
|	РеализацияТоваровУслугУслуги.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
|	НомерТабличнойЧасти,
|	НомерСтроки";


Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("МоментДокумента", Новый МоментВремени(Ссылка.Дата, Ссылка));
Запрос.УстановитьПараметр("ТипЦенДокумента", Ссылка.ТипЦен);
Запрос.УстановитьПараметр("ЦельПриобретенияДокумента", Ссылка.ЦельПриобретения);

Возврат Запрос.Выполнить().Выгрузить();

КонецФункции
Поэтому такой вопрос: как понять, где ошибка? На каком основании этот запрос возвращает 5 строк, а не 4 и разбивает позиции в накладной?

Спасибо!
 

puh14

Well-known member
11.07.2008
1 412
0
#2
Как вы сами видите в запросе используется регистр ПартииТоваровНаСкладах, а это значит что хоть партии ине выбраны, но списание происходит именно по партиям. Это связано с тем, что для определения прибыли нужно вычесть себестоимость из суммы проданного. А откуда её взять? правильно, из регистра партиитоваровнаскладах. А как списывать партии? а как записано в учетной политике fifo/lifo. А что будет если нет достаточного количества одной партии? Списать несколько. Вот вам и несколько строчек. Более подробно кто-сколько списал можно посмотреть выведя движения реализации по регистру партии товаров на складах.
 

RZX

Active member
03.11.2009
42
0
#3
Да, действительно! В регистре ПартииТоваровНаСкладах идет именно так, как в печатной форме накладной - т.е. разбивает позицию на две строки. В учетной политике выставил метод списания LIFO (в нашем случае это не принципиально) и стало все OK!

Огромное спасибо за помощь!
 

RZX

Active member
03.11.2009
42
0
#4
На случай, если еще кто столкнется с такой ситуацией: на самом деле не важно, что выставлять: FIFO/LIFO/По среднему. Главное - снять флаг в параметрах -> учетная политика "Вести учет по партиям" и не забыть перепровести документы поступления. Если последнего не сделать - все равно будет разбивать, даже если флаг снят.