Регистры 1С и курсы валют из Интернета
Хочу показать, как развиваются технологии. При описании «Кассы» упомянуты курсы валют, ввод которых каждый день был обязанностью секретарши. Написаны они году в 1995, наверное.
А экран итогов в «Кассе» имеет кнопку «Формировать»:
Дело в том, что каждый пользователь может выбрать для себя какую-то информацию во временную таблицу и информация не удаляется когда он выходит из программы. Обновлять её раз в день обычно достаточно а выборка всей этой информации всё-таки не мгновенна. И лучше если не надо формировать её после каждого закрытия экрана. Но лет за 10 размер базы становится таким, что можно и задумываться о том, что выборка это конечно хорошо но ведь можно, наверное, и ускорить этот процесс так чтобы и формировать данные почти мгновенно и не дезинформировать никого возможно устаревшей информацией.
Если в 1995 году Интернет ещё был экзотикой, то в 2005, когда писалась «Касса» ничто уже не мешало завести таблицы с промежуточными итогами например с суммами по месяцам и менять в них информацию при каждой корректировке хоть триггером хоть дополнительной строкой в хранимой процедуре. Но для 2005 года это и так было хорошо, а информация за 4 года крутилась с приемлемой скоростью.
В 1С есть специальные инструменты, которые предназначены для хранения итоговых данных за день, месяц, год. Это внутренние таблицы и с точки зрения классической базы данных это некая избыточность хранимой информации. Но суммирование сумм по месяцам даёт результат за год значительно быстрее чем суммирование всех документов за год потому это оправдано тем более что место на диске давно перестало быть важным фактором. Поддержкой актуальности информации т.е тем чтобы записанная сумма действительно была равна сумме по документов занимается сам 1С внутри себе. Ведь он же предоставляет программисту инструмент, которым тот может пользоваться, остальное – внутренняя работа инструмента.
Вот эти регистры:
В регистрах бухгалтерии автоматически записываются обороты по счетам и вычисляются остатки (на утро дня, начало месяца и т.д). Но иногда бухгалтерского суммирования мало. Интересно, например, иметь информацию о суммах и количествах по конкретным товарам. Тогда можно использовать полностью произвольные по набору информации регистры накопления и суммировать в них что угодно.
Регистры сведений позволяют быстро выбирать информацию, актуальную на какой-то момент. Анкетные данные человека могут меняться со временем, но интересует обычно что сейчас или что было на конкретную дату. Это очень просто делается и без всяких регистров сведений. Но, как и в случае с «Кассой» база может в какой-то момент дорасти до состояния когда хочется чего-то, ускоряющего процесс.
Курсы валют – с точки зрения базы данных полный аналог анкетных данных, меняющихся со временем. Только самих «Людей- курсов» мало, зато информация по ним меняется постоянно. Так и не надо каждый раз обращаться к таблице с тысячами строк. Лучше завести отдельную таблицу и хранить в нет две - три цифра курсов на данный момент. Для таких случаев и существуют регистры сведений.
Регистры расчета используются при расчете зарплаты. Это ещё один внутренний механизм 1С, который можно использовать.
Решился и вопрос с автоматическим заполнением курсов валют из Интернета.
Не вдаваясь особенно в подробности, по адресу:
http://cbrates.rbc.ru/bnk/bnk.zip.
… можно получить информацию о курсах валют
Дальше пишется нечто примерно такое:
Соединение = Новый(Тип("HTTPСоединение"), ПараметрыСоединения);
… т.е подключиться к сайту на языке HTTP
и такое:
Соединение.Получить(ПутьКФайлуНаСервере, ПутьДляСохранения);
… т.е забрать информацию к себе и потом что-то с ней сделать. Потом полученная информация засовывается в регистр сведений с курсами валют.
Можно забраться не по HTTP а через FTP (про него потом, тоже полезная вещь):
Соединение = Новый(Тип("FTPСоединение"), ПараметрыСоединения);
Можно использовать Proxy для соединения, т.е имеется полноценный инструментарий для автоматического считывания из Интернета любой информации. Курсы, например, если их еще нет, можно считывать при запуске программы и ни на кого не надо вешать эту работу.
|