Готові рішення для 1с підприємства
При виконанні різних завдань дуже часто виникає необхідність об'єднати 2 таблиці значень. Типового механізму на цю тему немає, передбачається що це легко робиться циклом з перевіркою наявності запису в ТЗ1, куди зливаємо дані з ТЗ2.
Але при кількості записів хоча б 500 циклом, користувачеві стає не під силу від очікування. Залежно від ситуації використовуються цикли або запити.
А якщо ТЗ1 і ТЗ2 за кількістю рядків під 100 000?
А якщо ТЗ1 і ТЗ2 відрізняються за кількістю колонок?
Завжди все об'єднання ТЗ робив циклом з перевіркою наявності рядка перед додаванням. Це звичайно для випадків коли не можна отримати дані відразу в одну ТЗ будь-яким методом.
Займаючись автоматизацією отримання даних з ресурсу від постачальника, зіткнувся з проблемою. кількість рядків в каталозі постачальника близько 100 000 і отримання їх можливо тільки частинами за належністю до груп.
І знову АЛЕ: а якщо ТЗ які потрібно об'єднувати не один конкретний варіант, а їх багато. Писати під кожен конкретний випадок окремий запит на об'єднання? Більшість так і роблять.
У моєму випадку можливих варіантів ТЗ що потрібно об'єднати Не 1 і 2, а багато більше і в міру розвитку проекту, над яким працюю, їх кількість буде тільки зростати, тому розробив варіант універсальний.
Об'єднання ведеться по будь зазначеної колонці.
Варіант запитом не працює якщо є колонки типу рядок неграніченной довжини, для виправлення цього приклад процедури нижче.
Варіант 1. Об'єднання циклом:
Варіант 2. Об'єднання запитом:
Для більш наочного прикладу дивіться обробку, там вибравши 2 документа можна побачити результат роботи обох методів. Запит по ТЗ в другому методі формірется по колонках ТЗ1 і ТЗ2
І невелике доповнення до рішення задачі по об'єднанню двох таблиць значень. Справа в тому що при роботі з ТЗ в запиті є певні обмеження, наприклад рядки необмеженої довжини там неприпустимі, іншими словами при створенні колонки ТЗ (якщо тип СТРОКА) потрібно ЧІТКО вказати довжину рядка. Інакше при виконанні запиту отримаєте помилку: "Тип не може бути обраний в запиті". Тому будьте уважні і чітко прописуйте тип колонок, а на випадок якщо: колись, пофіг, ну або просто неможливо це зробити з будь-якої причини, пропоную таку процедуру для виправлення: