Показано с 1 по 2 из 2
-
17.12.2018, 04:57 #1
- Регистрация
- 17.12.2018
- Сообщений
- 3
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Регистр накопления не правильно считает сумму остатком и сумму
Здравствуйте! Есть задание , вроде себестоимость правильно считается,но остатки списываются нет.
Задание 1.
Создать пустую конфигурацию.
Создать справочники "Номенклатура", "Склады".
Организовать количественно-суммовой учёт товара в регистре
"ТоварыНаСкладах". Измерения "Номенклатура" и "Склад" Ресурсы:
"Сумма", "Количество".
Создать документ "Приходная накладная" Реквизиты шапки: "Склад"
Табличная часть: "Товары". Реквизиты табличной части: Номенклатура,
Количество, Цена, Сумма. Документ делает приход товара в регистр.
Создать документ "Расходная накладная". Реквизитов в шапке нет.
Табличная часть "товары" содержит реквизиты: номенклатура, склад,
количество, цена, сумма. (Склад в табличной части, следовательно
документом можно продать товары с нескольких складов).
В конфигурации документах и в регистрах все суммы (сумма и цена)
имеют измерения [15,2] что означает длина 15, знаков после запятой 2.
Количество везде имеет измерение [15,3]
Документ Расхродная накладная списывает товары со складов по
себестоимости (определяет стоимость товара в регистре и делает
движение "расход"). Если товара на складе не хватает, документ
сообщает об этом и не проводится.
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ТоварыНаСкладах Расход
Движения.ТоварыНаСкладах.З аписывать = Истина;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ
| РасходнаяНакладнаяТовары.� �оменклатура КАК Номенклатура,
| РасходнаяНакладнаяТовары.� �клад КАК Склад,
| РасходнаяНакладнаяТовары.� �оличество КАК КоличествоВДокументе,
| РасходнаяНакладнаяТовары.� �умма КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.� �сылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.� �оменклатура,
| РасходнаяНакладнаяТовары.� �клад,
| РасходнаяНакладнаяТовары.� �оличество,
| РасходнаяНакладнаяТовары.� �умма";
Запрос.УстановитьПараметр( "Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Запрос=Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;//ТОВАРЫ ОСТАТКИ НЕ ПРАВИЛЬНО ПОЛУЧЕНЫ ГДЕ АПРОС ПО СКЛАДУ? учись получать товары по складам!
//ПРИМЕР ПОСТАВЬ 200 ТОВАРОВ НА СКЛАД 1
//СПИШИ По 100 С КАЖДОГО СКЛАДА ОДНИМ ДОКУМЕНТОМ ПРОЖИ
Запрос.Текст = "ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура КАК Номенклатура,
| НоменклатураДокумента.Кол� �чествоВДокументе КАК КоличествоВДокументе,
| НоменклатураДокумента.Сум� �аВДокументе КАК СуммаВДокументе,
| НоменклатураДокумента.Скл� �д КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.СуммаОстаток, 0) КАК СуммаОстаток,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| РасходнаяНакладная.Ссылка КАК Ссылка
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыН� �Складах.Остатки(, ) КАК ТоварыНаСкладахОстатки
| ПО (ТоварыНаСкладахОстатки.Ск лад В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫРАЗИТЬ(НоменклатураДоку� �ента.Склад КАК Справочник.Склады)
| ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладная
| ГДЕ
| РасходнаяНакладная.Ссылка = &Ссылка
| И НЕ ВЫРАЗИТЬ(НоменклатураДоку� �ента.Склад КАК Справочник.Склады) ЕСТЬ NULL))
| И (ТоварыНаСкладахОстатки.Но менклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладная
| ГДЕ
| РасходнаяНакладная.Ссылка = &Ссылка)),
| Документ.РасходнаяНакладн� �я КАК РасходнаяНакладная";
Запрос.УстановитьПараметр( "Ссылка", Ссылка);
Движения.ТоварыНаСкладах.Б локироватьДляИзменения = Истина;
//////
Движения.ТоварыНаСкладах.З аписать();
////
РезультатЗапроса = Запрос.Выполнить();
//ТЗ = РезультатЗапроса.Выгрузит� �();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
Движение = Движения.ТоварыНаСкладах.Д обавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;
Движение.Период = Дата;
Движение.Номенклатура =ВыборкаДетальныеЗаписи.Но менклатура;
Движение.Склад =ВыборкаДетальныеЗаписи.Ск лад;
Движение.Сумма = (ВыборкаДетальныеЗаписи.Су ммаОстаток/ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток)*ВыборкаДе� �альныеЗаписи.КоличествоВД окументе;
Движение.Количество = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе;
КонецЦикла;
Движения.Записать();
Если Режим = РежимПроведенияДокумента.� �перативный Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Но� �енклатура КАК Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.КоличествоОстаток, 0) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыН� �Складах.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| НоменклатураДокумента)
| И Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Ко� �ичествоОстаток < 0";//КОНТРОЛЬ БЕЗ УЧЕТА СКЛАДА ТУТ, ОШИБКА
Запрос.УстановитьПараметр( "Склад",ВыборкаДетальныеЗа� �иси.Склад);
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузит� �();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
//Если ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток<0 Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не хватает "+Строка(-ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток)+
"Единиц материала " + ВыборкаДетальныеЗаписи.Но� �енклатура+"";
Сообщение.Сообщить();
Отказ = Истина;
//КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
-
17.12.2018, 05:03 #2
- Регистрация
- 17.12.2018
- Сообщений
- 3
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Регистр накопления не правильно считает сумму остатком и сумму
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ТоварыНаСкладах Расход
Движения.ТоварыНаСкладах.З аписывать = Истина;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ
| РасходнаяНакладнаяТовары.� �оменклатура КАК Номенклатура,
| РасходнаяНакладнаяТовары.� �клад КАК Склад,
| РасходнаяНакладнаяТовары.� �оличество КАК КоличествоВДокументе,
| РасходнаяНакладнаяТовары.� �умма КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.� �сылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.� �оменклатура,
| РасходнаяНакладнаяТовары.� �клад,
| РасходнаяНакладнаяТовары.� �оличество,
| РасходнаяНакладнаяТовары.� �умма";
Запрос.УстановитьПараметр( "Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Запрос=Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;//ТОВАРЫ ОСТАТКИ НЕ ПРАВИЛЬНО ПОЛУЧЕНЫ ГДЕ АПРОС ПО СКЛАДУ? учись получать товары по складам!
//ПРИМЕР ПОСТАВЬ 200 ТОВАРОВ НА СКЛАД 1
//СПИШИ По 100 С КАЖДОГО СКЛАДА ОДНИМ ДОКУМЕНТОМ ПРОЖИ
Запрос.Текст = "ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура КАК Номенклатура,
| НоменклатураДокумента.Кол� �чествоВДокументе КАК КоличествоВДокументе,
| НоменклатураДокумента.Сум� �аВДокументе КАК СуммаВДокументе,
| НоменклатураДокумента.Скл� �д КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.СуммаОстаток, 0) КАК СуммаОстаток,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| РасходнаяНакладная.Ссылка КАК Ссылка
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыН� �Складах.Остатки(, ) КАК ТоварыНаСкладахОстатки
| ПО (ТоварыНаСкладахОстатки.Ск лад В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫРАЗИТЬ(НоменклатураДоку� �ента.Склад КАК Справочник.Склады)
| ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладная
| ГДЕ
| РасходнаяНакладная.Ссылка = &Ссылка
| И НЕ ВЫРАЗИТЬ(НоменклатураДоку� �ента.Склад КАК Справочник.Склады) ЕСТЬ NULL))
| И (ТоварыНаСкладахОстатки.Но менклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| Документ.РасходнаяНакладн� �я.Товары КАК РасходнаяНакладная
| ГДЕ
| РасходнаяНакладная.Ссылка = &Ссылка)),
| Документ.РасходнаяНакладн� �я КАК РасходнаяНакладная";
Запрос.УстановитьПараметр( "Ссылка", Ссылка);
Движения.ТоварыНаСкладах.Б локироватьДляИзменения = Истина;
//////
Движения.ТоварыНаСкладах.З аписать();
////
РезультатЗапроса = Запрос.Выполнить();
//ТЗ = РезультатЗапроса.Выгрузит� �();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
Движение = Движения.ТоварыНаСкладах.Д обавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;
Движение.Период = Дата;
Движение.Номенклатура =ВыборкаДетальныеЗаписи.Но менклатура;
Движение.Склад =ВыборкаДетальныеЗаписи.Ск лад;
Движение.Сумма = (ВыборкаДетальныеЗаписи.Су ммаОстаток/ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток)*ВыборкаДе� �альныеЗаписи.КоличествоВД окументе;
Движение.Количество = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе;
КонецЦикла;
Движения.Записать();
Если Режим = РежимПроведенияДокумента.� �перативный Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Но� �енклатура КАК Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОст� �тки.КоличествоОстаток, 0) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыН� �Складах.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| НоменклатураДокумента)
| И Склад = &Склад) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Ко� �ичествоОстаток < 0";//КОНТРОЛЬ БЕЗ УЧЕТА СКЛАДА ТУТ, ОШИБКА
Запрос.УстановитьПараметр( "Склад",ВыборкаДетальныеЗа� �иси.Склад);
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузит� �();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
//Если ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток<0 Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не хватает "+Строка(-ВыборкаДетальныеЗаписи.Ко� �ичествоОстаток)+
"Единиц материала " + ВыборкаДетальныеЗаписи.Но� �енклатура+"";
Сообщение.Сообщить();
Отказ = Истина;
//КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Похожие темы
-
Как посчитать сумму в колонках ТЧ отчета в расчетно платежной ведомости?
от vladimir369 в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 6Последнее сообщение: 17.02.2017, 09:21 -
не ставит выплаченную сумму налога в 2НДФЛ
от litvit в разделе 1С - Предприятие 7.7Ответов: 0Последнее сообщение: 29.03.2014, 10:06 -
Пересчитать сумму НДС
от Alonix в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 2Последнее сообщение: 28.08.2013, 15:39 -
помогите новечку не могувывести определенную сумму
от hyst в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 1Последнее сообщение: 24.01.2013, 22:35
Социальные закладки