1с как сравнить две таблицы значений

1с как сравнить две таблицы значений
На чтение
8 мин.
Просмотров
25
Дата обновления
06.11.2024

Задача тривиальная: сравнить два табличных раздела или таблицы значений с действием и отобразить позиции в разных числах. В моем случае я сравниваю заказ на покупку и квитанцию.

Это простое действие выполняется с помощью простого запроса, которому передаются два параметра: две ссылки на сравниваемые документы.

Сам текст запроса для сравнения табличных разделов:

ВЫБИРАТЬ

Номенклатура заказов,

СУММА (Заказы.Количество) КАК Количество

Делаем заказы

ИЗ

Document.Order to Supplier.Goods AS Заказы

ГДЕ ЭТО НАХОДИТСЯ

Orders.Ref = & Заказ

ЗАГРУЗИТЬ ОТ

Номенклатура заказов

;

////////////////////////////////////////////////////////////////////////////////

ВЫБИРАТЬ

Номенклатура чеков,

СУММА (Поступления.Количество) КАК Количество

POST прибытия

ИЗ

Документ.Поступление товаровУслуги.Товары как поступления

ГДЕ ЭТО НАХОДИТСЯ

Receipts.Ref = & Квитанции

Получите бесплатные видеоуроки по 267 1С:

ЗАГРУЗИТЬ ОТ

Номенклатура чеков

;

////////////////////////////////////////////////////////////////////////////////

ВЫБИРАТЬ

Номенклатура заказа AS Номенклатура,

ЕСТЬ NULL (Order.Quantity, 0) AS QuantityOrdered,

ЕСТЬ NULL (Счет-фактура.Количество, 0) КАК Полученное количество

Финальное МЕСТО

ИЗ

Заказать КАК Заказать

ЛЕВАЯ ПОДПИСКА Квитанция как счет-фактура

ON Order.Nomenclature = Счет-фактура.Номенклатура

ВЫБИРАТЬ

Номенклатура счетов,

ISNULL (количество заказа, 0),

YESNULL (количество накладной, 0)

ИЗ

Получено как счет-фактура

LEFT JOIN Заказать как заказать

Программное обеспечение (Order.Nomenclature = Invoice.Nomenclature)

;

////////////////////////////////////////////////////////////////////////////////

ВЫБИРАТЬ

Окончательная номенклатура,

Общее заказанное количество,

Общее количество получено,

Общее количество заказанных — Общее количество, полученное как разница в количестве

ИЗ

Финал AS Final

ГДЕ ЭТО НАХОДИТСЯ

Количество.Общее заказано — Количество.Общее получено 0

В результате выполнения этого запроса мы получим только строки, в которых количество различается, или элемент, который не существует вообще.

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

Если вы начинаете изучать кодирование в 1С, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — новые ролики выкладывают регулярно):

Задача 1. Проверить равенство таблиц.

Дано: две таблицы с идентичной структурой.

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

1. Объедините обе таблицы в одну

2. Добавьте столбец сверки. Заполните его значением 1 для первых строк таблицы и -1 для строк второй таблицы.

3. Сжать, добавив соответствующий столбец.

4. Если таблицы идентичны, после складывания всех строк значение в соответствующем столбце будет

1c как сравнить две таблицы значений

Задача 2. Найти различия в таблицах.

Код приводить не буду, потому что основная часть находится в предыдущей задаче. Очевидно, различия будут содержаться в таблице, сжатой в строки, где значение в столбце сверки не будет равно 0. Также, если значение отрицательное, то строки содержатся только в первой таблице, положительные — только во второй таблице.

Задача 3. Найти различия в таблицах при помощи запроса.

Тот же принцип можно применить к запросам.

Примечание: имейте в виду, что запрос не чувствителен к регистру в строковых значениях.

0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий