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

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

  1. RZX

    RZX Active Member

    Регистрация:
    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

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

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

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

    ...

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

    Вот ее код:

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

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ВложенныйЗапрос.Номенклатура,
    |   ЕСТЬ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
    1C Team

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

    RZX Active Member

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

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

    RZX Active Member

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

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