Почему если я хочу продавать товаров больше чем на складе, у меня выдаёт такую ошибку? Если я хочу продать товаров 10, а на складе у меня всего 5,то выдаёт эту ошибку
Преобразование значения к типу Число не может быть выполнено
{Документ.РасходнаяНакладная.МодульОбъекта(196)}: Движение.Прибыль = СуммаДокумента - СуммаСебестоимости;
Преобразование значения к типу Число не может быть выполнено
{Документ.РасходнаяНакладная.МодульОбъекта(196)}: Движение.Прибыль = СуммаДокумента - СуммаСебестоимости;
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр Взаиморасчёты Приход
Движения.Взаиморасчёты.Записывать = Истина;
Движение = Движения.Взаиморасчёты.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Контрагент = Клиент;
Движение.Сумма = СуммаДокумента;
// регистр ТоварыНаСкладах Расход
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
КонецЦикла;
Запрос1 = Новый Запрос;
Запрос1.Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Товар,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
| РасходнаяНакладнаяТовары.Ссылка.Склад КАК Склад
|ПОМЕСТИТЬ ВременнаяТабличнаяЧастьТовары
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Товар,
| РасходнаяНакладнаяТовары.Ссылка.Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
| ВременнаяТабличнаяЧастьТовары.Товар.Представление КАК ТоварПредставление,
| ВременнаяТабличнаяЧастьТовары.Количество КАК Количество,
| ВременнаяТабличнаяЧастьТовары.Склад КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
|ИЗ
| ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
| &Дата,
| (Номенклатура, Склад) В
| (ВЫБРАТЬ
| ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
| ВременнаяТабличнаяЧастьТовары.Склад КАК Склад
| ИЗ
| ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары)) КАК ТоварыНаСкладахОстатки
| ПО ВременнаяТабличнаяЧастьТовары.Товар = ТоварыНаСкладахОстатки.Номенклатура
| И ВременнаяТабличнаяЧастьТовары.Склад = ТоварыНаСкладахОстатки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Товар,
| Склад";
Запрос1.УстановитьПараметр("Склад", Склад);
Запрос1.УстановитьПараметр("Ссылка", Ссылка);
Запрос1.УстановитьПараметр("Дата",Дата);
РезультатЗапроса1 = Запрос1.Выполнить();
Выборка = РезультатЗапроса1.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщить("Не хватает товара " + Выборка.ТоварПредставление + " " + (Выборка.Количество - Выборка.КоличествоОстаток));
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
// регистр ТоварыНаСкладах Расход
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
КонецЦикла;
КонецЦикла;
Если НЕ Отказ Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СебестоимостьТоваровОстатки.Номенклатура КАК Номенклатура,
| СебестоимостьТоваровОстатки.СуммаОстаток КАК Сумма,
| СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Товар
| ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
| ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка)) КАК СебестоимостьТоваровОстатки";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СуммаСебестоимости = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество <> 0 Тогда
СебестоимостьЕдиницы = ВыборкаДетальныеЗаписи.Сумма/ВыборкаДетальныеЗаписи.Количество;
Иначе
СебестоимостьЕдиницы = 0;
КонецЕсли;
Движения.СебестоимостьТоваров.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Движение = Движения.СебестоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
СтрокаТЧ = Товары.Найти(ВыборкаДетальныеЗаписи.Номенклатура,"Товар");
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
СебестоимостьСписания = СебестоимостьЕдиницы * СтрокаТЧ.Количество;
Движение.Сумма = СебестоимостьСписания;
// Движения по регистру продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Клиент = Клиент;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
Движение.Сумма = СтрокаТЧ.Сумма;
Движение.СебестоимостьТовара = СебестоимостьСписания;
СуммаСебестоимости = СуммаСебестоимости + СебестоимостьСписания;
КонецЦикла;
КонецЕсли;
Движения.РегистрБухУчёт.Записывать = Истина;
Проводка = Движения.РегистрБухУчёт.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.БухгалтерскийУчёт.Покупатели;
Проводка.СчетКт = ПланыСчетов.БухгалтерскийУчёт.Выручка;
Проводка.Сумма = СуммаДокумента;
Проводка = Движения.РегистрБухУчёт.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.БухгалтерскийУчёт.Себестоимость;
Проводка.СчетКт = ПланыСчетов.БухгалтерскийУчёт.Товары;
Проводка.Сумма = СуммаСебестоимости;
Движения.ЭффективностьПродаж.Записывать = Истина;
Движение = Движения.ЭффективностьПродаж.Добавить();
Движение.Период = Дата;
Движение.Сотрудник = Сотрудник;
Движение.КоличествоОтгрузок = 1;
Движение.Выручка = СуммаДокумента;
Движение.Прибыль = СуммаДокумента - СуммаСебестоимости;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Рабочее место менеджера по закупкам. Контроль остатков товаров в магазине, контроль наценки
- Контроль остатков счета ГТД (расширение для БП 3.0)
- На время отключаем контроль остатков и проверку документов
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Исправление ошибки релиза Бухгалтерии 3.0.95.6: при отключенном контроле остатков не проводит документ
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот