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

1с как сравнить две таблицы значений
На чтение
9 мин.
Просмотров
109
Дата обновления
13.02.2025
Старт:14.12.2024
Срок обучения:72 ч.
«Йога для детей дошкольного и школьного возраста»
Дистанционное обучение по программе Йога для детей дошкольного и школьного возраста (72 часа) в ЦАППКК. ✍ Мы подберем вам подходящий курс, пишите!
10 000 ₽
Подробнее

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

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

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

ВЫБИРАТЬ
Номенклатура заказов,
СУММА (Заказы.Количество) КАК Количество
Делаем заказы
ИЗ
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
Оставьте комментарий

Курсы