PDA

Просмотр полной версии : Помогите пожалуйста разобраться с Контролем остатков и Автоматическая подстаовка цены



miha_serb
29.01.2013, 16:05
Добрый день прошу помоши с заданием а то у меня уже руки опустились неполучается сделать.

Задание на основе справочника 1с 8.2 практическое пособие разработчика.



Создать справочники "Номенклатура", "Склады".

Организовать количественно-суммовой учёт товара в регистре
"ТоварыНаСкладах". Измерения "Номенклатура" и "Склад" Ресурсы:
"Сумма", "Количество".


Создать документ "Приходная накладная" Реквизиты шапки: "Склад"
Табличная часть: "Товары". Реквизиты табличной части: Номенклатура,
Количество, Цена, Сумма. Документ делает приход товара в регистр.

Создать документ "Расходная накладная". Реквизитов в шапке нет.
Табличная часть "товары" содержит реквизиты: номенклатура, склад,
количество, цена, сумма. (Склад в табличной части, следовательно
документом можно продать товары с нескольких складов).

Документ Расходная накладная списывает товары со складов по
себестоимости (определяет стоимость товара в регистре и делает
движение "расход"). Если товара на складе не хватает, документ
сообщает об этом и не проводится.

Не могу понять как автомотическую подстановку цены из регистра накопления где нет ресурса цена.

И как создать запрос для того чтобы выдавалась ошибка при вводе большего колличества чем есть на складе.


Зарание благодарен!!!!

kyafnsum
29.01.2013, 18:42
Не могу понять как автомотическую подстановку цены из регистра накопления где нет ресурса цена.

Цену продажи Вы берете не из регистра накопления, а из ТЧ документа.


И как создать запрос для того чтобы выдавалась ошибка при вводе большего колличества чем есть на складе.

запрос к виртуальной таблице остатков регистра накопления.

---------- Post added at 18:42 ---------- Previous post was at 18:30 ----------

в общем вот, спрашивайте, если что не понятно: http://rusfolder.com/34751301

miha_serb
31.01.2013, 07:14
Преведите пожалуйста если вам не сложно пример

Цену продажи Вы берете не из регистра накопления, а из ТЧ документа.
Я что совсем врубиться не могу.

kyafnsum
02.02.2013, 16:45
Все очень просто. В регистре у вас хранится инфа о наличии номенклатуры на складе - количество и сумма по этому количеству. Цену продажи вы указываете в табличной части документа "РасходнаяНакладная", это в условии сказано:


Создать документ "Расходная накладная". Реквизитов в шапке нет.
Табличная часть "товары" содержит реквизиты: номенклатура, склад,
количество, цена, сумма. (Склад в табличной части, следовательно
документом можно продать товары с нескольких складов).

В принципе, цена и сумма продажи в этой задаче не важны - условием непредполагается хранение информации о продажах, кроме как в документах РН.

kyafnsum
02.02.2013, 17:06
Вообще, когда заходт речь о автоподстановке цен номенклатуры, эти цены хранятся в регистре сведений. В условии об этом не сказано, вот и получается, что цену продажи вы берете из табличной части расходной накладной.

miha_serb
11.02.2013, 10:05
Помогите пожалуйста с автоматическим расчетом стоимости при проведении документа расходная накладная.
Процедура ОбработкаПроведения(Отказ, Режим)


Движения.ТоварыНаСкладе.За писывать = Истина;

МенеджерВТ = Новый МенеджерВременныхТаблиц;

Запрос = Новый Запрос;

// Укажем, какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;


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

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

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




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

Результат = Запрос2.Выполнить();

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

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

Движение = Движения.ТоварыНаСкладе.До бавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;

Движение.Период = Дата;

Движение.Номенклатура = ВыборкаДетальныеЗаписи.Но� �енклатура;

Движение.Склад = ВыборкаДетальныеЗаписи.Ск� �ад;

Движение.Количество = ВыборкаДетальныеЗаписи.Ко� �ичество;

Если ВыборкаДетальныеЗаписи.Ко� �ичество<ВыборкаДетальныеЗаписи.Ко� �ичествоОСтаток Тогда

Движение.Сумма = ВыборкаДетальныеЗаписи.Су� �маОСтаток/ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток*ВыборкаДет альныеЗаписи.Количество;

Иначе

Движение.Сумма = ВыборкаДетальныеЗаписи.Су� �ма;

КонецЕсли;

Движения.Записать();

КонецЦикла;

kyafnsum
11.02.2013, 14:19
Похоже на правду. Только не ясно, зачем 2 запроса и МВТ. А что именно вам непонятно?
Движения.Записать(); - и вот этого тоже не нужно, тем более в цикле.
Если запись движений установлена как "записывать выбранные", в начало процедуры допишите
Движения.ТоварыНаСкладе.За писывать = Истина;
Движения.ТоварыНаСкладе.За писать()

miha_serb
12.02.2013, 10:12
В этом коде мне все понятно, я не могу понять почему он не работает) Я выгрузку выложил если не затруднит глянте пожалуйста.

kyafnsum
19.02.2013, 00:10
В этом коде мне все понятно, я не могу понять почему он не работает) Я выгрузку выложил если не затруднит глянте пожалуйста.
Файл не найден







Firefox не может найти файл http://forum.ruboard.ru/attachment.php?attachmentid=918&d=1360653064.