Компания занимается оптовой торговлей поступление товаров отражается

Компания занимается оптовой торговлей поступление товаров отражается

понедельник, 19 января 2015 г.

1с специалист задача 1.10

Решение.
Из условия задачи ясно что необходимо добавить в регистр "ОстаткиНоменклатуры" измерение "ЕдиницаИзмерения", с типом соответсвующего справочника.
Так как такого справочника не существует в каркасной конфигурации, то создаем и его.
Аналогично с измерением "склад", так как учет ведется в разрезе складов.
В имеющемся регистре "Остатки номенклатуры" будем вести учет количества по складам, а себестоимость будем учитывать в новом регистре "Себестоимость" с измерениями "Номенклатура" и "Единица измерения" и ресурсами "Количество" и "Сумма".
Конечно велик соблазн "решить вопрос" одним регистром, но это приведет к грубой ошибке.
Допустим получили на Склад1 товар1 в количестве 1шт по 1 000 руб, а на склад2 товар1 1 шт. по 2000 руб, При списании со склада 1 по условию задачи "уйдет" 1шт на сумму 1500 руб. И останется о шт на сумму -500руб.

Переходим в документу "Приходная накладная".
Добавляем реквизиты "Склад" в шапку и "Единица измерения" в ТЧ.
Добавляем форму документа.
С помощью конструктора движений заполняем обработку проведения.

Процедура ОбработкаПроведения(Отказ, Режим)

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

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

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

КонецПроцедуры

Добавляем процедуру

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

КонецПроцедуры

Общий модуль должен быть с признаком "Клиент".

Переходим в документу "Расходная накладная".
В справочник "Номенклатура" добавляем реквизит ВидТовара " ПеречислениеСсылка.ВидыНоменклатуры"
Аналогично документу "Приходная накладная" добавляем реквизиты Склад и ЕИ (Обязательные для заполнения), в модуле формы добавляем те же процедуры пересчета.
Теперь самое основное: пишем обработку проведения.(текст ниже).

Читайте также:  Как передать домен на другой аккаунт

1) Сначала поместим ТЧ документа во временную таблицу, так как эта таблица будет использоваться в последующих 2-х запросах.
2) Согласно новой методике проведения сначала безусловно списываем все количество из ТЧ. (кроме услуг конечно).
3) Запишем движения
4) Проверяем не ушли ли в минус при этом, если да то все — отбой, ахтунг, возврат)
5) Устанавливаем блокировку на номенклатуру ТЧ для того чтобы одновременно товары их не использовали несколько транзакций.
6) Устанавливаем блокировку. Полезно для того чтобы не "уйти в минус" и избежать взаимных блокировок.
7) Движение по регистру "Себестоимость".

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.ОстаткиНоменклатуры.Очистить();

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

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

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

Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = Стр.Номенклатура;
Движение.ЕдиницаИзмерения = Стр.ЕдиницаИзмерения;
Движение.Количество = Стр.Количество;
КонецЦикла;

// 3. Записываем движения
Движения.Записать();

//4 Проверяем остатки, не ушли ли в минус

Запрос.Текст ="ВЫБРАТЬ
| ДокТЧ.Номенклатура,
| ДокТЧ.ЕдиницаИзмерения,
| ДокТЧ.Количество,
| ДокТЧ.Склад,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК ОстатокКол,
| ОстаткиНоменклатурыОстатки.Номенклатура.Представление
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &ТочкаИтогов,
| Номенклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокТЧ.Номенклатура
| ИЗ
| ДокТЧ)
| И Склад = &Склад) КАК ОстаткиНоменклатурыОстатки
| ПО ДокТЧ.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
| И ДокТЧ.ЕдиницаИзмерения = ОстаткиНоменклатурыОстатки.ЕдиницаИзмерения
| И ДокТЧ.Склад = ОстаткиНоменклатурыОстатки.Склад
|ГДЕ
| ОстаткиНоменклатурыОстатки.КоличествоОстаток
Запрос.Параметры.Вставить("ТочкаИтогов",Новый Граница(МоментВремени(), ВидГраницы.Включая));
Запрос.Параметры.Вставить("Склад", Склад);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Отказ = Истина;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Недостаточно товара " + Выборка.НоменклатураПредставление + " нужно еще " + (-Выборка.ОстатокКол);
Сообщение.Сообщить();
КонецЦикла;

Читайте также:  Кредитэкспресс финанс отзывы должников 2018

КонецЕсли;

Если Отказ Тогда
Возврат;
КонецЕсли;

//5
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры ;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();

//6
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Движения.Себестоимость.БлокироватьДляИзменения = Истина;
КонецЕсли;

//7 Себестоимость
Движения.Себестоимость.Записывать = Истина;
Движения.Себестоимость.Очистить();

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

Запрос.Параметры.Вставить("ТочкаИтогов", МоментВремени());

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.Себестоимость.ДобавитьРасход();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
Движение.Период = Дата;
Если Выборка.ОстатокКол <> 0 Тогда
Движение.Сумма = (Выборка.ОстатокСум/ Выборка.ОстатокКол) *Выборка.Количество;
КонецЕсли;

КонецЦикла;

Отчет "Ведомость по складу".
Для вывода отчета в требуемом виде придется вести учет характеристик.
Для этого заведем регистр сведений "ЗначениеСвойствТоваров" с измерениями "Номенклатура" с признаками "Ведущее " и "Основной отбор" и "свойство" тип "План видов характеристик "Свойства объектов" и ресурс "Значение" Тип "Характеристика.СвойстваОбъектов".
В ПВХ "Свойства объектов" добавим в тип реквизит"Справочник.Контрагенты" и добавим предопределенное значение "Производитель". Построение отчета не расписываю при желании можно посмотреть скачав решение.
скачать

  • 22.01.2018 13:26:59

Компания занимается оптовой торговлей. Поступление товаров отражается документом «Приходная накладная», продажа – «Расходная накладная». Учет товаров ведется в разрезе сроков годностей. При поступлении товара для каждого товара может быть указан свой срок годности в строке табличной части "Товары". В расходной накладной сроки годности не указываются.

Складской учет товаров не ведется. Себестоимость рассчитывается в зависимости от срока годности по средней, т.е. у поступлений с разными сроками годности может получиться разная себестоимость. Списание товаров должно быть организовано в зависимости от срока годности – в первую очередь должен списываться товар с самым «старым» сроком годности.

Читайте также:  Как выбрать игровой процессор 2018

Разработать отчет по продажам товаров за период согласно образцу ниже. Данные в отчет брать из оборотного регистра "Продажи".

Прибыль рассчитывается как
«Прибыль» = «Сумма продаж» — «Себестоимость»

Компания занимается оптовой торговлей. Поступление товаров отражается документом «Приходная накладная», продажа — «Расходная накладная». Учет товаров ведется в разрезе сроков годностей. При поступлении товара для каждого товара может быть указан свой срок годности.

Складской учет не ведется.

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

В решении должна быть реализована возможность, как запрета, так и разрешения продажи товара, отсутствующего (по данным учета) на складе. Запрет продажи товара с «отрицательными остатками» или разрешение определяется учетной политикой организации, которая может меняться только в начале года.

Документы задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.

Необходимо построить отчет по продажам товаров за период и остаткам товаров на указанную дату.

Ссылка на основную публикацию
Клавиатура на айфоне фото
Восемь лет назад Стив Джобс анонсировал первый смартфон компании Apple. Одной из главных особенностей iPhone являлась возможность навигации по меню...
Какие комбинации клавиш необходимы для получения символов
Здравствуйте! Вы никогда не задумывались, сколько порой приходится тратить времени на обычные операции: выделить что-то мышкой, скопировать, затем вставить в...
Какие компрессоры стоят в холодильниках бирюса
С появлением широкого ассортимента импортного холодильного оборудования бытовая техника отечественного производства постепенно отошла на второй план. Однако ошибочно думать, что...
Клавиатура не отрывая пальца
Непрерывный ввод — это функция, которая позволяет вводить текст, проведя пальцем по клавиатуре. Это работает следующим образом. Допустим, вам нужно...
Adblock detector