Управление блокировкой документа 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление блокировкой документа



// Создадим новый документ

НовыйПоступлениеТоваров = Документы.ПоступлениеТоваров.СоздатьДокумент(); // Заполним реквизиты документа НовыйПоступлениеТоваров.Номер = "001";

//...

// Сохраним его в базе данных

НовыйПоступлениеТоваров.Записать();

// Теперь получим ссылку на созданный нами документ

ПоступлениеТоваровСсылка =

Документы.ПоступлениеТоваров.НайтиПоНомеру("001"); // Получаем объект документа по ссылке

ПоступлениеТоваровОбъект = ПоступлениеТоваровСсылка.ПолучитьОбъект();

// Блокируем документ

Попытка

ПоступлениеТоваровОбъект.Заблокировать();

// Вносим изменения в документ, например, меняем номер

ПоступлениеТоваровОбъект.Номер = "002";

// Записываем данные в базу

ПоступлениеТоваровОбъект.Записать();

// Разблокируем документ

ПоступлениеТоваровОбъект.Разблокировать(); Исключение

// Выводим сообщение об ошибке

Предупреждение ("Не удалось заблокировать документ!"); КонецПопытки;

 

Удаление документа

// Создадим новый документ

НовыйСписаниеТоваров = Документы.СписаниеТоваров.СоздатьДокумент();

// Заполним дату документа

НовыйСписаниеТоваров.Дата = ТекущаяДата();

// Запишем документ в базу

НовыйСписаниеТоваров.Записать();

// Пометим документ к удалению

Если НЕ НовыйСписаниеТоваров.ПометкаУдаления Тогда

НовыйСписаниеТоваров.УстановитьПометкуУдаления; КонецЕсли;

// или удалим документ непосредственно НовыйСписаниеТоваров.Удалить();

 

26. Прикладной объект конфигурации регистр (сведений, накопления, бухгалтерии, расчета): свойства, структура, приемы программирования.

Регистр сведений

Прикладной объект, предназначенный для хранения произвольных данных в разрезе нескольких измерений. В том числе в разрезе времени.

Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.

Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:

· создание, изменение и удаление записей;

· выбор записей в заданном интервале по заданным критериям;

· выбор записей по регистратору;

· получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;

· получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.

Для получения наиболее поздних/ранних записей регистра сведений используется функция СрезПоследних/СрезПервых объекта РегистрСведенийМенеджер.<Имя регистра сведений>, либо виртуальная таблица СрезПоследних/СрезПервых регистра сведений, в случае когда выборка данных осуществляется запросом.

Приемы программирования

Чтение одной записи(структура):

// Для периодического:

// Получить(<Период>, <Отбор>)

// ПолучитьПервое(<НачалоПериода>, <Отбор>)

// ПолучитьПоследнее(<КонецПериода>, <Отбор>)

// Для непериодического:

// Получить(<Отбор>)

Доллары = Справочники.Валюты.НайтиПоНаименованию("USD");

Отбор = Новый Структура;

Отбор.Вставить("Валюта", Доллары);

Курсы = РегистрыСведений.КурсыВалют;

ТекКурс = Курсы.ПолучитьПоследнее(ТекущаяДата(), Отбор);

Сообщить("Текущий курс доллара: " + ТекКурс.Курс + " руб.");

 

Срез первых/последних(таблица значений):

// СрезПервых(<НачалоПериода>, <Отбор>)

// СрезПоследних(<КонецПериода>, <Отбор>)

Отбор = Новый Структура("ТипЦен, Номенклатура");

Отбор.ТипЦен = ТипЦены; // Какой тип цены

Отбор.Номенклатура = Номенклатура; // Для какой номенклатуры

// Цена в регистре сведений до Рабочей даты включительно

Цена = РегистрыСведений.ЦеныНоменклатуры.СрезПоследних(РабочаяДата(), Отбор);

Запросом(выборка): Единственый способ получения данных по виду сравнения не только "равно"

// Чтение данных на определенную дату из регистра сведений

Запрос = Новый Запрос;

 

МассивВалют = Новый Массив;

 

МассивВалют.Добавить(Валюта1);

МассивВалют.Добавить(Валюта2);

 

Запрос.УстановитьПараметр("МассивВалют", МассивВалют);

Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения);

 

Запрос.Текст = "

|ВЫБРАТЬ

| ВалютыСрезПоследних.Валюта,

| ВалютыСрезПоследних.Курс

|ИЗ

| РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних";

 

РезультатЗапроса = Запрос.Выполнить();

ТаблицаКурсов = РезультатЗапроса.Выгрузить();

// или так

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(" "+Выборка.Валюта+": "+Выборка.Курс);

КонецЦикла;

Чтение по одному измерению нескольких(выборка): Важно! Структура отбора может содержать только один элемент.

// Для периодического:

// Выбрать(<НачалоИнтервала>, <КонецИнтервала>, <Отбор>, <Порядок>)

// Для непериодического:

// Выбрать(<Отбор>, <Порядок>)

// Для подчиненного:

// ВыбратьПоРегистратору(<Регистратор>)

 

// Пример:

ОтборВалют = Новый Структура("Валюта", ВыбВалюта);

ВыборкаКурсовВалют = РегистрыСведений.КурсыВалют.Выбрать(,,ОтборВалют);

Пока ВыборкаКурсовВалют.Следующий() Цикл

Сообщить("Дата " + ВыборкаКурсовВалют.Период +

" Валюта "+СокрЛП(ВыборкаКурсовВалют.Валюта) +

", Курс "+ ВыборкаКурсовВалют.Курс);

КонецЦикла;

 

Чтение/запись одной(записи):

Курс = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();

Курс.Валюта = ВыбВалюта; // все измерения обязательны для заполнения

Курс.Период = ТекущаяДата(); // + период для периодического + регистратор для подчиненного

// Курс.Записать(); - если вызвать здесь, то удалим запись, т.к. не задали значение ресурсов

Курс.Прочитать();

Если Не Курс.Выбран() Тогда

Курс.Период = ТекущаяДата();

Курс.Валюта = ВыбВалюта;

Курс.Курс = 41.35;

Курс.Кратность = 1;

КонецЕсли;

Если ВвестиЧисло(Курс.Курс, "Введите курс на сегодня",15,5) Тогда

Курс.Записать();

КонецЕсли;

 

Чтение/запись нескольких(набор записей):

НаборЗаписей = РегистрыСведений.НумерацияДоговоров.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Период.Установить(НачалоГода(Дата));

НаборЗаписей.Отбор.Организация.Установить(Организация);

// Отбор может устанавливаться только на равенство

// Для регистров "Подчиненных регистратору", отбор возможен только по регистратору

НаборЗаписей.Прочитать(); // считывает записи в память согласно отбору (проще говоря получаем таблицу значений)

 

Если НаборЗаписей.Количество() = 0 Тогда

НовыйНомер = НаборЗаписей.Добавить();

НовыйНомер.Организация = Организация;

НовыйНомер.Период = НачалоГода(Дата);

НовыйНомер.Номер = 2; ном=1;

ИначеЕсли НаборЗаписей.Количество() = 1 Тогда

НовыйНомер = НаборЗаписей[0];

ном = НовыйНомер.Номер;

НовыйНомер.Номер = ном+1;

КонецЕсли;

НаборЗаписей.Записать(); // удаляет все старые записи согласно отбору и добавляет строки из НаборЗаписей

Регистр накопления

Прикладной объект, предназначенный для хранения информации о наличии и движениях средств (финансов, товаров, материалов и т.д.). Позволяет автоматизировать такие направления, как складской учет, взаиморасчеты, планирование.

В программных модулях для общих действий над регистром накопления (получение остатков и оборотов по данным регистра накопления, поиска нужных записей, формирования выборок, создания форм и макетов) служит объект РегистрНакопленияМенеджер.<Имя регистра накопления>. Для считывания и занесения набора записей в базу данных по определенному условию отбора служит объект РегистрНакопленияНаборЗаписей.<Имя регистра накопления>. Для динамического обхода записей регистра служит объект РегистрНакопленияВыборка.<Имя регистра накопления>.

Все поля регистра накопления можно разделить на три категории: измерения, ресурсы, реквизиты. К этим категориям относятся и все системные поля регистра. Период является измерением. Регистратор и НомерСтроки, с одной стороны, являются измерениями, так как вместе периодом определяют момент времени в которое произошло движение; с другой стороны, они характеризуют конкретную запись и могут быть отнесены к категории реквизитов. Вид движения является реквизитом так как является только характеристикой конкретной записи.

Регистр бухгалтерии

Прикладной объект, предназначенный для хранения данных, относящихся к бухгалтерскому учету. Позволяет вести многоуровневый и многомерный аналитический учет, учет по нескольким планам счетов. Возможно опциональное ведение количественного, суммового и валютного учета по отдельным разрезам аналитики и т.д.

По своему виду регистр бухгалтерии напоминает регистр накопления: он может иметь набор изменений, в разрезе которых накапливаются числовые значения ресурсов. Также он может содержать набор реквизитов для хранения дополнительной информации, связанной с записями регистра. Регистр бухгалтерии связывается с одним из используемых планов счетов, и хранит бухгалтерские итоги в соответствии с его структурой. Информация в регистре бухгалтерии хранится в виде записей, структура которых строится системой динамически, в зависимости от настроек различных элементов учета, выполненной при редактировании плана счетов. Например, запись может содержать поля для ввода корреспондирующих счетов, сумм, субконто, количества, вида валюты и суммы в валюте. Регистр бухгалтерии может работать в двух режимах: с поддержкой корреспонденции и без. В случае если выбран режим с поддержкой корреспонденции, будет задействован механизм двойной записи и каждая запись регистра будет содержать обязательные поля СчетДт (счет дебета) и СчетКт (счет кредита). Если же регистр не поддерживает корреспонденцию, каждая запись регистра будет содержать только одно поле – Счет.

Основными функциональными возможностями, которые предоставляет регистр бухгалтерии разработчику, являются:

 

· выбор записей в заданном интервале по заданным критериям;

· выбор записей по регистратору;

· получение остатков и оборотов на указанный момент времени по заданным значениям параметров (счет, субконто, измерения, кор. счет, кор. субконто, кор. измерения);

· получение остатков на указанный момент времени по заданным значениям параметров (счетДт, субконтоДт, счетКт, субконтоКт, измеренияКт, измерения (для балансовых) и измеренияДт, измеренияКт (для не балансовых));

· режим работы с разделением итогов, который обеспечивает более высокую параллельность записи в регистр;

· отключение использования текущих итогов;

· расчет итогов на указанную дату;

· чтение, изменение и запись набора записей в регистр;

· возможность записи в регистр без пересчета итогов;

· полный пересчет итогов и пересчет итогов за указанный период.

Приемы программирования



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 147; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.200.249.42 (0.036 с.)