FOLD
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AFT Что-то херню я тебе насоветовал.Просто сам столкнулся с необходимостью расчитывать цены от себестоимости партии,и вообшем то там есть несколько нюансов ,здесь обсуждали .http://www.forum.mista.ru/topic.php?id=103689& , и потом если цены в справочник записывать из модуля, при пакетном проведении цены будут опять записыватся,причем неправильно В итоге у себя я сделал так,вроде бы работает,но все-таки лучше проверить На кнПровести свою процедуру прицепил Процедура ПоКнПровести() Перем Ч,М,С; Док = ДокОснование ; АвтоВремяОтключить(); Док.ПолучитьВремя(Ч,М,С); ДатаДок=Док.ДатаДок; Если Выбран()=0 Тогда УстановитьВремя(Ч,М,С); КонецЕсли; Записать(); //Записываем на время поступления Док .ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл Партия = Док.Партия; ТемпДок = СоздатьОбъект("Документ"); Рег=Создатьобъект("Регистр.ПартииНаличие"); ТЗДок=создатьобъект("ТаблицаЗначений"); ТЗДок.НоваяКолонка("Док","Документ"); Рег.УстановитьЗначениеФильтра("Партия",Партия,1); Рег.выбратьдвижения(Док,ТекущаяДата()); Пока рег.ПолучитьДвижение()=1 цикл Если Рег.Приход=0 Тогда ТЗДок.НоваяСтрока(); ТЗДок.Док= Рег.Текущийдокумент(); Конецесли; КонецЦикла; ТЗДок.Свернуть("Док",""); ТЗДок.Сортировать("Док+",1); ТЗДок.ВыбратьСтроки(); Пока ТЗДок.ПолучитьСтроку()=1 цикл ТемпДок.НайтиДокумент(ТЗДок.Док); Если ТемпДок.Проведен ()=1 Тогда Если ТемпДок.Блокировка(1)=0 Тогда Сообщить("Документ пока заблокирован."); КонецЕсли; Попытка ТемпДок.СделатьНепроведенным(); Сообщить("Документ" + " "+ ТемпДок.номердок +" "+"сделан непроведёным."); Исключение Сообщить("Документ" + " "+ ТемпДок.номердок +" "+" не сделан непроведёным."); КонецПопытки; КонецЕсли; КонецЦикла; КонецЦикла; Провести(); Если Проведен()=1 Тогда Док .ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл Партия = Док.Партия; Товар = Док.Номенклатура ; ОСТ = Рег.СводныйОстаток(,,Товар,,Партия,,,"Количество"); СумУп = Рег.СводныйОстаток(,,Товар,,Партия,,,"СуммаУпр"); ЦенаПарт = глФРМ(СумУп/ОСТ); СпрЦены = СоздатьОбъект("Справочник.Цены"); ЦенаДок = ДокОснование.Цена ; ТипЦ = ДокОснование.ТипЦен.ТекущийЭлемент(); СпрЦены.ИспользоватьВладельца(Товар); СпрЦены.ИспользоватьДату(Док.ДатаДок,1); Если СпрЦены.НайтиПоРеквизиту("ТипЦен",ТипЦ,0)=0 Тогда СпрЦены.Новый(); СпрЦены.ТипЦен = ТипЦ ; СпрЦены.Валюта = глДоллары; СпрЦены.Единица = Товар.БазоваяЕдиница; СпрЦены.Цена = ЦенаПарт ; СпрЦены.Записать(); Иначе СпрЦены.Валюта = глДоллары ; СпрЦены.Единица = Товар.БазоваяЕдиница; СпрЦены.Цена = ЦенаПарт ; СпрЦены.Записать(); КонецЕсли; КонецЦикла; КонецЕсли; ПРи проведении "задним числом" в модуле фромы приоткрытии Если ( Проведен() = 0 ) Тогда ПроводитьПослеТА(-1,0); КонецЕсли; vjick Цитата: ТЗ.ВыбратьСтроку(0,"Отладка",) | Еще какие нибудь подобные фишки знаешь? Поделись плз | Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 10:57 09-08-2005 | Исправлено: FOLD, 11:43 09-08-2005 |
|