Оптимизация регистров оперативного учета на работающей базе . v77

24.12.08

Разработка - Механизмы платформы 1С

Скорее всего, как всегда, баян.
Столкнулся с крайне неудачно спроектированной торговлей.  Вышел из положения малой кровью за счет переноса некоторых измерений регистров в реквизиты.

 Столкнулся с исторически спроектированной базой.

 У семи нянек, как известно, четырнадцать взглядов на развитие бизнеса.
Взялся в середине года за торговую фирму. И впервые увидел не просто "улучшенную" стандартную конфигруацию, а исключительно глубоко улучшенную. Диагноз поставил практически сразу-
закопать нельзя лечить. Однако с запятой возникли проблемы. Конфига конечно исключительная. Но ведь худо-бедно работает. Торговый процесс идет. Прикручено две системы кармнных компьютеров. Значит, все-таки сначала лечить, подготовится к переходу на что-нибудь, и только потом закопать.
 Т.е. лечение должно быть малобюджетное  и эффективное, чтобы дотянула программуля до конца года.
 оказалось, что основные тормоза возникали из-за ошибок в проектировании регистров. Один регистр
"учет" содержал пять(!) лишних измерений, которые не закрывались на конец периода  (1) . После пробега по отчетам, документам и живым сотрудникам компании выяснилось, что надо убрать запятые в двух местах (регистр.сводныйОстаток()) - и все(!!!), можно [было бы] удалять лишние измерения.
 Но в отчетах они используются. К счастью, язык запросов не делает синтаксической разницы между измерением и реквизитом. Отсюда решение - надо перекинуть измерения в реквизиты.
 Сработало. База взлетела, кроме тормозов - ничего не потеряла. Через неделю - к новому году -закопаем.:)
 
 На всякий случай напомню, как сделать измерение реквизтом.

1) В конфигураторе создаем реквизит больного регистра
  В моем случае "Регистр.Учет" имеет измерение "маршрут" тип="справочник"
 создаю реквизит маршрут0 того же типа.
2) сохраняю конфигурацию.
3)  Если есть 1с++ тогда запускаем:

ЗагрузитьВнешнююКомпоненту("1cpp.dll");

Рекордсет=СОздатьОБъект("ODBCRecordset");

Рекордсет.ВыполнитьСкалярный("Update $Регистр.Учет  set $Регистр.Учет.Маршрут0=$Регистр.Учет.Маршрут ");

//Если нет 1с++ тогда по .dds надо выковыривать названия таблиц и подставлять в запрос QA.

4)Удаляем измерение "маршрут"

5)Переименовываем реквизит "маршрут0" в "маршрут".

6)сохраняем.

7) Запускаем в Конфигураторе  "пересчет итогов".

зы.Не забываем бэкапится.

 ЗЫЗЫ Абсолютно замечательная статья по прямым запросам 1с++.

http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip

 Там, в том числе разбирается подключение к ДБФ.

 

 

 

 Примечание 1.

В 2-х словах на том же примере:

Имеем:

 Регистр "Учет" измерения "Товар","Склад","Маршрут"

 ресурс:"Остаток"

Реквизитов не было.

Приходный документ приходует 1шт Остатка  движениеПриходВыполнить() по Товару и Складу.

расходный документ списывает 1шт Остатка движениеРасходВыполнить() по Товару,Складу и Маршруту

 В результате в таблице итогов (RGххх) остается запись "Товар,Склад,Маршрут,-1шт". Поскольку маршрут на приходе всегда пустой - эта запись никогда не обнулится. А таблица итогов каждый конец периода итогов (обычно месяц) складывает все ненулевые ресурсы по измерениям и переносит их на следующий период итогов. То есть наша запись будет присутствовать во ВСЕХ последующих итогах.

Проверить наличие таких хвостов очень просто,например - Тз=0;Рег.ВыгрузитьИтоги(ТЗ);Тз.ВыбратьСТроку();

 В ТиС обычно висят хвосты по Покупатели-Поставщики. Но там таким способом лучше не бороться.

 

См. также

"Виртуальный" работник на платформе 1C v7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1544    user707242_Gold_karas    18    

5

Асинхронное программирование в 1с77 без внешних компонент. Обратные вызовы.

Механизмы платформы 1С Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7443    Vortigaunt    5    

11

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Механизмы платформы 1С Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10124    Vortigaunt    26    

5

Использование классов .Net в 1С для новичков

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    93945    Serginio    116    

188

Все про картинки в 1С 7.7, ну или почти все...

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    43975    95    kitminsk    18    

20

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    23721    tomvlad    5    

14

Динамическая фильтрация в справочнике при вводе наименования

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

02.07.2012    18354    maxpiter    62    

15
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. support 4484 20.12.08 00:02 Сейчас в теме
А можно подробнее 3 пункт? Сколько он выполнялся?
8. dav405 103 22.12.08 15:21 Сейчас в теме
(1) Теперь мне кажется, что support меня подколол. Хотя, с другой стороны, вполнитьскалярный уж точно НЕ выполнится мгновенно.
9. support 4484 22.12.08 15:29 Сейчас в теме
(8) нет, просто попросил подробнее расписать, чтобы понятнее было всем.
2. CheBurator 3119 20.12.08 01:47 Сейчас в теме
я так думаю, что время выполнения - несущественное...
3. dav405 103 20.12.08 03:19 Сейчас в теме
1) см 2)
Было порядка 3-х миллионов несвернутых записей по rg (SQL-2000). Время выполнения не засекал точно, заменял одновременно 5 измерений. Порядка 2-3 минут максимум.
4. artbear 1448 22.12.08 07:12 Сейчас в теме
+

Поправь
Рекордсет.ВполнитьСкалярный
7. dav405 103 22.12.08 15:01 Сейчас в теме
(4) Ой.
(5) Для ДБФ у меня шпаргалка здесь,
http://infostart.ru/projects/1001/
5. artbear 1448 22.12.08 07:13 Сейчас в теме
Напиши, что решение показано для СКЛ-версии.
Для ДБФ версии нужно добавить подключение к базе через спец.строку подключения
6. sCHTASS 49 22.12.08 11:32 Сейчас в теме
Хорошая мысля. Взял себе на заметку
10. Inteco123 24.12.08 10:07 Сейчас в теме
"учет" содержал пять(!) лишних измерений, которые не закрывались на конец периода.

- А можно для "чайников" пояснить - "не закрывались"? Или где почитать?
11. dav405 103 24.12.08 17:45 Сейчас в теме
(10) Добавил примечание. боюсь кривоватое.
Оставьте свое сообщение