1С учёт товара

1. Гость 02.06.22 09:29
Как сделать так, чтобы товары в документы не уходили в минус, т.е. чтобы при проведении документа, когда указываю товар, которого у меня нет, выходила ошибка.
zitraxmode; +1 Ответить
По теме из базы знаний
Найденные решения
4. zitraxmode 02.06.22 09:33 Сейчас в теме
Создаёшь РегистрНакопления.

В модуле документа для которого необходим контроль(переделаешь под себя сам):

Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	// регистр ОстаткиТоваров Расход
	Движения.ОстаткиТоваров.Записывать = Истина;
	Для Каждого ТекСтрокаПереченьПотребовавшихсяМатериалов Из ПереченьПотребовавшихсяМатериалов Цикл
		Движение = Движения.ОстаткиТоваров.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Товар = ТекСтрокаПереченьПотребовавшихсяМатериалов.Материалы;
		Движение.Количество = ТекСтрокаПереченьПотребовавшихсяМатериалов.Количество;
	КонецЦикла;
	
	Движения.Записать();
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
		//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОстаткиТоваровОстатки.Товар КАК Товар,
		|	ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.ОстаткиТоваров.Остатки(, Товар В (&МассивТоваров)) КАК ОстаткиТоваровОстатки
		|ГДЕ
		|	ОстаткиТоваровОстатки.КоличествоОстаток < 0";
	
	Запрос.УстановитьПараметр("0", 0);
	Запрос.УстановитьПараметр("МассивТоваров", ПереченьПотребовавшихсяМатериалов.ВыгрузитьКолонку("Материалы"));
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Отказ = Истина;
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			
			Сообщить("На складе не хватает: " + ВыборкаДетальныеЗаписи.Товар + " в количестве " + ((-1) * ВыборкаДетальныеЗаписи.КоличествоОстаток)); 	
			
		КонецЦикла;
		
     КонецЕсли;
КонецПроцедуры;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. petleon 9 02.06.22 09:32 Сейчас в теме
(1) Включить в конфигурации контроль остатков.
2. winapi 61 02.06.22 09:32 Сейчас в теме
В самом складе есть флажок с контролем остатков, включите его. Еще в администрировании есть в учете товаров - контроль остатков по организациям.
4. zitraxmode 02.06.22 09:33 Сейчас в теме
Создаёшь РегистрНакопления.

В модуле документа для которого необходим контроль(переделаешь под себя сам):

Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	// регистр ОстаткиТоваров Расход
	Движения.ОстаткиТоваров.Записывать = Истина;
	Для Каждого ТекСтрокаПереченьПотребовавшихсяМатериалов Из ПереченьПотребовавшихсяМатериалов Цикл
		Движение = Движения.ОстаткиТоваров.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Товар = ТекСтрокаПереченьПотребовавшихсяМатериалов.Материалы;
		Движение.Количество = ТекСтрокаПереченьПотребовавшихсяМатериалов.Количество;
	КонецЦикла;
	
	Движения.Записать();
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
		//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОстаткиТоваровОстатки.Товар КАК Товар,
		|	ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.ОстаткиТоваров.Остатки(, Товар В (&МассивТоваров)) КАК ОстаткиТоваровОстатки
		|ГДЕ
		|	ОстаткиТоваровОстатки.КоличествоОстаток < 0";
	
	Запрос.УстановитьПараметр("0", 0);
	Запрос.УстановитьПараметр("МассивТоваров", ПереченьПотребовавшихсяМатериалов.ВыгрузитьКолонку("Материалы"));
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Отказ = Истина;
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			
			Сообщить("На складе не хватает: " + ВыборкаДетальныеЗаписи.Товар + " в количестве " + ((-1) * ВыборкаДетальныеЗаписи.КоличествоОстаток)); 	
			
		КонецЦикла;
		
     КонецЕсли;
КонецПроцедуры;
Показать
5. FatPanzer 02.06.22 09:34 Сейчас в теме
(4) Откуда вы все вылазите?
6. tena 02.06.22 09:42 Сейчас в теме
(4) нормальные герои всегда идут в обход)))
7. пользователь 24.06.22 19:24
Сообщение было скрыто модератором.
...
8. пользователь 24.06.22 19:29
Сообщение было скрыто модератором.
...
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот