Добрый вечер. Очень давно хотела обработку по Формированию РН из ТЗОстатков. Как смогла так и настряпала. Прошу не ругать меня.
1.Сначала я выбрала в ТЗКлиенты данные по контрагентам по 361 счету с отрицательным долгом
2.Набрала ВыбДок (это излишки по остаткам ТМЦ между Бух.базой и Складом и загрузила их в Расходную накладную по продажной цене)
3.Выгрузила эти излишки в ТЗОстатки
4.СоздатьОбъект("Документ.РасходнаяНакладная") и загружаю в ТЗОстатки
5. Необходимо их обработать
а)Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
Сообщить ("Нехватает товара!!!");
прерываю!!!!!!!
б) Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
и начинается самое ТРУДНОЕ
как расчитать ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!");
Я понимаю, что нужно пробежаться по строках в документе и убрать лишнее кво и вернуть его в ТЗОстатки для создания следующей РН !!!!!!
Если не трудно подскажите
Процедура СоздатьДокРН()
//=========================не трогать====================================================================
//---1---//
//==========создаем расходныйе накладный по выбраным контрагентам==========
ТЗКлиенты.ВыбратьСтроки();
Пока ТЗКлиенты.ПолучитьСтроку()=1 Цикл//1 начало
докРН = СоздатьОбъект("Документ.РасходнаяНакладная");
докРН.Новый();
докРН.Фирма = глВосстановитьЗначение(,"БазФирма");
докРН.Валюта = Константа.ОсновнаяВалюта;
докРН.Курс = докРН.Валюта.Курс.Получить(докРН.ДатаДок);
докРН.ВидНДС = докРН.Фирма.СтавкаНДС;
докРН.ДатаДок = ТекущаяДата();
докРН.Контрагент = ТЗКлиенты.Контрагент;
докРН.СуммаДокНал= ТЗКлиенты.Долг;
докРН.ВидТорговли = докРН.Контрагент.ВидТорговли;
докРН.СчетКонтрагента =СчетПоКоду("361");
докРН.МестоХранения = ВыбСклад;
//=========================не трогать====================================================================
//----2----//
//==========создаем список ТМЦ в расходных накладных по выбраным контрагентам====
ТЗОстатки.ВыбратьСтроки();
Пока ТЗОстатки.ПолучитьСтроку()=1 Цикл //2 начало
докРН.НоваяСтрока();
докРН.ТМЦ = ТЗОстатки.ТМЦ;
докРН.Ед = ТЗОстатки.Ед;
докРН.Коэффициент = ТЗОстатки.Коэффициент;
докРН.Кво = ТЗОстатки.СписатьКво;
докРН.ЦенаСНДС = ТЗОстатки.ЦенаСНДС;
докРН.СуммаСНДС = докРН.Кво* докРН.ЦенаСНДС;
//=========================не трогать====================================================================
//----3----//
Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
Сообщить ("Нехватает товара!!!");
возврат;
КонецЕсли;
//=========================не трогать====================================================================
//----4----//
// как расчитать сколько нужно списать колва в РН !!!!!!!!!!!
Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
докРН.ВыбратьСтроки();
Пока докРН.ПолучитьСтроку()=1 Цикл //3
ИзлишекСуммы=докРН.СуммаДокНал-докРН.Итог("СуммаСНДС");
сообщить("излишек"+ ИзлишекСуммы);
// не обходимо пробежаться по строках в документе и убрать лишее!!!!!!
текКолСтрокРН = ТЗОстатки.КоличествоСтрок();
Для ы = 1 По текКолСтрокРН Цикл
ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!");
докРН.Кво = ТекКво;
докРН.ЦенаСНДС = ТЗОстатки.ЦенаСНДС;
докРН.СуммаСНДС = докРН.Кво* докРН.ЦенаСНДС;
КонецЦикла;
КонецЦикла;
КонецЕсли;
//----5----//
// возращаяю в таблицу ТЗОстатки-лишее кол-во товара из РН
докРН.ВыбратьСтроки();
Пока докРН.ПолучитьСтроку()=1 Цикл //3
ТЗОстатки.НоваяСтрока();
ТЗОстатки.СписатьКво=ТЗОстатки.СписатьКво-докРН.Кво;
ТЗОстатки.СписатьЦенаСНДС= ТЗОстатки.ЦенаСНДС;
ТЗОстатки.СписатьСумма= ТЗОстатки.СписатьКво*ТЗОстатки.СписатьЦенаСНДС;
КонецЦикла;
//=========================не трогать====================================================================
КонецЦикла;//2 конец
Сообщить(докРН.Контрагент);
Сообщить("Итого"+докРН.Итог("СуммаСНДС"));
//=========================не трогать====================================================================
докРН.Записать();
Сообщить(докРН.ТекущийДокумент()+"Создан!");
Если флПроводить=1 Тогда
докРН.Провести();
Сообщить(докРН.ТекущийДокумент()+"Проведен!");
КонецЕсли;
//====================================================================================================
КонецЦикла; //1 конец
КонецПроцедуры
//=====================================================================
Процедура Удалить()
Если ТЗОстатки.СписатьКво<=0 Тогда
ТЗОстатки.УдалитьСтроку(ТЗОстатки.НомерСтроки);
КонецЕсли;
КонецПроцедуры
//=========================не трогать==================================================================== Это я пишу для себя пометки, люблю сначала все поломать,а потом 3 часа вспоминать.