Александр Батищев пишет:
Да, Харбор штука шустрая, мне и удивительно, что в базе всего 350000 проводок и такое "проседание" по скорости.
Мне тоже когда-то было удидивительно и я был таким же.
Также не понимал Сан Саныча.
Я сегодня специально еще раз пробежался по исходникам CR и DR.
У меня после псевдобейсика БЭСТ-4 есть некий осадок, но я там вижу скоб Сан Саныча причем сходу.И сразу понимаю что подход неграмотным назвать нельзя.
Тут оптимизации анализа множества условий.
Причем каждый пункт расчета нельзя сказать, что продуман....
Да, в примитивном случае можно наложить скоб и будет все быстро, но потом у кого то высняется что в 1 случае из 1000 бывает вот такая ситуация, у другого другая и универсальность бывает расплатой за скорость. Оптимизация кода вещь непростая и не всегда понятно:
- то ли код не оптимизирован, то ли тот кто просит упростить - не все свои варианты просчитал....
Таким образом порой действительно именно плагин под Заказчика бывает,что это правильное решение, потому что общее решение трогать нельзя под кого-то индивидуально.
Вот такие тонкости приходится КБ постоянно учитывать
Я даже пытался найти кусок кода который можно дополнительно выложить, к тому, что есть в общей поставке и понял, что и этого не смогу предоставить - потому что это не одна функция - это сразу целая библиотека функций увязанных друг с другом....
Казалось бы примитивная задача внутри представляет достаточно сложный механизм.
Поэтому вывод один - если будете делать свой скоб, просто постарайтесь все предусмотреть, применительно к Заказчику, но Ваш плагин может оказаться очень шустрым применительно к конкретной задаче. Если добавляете строки - используйте ADDREC() - эта штатная функция невидимо от Вас сама заполняет ключевые гуиды.
Никаких append из клиппера - там именно уже продумано.
Но гуидов как оказалось бывает много и их иногда надо создавать, как написал Сан Саныч, я сходу не написал - потому что сомневался: а надо ли....
P.S. Прошу все мои ответы принимать за желание помочь. У меня не всегда как у Сан Саныча получается сходу видеть ответ и сходу понять суть а,но тем не менее моя задача разгрузить шефа от повседневных вопросов, поэтому на мои глупые ы просьба не обижаться.К тому же тут очень сильно помогают Алексей Новиков и Евгений Ильин, иногда помогает Денис. Ответы грамотные, профессиональные.
За это ребятам пользуясь случаем мой низкий поклон.
Если что,Сан Саныч сам впишет правильный ответ.
Сан Саныч уже пообещал запрос отключить, а вот почему банк данных столько строится ?
Это на базе в 300 тысяч проводок ?
Запускаете задачу локально на сервере?
В это время еще какие-то задачи крутятся ?
Александр Батищев пишет:
Заметили ещё одну особенность: в случае использования DR и CR на сервере отчёт отчёт формировался за 5-7 минут, а на клиенте более 40 и выключили не дождавшись...
Характерный случай неоптимизированного сервера под файл-серверные потребности БЭСТа.
Обычно при такой ситуации мы давали системную администратору задачу, чтобы скорость работы по сети не уступала локальной существенно.
Не знаю над чем он там колдовал, но в итоге скорость работы что локально, что по сети были примерно одинаковые.
Александр Батищев пишет:
Харбор, потому что, база большая, 352503 проводки и пользователей 53 человека будет. Хотя для SQL, это не объём должен быть...
Хочу развенчать миф про SQL, потому как наши программисты в нем постоянно "варятся"
Могу сразу сказать скорость работы харбора настолько высока, что нам удавалось обеспечить работу до 200 мест, в то время как на SQL-платформах специалисты с опаской оценивают объемы при работе 100 пользователей...
Никакого бешеного прироста в скорости на том же объеме SQL на самом деле не даст, а при грамотном проектировании. Прироста добиться можно, но зачастую можно оказаться медленнее :) Все зависит от конкретной задачи и способов ее решения.
Разница тут скорее не харбор- SQL, а формат хранения данных. Один рассчитан на большой объем, другой нет.
В свое время Александр Гершанов обращался с вопросом, что у него в базе было около миллиона проводок и мне доводлилось доказывать что харбор умеет работать с таким массивом очень быстро. Так что 300 тысяч для харбора это не размер :)
В функциях которые Вы критикуете, применяется именно скоб и работают они не медленно, а если использовать банк данных, то практически моментально. Но они написаны не конкретно под Вашу задачу, они написаны для большого числа вариантов ситуаций.
Ускорить решение можно только путем упрощения задачи под частный случай, но при этом следует помнить, что могут быть подводные камни, которые на тестовых примерах вы не увидите...(что вероятно и вызывает сомнение у Сан Саныча в том, что у вас получится лучше)
Александр Батищев пишет:
описания полей я читаю..., а спрашиваю, потому что, непонятно написано... и возник не на пустом месте, и вообще если Вы такой опытный и умный, то дайте ссылку где почитать и не устраивайте выпендрёж.
Александр я прошу Вас оставить эмоции.
Не вижу, чтобы я был с Вами не вежлив.
И самое главное над Вашей темой работа производилась, поэтому не осветив ее достаточно подробно, имейте пожалуйста терпение отвечать на примитивные ы - это нормально в любой сфере связанной с ремонтом, в том числе и в сфере разработки.
Зачастую, чтобы понять что Вы хотите на самом деле, нужно понимать конечную цель.
Иначе помогать Вам очень трудно .
Если в БЭСТе что-то неудобно сделано, нам необходимо четкая аргументация что, почему и зачем, в какой ситуации и по какой причине это имеет место. И это тоже нормально. Критика нужна в конструктивной форме, иначе она не имеет смысла.
Насчет документирования и подсказок.
Если пользователю что-то непонятно написано - то интересно всегда знать что конкретно.
Бывает, что люди не читают и узнают тут (на форуме) где почитать.
И у меня такой же индексный ключ. Так что от пакета это не зависит.
И по исходному коду как видите он ищет....
У меня фамилия прекрасно передаются, на чем искать проблему не вижу....
Могу только этот файл предложить открыть заново и сделать по нему поиск.
Но думаю что у вас будет тоже самое.
Однозначно индексные файлы строк заказа.
При сбитом индексе строки новые создаются, после реиндексации старые подключаются дополнительно к новым.
Терминал-сервер ?
По поводу связи с cardspri я не стал время тратить на установку индексных ключей, потому как у меня в демобазе он итак стоит с нужным индексом.
Я все тестирую на 53 пакете - посмотрите по ALT_INS на cardspri у вас и на его текущий индексный ключ в этой точке программы.
Замечания принимаются без проблем
1.У меня работает на моей демобазе с фамилией,именем,отчеством.
2.ФОрматирование колонок добавить это не проблема, давайте поправлю
3.Сумма у меня тоже нормально отображается.
Есть подозрение что для разных Excel надо подгонку делать.
Исходный текст я разместил, могу подсказать как прямо в нем поправить.
val_id - Гуид Валюты, если Вы зполняетет сами то он обязателен разумеется !!!
Иначе проводка не будет знать по какой валюте она живет, последствия думаю не изучал никто.
idmain - гуид связи с банком данных.
Думаю что он создается в момент расчета банка данных и Вам это поле никак не заполнить да и не надо.
А если сделать через импорт проводок штатными средствами - то Вы собственно увидите все поля, которые нужны, поглядев на эту запись через FoxBro
Штатные функции вы менять не можете.
Могу предложить описание кода на базе которого Вы создадите свой, но при изменении идеологии программы штатный код изменится, а Ваш нет.....
Хочется понять чем они Вам мешают, ведь расчет не обязателен вроде как или я не прав ?
Предназначено для режима:
Зарплата -> Выходные формы -> Списки и справки -> Списки в сбербанк
Подключение задачи:
1.Скачиваем прикрепленный файл usber.hrb
2.Кладем его в папку PRO\PLUGINS\EXTENSNS\SALARY
3.В указанном выше режиме подключаем:
- нажимаем CTRL_F5
- нажимаем F4
- заполняем:
- Наименование : Списки в сбербанк в Excel
- Имя файла : usber.hrb
- Параметры : Можно не заполнять
Примечание В параметрах можно указать собственную ширину столбцов отчета
Например: 7,14.5,12,12,12,8,17
Число параметров должно быть строго 7 !!!
- Вызов : По требованию
4.Способ применения:
В верхнем окне заголовков списков нажимаем CTRL_F5 и запускаем настроенное по п.3 решение.
1.Применяем MetaBo
2.создаем в списке FieldList переменную X_ISMARK_
и пометки уже работают
3.Для того чтобы встать на первую помеченную строку применяем метод
markfirst() - он вернет номер первой помеченной строки
marknext() - возвращает номер следующий, как только вернул 0 - значит, что больше строк помеченных нет
Юля Хисамова пишет:
Добрый день!
У нас БЭСТ4+. Тоже очень нужно печатать отмеченные записи в накладной и прайс-листе.
Если реализовывать через HFileEval, где Формируется временная таблица, в которую сбрасываются отмеченные записи? Где расположена и как называется чтобы подключится?
Временную таблицу вы создаете сами средствами харбора.
Поскольку она временная ее стараются размещать во временных папках своих или по умолчанию.
Все это организуется средтсвами функции WinReport.
Ее описание есть в описании по программированию в БЭСТе, которое при установке БЭСТа размещается в папке news