1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

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

Тема в разделе "1C и всё что с ней связано", создана пользователем RZX, 22 ноя 2011.

  1. RZX

    RZX Active Member

    Репутация:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    42
    Симпатии:
    0
    Добрый день!

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

    Платформа 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 и разбивает позиции в накладной?

    Спасибо!
     
  2. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Как вы сами видите в запросе используется регистр ПартииТоваровНаСкладах, а это значит что хоть партии ине выбраны, но списание происходит именно по партиям. Это связано с тем, что для определения прибыли нужно вычесть себестоимость из суммы проданного. А откуда её взять? правильно, из регистра партиитоваровнаскладах. А как списывать партии? а как записано в учетной политике fifo/lifo. А что будет если нет достаточного количества одной партии? Списать несколько. Вот вам и несколько строчек. Более подробно кто-сколько списал можно посмотреть выведя движения реализации по регистру партии товаров на складах.
     
  3. RZX

    RZX Active Member

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

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

    RZX Active Member

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

Поделиться этой страницей