Соединение таблиц значений (Таблица Значений) по ключевым полям

Публикация № 86971

Разработка - Универсальные функции

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

Сделал функцию, которая объединяет 2 таблицы в одну, наподобие полного соединения в запросе.

 

ТЗ1 - первая Таблица значений

ТЗ2 - вторая Таблица значений

KEYт_str - колонки, по которым происходит объединение, пример:  "номенклатура" или "номенклатура,ЕдИзм"

функция ПОЛНОЕ_СОЕДИНЕНИЕ(ТЗ1,ТЗ2,KEYт_str)

ТЗ = новый ТаблицаЗначений;

//---------------------------------------------
// разбор ключевых колонок в масив
//---------------------------------------------
str = "" + KEYт_str; // Копирование исходной строки
KEYт_mas = новый Массив;
str = СтрЗаменить(str,",",Символы.ПС);
Для N=1 по СтрЧислоСтрок(str) Цикл
name = СтрПолучитьСтроку(str,N);
KEYт_mas.Добавить(name);
КонецЦикла;
//---------------------------------------------


//---- проверка на наличие ключевых колонок ---
Для каждого KEYт из KEYт_mas Цикл
Если (ТЗ1.Колонки.Найти(KEYт)=неопределено) 
ИЛИ (ТЗ2.Колонки.Найти(KEYт)=неопределено) Тогда
Сообщить("нет ключевой колонки"); 
возврат неопределено; 
КонецЕсли;
КонецЦикла;
//---------------------------------------------


//--- Формируем новую ТЗ из 2х таблиц ---------
Для каждого К Из ТЗ1.Колонки Цикл
// из первой ТЗ берём все колонки
ТЗ.Колонки.Добавить(К.Имя);
КонецЦикла; 
Для каждого К Из ТЗ2.Колонки Цикл
// из второй все кроме ключевой
Если KEYт_mas.Найти(К.Имя) <> неопределено тогда 
Продолжить;
КонецЕсли;
ТЗ.Колонки.Добавить(К.Имя);
КонецЦикла; 
//---------------------------------------------



//----------------------------------------------------
// Заполняем строчки ключей которых НЕТ в ТЗ2
//----------------------------------------------------
Для каждого стр1 Из ТЗ1 Цикл

// Формируем структуру поиска
Отбор = Новый Структура;
Для каждого KEYт из KEYт_mas Цикл
Отбор.Вставить(KEYт,стр1[KEYт]);
КонецЦикла;

Если ТЗ2.НайтиСтроки(Отбор).Количество() = 0 тогда
стр = ТЗ.Добавить();
// копируем все значения из строчки ТЗ1
Для каждого К Из ТЗ1.Колонки Цикл
стр[К.Имя] = стр1[К.Имя];
КонецЦикла;
КонецЕсли;

КонецЦикла; 
//----------------------------------------------------



//----------------------------------------------------
// Заполняем строчки ключи которых ЕСТЬ в ТЗ2
//----------------------------------------------------
Для каждого стр1 Из ТЗ1 Цикл

// Формируем структуру поиска
Отбор = Новый Структура;
Для каждого KEYт из KEYт_mas Цикл
Отбор.Вставить(KEYт,стр1[KEYт]);
КонецЦикла;

НайденныеСтроки = ТЗ2.НайтиСтроки(Отбор);

Если НайденныеСтроки.Количество() > 0 тогда
Для каждого стр2 Из НайденныеСтроки Цикл
//заполняем все колонки
стр = ТЗ.Добавить();
// из ТЗ1
Для каждого К Из ТЗ1.Колонки Цикл
стр[К.Имя] = стр1[К.Имя];
КонецЦикла;
// из ТЗ2
Для каждого К Из ТЗ2.Колонки Цикл
стр[К.Имя] = стр2[К.Имя];
КонецЦикла;
КонецЦикла;

КонецЕсли;

КонецЦикла;
//----------------------------------------------------



//----------------------------------------------------
// Заполняем строчки из ТЗ2 ключей которых НЕТ в ТЗ1
//----------------------------------------------------
Для каждого стр2 Из ТЗ2 Цикл
// Формируем структуру поиска
Отбор = Новый Структура;
Для каждого KEYт из KEYт_mas Цикл
Отбор.Вставить(KEYт,стр2[KEYт]);
КонецЦикла;

Если ТЗ1.НайтиСтроки(Отбор).Количество() = 0 тогда
стр = ТЗ.Добавить();
// копируем все значения из строчки ТЗ1
Для каждого К Из ТЗ2.Колонки Цикл
стр[К.Имя] = стр2[К.Имя];
КонецЦикла;
КонецЕсли;

КонецЦикла;
//----------------------------------------------------

возврат ТЗ; 

КонецФункции

 

3

Специальные предложения

См. также

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

Обработка расширением на клиенте 25

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Расширения Универсальные функции

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

31.10.2019    3136    EvgenURNN    9       

Использование XML-схемы из макета внешней обработки 22

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Обмен через XML Универсальные функции

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    3889    OlesiaM    10       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

Быстрое создание наполненных коллекций 58

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    3833    SeiOkami    51       

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования 42

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Универсальные функции Обмен через XML

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    4437    kraspila    27       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

Обертка функций Excel на русском. Ускорение процесса разработки. 46

Статья Программист Нет файла v8 Windows Бесплатно (free) Загрузка и выгрузка в Excel Универсальные функции

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    3153    DmitryKotov    6       

Функция СтрШаблон с именованными маркерами 1

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Универсальные функции

Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %n

1 стартмани

21.10.2019    1364    kirinalex    27       

Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

7500 рублей

Полезняшки по СКД и построителям. Просто код 47

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Универсальные функции

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    4869    Yashazz    45       

Полезные процедуры и функции для программиста 160

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Универсальные функции

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

07.10.2019    12504    HostHost    23       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Отслеживание выполнения фонового задания 143

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    13555    ids79    16       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.

29700 руб.

Сохранение запроса со всеми параметрами и временными таблицами 20

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Универсальные функции

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    3229    Serge R    5       

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня 7

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    2956    obsfromekb    11       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4 103

Статья Программист Нет файла v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free) Практика программирования Универсальные функции Разработка

Различные варианты корректировки типовых механизмов проведения документов, без корректировки основной конфигурации. Использование расширений, подписок на событие и механизма локализации типовых документов.

22.03.2019    10942    ids79    14       

Добавление отчетов в типовые конфигурации 1С 209

Статья Программист Нет файла v8::УФ v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    29371    ids79    40       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Работа со строками: от простого к сложному 26

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Универсальные функции

Простые примеры работы со строками, в конце более читаемый разбор сложных текстов.

14.01.2019    10018    Evg-Lylyk    17       

Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений 6

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

Решение проблемы несовпадения номеров колонок с номерами субконто на счете при выгрузке в таблицу значений.

14.01.2019    3077    The Ded    3       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 509

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    39734    GeterX    94       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500/9500 рублей

Кадровые данные сотрудников в ЗУП 3.1 в отчетах 42

Статья Программист Нет файла v8 v8::СПР ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) Универсальные функции

Параметры используемые для получения данных сотрудников в ЗУП 3.1. Пригодится для разработки отчетов как напоминалка.

07.11.2018    15806    fromlion    17       

Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД 73

Статья Программист Нет файла v8::УФ v8::СКД ERP2 УТ11 Россия Бесплатно (free) Универсальные функции

Описан способ добавления расшифровки отчета на СКД как встроенного в систему, так и добавленного внешнего отчета.

27.09.2018    7363    bmk74    3       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

Функция НайтиФайлы() в каталоге netshare на Linux - обход ошибки работы 6

Статья Программист Нет файла v8 Linux Бесплатно (free) Практика программирования Универсальные функции

Решение проблемы применения функции НайтиФайлы() в каталоге с netshare на Linux-сервере - не работает поиск файлов по указанной маске (шаблону)

19.09.2018    3888    drmaxart    1       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Простой способ программно открыть заполненную форму нового (незаписанного) документа в тонком клиенте 15

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

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

09.06.2018    8239    Serge R    12       

Генерация временного ряда запросом 7

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Универсальные функции

Способ генерации последовательности дат средствами языка запроса 1С.

07.05.2018    6585    dim_zal    6