Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
gerksly
1 / 1 / 0
Регистрация: 22.02.2013
Сообщений: 70
1

По печатной форме

22.02.2013, 12:19. Просмотров 1579. Ответов 5
Метки нет (Все метки)

Добрый день! Есть вот такой код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
ЗапросПоТоварам1 = Новый Запрос();
    ЗапросПоТоварам1.УстановитьПараметр("ТекущийДокумент", Ссылка);
    ЗапросПоТоварам1.УстановитьПараметр("Категория", "Основная");
    ЗапросПоТоварам1.Текст =
    "ВЫБРАТЬ
    |   РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
    |   РасходнаяНакладнаяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |   РасходнаяНакладнаяТовары.Номенклатура.Код КАК Код,
    |   РасходнаяНакладнаяТовары.Номенклатура.Артикул КАК Артикул,
    |   РасходнаяНакладнаяТовары.Номенклатура.Бренды КАК Бренды,
    |   РасходнаяНакладнаяТовары.Номенклатура.КатегорияТовара КАК КатегорияТовара,
    |   РасходнаяНакладнаяТовары.Количество
    |ИЗ
    |   Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
    |ГДЕ
    |   РасходнаяНакладнаяТовары.Ссылка = &ТекущийДокумент
    |   И  РасходнаяНакладнаяТовары.Номенклатура.КатегорияТовара.Наименование = &Категория
    |УПОРЯДОЧИТЬ ПО
    |Бренды,
    |Код";
    
    Результат = ЗапросПоТоварам1.Выполнить();
    ВыборкаСтрок1 = Результат.Выгрузить();
 
ОбластьМакетаШапка1 = Макет.ПолучитьОбласть("ШапкаДинамическая");
    ТабДокумент.Вывести(ОбластьМакетаШапка1);
    К=0; 
    НН=Справочники.Номенклатура.ПустаяСсылка();
    Кол=0;
    ОбластьМакета1 = Макет.ПолучитьОбласть("Строка");
    Для Каждого ВыборкаСтрокТовары Из ВыборкаСтрок1 Цикл
            Если НЕ НН.Пустая() Тогда 
            Если НН<>ВыборкаСтрокТовары.Номенклатура Тогда
                К=К+1;
                ОбластьМакета1.Параметры.НомерСтроки      = К;
                ОбластьМакета1.Параметры.Товар     = НН;
                ОбластьМакета1.Параметры.Количество      = Кол;
                ТабДокумент.Вывести(ОбластьМакета1);
                Кол=0;
            КонецЕсли; 
        КонецЕсли; 
        НН=ВыборкаСтрокТовары.Номенклатура;
    Если ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование = "40" Тогда
        ОбластьМакета1.Параметры.к40 =   ВыборкаСтрокТовары.Количество;
    ИначеЕсли ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование = "42" Тогда
        ОбластьМакета1.Параметры.к42 =   ВыборкаСтрокТовары.Количество;
    ИначеЕсли ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование = "39" Тогда
        ОбластьМакета1.Параметры.к39 =   ВыборкаСтрокТовары.Количество;
    ИначеЕсли ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование = "40/5" Тогда
        ОбластьМакета1.Параметры.к405 =  ВыборкаСтрокТовары.Количество;
    ИначеЕсли ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование = "41" Тогда
        ОбластьМакета1.Параметры.к41 =   ВыборкаСтрокТовары.Количество;
    КонецЕсли;
        ОбластьМакета1.Параметры.Бренды     = ВыборкаСтрокТовары.Бренды;
        ОбластьМакета1.Параметры.Артикул     = ВыборкаСтрокТовары.Артикул;
        ОбластьМакета1.Параметры.Код     = ВыборкаСтрокТовары.Код;
        Кол=Кол+ВыборкаСтрокТовары.Количество;
        
    КонецЦикла;   
    Если НЕ НН.Пустая() Тогда 
        К=К+1;
        ОбластьМакета1.Параметры.НомерСтроки      = К;
        ОбластьМакета1.Параметры.Товар     = НН;
        ОбластьМакета1.Параметры.Количество      = Кол;
        ТабДокумент.Вывести(ОбластьМакета1);
    КонецЕсли;
Проблема в следующем: при выводе на печать если в разных товарах в накладной набор ХарактеристикаНоменклатуры различается, то характеристики из предыдущей строки дублируются на следующую... Никак не приходит в голову, как это решить... Буду очень признателен за помощь.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 12:19
Ответы с готовыми решениями:

Ошибка в печатной форме счета
Сделал ВПФ счет на оплату. Выскакивает ошибка:...

Вывод заголовка в печатной форме
Привет, товарищи! Делал внешнюю печатную форму к документу &quot;Зарплата к выплате&quot;. Там всё простенько...

Не выводится область в печатной форме
Сделал внешнюю печатную форму АктОбОказанииУслуг (переделал с типовой). Добавил туда область...

Как упорядочить строки в печатной форме
Здравствуйте, подскажите как сделать печатную форму накладной. Строки в печатной форме по выбору...

Дополнительные реквизиты документа в печатной форме 8.2 УТ 11
К документу ЗаказПоставщику сделана внешняя печатная форма. В документе имеется дополнительный...

5
Вайз
9 / 9 / 1
Регистрация: 22.02.2013
Сообщений: 27
22.02.2013, 12:40 2
простой способ - переместить строчку ОбластьМакета1 = Макет.ПолучитьОбласть("Строка"); в тело цикла
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
22.02.2013, 12:45 3
Если честно Ваш код, слегка приводит в замешательство т.к. не понятно чего Вы хотите добиться.
Покажите сам макет печатной формы.
Объясните смысл вначале делать это:
Цитата Сообщение от gerksly Посмотреть сообщение
Если НЕ НН.Пустая() Тогда
* * * * * * Если НН<>ВыборкаСтрокТовары.Номенклатура Тогда
* * * * * * * * К=К+1;
* * * * * * * * ОбластьМакета1.Параметры.НомерСтроки * * *= К;
* * * * * * * * ОбластьМакета1.Параметры.Товар * * = НН;
* * * * * * * * ОбластьМакета1.Параметры.Количество * * *= Кол;
* * * * * * * * ТабДокумент.Вывести(ОбластьМакета1);
* * * * * * * * Кол=0;
* * * * * * КонецЕсли;*
* * * * КонецЕсли;
А потом это:
Цитата Сообщение от gerksly Посмотреть сообщение
Если НЕ НН.Пустая() Тогда
* * * * К=К+1;
* * * * ОбластьМакета1.Параметры.НомерСтроки * * *= К;
* * * * ОбластьМакета1.Параметры.Товар * * = НН;
* * * * ОбластьМакета1.Параметры.Количество * * *= Кол;
* * * * ТабДокумент.Вывести(ОбластьМакета1);
* * КонецЕсли;
0
gerksly
1 / 1 / 0
Регистрация: 22.02.2013
Сообщений: 70
22.02.2013, 12:50  [ТС] 4
Если бы все так просто было.. При таком способе код становится не работоспособным.. А как-то по другому?

Добавлено через 3 минуты
Смысл в том, что в накладной товар повторяется в каждой строке при разных характеристиках. Тут же происходит слияние в одну строку с уникальным наименованием товара, при этом характеристики по количеству распределяются в этой же строке по своим полям.
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
22.02.2013, 12:54 5
Цитата Сообщение от gerksly Посмотреть сообщение
Смысл в том, что в накладной товар повторяется в каждой строке при разных характеристиках. Тут же происходит слияние в одну строку с уникальным наименованием товара, при этом характеристики по количеству распределяются в этой же строке по своим полям.
Тогда Вы ерунду какую то сделали.
Добавьте в запрос итог по номенклатуре, и делайте обход результата запроса по группировкам.
0
gerksly
1 / 1 / 0
Регистрация: 22.02.2013
Сообщений: 70
22.02.2013, 13:06  [ТС] 6
В нижнем куске в принципе только ТабДокумент.Вывести(ОбластьМакета1); можно оставить, а условие убрать, согласен.

Добавлено через 1 минуту
Код то работает, только именно с распределением характеристик по строкам сложность....

Добавлено через 7 минут
Попробую через итоги.
0
22.02.2013, 13:06
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2013, 13:06

1с 8.2: Разбивает Строки В Печатной Форме Накладной
Добрый день! Нужна помощь профессионалов по такому вопросу: Платформа 1С:Предприятие 8.2...

Время на печатной форме документа в ТиС 7.7
Доброго всем дня! Помогите пожалуйста вывести время проведения документа (Чек ККМ) на печатную...

Как Вывести Заголовок В Печатной Форме
Привет, товарищи! Делал внешнюю печатную форму к документу &quot;Зарплата к выплате&quot;. Там всё простенько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.