Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

#КонецОбласти. #Область ДвиженияДокумента. | НоменклатураДокумента.Номенклатура, . #Область КонтрольОстатков




#КонецОбласти

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

Запрос2 = Новый Запрос; Запрос2. МенеджерВременныхТаблиц = МенеджерВТ;



1С: Предприятие 8. 3. Практическое пособие разработчика


Запрос2. Текст = " ВЫБРАТЬ

| НоменклатураДокумента. Номенклатура,

| НоменклатураДокумента. ВидНоменклатуры,

| НоменклатураДокумента. КоличествоВДокументе,

| НоменклатураДокумента. СуммаВДокументе,

| ЕСТЬNULL(СтоимостьМатериаловОстатки. СтоимостьОстаток, 0) КАК Стоимость,

| ЕСТЬNULL(ОстаткиМатериаловОстатки. КоличествоОстаток, 0) КАК Количество

|ИЗ

| НоменклатураДокумента КАК НоменклатураДокумента

|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления. СтоимостьМатериалов. Остатки(

|                       ,

|                        Материал В

|                                 (ВЫБРАТЬ

|                                         НоменклатураДокумента. Номенклатура

|                                 ИЗ

|                                         НоменклатураДокумента))

|                                                  КАК СтоимостьМатериаловОстатки

|       ПО НоменклатураДокумента. Номенклатура =

|                                                  СтоимостьМатериаловОстатки. Материал

|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления. ОстаткиМатериалов. Остатки(

|                       ,

|                        Материал В

|                                 (ВЫБРАТЬ

|                                         НоменклатураДокумента. Номенклатура

|                                 ИЗ

|                                         НоменклатураДокумента))

|                                                          КАК ОстаткиМатериаловОстатки

|       ПО НоменклатураДокумента. Номенклатура =

|                                                  ОстаткиМатериаловОстатки. Материал";

// Установим необходимость блокировки данных в регистрах СтоимостьМатериалов

// и ОстаткиМатериалов Движения. СтоимостьМатериалов. БлокироватьДляИзменения = Истина; Движения. ОстаткиМатериалов. БлокироватьДляИзменения = Истина;

// Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе Движения. СтоимостьМатериалов. Записать();

Движения. ОстаткиМатериалов. Записать();

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

// ТЗ = РезультатЗапроса. Выгрузить(); ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать(); Пока ВыборкаДетальныеЗаписи. Следующий() Цикл

Если ВыборкаДетальныеЗаписи. Количество = 0 Тогда

СтоимостьМатериала = 0; Иначе

СтоимостьМатериала = ВыборкаДетальныеЗаписи. Стоимость

/ ВыборкаДетальныеЗаписи. Количество;

КонецЕсли;

Если ВыборкаДетальныеЗаписи. ВидНоменклатуры =

Перечисления. ВидыНоменклатуры. Материал Тогда


Занятие 14



// Регистр ОстаткиМатериалов Расход

Движение = Движения. ОстаткиМатериалов. Добавить(); Движение. ВидДвижения = ВидДвиженияНакопления. Расход; Движение. Период = Дата;

Движение. Материал = ВыборкаДетальныеЗаписи. Номенклатура; Движение. Склад = Склад;

Движение. Количество = ВыборкаДетальныеЗаписи. КоличествоВДокументе;

// Регистр СтоимостьМатериалов Расход

Движение = Движения. СтоимостьМатериалов. Добавить(); Движение. ВидДвижения = ВидДвиженияНакопления. Расход; Движение. Период = Дата;

Движение. Материал = ВыборкаДетальныеЗаписи. Номенклатура; Движение. Стоимость = ВыборкаДетальныеЗаписи. КоличествоВДокументе

* СтоимостьМатериала;

КонецЕсли;

// Регистр Продажи

Движение = Движения. Продажи. Добавить(); Движение. Период = Дата;

Движение. Номенклатура = ВыборкаДетальныеЗаписи. Номенклатура; Движение. Клиент = Клиент;

Движение. Мастер = Мастер;

Движение. Количество = ВыборкаДетальныеЗаписи. КоличествоВДокументе; Движение. Выручка = ВыборкаДетальныеЗаписи. СуммаВДокументе; Движение. Стоимость = СтоимостьМатериала *

ВыборкаДетальныеЗаписи. КоличествоВДокументе;

КонецЦикла;

Движения. Записать();

#КонецОбласти

#Область КонтрольОстатков

Если Режим = РежимПроведенияДокумента. Оперативный Тогда

// Проверить отрицательные остатки Запрос3 = Новый Запрос;

Запрос3. МенеджерВременныхТаблиц = МенеджерВТ; Запрос3. Текст = " ВЫБРАТЬ

| ОстаткиМатериаловОстатки. Материал,

| ОстаткиМатериаловОстатки. КоличествоОстаток

|ИЗ

| РегистрНакопления. ОстаткиМатериалов. Остатки(

|              ,

|               Материал В

|                                (ВЫБРАТЬ

|                                         НоменклатураДокумента. Номенклатура

|                                ИЗ

|                                         НоменклатураДокумента)

|                        И Склад = & Склад) КАК ОстаткиМатериаловОстатки

|ГДЕ

| ОстаткиМатериаловОстатки. КоличествоОстаток < 0";

Запрос3. УстановитьПараметр(" Склад", Склад);


В результате мы можем свернуть выделенные программные области в тексте процедуры (рис. 14. 32).

 

 

Затем можно развернуть только нужную область модуля и работать с ней. Текст процедуры станет более компактным и читаемым.

В нашем примере мы разбили одну процедуру модуля на три логи- ческие части. Но чаще наоборот: когда модуль содержит много различных процедур, сходные по назначению процедуры можно объединить в группы. Например, в модуле формы можно выделить такие области, как ПрограммныйИнтерфейс, ОбработчикиСобытий, СлужебныеПроцедурыИФункции. Название этих областей задается самим разработчиком и говорит само за себя.


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

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...