#КонецОбласти. #Область ДвиженияДокумента. | НоменклатураДокумента.Номенклатура, . #Область КонтрольОстатков
#КонецОбласти #Область ДвиженияДокумента Запрос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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|