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

Помогите разобраться

Гость
0 - 27.02.2013 - 11:49
Нет движений по регистрам. Уже голова кипит, где я тупанул

Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Если Режим = РежимПроведенияДокумента.Оперативный тогда

Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслуг1переченьноменклатуры.номенклатура,
| ОказаниеУслуг1переченьноменклатуры.количество,
| ОказаниеУслуг1переченьноменклатуры.номенклатура.ви дноменклатуры КАК ВидНоменклатуры,
| ОказаниеУслуг1переченьноменклатуры.сумма,
| ОстаткиматериаловОстатки.количествоОстаток,
| СтоимостьМатериалаОстатки.стоимостьОстаток,
| ОстаткиматериаловОстаткиНаСкладе.количествоОстаток КАК КоличествоНаСкладе
|ИЗ
| Документ.ОказаниеУслуг1.переченьноменклатуры КАК ОказаниеУслуг1переченьноменклатуры
//у нас создаються виртуальные таблицы у регистра Остаткиматериалов с названием Остаткиматериалоа.остатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остаткиматериалов.Остатки(&Момен тВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиматериаловОстатки
//остатки получим на время создания документа, материал возьмем из списка номенклатуры документа
| ПО ОказаниеУслуг1переченьноменклатуры.номенклатура = ОстаткиматериаловОстатки.материал
//получаем все значения из регистра накопленияОстатки.материалов равный спику номенклатуры документа
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериала.Остатки(&Моме нтВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериалаОстатки
| ПО ОказаниеУслуг1переченьноменклатуры.номенклатура = СтоимостьМатериалаОстатки.материал
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остаткиматериалов.Остатки(
| &МоментВремени,
| Материал В (&СписокНоменклатурыДокумента)
| И Склад = &СкладВДокументе) КАК ОстаткиматериаловОстаткиНаСкладе


// мы должны узнать есть ли такой материал на складе
| ПО ОказаниеУслуг1переченьноменклатуры.номенклатура = ОстаткиматериаловОстаткиНаСкладе.материал
|ГДЕ
//условия отбора из документа только строки табличной части документа
| ОказаниеУслуг1переченьноменклатуры.номенклатура.Сс ылка = &Ссылка
|

|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.СтоимостьМатериала.Остатки,
| РегистрНакопления.Остаткиматериалов.Остатки";
Запрос.УстановитьПараметр("СкладВДокументе",Склад) ;
иначе

Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслуг1переченьноменклатуры.номенклатура,
| ОказаниеУслуг1переченьноменклатуры.количество,
| ОказаниеУслуг1переченьноменклатуры.номенклатура.ви дноменклатуры КАК ВидНоменклатуры,
| ОказаниеУслуг1переченьноменклатуры.сумма,
| ОстаткиматериаловОстатки.количествоОстаток,
| СтоимостьМатериалаОстатки.стоимостьОстаток

|ИЗ
| Документ.ОказаниеУслуг1.переченьноменклатуры КАК ОказаниеУслуг1переченьноменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остаткиматериалов.Остатки(&Момен тВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиматериаловОстатки
| ПО ОказаниеУслуг1переченьноменклатуры.номенклатура = ОстаткиматериаловОстатки.материал
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериала.Остатки(&Моме нтВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериалаОстатки
| ПО ОказаниеУслуг1переченьноменклатуры.номенклатура = СтоимостьМатериалаОстатки.материал

//условия отбора из документа только строки табличной части документа
|ГДЕ
| ОказаниеУслуг1переченьноменклатуры.номенклатура.Сс ылка = &Ссылка
|
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.Остаткиматериалов.Остатки,
| РегистрНакопления.СтоимостьМатериала.Остатки";
конецЕсли;


Запрос.УстановитьПараметр("МоментВремени",МоментВр емени());


Запрос.УстановитьПараметр("СписокНоменклатурыДокум ента",ПереченьНоменклатуры.ВыгрузитьКолонку("Номен клатура"));

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

ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Сообщить("Запрос Выполнен");

/////дальше не работает!!!!!!!!

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


Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = перечисления.ВидыНоменклатуры.материал тогда
Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкла де = Null,0,ВыборкаРезультатаЗапроса.КоличествоОстатокН аСкладе);
//Если мы проверяем товара на складе меньше чем товара в дкументе
Если Остаток<ВыборкаРезультатаЗапроса.Количество тогда
сообщить("Материал"+СокрЛП(ВыборкаРезультатаЗапрос а.Номенклатура)+"имееться Только"+Остаток);
Отказ = Истина;
Возврат;
Конецесли;
КонецЕсли;
КонецЕсли;

Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.материал тогда

//Расход по регистру ОстаткиМатериала
Движение = Движения.Остаткиматериалов.Добавить();
Движение.ВидДвижения = ВидДвижениянакопления.Расход();
Движение.Период = Дата;
Движение.материал = ВыборкаРезультатаЗапроса.Номенклатура;
Движение.склад = склад;
Движение.количество = ВыборкаРезультатаЗапроса.Количество;
Движения.Остаткиматериалов.Записать();
Сообщить("Движения по регистру Отсатки материала записаны");

//регистр СтоимостьМатериала Расход
Движение = движения.СтоимостьМатериала.Добавить();
движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.материал = ВыборкаРезультатаЗапроса.Номенклатура;
//РасчитаемстоимостьМатериала
СтоимостьМатериала = ?(выборкаРезультатаЗапроса.КоличествоОстаток = Null, 0,
ВыборкаРезультатаЗапроса.СтоимостьОстаток/ВыборкаРезультатазапроса.КоличествоОстаток);
Движение.стоимость = Стоимостьматериала * выборкаРезультатаЗапроса.Количество;
Движения.СтоимостьМатериала.Записать();
Сообщить ("Движения по регистру Стоимость Материала записаны");
КонецЕсли;



//Регистр Продажи
Движение = Движения.продажи.Добавить();
Движение.Период = Дата;
Движение.номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
движение.Мастер = мастер;
Движение.Клиент = Клиент;
Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма;
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.материал тогда
Движение.стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
Иначе
Движение.стоимость = 0;
КонецЕсли;
Движения.Продажи.Записать();
Сообщить("Движения по регистру продажи записаны");
конеццикла;

////Теперь добавим записть движения регистров
//Движения.Остаткиматериалов.Записать();
//Движения.СтоимостьМатериала.Записать();
//Движения.Продажи.Записать();
конецпроцедуры



1 - 27.02.2013 - 12:33
Здесь не работает:
ОказаниеУслуг1переченьноменклатуры.номенклатура.Сс ылка = &Ссылка
Сравнивается ссылка из номенклатуры а нужна ссылка на документ
Гость
2 - 27.02.2013 - 18:12
загрузи в конструктор и посмотри ОТКУДА у тебя берется "ОказаниеУслуг1переченьноменклатуры.номенклатура.С сылка"
что то мне кажется из номенклатуры, по идее если табличная часть называется "ПереченьНоменклатуры" в документе "ОказаниеУслуг1" то должно быть "ОказаниеУслуг1переченьноменклатуры.Ссылка"


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






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