LINUX.ORG.RU
ФорумTalks

[специалистам по всему, оффтопик, продолжение] Раз уж тут так неожиданно много специалистов по 1С: П., вот ещё вопрос


0

0

В продолжение темы.

Есть некоторая постоянно увеличивающаяся величина, допустим продажи товара (на самом деле таких величин несколько разных по смыслу). Эта величина никогда не уменьшается. Нужно узнавать на сколько эта величина выросла за произвольный промежуток времени со даты АА.АА.АААА по дату ББ.ББ.ББББ.

Сейчас у меня все увеличения отражаются в регистре оборотов с периодичностью в 1 день. Для вычисления я пробегаюсь в цикле по всем дням периода, за каждый день беру итог из регистра (ИспользоватьПериод + Итог) и суммирую. Это умудряется тормозить даже на базе с одной записью и периодом вычисления в 1 месяц.

Будет ли работать быстрее, если регистр оборотов заменить на регистр остатков, брать остаток на конец периода (РассчитатьРегистрыПо) и вычитать из него остаток на начало периода (РассчитатьРегистрыНа)? Цифра получится та же.

Меня беспокоит слово «Рассчитать» в названии функции. Вроде в описании говорится, что в регистре остатков хранятся остатки на конкретные даты. Т.е. по идее выборка остатка за конкретную любую дату не должна вызывать ворошение всех движений регистра с перерасчётом остатков...

В общем помогите бедному эникейщику! Из документации только гугль, то что встроено в конфигуратор 1С и универсальный метод тыка. Книжки из комплекта были потеряны/спижжены ещё до меня.

Deleted

> В общем помогите бедному эникейщику! Из документации только гугль, то что встроено в конфигуратор 1С и универсальный метод тыка. Книжки из комплекта были потеряны/спижжены ещё до меня.

А нахер ты ваще за эту работу взялся раз не знаешь нифига?

А манагеры метишь чтоль?

Gharik
()
Ответ на: комментарий от Gharik

>> А нахер ты ваще за эту работу взялся раз не знаешь нифига?

А я тут единственный системный администратор^W^Wэникейщик =).

Deleted
()
Ответ на: комментарий от fMad

>> ты сумму огласи, в ямоней желательно

Виртуальный ящик пивного эквивалента.

Deleted
()

Сдай хотя б на какой-нибудь самый захудалый сертификатик от 1С-а (типа 1С-профессионал) и топай прямо на конференции на 1С-вском сайте (по восьмерке http://partners.v8.1c.ru/forum/index.jsp) - доступ уже должен быть. Там инфы много, и людей с опытом тоже.

Deprecated
()
Ответ на: комментарий от Deprecated

>> Сдай хотя б на какой-нибудь самый захудалый сертификатик от 1С-а (типа 1С-профессионал)

И сколько времени и денег у меня на это уйдёт? Ну нафиг эти курсы, я сам "в процессе" быстрее разберусь.

Тем более что конфигурацию с нужными функциями уже сделал, остались только вот проблемы с производительностью. Ещё денёк потрачу на пробу разных вариантов и оптимизацию и всё будет готово. Дальше только протестировать и периодически допиливать по запросам бухгалтеров...

>> и топай прямо на конференции на 1С-вском сайте (по восьмерке http://partners.v8.1c.ru/forum/index.jsp) - доступ уже должен быть. Там инфы много, и людей с опытом тоже.

По 1С в рунете есть много других форумов. И да, у меня ещё пока 7.7.

Deleted
()

> Это умудряется тормозить даже на базе с одной записью и периодом вычисления в 1 месяц.

не удивительно. Рассчёт итогов -- очень "дорогая" по времени операция, и не должен делаться слишком часто (например, бить по руками надо за такие формы, где при открытии формы и при каждом движении по строке в форме перерасчитываются итоги).
До того долгая, что через SQL посчитать итоги бывает быстрее.
Но возвращаясь к стандартным механизмам: в первом варианте у тебя получается за месяц 30/31/28/29 перерасчётов регистра (по числу дней в месяце). Во втором уже лучше, 2 перерасчёта. И ставь везде фильтры на расчёт остатков максимально точно.
Третий вариант -- тупо выбрать движения за период и просуммировать. На SQL это получается быстрее, чем рассчитать остатки во втором варианте. Но в общем, если не заморачиваться, второй вариант неплох.

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


сдаётся, ты не очень понимаешь, что такое "периодичность хранения итогов" и расчёт итогов. Вот есть остатки на дату Д1, следущие "физические" остатки хранятся на дату Д2. Значит, периодичность хранения в регистре = (Д2-Д1). Если ты захочешь получить итоги на момент Д3: Д1<Д3<Д2, то потребуется дорогая операция "расчёт итогов". Итог на Д3 = Итог на Д1 + Приход (Д3-Д1)-Расход(Д3-Д1), приход/расход из движений регистра. Если потребуется запросить итоги на момент Д2, "физических" остатков, ничего перерасчитываться не будет, а возьмётся готовая цифра на момент Д2.
Отсюда вывод:
1. Периодичность должна быть подобрана оптимально для выдачи. Расчёт итогов = долго, то есть, расчётов должно быть минимум. С одной стороны, чем мельче период, тем меньше расчётов, с другой, больше база.
2. Кол-во расчётов итогов должно быть минимальным.
3. В конце месяца расчёт будет тормозить больше, ибо данных для расчётов больше.

Если отвязаться от встроенных механизмов 1С, и попытаться придумать виртуальные "быстрые регистры". То можно снять ограничение (хранение итогов только на начало и конец периода). То есть, новые итоги рассчитывать от рассчитанных старых, закешировать этот момент. На эту тему см. например vtools.ru (автора 2C) -- сайт cейчас сдох, но может, что-то погуглить -- 'компонента "Быстрые итоги " '. Ещё одна примочка для хранения регистров в отдельной MySQL базе, и "плавающих" итогов, кеширования, SQL запросов по такому "регистру" и т.п.

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

anonymous
()
Ответ на: комментарий от Deleted

> И сколько времени и денег у меня на это уйдёт? Ну нафиг эти курсы, я сам "в процессе" быстрее разберусь.

на курсах тебя научат пониманию предметной области. Сам натыкавшись ты так и останешься "гениальным программером", который общается с клиентом не на его языке, а на своём программерском. В итоге, тебе будут недоплачивать, потому что ты будешь умничать про своё программерское толмачество, а не "понимать с полуслова" клиента. Клиент-то платит ТЕБЕ за то, чтобы не болела голова У НЕГО. Don't Make Me Think, в стиле Стивена Круга.

> Тем более что конфигурацию с нужными функциями уже сделал, остались только вот проблемы с производительностью. Ещё денёк потрачу на пробу разных вариантов и оптимизацию и всё будет готово. Дальше только протестировать и периодически допиливать по запросам бухгалтеров...

ага-ага. 80% одноэспрограммеров занимаются ковырянием в "проблемах с производительностью". Остальные 20 тупо решают задачу предметной области, получают деньгу за то, что задача решена "правильно". А уж насколько оно там тормозит, это не его забота, у него ведь есть ещё 20 клиентов.

anonymous
()
Ответ на: комментарий от Deprecated

>> Оффтоп. А у вас машинки с 1С-м все под виндой бегают, или вайн используется?

Под виндой, к сожалению. Хоть и говорят что 1С работает под вайном, но работает она там иногда глючит. И естественно не работает любимый бухами экспорт отчётов в МС Ёксель. Ещё кроме 1С есть немало всякого безальтернативного виндавоз-специфичного хлама, типа отчётности через интернет, прибитой к IE+activex трёхметровыми гвоздями.

Под линуксом только базы на самба-шарах. Хотя есть некий шанс, что с выходом 1С 8.2 удастся хоть несколько машин (на которых только 1С нужна) перевести на линукс.

Deleted
()
Ответ на: комментарий от anonymous

>> на курсах тебя научат пониманию предметной области. Сам натыкавшись ты так и останешься "гениальным программером", который общается с клиентом не на его языке, а на своём программерском. В итоге, тебе будут недоплачивать, потому что ты будешь умничать про своё программерское толмачество, а не "понимать с полуслова" клиента. Клиент-то платит ТЕБЕ за то, чтобы не болела голова У НЕГО. Don't Make Me Think, в стиле Стивена Круга.

>> ага-ага. 80% одноэспрограммеров занимаются ковырянием в "проблемах с производительностью". Остальные 20 тупо решают задачу предметной области, получают деньгу за то, что задача решена "правильно". А уж насколько оно там тормозит, это не его забота, у него ведь есть ещё 20 клиентов.

1) Я не профессиональный программист. Просто самоучка-любитель. 2) Я не собираюсь быть профессиональным программистом. 3) Я не собираюсь быть профессиональным программистом 1С. 4) Я надеюсь, что сталкиваюсь с программированием под 1С в первый и последний раз. 5) Отдельно мне за это не платят и платить не будут. Я работаю системным администратором.

Deleted
()
Ответ на: комментарий от Deleted

Да, заветные буховские экселевские таблицы та еще вещь. У нас через год-два запланирован переход на OpenOffice, придется переписывать нек-рые разработки (экспорт в Excel через OLE). Учитывая то, что переход на Adobe Lifecycle уже озвучен, будем работать с pdf;)

Deprecated
()
Ответ на: комментарий от Deleted

> Отдельно мне за это не платят и платить не будут. Я работаю системным администратором.

тогда зачем тебе этот геморрой? Одно дело -- освоить параллельную типо специальность. Понять, что платят там не потому что у одноэсины есть какие-то особые качества, а тупо потому, что нужно уметь решать эти задачи. Был бы какой-то визуал брейнфак, и за него бы платили, если бы задачи были осилены. Тогда дилетантизм в хорошем смысле -- это хорошо, когда в меру. Когда профессионал будет морщить нос от снобизма и думать, стоит связываться или нет, дилетант на голом интересе что-то уже выдаст, заинтересуется, и станет чуточку профессиональнее. Другое дело, если добровольно-принудительно наклонили. Тогда это такая яма, в которой ты бегаешь быстро-быстро по кругу с лопатой, на тебя сыпется песок, а ты думаешь, что если быстро его утоптать, тебя не засыпет с головой. Засыпет, ещё как. Быдлокод как бездна анальной оккупации.

anonymous
()
Ответ на: комментарий от Deleted

> Я не собираюсь быть профессиональным программистом 1С

У тебя хороший шанс им стать, не упусти его. Эникей-админ тем и плох - чем только его не загружают. В результате знания - по кусочку из каждой области. За такие "знания" будешь получать лишь копейки. 1С - дерьмо, конечно, но практически безальтернативное в России.

У меня примерно то же самое было - пришел работать электриком, а стал программистом 1С. Ы. Пытался, как и вы сейчас, решит задачу методом тыка, не прочитав ни одной книжки. Шев молодец, предложил профи в помощь. Но я дебил тогда был - запаниковал и ушел. Сейчас буду пробовать вернуться.

anonymous_num_0
()

если надо непременно хранить это значение отдельно - сделай справочник\документ с реквизитами дата, величина_того_что_тебе_надо, если хочешь - можешь сразу добавить туда же значение_изменение чтобы оно автоматически рассчитывалось при добавлении нового элемента.

villager
()
Ответ на: комментарий от anonymous_num_0

Нахрен тебе это надо? Кризис на дворе, без 1с-конфигурастов я запросто обойдусь, а вот розетку починить - это надо специалиста.

Sun-ch
()
Ответ на: комментарий от Deleted

> А я тут единственный системный администратор^W^Wэникейщик =).

Ты делаешь не свою работу. Тебе в соседний топик, про КАЛов и тупых эникеев.

anonymous
()
Ответ на: комментарий от anonymous

>Ты делаешь не свою работу.

А главное зачем ?

Renso ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.