Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Приход/Расход 1С 7.7  (Прочитано 18639 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Kit_Pes
Интересующийся

ua
Offline Offline

« : 10-12-2010 13:26 » 

Здравствуйте, помогите новачку, пожалуйста!

У меня такой вопрос Здесь была моя ладья...: Есть склад, припустим на него пришло 100 единиц товара. Это у нас приход. Потом из этого склада мы хотим снять 101 единицу этого товара. Это расход. При выводи отчета говорит, что товара осталось -1 единица. Как сделать программно так, чтобы у случаях, когда мы хотим снять товара больше, чем его есть на складе, нам выводило сообщения, что это сделать невозможно, поскольку такого количества товара на складе нет?Не понял

Модуль документа Расход:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();

КонецЦикла;

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


Спасибо!!!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-12-2010 13:55 » 

Получить остатки по регистру и проверять, есть ли в наличии столько количества, сколько мы хотим списать.

Код:
	Сп = СоздатьОбъект("СписокЗначений");
ВыгрузитьТабличнуюЧасть(Сп,"Материал");
ВремРегистры=СоздатьОбъект("Регистры");
РегОстатки = ВремРегистры.ОстаткиМатериалов;
РегОстатки.УстановитьЗначениеФильтра("Материал",Сп,2);
РегОстатки.УстановитьЗначениеФильтра("Склад",Склад,1);
Если ИтогиАктуальны()=0 Тогда
РегОстатки.ВременныйРасчет(1);
ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;
ВремРегистры.Актуальность(1);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ТекущийОстаток = РегОстатки.Остаток(Склад,Материал,"Количество");
Если ТекущийОстаток<Количество Тогда
Сообщить("Успь :( "+Материал,"!");
СтатусВозврата(0); // Отменим проведение
КонецЕсли;
// ... дальше - твой код для движения ...
КонецЦикла;
Записан
Kit_Pes
Интересующийся

ua
Offline Offline

« Ответ #2 : 10-12-2010 15:08 » new

Большое спасибо за помощь!  Класс! Но возникла небольшая проблема, если мы при расходе берем допустимое количество товара, то вместо остатков выбивает сообщение о том, что ето выбраное количество слишком большое...
« Последнее редактирование: 10-12-2010 15:35 от Kivals » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-12-2010 15:34 » 

"<=" вместо "<"
Записан
Kit_Pes
Интересующийся

ua
Offline Offline

« Ответ #4 : 10-12-2010 16:02 » 

Проблема состоит в том, что программа не делает правильного сравнение с тем, что есть на складе и с тем, что мы хотим из него снять...Если на складе 10 единиц, мы снимаем 2, программа выдает сообщение, что мы снимаем слишком большое количество....
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 11-12-2010 15:21 » 

Пройдись дебагером и найди ошибку. Я тебе дал идею - это не значит что я буду за тебя отлаживать программу...
Записан
KolyaVasya
Участник

ru
Offline Offline

« Ответ #6 : 25-05-2011 07:04 » 

Шеф если у тебя стоит ТиС то там в настройках склада можно поставить запрет на отрицательные остатки(галочку).
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #7 : 25-05-2011 22:17 » 

KolyaVasya,   думаю для автора это уже не актуально
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines