Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/40: Рейтинг темы: голосов - 40, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
1

Объединение таблиц в печатной форме

26.03.2018, 08:26. Показов 7434. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, помогите пожалуйста, есть документ Продажи в котором 2 таблицы, товары и услуги. Нужно чтобы на печать выходила 1 (Товары/Услуги)

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Процедура Печать(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
    Макет = Документы.Продажа.ПолучитьМакет("Печать");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Продажа.Дата,
    |   Продажа.КонтактноеЛицо,
    |   Продажа.Контрагент,
    |   Продажа.Номер,
    |   Продажа.Склад,
    |   Продажа.Сотрудник,
    |   Продажа.СуммаДокумента,
    |   Продажа.Товары.(
    |       НомерСтроки,
    |       Номенклатура,
    |       Количество,
    |       Цена,
    |       Сумма
    |   ),
    |   Продажа.Услуги.(
    |       НомерСтроки,
    |       Номенклатура,
    |       Количество,
    |       Цена,
    |       Сумма
    |   )
    |ИЗ
    |   Документ.Продажа КАК Продажа
    |ГДЕ
    |   Продажа.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
 
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
    ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
    Подвал = Макет.ПолучитьОбласть("Подвал");
 
    ТабДок.Очистить();
 
    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
 
        ТабДок.Вывести(ОбластьЗаголовок);
 
        Шапка.Параметры.Заполнить(Выборка);
        //номер без 0
        МойНомер = шапка.Параметры.Номер; 
        шапка.Параметры.Номер = Формат(Число(МойНомер),"ЧГ=");
 
        ТабДок.Вывести(Шапка, Выборка.Уровень());
 
        ТабДок.Вывести(ОбластьТоварыШапка);
        ВыборкаТовары = Выборка.Товары.Выбрать();
        Пока ВыборкаТовары.Следующий() Цикл
            ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
            ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
        КонецЦикла;
 
        ТабДок.Вывести(ОбластьУслугиШапка);
        ВыборкаУслуги = Выборка.Услуги.Выбрать();
        Пока ВыборкаУслуги.Следующий() Цикл
            ОбластьУслуги.Параметры.Заполнить(ВыборкаУслуги);
            ТабДок.Вывести(ОбластьУслуги, ВыборкаУслуги.Уровень());
        КонецЦикла;
 
        Подвал.Параметры.Заполнить(Выборка);
    //  сумма прописью
        Подвал.Параметры.СуммаДокумента=ЧислоПрописью(Подвал.Параметры.СуммаДокумента, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2");
        ТабДок.Вывести(Подвал);
 
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2018, 08:26
Ответы с готовыми решениями:

По печатной форме
Добрый день! Есть вот такой код: ЗапросПоТоварам1 = Новый Запрос();...

Расчет в печатной форме
Привет. Подскажите пожалуйста. В комплексной автоматизации 1с 8.3 где проводится расчет в печатной...

Сортировка ТЧ в печатной форме
Добрый день! Такая проблема, ни как не идет сортировка в печатной форме по значению Номенклатура....

Кнопки на печатной форме
Доброе утро! Конфигурация 1С8 УТ 11.2. нетиповая. Создала в нетиповую печатную форму для...

19
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 08:37 2
В всмысле ИЛИ товары ИЛИ услуги? . Или товары + услуги?
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 10:04  [ТС] 3
Не поняла вопрос

Добавлено через 53 секунды
Не поняла где у меня ИЛИ.

Добавлено через 4 минуты
Товары/Услуги это значит одна таблица, в которой сначала идут товары потом Услуги.
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 10:07 4
Вот я и спрашиваю, что в документе у вас есть две тз - товары и услуги. Сейчас у вас сперва выводятся товары, потом выводятся услуги, в две тз. Вы говорите вам нужна одна - я и спрашиваю, вам нужно вывести одну таблицу из этих двух, или слить эти две таблицы в одну?
0
209 / 183 / 31
Регистрация: 24.10.2011
Сообщений: 752
26.03.2018, 10:11 5
Так как ты работаешь с документом, то в принципе тебе запрос не нужен, можешь сам обойти все табличные части документа в циклах.
А так используется механизм объединения таблиц типа такого:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"ВЫБРАТЬ
|   Продажа.Номенклатура КАК Номенклатура,
|   Продажа.Количество КАК Количество
|ИЗ
|   Документ.Продажа.Товары КАК Продажа
|ГДЕ
|   Продажа.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   Продажа.Номенклатура,
|   Продажа.Количество
|ИЗ
|   Документ.Продажа.Услуги КАК Продажа
|ГДЕ
|   Продажа.Ссылка = &Ссылка"
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 10:26  [ТС] 6
Слить в одну)

Добавлено через 4 минуты
Ругается( Я пробовала через объеденить но у меня не хватило знаний сделать грамотно

Документ.Продажа.МодульМенеджера(26)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(7, 19)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Продажа.Ссылка <<?>>= &Ссылка
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 10:34 7
Ну вот что то подобное должно работать:

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
ВЫБРАТЬ
    ПродажаУслуги.Ссылка.Дата,
    ПродажаУслуги.Ссылка.КонтактноеЛицо
    ПродажаУслуги.Ссылка.Контрагент,
    ПродажаУслуги.Ссылка.Номер,
    ПродажаУслуги.Ссылка.Склад,
        ПродажаУслуги.Ссылка.Сотрудник,
    ПродажаУслуги.Ссылка.СуммаДокумента,
    ПродажаУслуги.НомерСтроки,
    ПродажаУслуги.Номенклатура,
    ПродажаУслуги.Количество,
    ПродажаУслуги.Цена,
    ПродажаУслуги.Сумма
ИЗ
    Документ.Продажа.Услуги КАК ПродажаУслуги
ГДЕ
    ПродажаУслуги.Ссылка = &Ссылка
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
    ПродажаТовары.Ссылка.Дата,
    ПродажаТовары.Ссылка.КонтактноеЛицо,
    ПродажаТовары.Ссылка.Контрагент,
    ПродажаТовары.Ссылка.Номер,
    ПродажаТовары.Ссылка.Склад,
        ПродажаТовары.Ссылка.Сотрудник,
    ПродажаТовары.Ссылка.СуммаДокумента,
    ПродажаТовары.НомерСтроки,
    ПродажаТовары.Номенклатура,
    ПродажаТовары.Количество,
    ПродажаТовары.Цена,
    ПродажаТовары.Сумма
ИЗ
    Документ.Продажа.Товары КАК ПродажаТовары
ГДЕ
    ПродажаТовары.Ссылка = &Ссылка
0
209 / 183 / 31
Регистрация: 24.10.2011
Сообщений: 752
26.03.2018, 10:40 8
Цитата Сообщение от Olgatltt Посмотреть сообщение
{(7, 19)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Продажа.Ссылка <<?>>= &Ссылка
Вы &Ссылка передаете как массив? Если да, то условие Продажа.Ссылка В (&Ссылка).
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 11:11  [ТС] 9
Теперь ругается на все подряд((

{Документ.Продажа.МодульМенеджера(113)}: Преобразование значения к типу Число не может быть выполнено
шапка.Параметры.Номер = Формат(Число(МойНомер),"ЧГ=");

Добавлено через 31 секунду
Егору:

{Документ.Продажа.МодульМенеджера(90)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(4, 2)}: Неправильный псевдоним "ПродажаУслуги.Ссылка.Контрагент"
<<?>>ПродажаУслуги.Ссылка.Контрагент,
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 11:31 10
Скинули бы базу
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 11:55  [ТС] 11
сейчас попробую
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 12:05  [ТС] 12
https://www.cyberforum.ru/atta... 1522055115
Вложения
Тип файла: rar InfoBase8.rar (7.86 Мб, 39 просмотров)
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 13:58 13
Olgatltt, Вам обязательно этим запросом? Просто это в крайне не правильно
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 14:04  [ТС] 14
нет конечно))
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 14:14 15
Лучший ответ Сообщение было отмечено Olgatltt как решение

Решение

Olgatltt, тогда предлагаю сделать как то так:
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
Процедура Печать(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
    Макет = Документы.Продажа.ПолучитьМакет("Печать");
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
    ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
    Подвал = Макет.ПолучитьОбласть("Подвал");
 
    ТабДок.Очистить();
 
    ВставлятьРазделительСтраниц = Ложь;
    Для каждого Выборка из Ссылка цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
 
        ТабДок.Вывести(ОбластьЗаголовок);
 
        Шапка.Параметры.Заполнить(Выборка);
        //номер без 0
        МойНомер = шапка.Параметры.Номер; 
        шапка.Параметры.Номер = Формат(Число(МойНомер),"ЧГ=");
 
        ТабДок.Вывести(Шапка);
 
        ТабДок.Вывести(ОбластьТоварыШапка);
        ВыборкаТовары = Выборка.Товары.Выгрузить();
        сч=1;
        Для каждого мВыборкаТовары из ВыборкаТовары цикл
            ОбластьТовары.Параметры.Заполнить(мВыборкаТовары);
            ОбластьТовары.Параметры.НомерСтроки = сч;
            ТабДок.Вывести(ОбластьТовары, сч);
            сч = сч+1;
        КонецЦикла;
 
        ВыборкаУслуги = Выборка.Услуги.Выгрузить();
        Для каждого мВыборкаУслуги из ВыборкаУслуги цикл
            ОбластьТовары.Параметры.Заполнить(мВыборкаУслуги);
            ОбластьТовары.Параметры.НомерСтроки = сч;
            ТабДок.Вывести(ОбластьТовары, сч);
            сч = сч+1;
        КонецЦикла;
 
        Подвал.Параметры.Заполнить(Выборка);
    //  сумма прописью
        Подвал.Параметры.СуммаДокумента=ЧислоПрописью(Подвал.Параметры.СуммаДокумента, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2");
        ТабДок.Вывести(Подвал);
 
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры
1
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 14:21  [ТС] 16
Круто)))) Спасибо, сейчас попробую понять что и как, хороший опыт! СПАСИБО!!!
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 14:46 17
Olgatltt, да не за что пока, подойдет ли вам. Отпишитесь о результате
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 14:53  [ТС] 18
все ПРЕКРАСНО работает! А это главное. Я делала через запрос потому что он мне НЕМНОГО понятней)))) чуть-чуть
0
Тест
Эксперт 1С
383 / 162 / 56
Регистрация: 26.02.2010
Сообщений: 1,245
26.03.2018, 14:55 19
Вы делали запрос к объекту, в котором сидите. Но дотянутся до реквизитов объекта, в котором сидите можете и без запроса, + вы ссылку на документ передаете в параметре. Я сделал цикл по массиву из параметра, где есть все нужные данные, и немного модифицировал цикл то ТЗ.
0
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 58
26.03.2018, 15:12  [ТС] 20
Надеюсь, когда-нибудь и я смогу это сделать)))
0
26.03.2018, 15:12
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2018, 15:12
Помогаю со студенческими работами здесь

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

Представление нуля в печатной форме
Добрый день. Есть документ с макет (скрин макета в изображении) при нажатии на кнопку формируется...

Присоединение колонтитула в печатной форме
Доброго времени суток. есть внешняя обработка (выводит договор на основании документа). в макете...

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

Табличная часть в печатной форме
Доброго времени суток всем форумчанам! Сказали разработать печатную форму для документа. В...

Автовысота строки в печатной форме
Подскажите, как настроить автовысоту в печатной форме, чтобы высота была разной в каждой строке (в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru