PDA

Просмотр полной версии : Контроль товара на складе при создании расходной накладной



ragnarek
13.07.2017, 13:32
Добрый день! Я новичок 1С. Изучаю 3-й день. Нужна ваша помощь, или напутствие.

Задача такая:
У меня есть РасходнаяНакладная, она работает с регистром накопления, то есть появляется пометка о расходе. Мне как-то нужно сделать, что бы когда я создавал новую РасходнуюНакладную в клиенте, учитывалось кол-во товара, т.е. если товара на складе нет, мне бы выдало сообщение что эту операцию выполнить нельзя т.к. недостаточно кол-во товара на складе.

Вот некоторые скриншоты моего клиента:
http://skrinshoter.ru/s/130717/jhaFO8ds.png
http://skrinshoter.ru/s/130717/3IHc0sx7.png
http://skrinshoter.ru/s/130717/UhtG9bLc.png

Online_Z
13.07.2017, 22:41
конфигурация типовая или самописка?

ragnarek
16.07.2017, 10:35
конфигурация типовая или самописка?

Самописка

alexandr_ll
16.07.2017, 14:10
Самописка
В модуле документа в процедуре "ОбработкаПроведения" следует написать проверку остатков по регистру
Посмотрите здесь:
http://www.cyberforum.ru/1c/thread794457.html

ragnarek
20.07.2017, 09:17
В модуле документа в процедуре "ОбработкаПроведения" следует написать проверку остатков по регистру
Посмотрите здесь:
http://www.cyberforum.ru/1c/thread794457.html

Спасибо!!!
С этим разобрался, надо дальше самое сложное для меня.

При поступлении товаров в приходной накладной должна указываться цена и сумма покупки, но в регистр товар должен приходоваться по продажной стоимости.
Списание из регистра при продаже или перемещении также должно быть организовано по продажной стоимости.
Цена продажи должна храниться в соответствующем регистре сведений.

Регистр сведений есть, цены на товары там хранятся(независимый). Как я понимаю, нужно в обработке проведения документа ПриходнаяНакладная , в движении = цена как-то достать цену нужной номенклатуры из регистра сведений и что бы в регистр накопления ТоварыНаСкладе пошло с ценой из регистра сведений.

Как это вообще сделать, я не понимаю

alexandr_ll
20.07.2017, 09:47
Спасибо!!!
С этим разобрался, надо дальше самое сложное для меня.

При поступлении товаров в приходной накладной должна указываться цена и сумма покупки, но в регистр товар должен приходоваться по продажной стоимости.
Списание из регистра при продаже или перемещении также должно быть организовано по продажной стоимости.
Цена продажи должна храниться в соответствующем регистре сведений.

Регистр сведений есть, цены на товары там хранятся(независимый). Как я понимаю, нужно в обработке проведения документа ПриходнаяНакладная , в движении = цена как-то достать цену нужной номенклатуры из регистра сведений и что бы в регистр накопления ТоварыНаСкладе пошло с ценой из регистра сведений.

Как это вообще сделать, я не понимаю

Полагаю, что регистр сведений цены продажи периодический, в котором измерением является Товар, а ресурсом - Цена.
Чтобы получить цену товара из регистра сведений на дату документа можно использовать метод "ПолучитьПоследнее" (смотри синтакс-помощник), например
Отбор = Новый Структура;
Отбор.Вставить("Товар", Выб.Ссылка);
Цены = РегистрыСведений.ЦеныНоме� �клатуры;
ТекЦена = Цены.ПолучитьПоследнее(Дат а, Отбор);
Если ТекЦена.Цена=0 Тогда
продолжить;
КонецЕсли;
Также можно посмотреть здесь:
http://helpme1c.ru/registry-svedenij-v-yazyke-1s-8-v-primerax

ragnarek
20.07.2017, 10:25
Теперь он мне начал подставлять цену сам из регистра, а как я из задания понял, мне нужно ручками вводить в документ ПриходняНакладная, но в регистр из регистра сведений цена

ragnarek
20.07.2017, 10:31
так ладно, вот так изначально выглядит мой документ ПриходнаяНакладная


Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ТоварыНаСкладе Приход
Движения.ТоварыНаСкладе.За писывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладе.До бавить();
Движение.ВидДвижения = ВидДвиженияНакопления.При� �од;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклат� �ра;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количеств� �;
Движение.Цена = ;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
КонецПроцедуры

alexandr_ll
20.07.2017, 13:14
так ладно, вот так изначально выглядит мой документ ПриходнаяНакладная


Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ТоварыНаСкладе Приход
Движения.ТоварыНаСкладе.За писывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладе.До бавить();
Движение.ВидДвижения = ВидДвиженияНакопления.При� �од;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклат� �ра;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количеств� �;
Движение.Цена = ;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
КонецПроцедуры

Думаю, что вместо Движение.Цена = ;
Должно быть Движение.Сумма = Цена*ТекСтрокаТовары.Колич ество;
Где переменная Цена определяется из регистра сведений.
Вообще в Регистре накопления ТоварыНаСкладе есть реквизит цена?

ragnarek
20.07.2017, 13:40
Думаю, что вместо Движение.Цена = ;
Должно быть Движение.Сумма = Цена*ТекСтрокаТовары.Колич ество;
Где переменная Цена определяется из регистра сведений.
Вообще в Регистре накопления ТоварыНаСкладе есть реквизит цена?

http://skrinshoter.ru/s/200717/pnQ5THkz.png
Да , все есть. Просто сумму то я понимаю, я просто убрал на время. А с ценой не доходит как реализовать

alexandr_ll
20.07.2017, 14:02
На мой взгляд, в регистре накопления ресурс "Цена" излишний. Определить цену из регистра можно как я писал ранее :

Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", ТекСтрокаТовары.Номенклат� �ра);
Цены = РегистрыСведений.ЦеныНаТо� �ары;
ТекЦена = Цены.ПолучитьПоследнее(Дат а, Отбор);

Цена=ТекЦена.Цена;
Движение.Сумма = Цена*ТекСтрокаТовары.Колич ество;

Вообще в вашем задании должна быть предусмотрена процедура переоценки товара на складе при изменении цены продажи.

ragnarek
20.07.2017, 14:24
На мой взгляд, в регистре накопления ресурс "Цена" излишний. Определить цену из регистра можно как я писал ранее :

Вообще в вашем задании должна быть предусмотрена процедура переоценки товара на складе при изменении цены продажи.

Вот моё задание http://skrinshoter.ru/s/200717/LyrblFNt.png
То что зеленым, я выполнил.

alexandr_ll
20.07.2017, 14:51
Вот я и говорю:
Пришел товар по цене продажной 100 руб в количестве 2 штук
При приходе в регистре накопления будет количество 2, сумма 200 руб.
Продали один товар по цене продажи 100 руб. Осталось количество 1, сумма100 руб.
Приняли решение увеличить продажную цену до 150 руб.
Продали один товар по цене 150 руб. Осталось количество 0 , Сумма минус 50 рублей!
Как видите, при изменении цены продажи должна быть проведена переоценка товара и в регистре накопления изменена сумма остатка без изменения количества.
Ну а Приходная накладная теперь проводится правильно?

ragnarek
21.07.2017, 10:34
Добрый день, спасибо Вам я разобрался.
Вот столкнулся ещё с одной проблемой, почти сделал отчет-ведомость. Но чутка не дотягивает до оригинала (как надо сделать).


http://skrinshoter.ru/s/210717/Isp5z6VP.png
http://skrinshoter.ru/s/210717/ZrYa1xoz.png

А сделать надо вот так:
http://skrinshoter.ru/s/210717/X0IzaADh.png

Как мне сместить выше все