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

Сколько товар находится в магазине.

Автор RUSeek, 23 янв 2011, 08:09

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

RUSeek

Подскажите пожайлуста как бы кто сделал. Конфигурация на оперативном учете, написанная с нуля. Надо знать сколько каждая позиция товара находится в магазине. то есть просматривая остатки должна появиться колонка что на этом магазине этот товар находиться столько то дней. Какие варианты не подходят:
1) самый простой, периодический реквизит в товаре. и туда записывать дату которую потом выводить. Вся проблема что все периодические реквизиты, храняться в 1СКОНСТ всего на данный момент в справочнике товаров 250 тысяч позиций, и уже есть два периодических реквизита, если добавить еще один 1СКОНСТ раздуется соответсвенно на 30% база ДБФ, получается самая большая таблица, может упасть, только из этого одного переходить на сиквел не хочется.
2) подчиненный справочник, тогда при проведении нужно постоянно проверять вручную есть ли запись такого документы подчиненного справочника, и если нет тогда добавлять, это время проведения.
3) регистр остатков с реквизитом товар, и дата, но каждый раз при проведении/перемещении нужно будет проверять остатки по дате, и расходовать по дате и приход по другой дате, торможение проведения.
4) вариант перебрать тысячи документов по десяткам тысяч товаров за последние год - два не вариант. будет перебирать пол часа.
Что можно еще?

prog1c7.7

3 (однозначно) -  регистр остатков - проверка на итоги на дату.

RUSeek

НО тогда даже с установкой индексов по регистру, и потом установитьЗначениеФильтра(СЗтоваровВДокументе), каждый раз рассчитатьРегистрНа(Этотдокумент), процедура длительная. Даже можно сказать самая длительная. исключение составляет проведение в потоке, но у нас такое невозможно, документы делаются, и вперед на несколько дней, и назад :(. Спр.УстановитьОтбор(ЭтотДокумент) в подчиненном справочнике, чтобы проверить есть такое значение или нет, гораздо быстрее работает. то есть такой регистр из справочника. типо. Не знаю...

prog1c7.7

...
а = 0;
ТвойРег.УстановитьФильтр() // твой фильтр
ТвойРег.ВыбратьИтоги()
Пока ТвойРег.ПолучитьИтог() = 1 Цикл
Если
//Условие  на соответствие твое
тогда
а = 1;
Прервать; // лишнего чтоб не бегать

КонецЕсли;
КонецЦикла;
...
// вроде не медленно считает использовано при проведении документов БСО с
// проверкой на 5 видов регистров - выдача, брак , возврат, использование, передача (с учетом даты)
// количество БСО при отборе более 45000 и посстоянно прирастает
// время проведения документа с проверкой : 1,7 сек (используется терминальнвый вход на сервер)


Теги:

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

Рейтинг@Mail.ru

Поиск