Автор работы: Пользователь скрыл имя, 20 Января 2013 в 11:37, отчет по практике
Критерием отнесением материальных активов к основным средствам является период использования (более 1 года) материальных активов в сфере материального производства и непроизводственной сфере. Основные средства учитываются по каждому инвентарному объекту в суммах в тенге и тиынах. Единицей учета основных средств является инвентарный объект – законченное устройство, предмет или комплекс предметов со всеми принадлежностями и приспособлениями. Операции по учету и движению основных средств выполняются только на основании первичных документов, выполненных на бумажных и (или) электронных носителях.
Введение……………………………………………………………………… 3
Инструкция по технике безопасности………………………………………4
Знакомство с предприятием…………………………………………………8
Переход на новые коды……………………………………………………..
Аппаратные средства………………………………………………………...14
Документооборот ………………………………………………………........21
Microsoft Excel……………………………………………………………….22
СУБД…………………………………………………………………….........26
АРМ …………………………………………………………………………..31
Автоматизация Бухгалтерского учета………………………………………35
Справочная информация 1С бухгалтерия………………………………......53
Обработка данных в 1С бухгалтерии……………………………………….70
Конструктор в 1С.............................................................................................76
Структура модуля ……………………………………………………………96
Типы данных………………………………………………………………….107
Процедуры создания текстового файла…………………………………….120
Описание объекта…………………………………………………………….129
Рекурсия ……………………………………………………………………...133
Динамические структуры и переменные…………………………………...138
Структура бухгалтерии………………………………………………………155
Бухгалтерский аппарат………………………………………………………157
Организация бухгалтерского учета…………………………………………160
Учетная политика…………………………………………………………….162
Первичная документация……………………………………………………164
Безналичные расчеты………………………………………………………...165
Классификация основных средств…………………………………………..167
Учет основных средств………………………………………………………171
Классификация и оценка материальных ценностей175
Положение об оплате труда…………………………………………………177
Форма бухгалтерского учета………………………………………………...182
Документация. Классификация документов……………………………….184
Учет расчетов…………………………………………………………………187
Учет уставного капитала…………………………………………………….203
Годовой отчет………………………………………………………………...207
Заключение…………………………………………………………………...210
Список использованной литературы……………………………………….212
read(f,b); - прочитать 1 байт
write(f,b); - записать 1 байт
seek(f,100); - поставить текущее положение считывания/записи на сотый байт
size(f); - прочитать количество байт в файле.
eof(f); - узнать, не является ли байт последним
Все эти функции не работают с файлами большими 2 gb.
После работы файл надо закрыть:
closefile(f);
Приведенные выше механизмы будут работать с любым файлом, так как любой файл можно считать файлом байтов. Теперь, где это можно использовать? В принципе везде, но в подавляющем большинстве случаев это будет очень неудобно, ведь скорость считывания при чтении по байтам будет на порядки более низкой, чем другими способами. Однако в некоторых случаях этот способ может быть очень полезен. Например, в программе вам надо заменить 100й байт файла на другой, или прочитать 100й байт файла, например во всяких читерских программах, при взломе и т.п. Здесь такой доступ будет весьма удобен. Гораздо более интересным представляется дальнейшее развитие технологии типизированных файлов (их еще лет 15 назад называли "Файлы прямого доступа"). Представим себе, что файл состоит не из байт, а из более сложных структур. Например, мы имеем некоторую информацию в виде:
type
myrec = record
name: string[100];
age: byte;
membership: boolean;
accounts: array[1..10] of integer;
end;
Обратите внимание, что все элементы записи точно типизированы, нет ни длинных строк, ни открытых массивов, ни объектов, другими словами, заранее точно известно, сколько именно байт будет занимать переменная этого типа. Объявим переменную этого типа:
var
myvar: myrec;
и файл этого типа:
var
f: file of myrec;
Теперь мы можем читать и писать сразу целую структуру, абсолютно так же как и если бы это был один байт:
assignfile(f, 'c:myfile.rec');
rewrite(f);
myvar.name := 'vitaly';
myvar.age := 33;
myvar.membership := true;
myvar.accounts[1] := 12345;
myvar.accounts[2] := 34985;
write(f, myvar);
closefile(f);
Все остальные функции, приведенные в предыдущей статье будут работать так же, только одно отличие - seek и size оперируют не с количеством байт, а с количеством записей.
Нетипизированные файлы
Есть такое понятие как нетипизированный файл. Это такой файл, который содержит разнородные элементы. Например, файл exe - вначале он имеет заголовок, затем двоичный код, в конце какие-то ресурсы. Все части файла имеют разную длину и разную структуру. Тут уже обратится к произвольному элементу сложно, обычно надо вначале узнать, где этот элемент находится, подчас это записано в предыдущем куске информации. Работа с такими файлами достаточно сложна и требует вручную разработки алгоритмов его чтения, но в связи гибкостью структуры и компактностью такие файлы составляют большинство. Для работы с нетипизированными файлами используют процедуры blockread и blockwrite, которые позволяют читать/писать произвольное количество байт. Привожу пример пользования этими функциями из справки по Дельфи:
var
fromf, tof: file;
numread, numwritten: integer;
buf: array[1..2048] of char;
begin
if opendialog1.execute then { display open dialog box }
begin
assignfile(fromf, opendialog1.filename);
reset(fromf, 1); { record size = 1 }
if savedialog1.execute then { display save dialog box}
begin
assignfile(tof, savedialog1.filename); { open output file }
rewrite(tof, 1); { record size = 1 }
canvas.textout(10, 10, 'copying ' + inttostr(filesize(fromf)) +
' bytes...');
repeat
blockread(fromf, buf, sizeof(buf), numread);
blockwrite(tof, buf, numread, numwritten);
until (numread = 0) or (numwritten <> numread);
closefile(fromf);
closefile(tof);
end;
end;
end;
Этот код копирует из одного файла в другой. Замечания по поводу этого метода работы с файлами - плюсы - очень высокая скорость, особенно если размер буфера увеличить до 64kb-512kb, что позволит считывать файл достаточно большими кусками, чтобы обеспечить отсутствие простоев винчестера, к тому же обеспечивается очень высокая гибкость в работе. Минусы - сложность разработки, необходимость вручную писать все детали механизма чтения/записи и интерпретации данных.
Пожалуй, на этом можно было бы, и завершить описание работы с файлами средствами Паскаля и файловых переменных, но заглянув в help Дельфей я обнаружил, еще несколько функций достойных упоминания.
erase(f) - удаляет файл
filepos(f) - возвращает текущую позицию чтения/записи в файл
flush(f) - сбрасывает кэшированные файловые операции на диск
rename(f, 'mynewfilename.txt') - переименование файлов
truncate(f) - файл обрезается до текущей позиции чтения/записи
Файловые потоки
Теперь разберем возможности работы потомка tstream - tfilestream - файловый поток. Этот класс был специально введен для работы с файлами. Для работы с файловым потоком Вам надо записать в uses модули classes, sysutils (classes - включает в себя собственно определение класса, sysutils - некоторые константы необходимые для работы).
Вот пример записи/перезаписи файла:
procedure writefileusingstream(s, filename: string);
begin
with tfilestream.create(filename, fmcreate or fmopenwrite) do
try
write(pointer(s)^, length(s));
finally
free;
end;
end;
Теперь небольшой разбор:
tfilestream.create - конструктор класса, его вызов требует указания имени файла и опций его открытия, следующие опции определены:
fmcreate = $ffff;
fmopenread = $0000;
fmopenwrite = $0001;
fmopenreadwrite = $0002;
fmsharecompat = $0000;
fmshareexclusive = $0010;
fmsharedenywrite = $0020;
fmsharedenyread = $0030;
fmsharedenynone = $0040;
Теперь метод write - этим методом в файл пишется любая информация из буфера любого типа, Вам надо указать только буфер и количество записываемых байтов. В данном случае используется переменная типа string в качестве буфера, но так как для длинных строк она представляет собой лишь указатель, то конструкция "pointer(s)^" заставляет обращаться именно к ее содержимому.
А вот этот код демонстрирует чтение файла с использованием файлового потока:
var
p: pchar;
begin
getmem(p, 255);
with tfilestream.create('c:mytext.
try
seek(10, sofrombeginning);
read(p^, 254);
finally
free;
end;
showmessage(p);
freemem(p);
end;
И пояснения к коду:
Никаких проверок длину файла и его наличие здесь не делается - это демонстрационный код, а не готовая процедура чтения.
Файл мы считываем в буфер типа pchar (с тем же успехом можно использовать массив или любой другой контейнер). Для тех кто не помнит - процедуры getmem(p, 255) и freemem(p) - распределение памяти для строки и освобождение памяти.
Метод потока seek позволяет установить текущую позицию считывания/записи файла. Первый параметр - номер байта, второй - это от чего считать этот байт (у нас считать от начала файла), возможны варианты:
sofrombeginning - от начала файла
sofromcurrent - от текущей позиции считывания
sofromend - от конца файла (в этом случае номер байта должен быть отрицательным или равным нулю)
Собственно считывание из потока осуществляется методом read, в котором указывается в качестве параметров буфер, в который мы читаем и желаемое количество байт для чтения. Метод read является функцией, которая возвращает количество байт реально прочитанных из потока.
Заканчивая о файловых потоках, хочу упомянуть о методе copyfrom, который позволяет перекачивать информацию из одного потока в другой и о свойствах:
size - размер файла
position - текущая позиция чтения/записи потока
Работа с файловыми потоками весьма быстра, этот класс, являясь классом vcl, в то же время базируется на низкоуровневых функциях windows, что обеспечивает очень высокую скорость работы и стабильность операций. К тому же многие компоненты и классы vcl поддерживаю прямое чтение и запись с файловыми потоками, что значительно упрощает работу - например, tstringlist, tblobfield, tmemofield и другие.
Файловые потоки могут быть рекомендованы к использованию в большинстве случаев для чтения и записи файлов (за исключением специфических ситуаций, требующих каких-то других подходов), другими словами, если вам надо просто записать или считать файл, используйте файловые потоки.
Работа через handle
Еще один способ работы с файлами - это открытие handle на файл и работу через него. Тут есть 2 варианта - можно использовать функции Дельфи или использовать winapi напрямую.
При использовании функций Дельфи можно применять следующие функции:
fileopen(filename, fmopenwrite or fmsharedenynone) - функция открывает файл и возвращает целое число - handle на файл. Параметры функции - имя файла и тип доступа (все типы доступа я перечислил ранее). Если файл успешно открыт, то handle должен, быть положительным числом, отрицательное число - это код ошибки.
Во всех остальных функциях используется именно значение handle, возвращаемое этой функцией.
fileclose(handle: integer) - закрывает файл
fileread(handle: integer; var buffer; count: integer): integer;
filewrite(handle: integer; const buffer; count: integer): integer;
Эти функции для чтения/записи файла, где buffer любая переменная достаточного размера для чтения/записи куска информации (обычно типа pchar или массив), count-количество байт, которое Вы желаете записать/прочитать. Функции возвращают количество байт, которые реально были прочитаны или записаны.
Этот тип доступа к файлам применяется весьма редко. Дело в том, что он практически дублирует соответствующие функции winapi и к тому же обычно работает несколько медленнее, чем например потоки. И все же использование функций fileopen и fileclose не лишено привлекательности. Наряду с тем, что эти функции намного легче в использовании соответствующих функций winapi (можете сравнить - fileopen имеет 2 параметра, соответствующая функция winapi - createfile имеет 7 параметров, большая часть из которых реально требуется лишь в ограниченном числе случаев) этот путь доступа открывает возможность прямого использования всех функций winapi про работе с файлами, которые требуют handle на открытый файл.
Файловые операции
Дельфи предоставляет довольно широкие возможности по файловым операциям без использования механизмов открытия/закрытия файлов.
Вот список наиболее употребляемых функций, большинство из которых в фачкстве параметров нуждаются только в имени файла:
chdir(newcurrentpath: string); - изменяет текущий каталог (в среде windows сие конечно не так актуально как в ДОС, но все же), прочитать, же текущий каталог можно функцией getcurrentdir, а текущий каталог для определенного драйва - getdir.
createdir(const dir: string): boolean; - создает каталог. При этом предыдущий уровень должен присутствовать. Если вы хотите сразу создать всю вложенность каталогов, используйте функцию forcedirectories(dir: string): boolean; Обе функции возвращают true, если каталог создан.
diskfree(drive: byte): int64; - дает свободное место на диске. Параметр - номер диска 0 = текущий, 1 = a, 2 = b, и так далее
disksize(drive: byte): int64; - размер винта. Обратите внимание на то что для результата этой и предыдущей функций абсолютно необходимо использовать переменную типа int64, иначе максимум того что вы сможете прочитать правильно будет ограничен 2gb
fileexists(const filename: string) - применяется для проверки наличия файла
Информация о работе Отчет по практике, работа с "1С:Бухгалтерия 8.2"