0
- 09.01.2014 - 15:18
|
Создать новый документ "КП_ЗакреплениеИсполнителяЗаУстройством". Реквизиты:"Организация","Подразделение" и "Ответственный", ЗаказПокупателя. Добавить табличную часть "Устройства" реквизиты тч: "Исполнитель"(Справочник "Сотрудники"),"Номенклатура" и "Характеристика номенклатуры" (оба справочники). Этот документ вводится на основании "Заказа покупателя", при этом табличная часть заполняется автоматически. Этот документ делает движения по регистру сведений "КП_ЗакрепленныеИсполнителиЗаУстройствами". Соответственно этот регистр нужно создать, это периодический регистр сведений в пределах одной секунды, подчинен регистратору (КП_ЗакреплениеИсполнителяЗаУстройством) Измерения регистра: "Номенклатура", "ХарактеристикаНоменклатуры" и "Исполнитель" Ресурс: "Количество" (1) Добавить условие: Если при проведении выясняется, что это устройство и его характеристика уже закреплена за каким то исполнителем, то в ресурс по прошлому исполнителю идет (-1) (нужно списать это устройство со старого исполнителя). Движения делать двумя запросами: первый запрос выбираем структуру шапки документов (получаем реквизиты документа за исключением реквизитов табличной части), вторым запросом выбираем реквизиты табличной части. После этого выполняем движения. Процедура ОбработкаПроведения(Отказ, Режим) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.Ссылка, | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.НомерСтроки, | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.Номенклатура, | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.ХарактеристикаНоменклатуры, | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.Исполнитель, | КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.Количество, | КП_ЗакреплениеИсполнителяЗаУстройством.Дата |ПОМЕСТИТЬ Устройства |ИЗ | Документ.КП_ЗакреплениеИсполнителяЗаУстройством.Устройства КАК КП_ЗакреплениеИсполнителяЗаУстройствомУстройства | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КП_ЗакреплениеИсполнителяЗаУстройством КАК КП_ЗакреплениеИсполнителяЗаУстройством | ПО КП_ЗакреплениеИсполнителяЗаУстройствомУстройства.Ссылка.Дата = КП_ЗакреплениеИсполнителяЗаУстройством.Дата |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТЧ.Дата, | ВТ_ТЧ.Номенклатура КАК УстройстваНоменклатура, | ВТ_ТЧ.ХарактеристикаНоменклатуры КАК УстройстваХарактер, | ВТ_ТЧ.Исполнитель КАК УстройстваИсполнитель, | ВТ_ТЧ.Количество КАК УстройстваКоличество, | КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних.Номенклатура КАК РегистрНоменклатура, | КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних.Исполнитель КАК РегистрИсполнитель, | КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних.ХарактеристикаНоменклатуры КАК РегистрХарактер, | КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних.Количество КАК РегистрКоличество |ИЗ | Устройства КАК ВТ_ТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КП_ЗакрепленныеИсполнителиЗаУстройствами.СрезПоследних(, ) КАК КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних | ПО ВТ_ТЧ.Ссылка = КП_ЗакрепленныеИсполнителиЗаУстройствамиСрезПоследних.Регистратор"; Результат = Запрос.Выполнить(); ВыборкаУстройстваРегистр = Результат.Выбрать(); Пока ВыборкаУстройстваРегистр.Следующий() Цикл НаборЗаписей = РегистрыСведений.КП_ЗакрепленныеИсполнителиЗаУстройствами.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.Добавить(); Если НоваяЗапись.Номенклатура = ВыборкаУстройстваРегистр.РегистрНоменклатура и НоваяЗапись.ХарактеристикаНоменклатуры = ВыборкаУстройстваРегистр.РегистрХарактер и НоваяЗапись.Исполнитель = ВыборкаУстройстваРегистр.РегистрИсполнитель Тогда НоваяЗапись.Количество = -1; НоваяЗапись.Исполнитель = ВыборкаУстройстваРегистр.РегистрИсполнитель; НоваяЗапись.Номенклатура = ВыборкаУстройстваРегистр.РегистрНоменклатура; НоваяЗапись.ХарактеристикаНоменклатуры = ВыборкаУстройстваРегистр.РегистрХарактер; НоваяЗапись.Период = ВыборкаУстройстваРегистр.Дата; иначе отказ=Истина; КонецЕсли; КонецЦикла; Движения.КП_ЗакрепленныеИсполнителиЗаУстройствами.Записывать = Истина; Для Каждого ТекСтрокаУстройства Из Устройства Цикл Движение = Движения.КП_ЗакрепленныеИсполнителиЗаУстройствами.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаУстройства.Номенклатура; Движение.Исполнитель = ТекСтрокаУстройства.Исполнитель; Движение.ХарактеристикаНоменклатуры = ТекСтрокаУстройства.ХарактеристикаНоменклатуры; Движение.Количество = ТекСтрокаУстройства.Количество; КонецЦикла; КонецПроцедуры В итоге не выполняется условие с записью "количество = -1" подскажите пожалуйста как выполнить, чтобы формировалось две записи, одна с "-1" по старому обладателю детали, другая с "1" по новому обладателю детали. Спасибо! | |
1
- 09.01.2014 - 15:30
| отказ = истина, для экономии времени при проверке, т.е. зайдет в проверку условие либо нет. | |
2
- 09.01.2014 - 15:56
| После оператора "ЕСЛИ" идет какой-то бред. Сравнение с незаполненными значениями записи регистра. | |
3
- 09.01.2014 - 16:41
| а как сравнить с заполненными? | |
4
- 09.01.2014 - 16:48
|
2(3) Написано: НоваяЗапись = НаборЗаписей.Добавить(); Если НоваяЗапись.Номенклатура =... НоваяЗапись.Номенклатура всегда в новой записи будет пустой. Тут и сравнивать нечего. | |
5
- 11.01.2014 - 09:51
|
[quote=bma1;33640489]2(3) Написано:НоваяЗапись = НаборЗаписей.Добавить();Если НоваяЗапись.Номенклатура =...НоваяЗапись.Номенклатура всегда в новой записи будет пустой. Тут и сравнивать нечего. [/quote] Это верно, даже не ясно что с чем хотел сравнить автор. | |
| Интернет-форум Краснодарского края и Краснодара |