К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

ЗакреплениеСотрудникаЗаУстройством Тема!

Гость
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]
Это верно, даже не ясно что с чем хотел сравнить автор.


К списку вопросов






Copyright ©, Все права защищены