edu
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору vjick да я это делаю в типовой бух. (конфе) сделал выдал ошибку Значение не представляет агрегатный объект (Получить) Добавлено: vjick ой извиняюся, нашел ошибку. А теперь как записать данные, в периодические реквизиты. я делаю так. А надо что бы код оставался один и тот же а данные поменять (к примеру , ИНН, наименование, полнНаименование...) БазаКонтрагентов =СоздатьОбъект("XBase"); Контрагенты =СоздатьОбъект("Справочник.Контрагенты"); БазаСчетФактур =СоздатьОбъект("XBase"); БазаСчетФактурПоОтгр =СоздатьОбъект("XBase"); СчетФактура =СоздатьОбъект("Документ.СчетФактура"); Номенклатура =СоздатьОбъект("Справочник.Номенклатура"); СтавкиНДС =СоздатьОбъект("Справочник.СтавкиНДС"); Сч =СоздатьОбъект("Счет.Основной"); ГрафикЗагрузки =СоздатьОбъект("Справочник.ГрафикЗагрузки"); //************* БазаКонтрагентов.ОткрытьФайл(Константа.ПутьККонтрагентам,,1); КоличествоСтрок = 0; НачатьТранзакцию(); Если БазаКонтрагентов.Открыта()=1 Тогда Сообщить("База открыта "); БазаКонтрагентов.Первая(); //Пока БазаКонтрагентов.Открыта()=0 Цикл Пока БазаКонтрагентов.ВКонце()=0 Цикл Контрагенты.новый(); Контрагенты.Код = СокрЛП(БазаКонтрагентов.Tnom); // неправильно т.к. КОД это уинкальный текстовый, а Tnom там есть пустые значения, поэтому выдаст ошибку //Контрагенты.новыйКод = СокрЛП(БазаКонтрагентов.Tnom); Контрагенты.Наименование = СокрЛП(БазаКонтрагентов.name); Контрагенты.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Организация; Контрагенты.ПолнНаименование = СокрЛП(БазаКонтрагентов.name); Контрагенты.ЮридическийАдрес = СокрЛП(БазаКонтрагентов.adres); Контрагенты.ПочтовыйАдрес = СокрЛП(БазаКонтрагентов.adres); Контрагенты.Телефоны = СокрЛП(БазаКонтрагентов.Phone); Контрагенты.ИНН = СокрЛП(БазаКонтрагентов.INN); Контрагенты.ДокументСерия = ""; Контрагенты.ДокументНомер = ""; Контрагенты.ДокументКемВыдан = ""; Контрагенты.ДокументДатаВыдачи = ""; Контрагенты.ОсновнойДоговор = ""; // Справочник договоров Контрагенты.ОсновнойСчет = ""; //// // Справочник счета. Если КоличествоСтрок%100 = 0 Тогда ЗафиксироватьТранзакцию(); НачатьТранзакцию(); КонецЕсли; Контрагенты.Записать(); БазаКонтрагентов.Следующая(); Сообщить("Добавлен " +Контрагенты.Код+" "+Контрагенты.ПолнНаименование); КонецЦикла; ЗафиксироватьТранзакцию(); Иначе Сообщить("Не могу открыть базу !!!"); КонецЕсли; ///////////////////////////////// ПОТОМ ЗАПИСЫВАЮ ДАННЫЕ В док.СЧЕТ_ФАКТУРА. А как сделать что бы они записывались как ПЕРИОДИЧСКИЕ ГрафикЗагрузки.ПорядокКодов(); ГрафикЗагрузки.ВыбратьЭлементы(); Пока ГрафикЗагрузки.ПолучитьЭлемент() > 0 Цикл Если ГрафикЗагрузки.Состояние = Перечисление.Загрузка.Вожидании Тогда КоличествоСтрок = 0; НачатьТранзакцию(); БазаСчетФактурПоОтгр.Первая(); Пока БазаСчетФактурПоОтгр.ВКонце() = 0 Цикл Если БазаСчетФактурПоОтгр.ЗаписьУдалена()=1 Тогда Продолжить; КонецЕсли; Год=0;Месяц="";ДатаСальдо=0; Год=Лев(БазаСчетФактурПоОтгр.MES,4); Месяц=Прав(БазаСчетФактурПоОтгр.MES,СтрДлина(БазаСчетФактурПоОтгр.MES)-4); ДатаСФ=Дата(Год,Месяц,"01"); //Если БазаСчетФактурПоОтгр.Dat >= ГрафикЗагрузки.ДатаЗагрузки Тогда //Если (ДатаСФ >= НачМесяца(ГрафикЗагрузки.ДатаЗагрузки)) и (БазаСчетФактурПоОтгр.SUM_PLT<>0) Тогда Если (ДатаСФ >= НачМесяца(ГрафикЗагрузки.ДатаЗагрузки)) и (ДатаСФ <= КонМесяца(ГрафикЗагрузки.ДатаЗагрузки)) и (БазаСчетФактурПоОтгр.SUM_PLT<>0) Тогда СчетФактура.Новый(); //СчетФактура.НомерДок = НомерУчетаДокумента; //НомерУчетаДокумента = НомерУчетаДокумента+1; СчетФактура.ДатаДок = ДатаСФ; Контрагенты.НайтиПоКоду (БазаСчетФактурПоОтгр.TNOM); СчетФактура.Контрагент = Контрагенты.ТекущийЭлемент(); СчетФактура.Грузополучатель = Контрагенты.ТекущийЭлемент(); СчетФактура.Комментарий = "по отгрузке"; СчетФактура.НоваяСтрока(); СчетФактура.НазначитьТип("Товар","Справочник.Номенклатура"); Номенклатура.НайтиПоКоду("000000001"); СчетФактура.Товар = Номенклатура.ТекущийЭлемент(); //СчетФактура.Цена = БазаСчетФактурПоОтгр.S_VODA+БазаСчетФактурПоОтгр.S_STOKI+БазаСчетФактурПоОтгр.NDS_VODA+БазаСчетФактурПоОтгр.NDS_STOKI; СчетФактура.Цена = БазаСчетФактурПоОтгр.SUM_PLT; СчетФактура.Количество = 1; //СчетФактура.Сумма = БазаСчетФактурПоОтгр.S_VODA+БазаСчетФактурПоОтгр.S_STOKI; СчетФактура.Сумма = БазаСчетФактурПоОтгр.SUM_PLT-БазаСчетФактурПоОтгр.SUM_P_NDS; СтавкиНДС.НайтиПоКоду("4"); СчетФактура.СтавкаНДС = СтавкиНДС.ТекущийЭлемент(); //СчетФактура.НДС = БазаСчетФактурПоОтгр.NDS_VODA+БазаСчетФактурПоОтгр.NDS_STOKI; СчетФактура.НДС = БазаСчетФактурПоОтгр.SUM_P_NDS; //СчетФактура.Всего = БазаСчетФактурПоОтгр.S_VODA+БазаСчетФактурПоОтгр.S_STOKI+БазаСчетФактурПоОтгр.NDS_VODA+БазаСчетФактурПоОтгр.NDS_STOKI; СчетФактура.Всего = БазаСчетФактурПоОтгр.SUM_PLT; Сч.НайтиПоКоду("90 .3 . "); СчетФактура.Счет = Сч.ТекущийСчет(); СчетФактура.СчетНДС = 1; СчетФактура.Записать(); СчетФактура.Провести(); ГрафикЗагрузки.Состояние = Перечисление.Загрузка.Загружен; ГрафикЗагрузки.Записать(); //был=1; Сообщить (СчетФактура.Контрагент); КонецЕсли; БазаСчетФактурПоОтгр.Следующая(); КоличествоСтрок = КоличествоСтрок+1; Если КоличествоСтрок%100 = 0 Тогда ЗафиксироватьТранзакцию(); НачатьТранзакцию(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); БазаСчетФактурПоОтгр.ЗакрытьФайл(); Сигнал(); //******************************************************************************************************************* //загрузка счет-фактур по оплате за 2005 год КоличествоСтрок = 0; НачатьТранзакцию(); БазаСчетФактур.Первая(); Пока БазаСчетФактур.ВКонце() = 0 Цикл Если БазаСчетФактур.ЗаписьУдалена()=1 Тогда //если небудете работать удалить Продолжить; //если небудете работать удалить КонецЕсли; //если небудете работать удалить Год=0;Месяц=""; ДатаОпл=0;ДатаРеализации=0; Год=Прав(БазаСчетФактур.MES1,4); Месяц=Лев(БазаСчетФактур.MES1,СтрДлина(БазаСчетФактур.MES1)-4); ДатаОплаты=Дата(Год,Месяц,"01"); ДатаРеализации=Дата(БазаСчетФактур.DAT); //Если (БазаСчетФактур.Dat >= ГрафикЗагрузки.ДатаЗагрузки) и (ДатаОплаты<='31.12.05') Тогда Если (БазаСчетФактур.Dat >= НачМесяца(ГрафикЗагрузки.ДатаЗагрузки)) и (БазаСчетФактур.Dat <= КонМесяца(ГрафикЗагрузки.ДатаЗагрузки)) и (ДатаОплаты<='31.12.05') Тогда //и (ДатаНач<=ДатаРеализации) и (ДатаРеализации<=ДатаКон) СчетФактура.Новый(); //СчетФактура.НомерДок = НомерУчетаДокумента; //НомерУчетаДокумента = НомерУчетаДокумента+1; СчетФактура.ДатаДок = БазаСчетФактур.Dat; Контрагенты.НайтиПоКоду (БазаСчетФактур.TNOM); СчетФактура.Контрагент = Контрагенты.ТекущийЭлемент(); СчетФактура.Грузополучатель = Контрагенты.ТекущийЭлемент(); СчетФактура.Комментарий = БазаСчетФактур.Dok; СчетФактура.НоваяСтрока(); СчетФактура.НазначитьТип("Товар","Справочник.Номенклатура"); Номенклатура.НайтиПоКоду("000000001"); СчетФактура.Товар = Номенклатура.ТекущийЭлемент(); СчетФактура.Цена = БазаСчетФактур.Sum; СчетФактура.Количество = 1; СчетФактура.Сумма = БазаСчетФактур.Sum-БазаСчетФактур.Sum_nds; СтавкиНДС.НайтиПоКоду("4"); СчетФактура.СтавкаНДС = СтавкиНДС.ТекущийЭлемент(); СчетФактура.НДС = БазаСчетФактур.Sum_nds; СчетФактура.Всего = БазаСчетФактур.Sum; Сч.НайтиПоКоду("90 .3 . "); СчетФактура.Счет = Сч.ТекущийСчет(); СчетФактура.СчетНДС = 1; СчетФактура.Записать(); СчетФактура.Провести(); ГрафикЗагрузки.Состояние = Перечисление.Загрузка.Загружен; ГрафикЗагрузки.Записать(); //был=1; Сообщить (СчетФактура.Контрагент); КонецЕсли; БазаСчетФактур.Следующая(); КоличествоСтрок = КоличествоСтрок+1; Если КоличествоСтрок%100 = 0 Тогда ЗафиксироватьТранзакцию(); НачатьТранзакцию(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); БазаСчетФактур.ЗакрытьФайл(); КонецЕсли; КонецЦикла; БазаСчетФактур.ЗакрытьФайл(); //КонецЕсли; Предупреждение("Загрузка завершена!!!"); |