В режиме «Конфигуратор». Выделение произвольных областей модуля. #Область НоменклатураДокумента
В режиме «Конфигуратор» Как это сделать? Хороший вопрос. Давайте посмотрим на свойство Режим управления блокировкой данных нашей конфигурации. Оно установлено в значение Управляемый (рис. 14. 31).
Рис. 14. 31. Режим управления блокировкой данных в свойствах конфигурации
Это значит, что нам нужно использовать управляемые блокировки, которые устанавливаются средствами встроенного языка. Необходимо заблокировать те данные, которые мы собираемся читать и впоследствии изменять. Для этого у наборов записей регистров есть свойство БлокироватьДляИзменения, которым мы и воспользуемся. Вставим этот код перед записью пустых наборов записей (листинг 14. 41). листинг 14. 41. Фрагмент процедуры «ОбработкаПроведения()» Управляемая блокировка будет установлена в момент записи этих наборов записей, то есть как раз перед выполнением второго запроса. Что нам и требовалось.
Выделение произвольных областей модуля Итак, мы закончили редактирование процедуры ОбработкаПрове- дения() в модуле документа ОказаниеУслуги. Хотя модуль содержит всего одну процедуру, эта процедура довольно объемная (особенно для неопытного разработчика), и ее нельзя «охватить одним взглядом». Это затрудняет процесс восприятия и понимания текста процедуры, поиск в ней ошибок и т. д. Для удобства разработчика в редакторе модуля существует возмож- ность выделять произвольные области текста, группировать и свора- чивать их подобно тому, как сворачиваются инструкции циклов, условий, процедур и функций. Каждой области текста разработчик может дать собственное имя и таким образом выделить часть модуля, имеющую определенное назначение.
Например, в нашей процедуре можно выделить три логические части: в первой части формируется временная таблица, содержащая перечень номенклатуры документа; во второй части рассчитыва- ется стоимость номенклатуры и формируются движения в регистрах накопления; и в третьей части производится контроль остатков номенклатуры при оперативном проведении документа. Выделим эти три области в тексте процедуры, используя инструкции препроцессору #Область < имя области> и #КонецОбласти (листинг 14. 42). листинг 14. 42. Процедура «ОбработкаПроведения()» Процедура ОбработкаПроведения(Отказ, Режим) Движения. ОстаткиМатериалов. Записывать = Истина; Движения. СтоимостьМатериалов. Записывать = Истина; Движения. Продажи. Записывать = Истина; // Создать менеджер временных таблиц МенеджерВТ = Новый МенеджерВременныхТаблиц; #Область НоменклатураДокумента Запрос = Новый Запрос; // Укажем, какой менеджер временных таблиц использует этот запрос Запрос. МенеджерВременныхТаблиц = МенеджерВТ; Запрос. Текст = " ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры. Номенклатура, | ОказаниеУслугиПереченьНоменклатуры. Номенклатура. ВидНоменклатуры | КАК ВидНоменклатуры, | СУММА(ОказаниеУслугиПереченьНоменклатуры. Количество) | КАК КоличествоВДокументе, | СУММА(ОказаниеУслугиПереченьНоменклатуры. Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ. ОказаниеУслуги. ПереченьНоменклатуры | КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры. Ссылка = & Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры. Номенклатура,
| ОказаниеУслугиПереченьНоменклатуры. Номенклатура. ВидНоменклатуры"; Запрос. УстановитьПараметр(" Ссылка", Ссылка); РезультатЗапроса = Запрос. Выполнить();
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|