helpf.pro
Регистрация

v8: Контроль отрицатеьных остатков

Bell
19.07.2011 12:58Прочитано: 3412
Здравствуйте
Имеем документ при проведении которого контролируется отрицательный остаток ВСЕ РАБОТАЕТ
1.Вопрос
Зачем значения выборки подставлять в обход табличной части документа (стоят вопросы)
ведь документ всеравно не проводится не записывается
2.Вопрос
Почему при открытии проведенного документа (документов списан полностью остаток до этого) и добавлении на одну единыу больше к какой нибудь ТМЦ при перепроведении дока
пишет все равно что на складе имеет такое то количество
пример
Был остаток 7 шт
Доком №1 списываем все 7. шт
Открываю это докум №1 добавляю к 7 +1 перепровожу ПИШЕТ
Нет ТМЦ Оборудование №1, из необходимых 8 в наличии имеется только 7


Процедура ОбработкаПроведения(Отказ, Режим)

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

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

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщить("Нет ТМЦ " + Выборка.ТМЦ + ", из необходимых "
+ Выборка.Количество + " в наличии имеется только " +
Выборка.КоличествоОстаток);

Отказ = Истина;
КонецЕсли;
КонецЦикла;

Если Отказ Тогда
Возврат;
КонецЕсли;
Выборка.Сбросить();


Сч07=ПланыСчетов.БУ_ПланСчетов.Сч07;
Движения.БухгалтерскийУчет.Записывать = Истина;
Движения.ОстаткиТМЦ.Записывать = Истина;
Для Каждого СтрокаТЧ Из тблТМЦ Цикл // на следующий ????????????????????????

// Регистры бухгалтерии остатка---------------------------------------------------
Движение = Движения.БухгалтерскийУчет.Добавить();
Движение.Период = Дата;
Движение.Количество = СтрокаТЧ.Количество; // ?????????????????????????
Движение.Сумма = СтрокаТЧ.Сумма;
Движение.Содержание = "Перемещение оборудования";
Движение.НомерЖурнала = "ОС";

Движение.СчетДт = Сч07;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МХ] = МХкуда;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Оборудование] = СтрокаТЧ.ТМЦ;

Движение.СчетКт = Сч07;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МХ] = МХоткуда;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Оборудование] = СтрокаТЧ.ТМЦ;

// Регистры накопления остатка---------------------------------------------------
РН=Движения.ОстаткиТМЦ.ДобавитьРасход(); // РН-регистр накопления остатков
РН.Период = Дата;
РН.МХ = МХоткуда;
РН.ТМЦ = СтрокаТЧ.ТМЦ; // ??????????????????????
РН.Количество = СтрокаТЧ.Количество; // ???????????????????????????????
РН.Сумма = СтрокаТЧ.Сумма; // ??????????????????????


РН=Движения.ОстаткиТМЦ.ДобавитьПриход();
РН.Период = Дата;
РН.МХ = МХкуда;
РН.ТМЦ = СтрокаТЧ.ТМЦ; // ??????????????????????
РН.Количество = СтрокаТЧ.Количество; // ??????????????????????
РН.Сумма = СтрокаТЧ.Сумма;

КонецЦикла;

КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
Marfeus
19.07.2011 15:23Ответ № 1
Bell 1.Вопрос
Зачем значения выборки подставлять в обход табличной части документа (стоят вопросы)
ведь документ всеравно не проводится не записывается
А если Отказ = ЛОЖЬ? Ведь логика должна выполняться.
Marfeus
19.07.2011 15:36Ответ № 2
Bell
2.Вопрос
Почему при открытии проведенного документа (документов списан полностью остаток до этого) и добавлении на одну единыу больше к какой нибудь ТМЦ при перепроведении дока
пишет все равно что на складе имеет такое то количество
пример
Был остаток 7 шт
Доком №1 списываем все 7. шт
Открываю это докум №1 добавляю к 7 +1 перепровожу ПИШЕТ
Нет ТМЦ Оборудование №1, из необходимых 8 в наличии имеется только 7


вот твою оишбку выдает вот это
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщить("Нет ТМЦ " + Выборка.ТМЦ + ", из необходимых "
+ Выборка.Количество + " в наличии имеется только " +
Выборка.КоличествоОстаток);

Выборка.Количество береться из Документ.Оборудование_Перемещение.тблТМЦ суммированием реквизита количество, а Выборка.КоличествоОстаток это ресурс РегистрБухгалтерии.БухгалтерскийУчет. Следовательно у тебя в документе количество больше чем в регистре
Marfeus
19.07.2011 15:42Ответ № 3
Получаеться у тебя было в регистре по измерению МХоткуда 7 штук чего то ты их списал, и опять же проверяеш при перепроведении запросом, а у тебя этих 7 штук там уже и нет и поэтому выдает сообщение ИМХО.
Bell
20.07.2011 17:41Ответ № 4
Спасибо уяснил
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.