Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Объединение двух ТЗ с похожей структурой и вывод в табличный документ с группировкой строк          
sanytch Подменю пользователя
сообщение 09.12.16, 15:53
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток форумчане. Имею 2(две) ТаблицыЗначений, полученых из запросов: Таб с одной колонкой Наименование и Таб2 с колонками Наименование, Дата, Сумма. В Таб полный перечень Наименований, а в Таб2 только те Наименования, у которых есть Дата и Сумма, причем для одного Наименования может быть несколько строчек Дата и Сумма, а может и вообще не быть. Нужно сформировать Таблицу из полного перечня Наименований и к ней присоединить записи из Дата и Сумма. Для наглядности рисунок:

Предполагаю что группировка в ТЗ невозможно, поэтому предполагаю что результирующей таблицей будет ТабличныйДокумент.
У меня лично получилось в качестве результирующей таблицы сделать ТаблицуЗначений и с помощью вложеных циклов
    Для Каждого Стр2 Из Таб2 Цикл
        Для Каждого Стр из Таб Цикл
            Если Строка(Стр.Наименование)=Строка(Стр2.Наименование) Тогда
                Стр.Дата= Стр2.Дата;
                Стр.Сумма = Стр2.Сумма;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;

заполнить её, НО всё хорошо когда Дата и Сумма для Наименования одна запись(на картинке Наименование В и Е), а вот если их 2 и более (Наименования А и Г), то в результирующую таблицу попадает только последнее значение Даты и Суммы. Также нет группировки по Наименованию в силу того что это ТЗ.
В общем помогите своими соображениями по этому поводу. Не прошу кодить - буду пробовать сам, мне нужна мысль, алгоритм... пробовал после внутреннего цикла снова проверять Наименование (не то же Нименование снова) но как не мучал Если..Тогда..Иначе так ничего и не добился существенно, лишь только сильнее запутался. Буду признателен за любую подсказку.

Flexy Подменю пользователя
сообщение 09.12.16, 15:58
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 231 раз
Рейтинг: 0

Почему бы в самом запросе не объединить эти самые две таблицы и не описать итоги по наименованию?

logist Подменю пользователя
сообщение 09.12.16, 15:59
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Запросом собрать нужную таблицу, например.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sanytch Подменю пользователя
сообщение 09.12.16, 16:26
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 15:59 * ,
Первый запрос для Таб отбирает Наименования из Справочника, для Таб2 Запрос выдирает Дату и Сумму из ТабличнойЧасти Документа. Мне нужны в конечной таблице ВСЕ Наименования, поэтому если их нет в Документе то и Таб2 их содержать не будет. Данную задачу, точнее её начало я озвучивал вот здесь. Там использовал оборот по счёту, н если оборотов нет то и Наименование не попадало в запрос, поэтому сформировал ВСЕ Наименования в отдельном запросе а к нему пытаюсь присоединить данные из Таб2. Вроде бы устраивает такой подход но возникли трудности, описанные выше - в Таб попадает только одна последняя запись из Таб2 и как сгруппировать их.

Flexy @ Сегодня, 15:58 * ,
Ваша мысль повторяет ответ logist-а. В моём случае всё немного усложнено... ответил ему.

Flexy Подменю пользователя
сообщение 09.12.16, 16:35
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 231 раз
Рейтинг: 0

sanytch @ Сегодня, 16:26 * ,
Цитата(sanytch @ 09.12.16, 16:26) *
Мне нужны в конечной таблице ВСЕ Наименования, поэтому если их нет в Документе то и Таб2 их содержать не будет.

Используйте ЛЕВОЕ СОДИНЕНИЕ в запросе.
Как-то так:
ВЫБРАТЬ
Спр.Наименование,
Док.Дата,
Док.Сумма
ИЗ
Справочник... КАК Спр
ЛЕВОЕ СОЕДИНЕНИЕ Документ... КАК Док
ПО Спр.Наименование = Док.Наименование
ИТОГИ ПО Спр.Наименование

Или вариант для заморочкой с двумя ТЗ:
ВЫБРАТЬ *
ПОМЕСТИТЬ Т1
ИЗ &Таб КАК Т1
;
ВЫБРАТЬ *
ПОМЕСТИТЬ Т2
ИЗ &Таб2 КАК Т2
;
ВЫБРАТЬ
Т1.Наименование,
Т2.Дата,
Т2.Сумма
ИЗ
Т1
ЛЕВОЕ СОЕДИНЕНИЕ Т2
ПО Т1.Наименование = Т2.Наименование
ИТОГИ ПО Т1.Наименование
...
Запрос.УстановитьПараметр("Т1",Т1);
Запрос.УстановитьПараметр("Т2",Т2);

Сообщение отредактировал Flexy - 09.12.16, 16:38

sanytch Подменю пользователя
сообщение 09.12.16, 16:46
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Суть в том что, если в Таб2 следующее А после текущего Наименования тоже А, то в Таб нужно добавить новую строчку где Наименование А, Дата А2 и соответствующая Сумма.
если это прояснит ситуацию то вот оба запроса:
Запрос для Таб:
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Контрагенты.Наименование КАК ФИОКонтрагент,
    |    Контрагенты.ЭтоГруппа,
    |    Контрагенты.Родитель КАК Родитель
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.ЭтоГруппа = ЛОЖЬ
    |    И Контрагенты.Ссылка В ИЕРАРХИИ(&Группа)
    |
    |УПОРЯДОЧИТЬ ПО
    |    Родитель,
    |    ФИОКонтрагент";

Запрос для Таб2:
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ИНАГРО_НачислениеПоПаямТовары.Контрагент.Родитель КАК КонтрагентРодитель,
    |    ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата КАК ДатаДок,
    |    ИНАГРО_НачислениеПоПаямТовары.Контрагент КАК Контрагент,
    |    ИНАГРО_НачислениеПоПаямТовары.Сумма КАК Сумма,
    |    ИНАГРО_НачислениеПоПаямТовары.Удержано КАК Удержано,
    |    ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ КАК УдержаноВЗ,
    |    ИНАГРО_НачислениеПоПаямТовары.Алименты КАК Алименты,
    |    ИНАГРО_НачислениеПоПаямТовары.КВыдаче КАК КВыдаче
    |ИЗ
    |    Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары
    |ГДЕ
    |    ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
    |    И ИНАГРО_НачислениеПоПаямТовары.Контрагент.Родитель.Ссылка В ИЕРАРХИИ(&Группа)
    |    И ИНАГРО_НачислениеПоПаямТовары.Ссылка.Проведен = ИСТИНА
    |
    |УПОРЯДОЧИТЬ ПО
    |    КонтрагентРодитель,
    |    Контрагент,
    |    ДатаДок";

Может их и можно объединить, но для меня это пока картина не ясная...

Flexy @ Сегодня, 16:35 * ,
Добавил текст запросов, может картина станет яснее...

Flexy @ Сегодня, 16:35 * ,
попробую Ваш вариант с заморочкой с двумя ТЗ 32000000.gif

Petre Подменю пользователя
сообщение 09.12.16, 16:57
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2920
Из: Київ, Україна
Спасибо сказали: 1238 раз
Рейтинг: 1344.3

Цитата(sanytch @ 09.12.16, 16:46) *
Может их и можно объединить, но для меня это пока картина не ясная...

Объединять не надо. Надо соединять левым.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

sava1 Подменю пользователя
сообщение 09.12.16, 17:10
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Напишите, что хотите получить в результате.
Там первой выборки вооще не надо.
во втором запросе - правое соединение справочника + итоги по нужному.

sanytch Подменю пользователя
сообщение 09.12.16, 17:24
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Сегодня, 17:10 * ,
лучше покажу:

Это стандартный Отчет "Обороты счета", но в него не попадают контрагенты у которых нет оборотов, точнее ни оборотов ни остатков... а мне они тоже нужны...

sava1 Подменю пользователя
сообщение 09.12.16, 17:31
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Вам нужен отчет по бух данным или документу?

sanytch Подменю пользователя
сообщение 09.12.16, 17:45
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Сегодня, 17:31 * ,
ни там ни там ведь нет Контрагентов у которых пусто. скорее все контрагенты и данные по тем, кто фигурирует в документу НачислениеПоПаям. Как то так... Может я в конце пятницы чего-то неправильно формулирую уже. 26000000.gif Думаю стоит к этому вернутся завтра на свежую голову 63000000.gif

На сегодня спасибо всем за советы, завтра попробую воплотить в жЫсть)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 0:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!