формирования запишите следующий текст:
Процедура Сформировать ()
Перем Запрос, ТекстЗацроса, Таб;
Зацрос = СоздатьОбъект( "Запрос");
ТекстЗацроса =
''/ / {{ ЗАПРОС (сформировать)
I Период с ВыбНачПериода по ВыбКонПериода;
I Фирма = Регистр.ОстаткиДенег.Фирма;
I Сумма = Регистр.ОстаткиДенег.Сумма;
IФункция СуммаНачОст = НачОст{Сумма);
I Функция СуммаПриход = Приход (Сумма);
I Функция СуммаРасход = Расход (Сумма);
I Функция СуммаКонОст = КонОст (Сумма);
I Группировка Фирма,-
I " / / } } ЗАПРОС
!
Если Запрос.Вьшопнить(ТекстЗацроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект( "Таблица");
Таб.ИсходнаяТаблица( "Сформировать");
Таб.ВывестиСекцию("Заголовок");
Таб.Опции(0, 0, Таб.ВысотаТаблицы( ) , 0 );
Пока Запрос. Группировка (1) = 1 Цикл
таб.ВывестиСекцию( "Фирма");
КонецЦикла;
Таб.ВывестиСекцию("И того");
Таб.ТолькоПросмотр(1 );
Таб.Показать( "Сформировать", " " ) ;
КонецПроцедуры
Первое, с чем мы здесь сталкиваемся, это запрос к нашему
концептуальному регистру. В нем есть свои особенности — напри-
мер, при формировании текста запроса по регистру нужно обя-
зательно использовать как минимум одну функцию запроса (мож-
но, конечно, и больше — это зависит от ваших конкретных нужд).
Для регистра остатков можно использовать функции
начОст,
цри-
ход, Расход, КонОст,
о для регистра оборотов — только функцию
Сумма.
В качестве периода запроса может использоваться либо
значение даты, либо позиция конкретного документа. Позиция до-
кумента используется в том случае, если нужна особая точность
получения остатков или требуется обеспечить возможность кон-
троля остатков при проведении документа задним числом. В слу-
чае использования позиции остатки можно получить не на нача-
ло или конец определенного дня, а на момент времени создания
документа. Позицию документа можно получить, используя функ-
цию
0
фоЕ«очрсватЫ
1
оз
11
ЦигД''хумента()
(в описании встроенно-
го языка подробно написано о том, как ее использовать).
Печатная форма отчета в нашем случае должна выглядеть
примерно так, как показано на рис. 3.
ІМСЗ
-"І-Й
: 35).;| Зепрос.СуммаНачОст»Г'101Э.З
1
!
.
А
_____-з.
./.:. 1______і?______
. «
* . .
Заголовок
3
Фирма
1
Нач.остаток 1
Приход
Расход
Кон остаток
Итого 11
4
Итого
^ачОст#М019.3>1(1риход#Ы019.3>
і
онОст#М01д.З=
Фирма
*
«Запрос. Фирма»
НачОст#М019 3» [Триход#1'ГО19.3> ‘асход#М019 3» онОст?Ы019.3>
8
Рис.З
Остатки можно также получить другим способом. Для этого
мы можем напрямую обратиться к нужному регистру при помо-
щи следующей строчки кода:
ОстатокДенег = Регистр1. ОстаткиДенег. Остаток ( "Наїла фир-
ма ", "Основной склад", "Сумма");
Остаток в этом случае выбирается на момент точки актуально-
сти. Часто такой способ использовать удобнее, чем громоздкий «чер-
ный» запрос. При вызове функции
Остаток
определенного регист-
ра важно указывать все существующие измерения регистра и толь-
ко один его ресурс (тот, остатки по которому мы и хотим выбрать).
Если по каким-либо причинам одно из измерений нужно пропустить
(например, выбрать остатки по всем складам фирмы, а не по како-
му-то определенному), то обозначение измерения можно и не ука-
зывать, поставив вместо него запятую. Например, строчка:
ОстатокДенег = Регистр.ОстаткиДенег.Остаток( "Наша фир-
ма" , , "Сумма");
выберет суммовые остатки по всем складам нашей фирмы.
Что касается оборотных регистров, то они, как уже упомина-
лось, предназначены для получения суммы движений регистра за
определенный период. В остальном же регистр оборотов пол-
ностью аналогичен регистру остатков, за исключением исполь-
зуемых процедур управления движениями. В частности, для дви-
жения регистра оборотов используется метод
ДвижениеВыпол-
нить(
) объекта
Регистр,
для получения суммы движений исполь-
зуется функция
сумма
при использовании запроса или метод
итог
при непосредственном обращении к регистру.
Последовательность документов о точка актуальном
Как вы успели заметить, все документы в системе 1С хранятся
в некоторой последовательности, в идеале соответствующей по-
следовательности событий хозяйственной деятельное™ предпри-
ятия. Каждый документ характеризуется датой ввода (которая обыч-
но соответствует рабочей дате системы), временем ввода (кото-
рое может не соответствовать реальному времени ввода докумен-
та в систему, но всегда находится в рамках последовательное™)
и некоторым внутренним иден™фикатором, который дополнитель-
но характеризует последовательность ввода документов в грани-
цах одной секунды (на предприятиях с большим документооборо-
том вводимые документы, бывает, создаются практически одно-
временно). Причем, дату и время документа в принципе можно по-
менять, для чего документ обязательно нужно сделать непроведен-
ным. Таким образом, последовательность хранения документов в
системе 1С можно представить в виде оси абсцисс некоторой пря-
моугольной системы координат, на которой в хронологической по-
следовательности расположены все введенные документы.
Чуть выше я упомянул такое понятие, как точко актуальности.
Это понятие является одним из ключевых в оперативном учете
системы 1С Точка актуальности (далее — ТА) представляет со-
бой момент, на который итоги регистров поддерживаются сис-
темой в актуальном состоянии. Точка актуальности может быть
привязана к конкретному проведенному документу или представ-
лять собой некоторую определенную дату. В повседневной ра-
боте ТА перемещается и находится на последнем проведенном
документе, олицетворяя момент последнего события хозяйствен-
ной деятельности предприятия, зафиксированный в системе. По-
этому точку актуальности можно условно представить как по-
следнее значение на упомянутой временной оси.
По умолчанию все значения ресурсов регистров взбираются
именно на момент точки актуальное™. Но это не значит, что для
получения значений ресурсов на прошедший момент времени нуж-
но все время передвигать точку актуальности. Для этого использу-
ется оператор
период
языка запросов (в случае использования
«черною» запроса) и методы
РассчитатьРегистрИНа
или
Рассчи-
татьРегистрыПо
объекта
Регистр
системы 1С (в случае получения
значений ресурсов на «низком уровне» — при помощи объектной
модели языка). О том, как правильно использовать перечисленные
методы, подробно написано в описании встроенного языка 1С.
В исключительных случаях может потребоваться перемеще-
ние точки актуальности на более ранний или более поздний мо-
мент времени, для чего можно использовать пункт меню Опера-
ции>Управление оперативными итогами или пункт контекстного
меню Установить ТА на документ, вызвав его на нужном доку-
менте из журнала документов.
Итак, надеюсь, завеса таинства оперативного учета 1С для
вас несколько приоткрылась. Конечно, умесшть такое широкое
понятие, как оперативный учет в рамки одной статьи практиче-
ски невозможно. Поэтому рекомендую почаще обращаться за
помощью к желто-красным книжкам и побольше практоковать-
ся — тогда у вас, несомненно, все получится. В качестве домаш-
него задания могу предложить перевод нашей конфигурации по
учету компьютерной техники на платформу оперативного учета.
В принципе, но регистрах можно учитывать количество техники,
пришедшей на наш сборочный участок и ушедшей с него поку-
пателю, или же денежные суммы, полученные в результате про-
дажи собранной компьютерной техники. Как это реализовать
наилучшим образом — подумайте сами; если возникнут вопро-
сы — пишите, постараюсь ответить на все.
В следующей статье мы рассмотрим общие способы админи-
стрирования системы 1 С, с которыми вам однозначно придется
столкнуться в дальнейшей работе — если, конечно, вы уже ре-
шили посвятить себя 1 С-программированию ©.
(Продолжение следует)
мои компьют ?
предыдущая страница 41 Мой Компьютер 2005 05 читать онлайн следующая страница 43 Мой Компьютер 2005 05 читать онлайн Домой Выключить/включить текст