FOLD
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору tvskit Цитата: Так бы сразу и сказал.Константа эта только для опта. В рознице учет ведется в разрезе количество/цена.Пришел один товар по цене 10 и 20 руб.В регистр партииналичие и остаткиТМЦ, пишутся по 2 строки.Товар один цены разные.При продаже списывается с той строки,цена которая в документе продажи указана. Цитата: какие могут быть проблемки при свертке | Делалось в этой базе групповое проведение ,восстановление последовательности? Если нет будет хЭр знает что после свертки.Если вообще свернется.Свертка кстати может делаться о-о-чень долго.Вобщем предлагаю так. Удаляешь из базы все cdx,удалеяешь все файлы начинающиеся dh,dt,ra,rg.Удаляешь 1SJOURN.DBF,1SCRDOC.DBF. SC все оставляешь -это справочники.Удаляешь только SC214.DBF - это спр Партии. Запускаешь монопольно,(потои для успокоения можешь сделать тестирование).Таким образом получаешь идентичную базу со всеми справочниками ,но без доков и движений. Цепляешься к старой базе по оле.В 77 есть очень удобная конструкция для регистров Рег.ВыбратьИтоги(); Пока Рег.ПолучитьИтог()=1 Создаешь в своей базе ТЗ и выгружаешь итоги из регистра базыОЛЕ колонки какие нужны ТЗ - посмотри измерения/ресурсы нужного регистра.Потом перебираешь строки ТЗ и заполняешь докуметы ввода остатков пример,здесь у контров один договор Процедура Выполнить() //ПутьКонфигурации = "/D"""+"D:\DBTEST"+""" /n"+"Admin"+" /p"+"0000"; //Путь = """" + КаталогПрограммы() + """" + "enterprise /D" + КаталогИсточника + "\ /N" + ИмяПользователя(); Источник = СоздатьОбъект("V77s.Application"); Если Источник.Initialize(Источник.RMTrade, Путь, "NO_SPLASH_SHOW") = 0 Тогда Предупреждение("Возможно база занята или требуется переиндексация!"); Возврат; КонецЕсли; Состояние("База открыта"); СпрКонтр= СоздатьОбъект("Справочник.Контрагенты"); ДокПок = СоздатьОбъект("Документ.ВводОстатковПокупателя"); ДокПост = СоздатьОбъект("Документ.ВводОстатковПоставщика"); Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма"); ТабЗн=СоздатьОбъект("ТаблицаЗначений"); ТабЗн.НоваяКолонка("Контр"); ТабЗн.НоваяКолонка("СуммаВал"); РегОле=Источник.CreateObject("Регистр.Покупатели"); РегОле.ВыбратьИтоги(); Пока РегОле.ПолучитьИтог()=1 Цикл ТабЗн.НоваяСтрока(); ТабЗн.Контр = РегОле.Договор.Владелец.Код; ТабЗн.СуммаВал = Окр(РегОле.СуммаВал,2); Состояние("Обработка Регистра Покупатели"); КонецЦикла; ТабЗн.Свернуть("Контр","СуммаВал"); ТабЗн.ВыбратьСтроки(); Пока ТабЗн.ПолучитьСтроку()=1 Цикл Если ТабЗн.СуммаВал=0 Тогда Продолжить; КонецЕсли; Если СпрКонтр.НайтиПоКоду(ТабЗн.Контр)=1 Тогда ТекКонтр = СпрКонтр.ТекущийЭлемент(); ДокПок.Новый(); ДокПок.ДатаДок=ТекущаяДата(); ДокПок.Фирма= Фирма; Если ТабЗн.СуммаВал>0 Тогда ДокПок.ВидОперации = Перечисление.ВидыОперацийПоВводуОстатков.ОстаткиДолгаПокупателяНам; Иначе ДокПок.ВидОперации = Перечисление.ВидыОперацийПоВводуОстатков.ОстаткиДолгаПокупателю; КонецЕсли; ДокПок.Контрагент=ТекКонтр; ДокПок.Договор =ТекКонтр.ОсновнойДоговор; ДокПок.НоваяСтрока(); ДокПок.ВидДолга =Перечисление.ВидыДолга.ДолгЗаТовары; ДокПок.СуммаРуб =?(ТабЗн.СуммаВал<0,Число(-ТабЗн.СуммаВал),Число(ТабЗн.СуммаВал)); ДокПок.СуммаВал = ДокПок.СуммаРуб; ДокПок.СуммаУпр = ДокПок.СуммаРуб; //ДокПок.Себестоимость = ДокПок.СуммаРуб; ДокПок.Записать(); Сообщить(ДокПок.ТекущийДокумент()); //ДокПок.Провести(); КонецЕсли; КонецЦикла; Таким же образом по региструпостащики.Это по взаиморасчетам Остаки товаров перебросить- либо регистрОстаткиТМЦ или ПартииНаличие остаток/цена есть и там и там, в партии наличие есть еще ресурс сумма без ндс,если она тебе нужна будет. Поверить итоги стандартными отчетами, взаиморасчеты ,остатки -стимость товаров на складах. А книгу покупок/продаж я в ТиС не веду,код закоментирован, все равно в бух выгружать | Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 09:33 12-09-2006 | Исправлено: FOLD, 09:34 12-09-2006 |
|