Найти в Дзене
Develop

Проведение Приходной и Расходной накладных. Занятие 8. Продвинутый курс по программированию в 1С.

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

Видео

Себестоимость

Себестоимость - стоимостная оценка затрат на производство и реализацию товаров и услуг.

Покупка товаров

Приходные накладные отражают поступление товаров от поставщиков.

Обработчик событий "ОбработкаПроведения"

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

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

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

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

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

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

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

Оптовая торговля

Расходные накладные отражают отгрузку товаров оптовым покупателям.

Формала себестоимости: Сумма остаток / Количество остаток * Количество списания

Обработчик событий "ОбработкаПроведения"

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

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

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

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

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

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

// II. Контроль
Если ВыборкаДетальныеЗаписи.КоличествоТЧ > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
Сообщить("По номенклатуре " + ВыборкаДетальныеЗаписи.НоменклатураПредставление +
" недостаточно товара. Остаток " + ВыборкаДетальныеЗаписи.КоличествоОстаток);
Отказ = Истина;
Продолжить;
КонецЕсли;

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

Домашнее задание

  1. Создать пустую конфигурацию 1С.
  2. Создать справочник Товары, Склады, документы ПриходнаяНакладная и РасходнаяНакладная с табличной частью Товары, регистр накопления ТоварыНаСкладах с измерениями Товар, Склад и ресурсами Количество и Сумма. Имя каждого объекта должно содержать префикс - первая буква вашей фамилии и первая буква вашего имени. К примеру, вас зовут Иван Петров, создаем справочник: имя - "ипСклады", синоним "Склады".
  3. Создать Перечисление ТипыТоваров со значениями Товар и Услуга. У справочника Товары завести реквизит ТипТовара, тип данных - перечисление ТипыТоваров.
  4. Используя конструктор движений заполнить обработчик событий "ОбработкаПроведения" документов ПриходнаяНакладная и РасходнаяНакладная.
  5. Исправить обработчик событий "ОбработкаПроведения" документа ПриходнаяНакладная таком образом, чтобы:
  • в регистр не записывались услуги;
  • несколько строк табличной части с одинаковым товаром записывались в одну строку регистра (сгруппировать строки по товару).

6. Исправить обработчик событий "ОбработкаПроведения" документа РасходнаяНакладная таком образом, чтобы:

  • в регистр не записывались услуги;
  • несколько строк табличной части с одинаковым товаром записывались в одну строку регистра (сгруппировать строки по товару).
  • сумма списания (себестоимость) рассчитывалась "по средней" в разрезе складов.

7. В режиме 1С:Предприятие ввести пример для проверки для товара "Картофель".

Формала себестоимости: Сумма остаток / Количество остаток * Количество списания