Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 09:56

1С 8.3. Как исправить код так, чтобы находила не равные суммы из двух регистров

Автор gulnyr, 19 фев 2024, 15:40

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Код:

ВЫБРАТЬ РАЗЛИЧНЫЕ
ОстаткиТоваровКомпании.Регистратор,
МАКСИМУМ(ПартииТоваровКомпании.Регистратор) КАК Регистратор1,
ОстаткиТоваровКомпании.Номенклатура КАК НомДоп,
СУММА(ОстаткиТоваровКомпании.Количество),
СУММА(ПартииТоваровКомпании.Количество),
КОЛИЧЕСТВО(ОстаткиТоваровКомпании.Регистратор)
ИЗ
РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровКомпании КАК ПартииТоваровКомпании
ПО ОстаткиТоваровКомпании.Регистратор = ПартииТоваровКомпании.Регистратор И ОстаткиТоваровКомпании.Номенклатура = ПартииТоваровКомпании.Номенклатура
И ОстаткиТоваровКомпании.ХозОперация = ПартииТоваровКомпании.ХозОперация
ГДЕ ОстаткиТоваровКомпании.Номенклатура = &Н И ОстаткиТоваровКомпании.ХозОперация = ПартииТоваровКомпании.ХозОперация И ПартииТоваровКомпании.Номенклатура = &Н
СГРУППИРОВАТЬ ПО
   ОстаткиТоваровКомпании.Номенклатура,
   ОстаткиТоваровКомпании.Регистратор
ИМЕЮЩИЕ КОЛИЧЕСТВО(ОстаткиТоваровКомпании.Регистратор) > 1

Нужно исправить код так, чтобы находила все суммы регистра ОстаткиТоваровКомпании, которые не равно сумме записи регистра ПартииТоваровКомпании.

Например:

В регистре ОстаткиТоваровКомпании есть такие записи:
Запись1 5
Запись2 3
Запись1 4
Запись3 7

В регистре ПартииТоваровКомпании есть такие записи:
Запись1 5
Запись2 1
Запись1 2
Запись3 2
Запись2 2

Выводит значение записей: Запись1 и Запись3, т.к. их сумма не совпадает.

Максим75

gulnyr, аж плохо стало.
Вам уже неоднократно писали, чтобы Вы научились использовать виртуальные таблицы регистров, где физическая таблица регистра уже оптимизирована по измерениям. У вас какие измерения в одном регистре и в другом? номенклатура так точно есть.
теперь что с чем надо сравнить хотите? движняки по конкретному документу по регистру остатков и партий? так и берите обе виртуальные таблицы этих регистров с отбором сразу по нужной номенклатуре, связывайте между собой по регистратору и сравнивайте сколько товара попало в приход (или оборот) по одному регистру и по второму. ну и выводите, что надо.
ну или через объединение делайте, хрен знает, что у Вас в базе творится, может логика проведения такая, что не ясно, будут движения по двум регистрам или только по одному и потому соединение может не сработать, или полное делать.

gulnyr

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

Максим75

Цитата: gulnyr от 20 фев 2024, 10:29Максим75, виртуальная таблица это рассчитанная сумма строк, уже пробовал с ней что-то пытаться сделать и понял что не совсем подходит под мою задачу. Объединить тоже пробовал. Как вариант, мне кажется, можно с временной таблицей сделать
виртуальная таблица - это уже оптимизированная таблица регистра по нужным измерениям. Вот там, где Вы пытаетесь к таблице поставить условие ГДЕ - это в виртуальной таблице уже сделано. тем самым значительно уменьшает время работы запроса.
Вам уже писали, что при выборе за ВЕСЬ период из регистра у Вас будет "залочена" таблица этого самого регистра, за такое надо программерам бить по рукам.
Теперь что касается самой задачи: да сделайте два набора по каждому регистру с детализацией по Регистратору и свяжите эти два набора на регистратору и увидите, сколько в одном регистре (хоть кол-ва, хоть суммы, хоть хрен знает что еще в регистре храните) и в другом.

gulnyr

Максим75, это я понял, но как в виртуальной таблице сделать детализацию по регистру, если там его нет?
Screenshot_4.png

Максим75

gulnyr, как все запущено.
выбирать надо виртуальную таблицу оборотов (ну никак не остатков, остаток по регистратору не ведется).
когда выбрали виртуальную таблицу, там в параметрах таблицы есть начало периода, конец периода, Периодичность - вот тут и выбирать Регистратор, и условие - вот тут выбирать сразу отбор по нужному товару.
делать это все надо сначала во вложенном запросе, потом свернуть этот запрос по регистратору (вдруг у Вас в одном документе будет один и тот же товара дважды или трижды) и если просто выберете то может быть несколько записей по одному регистратору, а Вам надо свернуто, т.е. сколько этого товара в этом регистраторе записалось в регистр.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск