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переченьноменклатуры.Ссылка" | |
| Интернет-форум Краснодарского края и Краснодара |