|
v7: Ошибки при формировании отчёта в Бух. учёте, ред. 4.5 | ☑ | ||
---|---|---|---|---|
0
Napalmmm
09.12.13
✎
09:54
|
Здравствуйте!
Пару месяцев назад пришёл в сферу программирования на 1С, платформа 8.2(а именно, начал стажироваться путём просмотра обучающих курсов и выполнения задач по типу "создать отчёт, доработать форму и т.д.). Буквально на днях от руководства была поставлена задача: исправить отчёт "Журнал-ордер счета 71" в конфигурации Бухгалтерский учёт, ред. 4.5 (7.70.560), т.к. он не формируется из-за ошибок. |
|||
1
Chum
09.12.13
✎
09:55
|
И что?
|
|||
2
Chum
09.12.13
✎
09:56
|
(0) Мы послушали краткое повествование, а в чем, собственно говоря, заключается вопрос?
|
|||
3
Napalmmm
09.12.13
✎
09:57
|
Извините, что отправил так рано. Думал при создании темы и последующем её редактировании можно будет вставить код.
Через пару минут добавлю код и напишу ошибки, по которым хотел бы получить консультацию. |
|||
4
dclxvi
09.12.13
✎
09:59
|
(3) Жгешь напалмом
|
|||
5
Napalmmm
09.12.13
✎
10:44
|
Код:
Процедура Сформировать() Подр = СоздатьОбъект("Справочник.Подразделения"); СписокП = СоздатьОбъект("СписокЗначений"); Подр.ВыбратьЭлементы(); Пока Подр.ПолучитьЭлемент() = 1 Цикл Если Подр.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; СписокП.ДобавитьЗначение(Подр.ТекущийЭлемент()); КонецЦикла; Если ПроверкаПериодаИГруппы() = 0 Тогда Возврат; КонецЕсли; БД=СоздатьОбъект("Xbase"); БД.ДобавитьПоле("NA",1,10,2); БД.ДобавитьПоле("KO",1,10,2); БД.ДобавитьПоле("NA1",1,10,2); БД.ДобавитьПоле("KO1",1,10,2); БД.ДобавитьПоле("NAIM",2,50,); БД.ДобавитьПоле("NOMER",2,5,); БД.ДобавитьПоле("DATAN",2,10,); БД.ДобавитьИндекс("IDX1","NAIM+DATAN+NOMER",0,0,""); БД.СоздатьФайл(КаталогПользователя()+"ostatki.dbf"); БД.ОчиститьФайл(); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Ит1 = СоздатьОбъект("БухгалтерскиеИтоги"); Ит1.ВыполнитьЗапрос(Дата1, Дата2); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ВключатьСубсчета(-1,-1); Ит.ИспользоватьСубконто("Сотрудники"); Ит.ИспользоватьСубконто("Подразделения",СписокП); Если Ит.ВыполнитьЗапрос(Дата1, Дата2,СчетПоКоду("71.1"),,, 3,2,1) = 0 Тогда Возврат; КонецЕсли; НОМЕР = 1; Ит.ВыбратьПериоды(); Пока Ит.ПолучитьПериод() = 1 Цикл Ит.ВыбратьСубконто(1); Ит.ПолучитьСубконто(); БД.Добавить(); БД.naim = Ит.ПредставлениеСубконто(1); БД.NOMER = Формат(НОМЕР,"Ч(0)5"); БД.DATAN = Формат(Ит.Операция.Документ.ДатаДок, "Д ДДММГГГГ"); БД.NA = Ит.СНД(); БД.KO = Ит.СКД(); БД.NA1 = Ит.СНК(); БД.KO1 = Ит.СКК(); БД.Записать(); НОМЕР = НОМЕР +1; КонецЦикла; БД.ТекущийИндекс("IDX1"); БД.Первая(); ФИО1=БД.NAIM; НаНач=БД.NA; НаКон=БД.KO; НаНач1=БД.NA1; НаКон1=БД.KO1; БД.KO=0; БД.KO1=0; БД.Записать(); БД.Следующая(); Пока БД.ВКонце()=0 Цикл Если ФИО1=БД.NAIM Тогда НаКон=БД.KO; БД.NA=0; БД.KO=0; НаКон1=БД.KO1; БД.NA1=0; БД.KO1=0; БД.Записать(); Иначе БД.Предыдущая(); БД.KO=НаКон; БД.KO1=НаКон1; БД.Записать(); БД.Следующая(); ФИО1=БД.NAIM; НаНач=БД.NA; НаКон=БД.KO; БД.KO=0; НаНач1=БД.NA1; НаКон1=БД.KO1; БД.KO1=0; БД.Записать(); кОНЕЦЕСЛИ; БД.Следующая(); КонецЦикла; БД.Предыдущая(); БД.KO=НаКон; БД.KO1=НаКон1; БД.Записать(); НомерПП=0; ИтогоАванс=0; Итого50=0; Итого51=0; ИтогоВыдано=0; Таб.ВывестиСекцию("Заголовок"); Таб.ВывестиСекцию("Шапка|Начало"); Ит.ВыбратьКорСчета(1, 2); Пока Ит.ПолучитьКорСчет() = 1 Цикл Если ((Ит.Корсчет.ЭтоГруппа()=0) И (НЕ((Ит.Корсчет=СчетПоКоду("50.1")) ИЛИ (Ит.Корсчет=СчетПоКоду("51"))))) Тогда Таб.ПрисоединитьСекцию("Шапка|Кредит"); КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Шапка|Конец"); НОМЕР = 1; Ит.ВыбратьПериоды(); Пока Ит.ПолучитьПериод() = 1 Цикл Ит.ВыбратьКорСчета(0, 2); К50=0; К51=0; НомИДата=""; ДатаАванс=""; НомАванс=""; АвансСумма=0; Пока Ит.ПолучитьКорСчет() = 1 Цикл Если Ит.Корсчет=СчетПоКоду("50.1") Тогда НомИДата=Формат(Ит.Операция.Документ.ДатаДок, "Д ДДММГГГГ")+" №"+СокрЛ(СокрП(Ит.Операция.Документ.НомерДок)); К50=Ит.КорКО(); Итого50=Итого50+К50; КонецЕсли; Если Ит.Корсчет=СчетПоКоду("51") Тогда К51=Ит.КорКО(); Итого51=Итого51+К51; КонецЕсли; Если ((Ит.Корсчет.ЭтоГруппа()=0) И (НЕ((Ит.Корсчет=СчетПоКоду("50.1")) ИЛИ (Ит.Корсчет=СчетПоКоду("51"))))) Тогда ДатаАванс=Формат(Ит.Операция.Документ.ДатаДок, "Д ДДММГГГГ"); НомАванс=СокрЛ(СокрП(Ит.Операция.Документ.НомерДок)); АвансСумма=Ит.КорКО(); ИтогоАванс=ИтогоАванс+АвансСумма; КонецЕсли; КонецЦикла; Ит.ВыбратьКорСчета(0, 1); Д50=0; НомДата=""; Пока Ит.ПолучитьКорСчет() = 1 Цикл Если Ит.КорСчет=СчетПоКоду("50.1") Тогда НомДата=Формат(Ит.Операция.Документ.ДатаДок, "Д ДДММГГГГ")+" №"+СокрЛ(СокрП(Ит.Операция.Документ.НомерДок)); Д50=Ит.КорДО(); ИтогоВыдано=ИтогоВыдано+Д50; КонецЕсли; КонецЦикла; Ит.ВыбратьСубконто(1); Ит.ПолучитьСубконто(); БД.Ключ.NAIM=Ит.ПредставлениеСубконто(1); БД.Ключ.DATAN=Формат(Ит.Операция.Документ.ДатаДок, "Д ДДММГГГГ"); БД.Ключ.NOMER=Формат(НОМЕР,"Ч(0)5"); НОМЕР=НОМЕР+1; Если БД.НайтиПоКлючу(0) = 1 Тогда НаНач=БД.NA; НаКон=БД.KO; НаНач1=БД.NA1; НаКон1=БД.KO1; Иначе Сообщить("Документ не найден"+Ит.Операция.Документ.НомерДок); КонецЕсли; НомерПП=НомерПП+1; Таб.ВывестиСекцию("Аванс|Начало"); Ит.ВыбратьКорСчета(1, 2); Пока Ит.ПолучитьКорСчет() = 1 Цикл Если ((Ит.Корсчет.ЭтоГруппа()=0) И (НЕ((Ит.Корсчет=СчетПоКоду("50.1")) ИЛИ (Ит.Корсчет=СчетПоКоду("51"))))) Тогда Таб.ПрисоединитьСекцию("Аванс|Кредит"); КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Аванс|Конец"); КонецЦикла; Таб.ВывестиСекцию("Подвал|Начало"); Ит.ВыбратьКорСчета(1, 2); Пока Ит.ПолучитьКорСчет() = 1 Цикл Если ((Ит.Корсчет.ЭтоГруппа()=0) И (НЕ((Ит.Корсчет=СчетПоКоду("50.1")) ИЛИ (Ит.Корсчет=СчетПоКоду("51"))))) Тогда Таб.ПрисоединитьСекцию("Подвал|Кредит"); КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Подвал|Конец"); Ит = 0; Таб.ТолькоПросмотр(1); Таб.Опции(0, 0, 5, 3); Таб.ОбластьПечати(); Таб.ПараметрыСтраницы(2,,,,,,,,, 0); Таб.Показать("Журнал ордер счет 71"); БД.ЗакрытьФайл(); КонецПроцедуры Ошибки: ФИО1=БД.NAIM; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(59)}: Перед выполнением операции установите объект на запись! НаНач=БД.NA; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(60)}: Перед выполнением операции установите объект на запись! НаКон=БД.KO; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(61)}: Перед выполнением операции установите объект на запись! НаНач1=БД.NA1; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(62)}: Перед выполнением операции установите объект на запись! НаКон1=БД.KO1; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(63)}: Перед выполнением операции установите объект на запись! БД.KO=0; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(64)}: Перед выполнением операции установите объект на запись! БД.KO1=0; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(65)}: Перед выполнением операции установите объект на запись! БД.KO=НаКон; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(95)}: Перед выполнением операции установите объект на запись! БД.KO1=НаКон1; {Отчет.ЖурналОрдерСчета71ПоСотрудникам.Форма.Модуль(96)}: Перед выполнением операции установите объект на запись! Я так понимаю, мы проскакиваем цикл Пока Ит.ПолучитьПериод() = 1 Цикл ... КонецЦикла; Но вот почему - понять не могу. Подскажите, пожалуйста, в какую сторону копать? Заранее спасибо! P.S. Еще раз извините за ошибки при создании темы. |
|||
6
Napalmmm
10.12.13
✎
09:29
|
Up
|
|||
7
Морозов Александр
10.12.13
✎
09:30
|
Это чтение ДБФ...
|
|||
8
dclxvi
10.12.13
✎
09:31
|
Надпись: БД=СоздатьОбъект(... существует?
|
|||
9
hhhh
10.12.13
✎
09:44
|
(6) походу нет ни одной записи в БД
|
|||
10
NikVars
10.12.13
✎
14:27
|
(5) БД.СоздатьФайл(КаталогПользователя()+"ostatki.dbf");
Ты там случайно файл ostatki.dbf не открыл на чтение? Чего там с правами на эту папку? Может ты по сети открываешь, а нужно рубать локально. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |