Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/75: Рейтинг темы: голосов - 75, средняя оценка - 4.76
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
1
1C 8.x

Объединение временных таблиц

15.01.2014, 10:46. Показов 14033. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
начнем сначала:
есть Справочник.ФИО загоняется во временную таблицу
есть Константа.Магазин
есть другие данные которые тоже загоняются во временные таблицы

Необходимо:
объединить данные справочника ФИО и константу, т.е. чтобы константа в итоговой таблице шла наровне с данными ФИО
решил сделать так:
справочник уже во временной таблице, загоняем константу тоже во временную таблицу и ОБЪЕДИНЯЕМ
и получаем, как я теперь понимаю, логичную ошибку:

{Отчет.ИтоговаяТаблица.Форма.ФормаОтчета(86)}: Ошибка при вызове метода контекста (Выполнить): Разное количество полей в объединяемых запросах
Результат = Запрос.Выполнить().Выгрузить();

наверное можно тупо к Таблице значений из временной таблицы с константой добавить недостающие колонки, но думаю это не верное решение

как по правильному объединить константу и справочник?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2014, 10:46
Ответы с готовыми решениями:

Совмещение (соединение или объединение) таблиц, особенно временных
Здравствуйте, нужна помощь: есть 2 временные таблицы соединяются вместе при слиянии некоторые...

Объединение таблиц в печатной форме
Ребята, помогите пожалуйста, есть документ Продажи в котором 2 таблицы, товары и услуги. Нужно...

Объединение при проведении двух таблиц документа
Ребята, помогите, пожалуйста, нужно из двух движения (товаров и услуг) сделать одно. Я понимаю что...

8.2 Менеджер Временных Таблиц
Легенда: гружу данные из экселевского файлика, где по трем страницам разбросаны данные. Во всех...

14
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
15.01.2014, 10:48 2
SanSaySP,
1. зачем Вам объединять константу и справочник?
2. Приведите текст запроса.
1
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
15.01.2014, 11:36  [ТС] 3
Цитата Сообщение от Fenomen Посмотреть сообщение
SanSaySP,
1. зачем Вам объединять константу и справочник?
действительно )
СОЕДИНИЛ с конечными данными и получил что хотел )

но для "общего образования" хотелось бы таки узнать, можно ли их объединить... по человечески, без ручного создания недостающих колонок... если вдруг "припрет"?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
15.01.2014, 12:05 4
тупо поле &Конст КАК Константа
Запрос УстПар("Конст", Константы.Конст.получить())

Добавлено через 2 минуты
или как там... Константы.Получить("Конст")? на коленке... и как люди без синт.пома работают
0
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
15.01.2014, 12:54  [ТС] 5
duk337,
1) Константы.Имя.получить()
2) чет не понял...
вот запросы:
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
Запрос.Текст = "
    |ВЫБРАТЬ
    |   *
    |ПОМЕСТИТЬ 
    |   ВременнаяТаблицаФИО
    |ИЗ
    |   Справочник.ФИО КАК ФИО;
    |ВЫБРАТЬ
    |   *
    |ИЗ 
    |   ВременнаяТаблицаФИО";
 
 
Запрос.Текст = "
    |ВЫБРАТЬ
    |   Константы.НазваниеМагазинаВОтчете
    |ПОМЕСТИТЬ 
    |   ВременнаяТаблицаМагазин
    |ИЗ
    |   Константы КАК Константы;
    |ВЫБРАТЬ
    |   *
    |ИЗ 
    |   ВременнаяТаблицаМагазин";
в какое место прикрутить ваш код?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
15.01.2014, 20:31 6
ВЫБРАТЬ &Конст КАК Конст,* Из Справочник.ФИО
всё
1
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
15.01.2014, 23:16  [ТС] 7
написал
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Запрос.Текст = "
    |ВЫБРАТЬ
    |   &Конст КАК Конст,
    |   *
    |ПОМЕСТИТЬ 
    |   ВременнаяТаблицаФИО
    |ИЗ
    |   Справочник.ФИО КАК ФИО;
    |ВЫБРАТЬ
    |   *
    |ИЗ 
    |   ВременнаяТаблицаФИО";
    Запрос.УстановитьПараметр("Конст",Константы.НазваниеМагазинаВОтчете.получить());
ошибок не выдает, запрос проходит, но константа в списке отсутствует, т.е. есть только данные из ФИО

Добавлено через 5 минут
попробовал сделать запрос конструктором, получилось это:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Запрос2 = Новый Запрос;
    Запрос2.Текст = "
    |ВЫБРАТЬ
    |   Константы.НазваниеМагазинаВОтчете,
    |   ФИО.Ссылка,
    |   ФИО.ПометкаУдаления,
    |   ФИО.Предопределенный,
    |   ФИО.Код,
    |   ФИО.Наименование,
    |   ФИО.Команда,
    |   ФИО.Активный
    |ИЗ
    |   Константы КАК Константы,
    |   Справочник.ФИО КАК ФИО";
    Результат2 = Запрос2.Выполнить().Выгрузить();
но результат, тот же самый... только данные ФИО
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
15.01.2014, 23:20 8
1. пакет не нужен. Один запрос.
2. попробуйте без "*", прямыми указаниями.

Добавлено через 1 минуту
ещё скажите, что это Вы конструктором такое урезали

Добавлено через 1 минуту
ага. Так и сказали... ну-ну
А сделать так, как посоветовали через параметр одним запросом с прямыми указаниями полей влом.
Константа-то хоть заполнена?
0
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
15.01.2014, 23:48  [ТС] 9
так... заминка...в общем код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
    Запрос.Текст = "
    |ВЫБРАТЬ
    |   &Конст КАК Конст,
    |   *
    |ПОМЕСТИТЬ 
    |   ВременнаяТаблицаФИО
    |ИЗ
    |   Справочник.ФИО КАК ФИО;
    |ВЫБРАТЬ
    |   *
    |ИЗ 
    |   ВременнаяТаблицаФИО";
    Запрос.УстановитьПараметр("Конст",Константы.НазваниеМагазинаВОтчете.получить());
оказывается работает... но не как ОБЪЕДИНЕНИЕ (добавление новой строки), а как СОЕДИНЕНИЕ, т.е. добавляется новый СТОЛБЕЦ... я это не сразу заметил, т.к. искал новую строку.
В общем это не то что нужно.

повторюсь я пытался сделать так, чтобы наровне со всеми сотрудниками еще одной строкой было название магазина которое хранится в константе - это нужно чтобы потом объединить с регистром сведений и пофамильно подставить некоторые циферки

Добавлено через 3 минуты
на текущий момент реализовал так:
загнал константу в отдельную временную таблицу и объеденил с регистром сведений
загнал ФИО еще в одну врем.табл и еще раз объеденил с регистром сведений

как бы лишний проход по регистру сведений, по этому и считаю лучше если ФИО и константа будут в одной временной таблице.
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.01.2014, 02:52 10
Временные таблицы это лучше чем вложенный запрос с точки зрения производительности если база клиент-сервер. НО использовать ВТ на каждый чих тоже не верно, т.к. это негативно влияет на производительность БД - что такое временная таблица? Это временный результат запроса сохраненный на жесткий диск для последующего чтения чем больше ВТ в запросе тем сильнее нагрузка на самое слабое место в компьютере (на сегодняшний день) - HDD.
Не понятно почему вы не делаете все в одном запросе? Зачем все загонять в ВТ?

Добавлено через 6 минут
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 |ВЫБРАТЬ ФИО.Ссылка КАК Ссылка,
    |   ФИО.ПометкаУдаления,
    |   ФИО.Предопределенный,
    |   ФИО.Код,
    |   ФИО.Наименование,
    |   ФИО.Команда,
    |   ФИО.Активный
    |ИЗ
    |   Справочник.ФИО КАК ФИО
    | ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ Константы.НазваниеМагазинаВОтчете,
    |  NULL,
    |  NULL,
    |  NULL,
    |  NULL,
    |  NULL,
    |  NULL
    | ИЗ Константы КАК Константы
Значение константы будет получено в колонку "Ссылка"

Вот результат такого объединения для последующего соединения можно поместить в ВТ
1
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
16.01.2014, 09:11  [ТС] 11
Dethmontt,
1) загруженность БД - ну можно лишние
1C
1
2
3
Запрос.Текст = "
    |УНИЧТОЖИТЬ 
    |   ИмяВременнойТаблицы";
2) почему не делаю в одном запросе - потому что не уме...Л, но по вашему примеру думаю смогу от части ВТ избавиться или по крайней мере удалять буду... раз все так серьезно
П.С. в моем текущем конкретном случае объем данных ваще ни какой... 50-100 строк ) но надо же сразу привыкать делать по "правильному" )

3) заодно в вашем ответе увидел как добавлять по "правильному" колонки

Итог - ваш код делает именно то, что мне нужно - ПРЕВОСХОДНО!
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.01.2014, 10:42 12
Цитата Сообщение от SanSaySP Посмотреть сообщение
крайней мере удалять буду...
Они и так удаляются после выполнения запроса (в вашем случае явного удаления не требуется) что кстати тоже нагружает HDD
0
23 / 23 / 1
Регистрация: 14.12.2013
Сообщений: 407
16.01.2014, 11:02  [ТС] 13
Цитата Сообщение от Dethmontt Посмотреть сообщение
Они и так удаляются после выполнения запроса (в вашем случае явного удаления не требуется) что кстати тоже нагружает HDD
кудай то они удаляются... они вроде как удаляются только когда я напишу
1C
1
МенеджерВременныхТаблиц.Закрыть();
Так я не понял ))) что лучше, чтобы они висели в памяти или удалять когда уже их использовал? )... это я говорю о "временных" временных таблицах которые создаю, чтобы собрать потом одну МЕГА временную таблицу со всеми данными.

Пример
1 действие: ВТ1 создал
2 действие: ВТ2 создал
3 действие: ВТ1 соединил/объединил с ВТ2 в ВТ3
4 действие: ВТ4 создал
5 действие: ВТ3 соединил/объединил с ВТ4 в ВТ5
6 действие: использовал ВТ5
7 действие: Закрыл МенеджерВременныхТаблиц
вот после действия 3 ВТ1 и ВТ2 больше не используются, их лучше удалить или забить на них?
или зависит от объема данных?
0
286 / 186 / 18
Регистрация: 20.02.2012
Сообщений: 926
16.01.2014, 11:17 14
можно очистить, удалить... если ты их дальше не используешь... а то они висят в стеке до закрытия формы
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.01.2014, 15:03 15
Цитата Сообщение от SanSaySP Посмотреть сообщение
кудай то они удаляются... они вроде как удаляются только когда я напишу
Если используешь менеджер временных таблиц ТО ДА, если не используешь то не нужно ничего закрывать

В пределе одного запроса это лишь лишняя переменная!!!

МВТ в основном используется для передачи результата запроса помещенный в МВТ другому запросу
(Читай справку для чего нужен МВТ)

Добавлено через 4 минуты
SanSaySP, если ты создаешь все ВТ в одном тексте запроса, то МВТ тебе нафиг не нужна. Это опять же лишняя память...
0
16.01.2014, 15:03
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2014, 15:03
Помогаю со студенческими работами здесь

Объединение таблиц
Добрый день. Можно ли сделать так, чтобы в документе при выборе реквизитов, заполнялась табличная...

Объединение таблиц значений
Добрый день! Собственно вопрос - как оптимально и быстро объединить две одинаковые по составу...

Нужен совет по языку запросов-объединение таблиц
Всем привет, задача такая: есть регистрсведенийОтруки, который забивается от руки:)))) ,он имеет...

Объединение временных таблиц в запросе
Здравствуйте, подскажите пожалуйста, пытаюсь в запросе объединить две временные таблицы, пишет...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Почему при инициализации массива 3х3х3 будет создано 13 одномерных массивов?
Alexander-7 16.01.2025
При инициализации многомерного массива, в данном случае трехмерного массива размерностью 3x3x3, может возникнуть путаница относительно того, как структура данных организована в памяти. Общее число. . .
Использование связки 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) стали неотъемлемыми элементами процесса создания качественных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru