|   |   | 
| 
 | v7: нужна помощь с кодом ↓ (Волшебник 16.09.2015 10:11) | ☑ | ||
|---|---|---|---|---|
| 0
    
        AlaMaRit 16.09.15✎ 09:47 | 
        Процедура НеОплаченныеНакладные(); 
 ... // Отчет по неоплаченным накладным... КонецПроцедуры Процедура ПриОткрытии(); НеОплаченныеНакладные() КонецПроцедуры выдает ошибку <<?>>Процедура НеОплаченныеНакладные(); {Отчет.Взаиморасчеты.Форма.Модуль(385)}: Определения процедур и функций должны размещаться перед операторами основной программы вопрос где ошибка? | |||
| 1
    
        Zhuri 16.09.15✎ 09:49 | 
        Процедура НеОплаченныеНакладные(); 
 убери ";" | |||
| 2
    
        HawkEye 16.09.15✎ 09:50 | 
        (0) ";" - убери после названия процедур     | |||
| 3
    
        itlikbez 16.09.15✎ 09:52 | 
        (0) Ошибка где-то выше строки 385. Ищи лишние ";"     | |||
| 4
    
        itlikbez 16.09.15✎ 09:53 | 
        (1) (2) Зачем? Смотрится неплохо. Мне лично нравится.     | |||
| 5
    
        HawkEye 16.09.15✎ 10:09 | 
        (4) и то верно, хотя мне и не нравится....
 (0) убери ";" ПЕРЕД "Процедура НеОплаченныеНакладные()" | |||
| 6
    
        AlaMaRit 16.09.15✎ 10:46 | 
        (5) убрал, ошибка осталась     | |||
| 7
    
        xaozai 16.09.15✎ 10:48 | 
        Процедура НеОплаченныеНакладные();
 Процедура ПриОткрытии(); Нафик здесь ; ? | |||
| 8
    
        itlikbez 16.09.15✎ 10:49 | 
        (7) Для красоты. Не трожь!     | |||
| 9
    
        itlikbez 16.09.15✎ 10:49 | 
        (6) Убери все.     | |||
| 10
    
        AlaMaRit 16.09.15✎ 10:50 | 
        все убрал не работает     | |||
| 11
    
        xaozai 16.09.15✎ 10:52 | 
        (8) Для красоты сисек не хватает.
 ?•_?_•? | |||
| 12
    
        xaozai 16.09.15✎ 10:52 | 
        эх     | |||
| 13
    
        itlikbez 16.09.15✎ 10:52 | 
        (10) Ошибка та же?     | |||
| 14
    
        AlaMaRit 16.09.15✎ 11:10 | 
        (13) да     | |||
| 15
    
        HawkEye 16.09.15✎ 11:21 | 
        (0) чего гадать то, давай сюда весь код.     | |||
| 16
    
        AlaMaRit 16.09.15✎ 11:23 | 
        (15) 
 //******************************************* процедура выбДаты(Реж) если Реж = 0 тогда если ДатаС > ПолучитьДатуТА() тогда ДатаС = ПолучитьДатуТА(); Предупреждение("Нельзя выбирать дату начала периода больше ТА", 30); иначеЕсли ДатаС > ДатаПо тогда ДатаС = ДатаПо; Предупреждение("Нельзя выбирать дату начала периода больше даты конца", 30); конецЕсли; иначе если ДатаПо < ДатаС тогда ДатаПо = ДатаС; Предупреждение("Некорректный интервал дат", 30); конецЕсли; конецЕсли; конецПроцедуры //******************************************* Процедура Сформировать() перем Реж; Спис = СоздатьОбъект("СписокЗначений"); Спис.ДобавитьЗначение(0,"Итоги"); Спис.ДобавитьЗначение(1,"Кратко"); Спис.ДобавитьЗначение(2,"Подробно"); Спис.ДобавитьЗначение(3,"Неоплаченные документы"); если Спис.ВыбратьЗначение(Реж,"Режим печати",,,1) = 0 тогда возврат; конецЕсли; Спис = 0; Если реж=3 Тогда//Неоплаченные документы Состояние("Выполняется обработка. Ждите..."); Таб = СоздатьОбъект("Таблица"); Заг=1; Если ПустаяСтрока(выбПост)<>1 Тогда Заг="По "+ВыбПост; КонецЕсли; Заг1=""; Таб.ИсходнаяТаблица("Таблица1"); Таб.ВывестиСекцию("Шапка"); Рег=создатьОбъект("Регистр.Взаиморасчеты"); Рег1=создатьОбъект("Регистр.Партии"); сумДолг4=0; СумНадо4=0; Табл = СоздатьОбъект("ТаблицаЗначений"); б=1; Табл.НоваяКолонка(); Табл.НоваяКолонка(); Табл.НоваяКолонка(); Табл.НоваяКолонка(); Табл.НоваяКолонка(); Таб1 = СоздатьОбъект("ТаблицаЗначений"); Сп = СоздатьОбъект("СписокЗначений"); Таб1.НоваяКолонка(); Таб1.НоваяКолонка(); Таб1.НоваяКолонка(); Таб1.НоваяКолонка(); СпрФ=СоздатьОбъект("Справочник.ФирмыК"); ин=1; Док=СоздатьОБъект("Документ"); Док.ОбратныйПорядок(1); Если ВыбПост.Выбран()=1 Тогда Док.ВыбратьПоЗначению(Дата(2004,9,1),ДатаПо,"Поставщик",ВыбПост); Иначе Док.ВыбратьДокументы(Дата(2004,9,1),ДатаПо); КонецЕсли; Пока (Док.ПолучитьДокумент()>0) Цикл Если Док.проведен()=0 Тогда Продолжить; КонецЕсли; Если (Док.Вид()="ПрихНакладная") Тогда Если выбФир.Выбран()=1 Тогда Если (Док.Фирма=ВыбФир) Тогда Иначе Продолжить; КонецЕсли; КонецЕсли; Стр=""; Если сп.НайтиЗначение(Док.Поставщик)<>0 тогда КонецЕсли; Если Таб1.НайтиЗначение(Док.Поставщик,Стр,1)=0 Тогда Если ПустоеЗначение(выбфир)=1 Тогда СумДолг=Рег.СводныйОстаток(Док.Поставщик,,,"Сумма"); Иначе СумДолг=Рег.СводныйОстаток(Док.Поставщик,,ВыбФир,"Сумма"); КонецЕсли; СпрФ.ИспользоватьВладельца(Док.Поставщик); СпрФ.ИспользоватьДату(ДатаПо); Если СПРФ.НайтиПоРеквизиту("Фирма",Константа.ОснФирма,0)<>0 Тогда Срок=СпрФ.Дни; ВидР=СпрФ.ПоУмолчанию; КонецЕсли; СумДолг1=0; Если видР=0 Тогда Ост=Рег1.СводныйОстаток(,,ВыбФир,Док.Поставщик,"Себестоимость"); СумДолг1=СумДолг-Ост; КонецЕсли; Сп.ДобавитьЗначение(Док.Поставщик); Если СумДолг>0 Тогда Таб1.НоваяСтрока(); Стр=Таб1.КоличествоСтрок(); Таб1.УстановитьЗначение(стр,1,Док.Поставщик); Таб1.УстановитьЗначение(стр,2,СумДолг); Таб1.УстановитьЗначение(стр,3,СумДолг1); Таб1.УстановитьЗначение(стр,4,ВидР); Иначе Сп.ДобавитьЗначение(Док.Поставщик); Продолжить; Конецесли; КонецЕсли; СумДолг=Таб1.ПолучитьЗначение(стр,2); Если сумДолг<=0 Тогда Продолжить; КонецЕсли; Докум=Док.ТекущийДокумент(); ПрихДолг=Док.Итог("Сумма"); Если ПрихДолг<=СумДолг Тогда Долг=ПрихДолг; СумДолг=СумДолг-ПрихДолг; Иначе Долг=СумДолг; СумДолг=0; КонецЕсли; Таб1.УстановитьЗначение(стр,2,СумДолг); Табл.НоваяСтрока(); Табл.УстановитьЗначение(ин,1,Докум.ДатаДок); Табл.УстановитьЗначение(ин,2,Докум); Табл.УстановитьЗначение(ин,3,ПрихДолг); Табл.УстановитьЗначение(ин,4,Долг); Табл.УстановитьЗначение(ин,5,Докум.Поставщик); ин=ин+1; КонецЕсли; КонецЦикла; СумНадо=0; б=1; СумДолг2=0;СумНадо=0; Табл.Сортировать("5,1"); Если Табл.КоличествоСтрок()=0 Тогда Предупреждение("Неоплаченных документов нет!"); Возврат; КонецЕсли; Пс=Табл.ПолучитьЗначение(1,5); Таб.ВывестиСекцию("Контрагент"); Стр=""; СумДолг1=0;ВидР=1; Если таб1.НайтиЗначение(Пс,Стр,1)<>0 Тогда Если таб1.ПолучитьЗначение(Стр,4)=0 Тогда ВидР= таб1.ПолучитьЗначение(Стр,4); СумДолг1=таб1.ПолучитьЗначение(Стр,3); КонецЕсли; КонецЕсли; Для ин=1 По Табл.КоличествоСтрок() Цикл Если Пс<>Табл.ПолучитьЗначение(ин,5) Тогда Таб.ВывестиСекцию("Итог"); СумДолг4=СумДолг4+СумДолг2; СумНадо4=СумНадо4+СумНадо; Пс=Табл.ПолучитьЗначение(ин,5); Таб.ВывестиСекцию("Контрагент"); Стр=""; СумДолг1=0;ВидР=1; Если таб1.НайтиЗначение(Пс,Стр,1)<>0 Тогда Если таб1.ПолучитьЗначение(Стр,4)=0 Тогда СумДолг1=таб1.ПолучитьЗначение(Стр,3); ВидР= таб1.ПолучитьЗначение(Стр,4); КонецЕсли; КонецЕсли; СумДолг2=0; СумНадо=0; б=0; КонецЕсли; Докум=Табл.ПолучитьЗначение(ин,2); ПрихДолг=Табл.ПолучитьЗначение(ин,3); Долг=Табл.ПолучитьЗначение(ин,4); СумДолг2=СумДолг2+Долг; КонецЦикла; Таб.ВывестиСекцию("Итог"); СумДолг4=СумДолг4+СумДолг2; СумНадо4=СумНадо4+СумНадо; Если СумНадо4<>СумНадо Тогда Таб.ВывестиСекцию("Всего"); КонецЕсли; ОчиститьОкноСообщений(); Таб.Опции(0,0,5,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Взаиморасчеты",""); Возврат; КонецЕсли; ТекстЗапроса = "Период с ДатаС"; если ДатаПо >= ПолучитьДатуТА() тогда ТекстЗапроса = ТекстЗапроса + ";"; иначе ТекстЗапроса = ТекстЗапроса + " по ДатаПо;"; конецЕсли; ТекстЗапроса = ТекстЗапроса + "//{{ЗАПРОС(хочу) |Контрагент = Регистр.Взаиморасчеты.Контрагент; |ВидЗакупки = Регистр.Взаиморасчеты.ВидЗакупки; |Фирма = Регистр.Взаиморасчеты.Фирма; |Сум = Регистр.Взаиморасчеты.Сумма; |Докум = Регистр.Взаиморасчеты.ТекущийДокумент; |Проект = Регистр.Взаиморасчеты.ТекущийДокумент.Проект; |Функция Сумма = КонОст(Сум); |Функция НачДолг = НачОст(Сум); |Функция ПрихДолг = Приход(Сум); |Функция РасхДолг = Расход(Сум); |"//}}ЗАПРОС ; Если Проект = 1 тогда ТекстЗапроса = ТекстЗапроса + "Группировка Проект; |Группировка Контрагент " + ?(БезГрупп = 1, "Без Групп", "") + " упорядочить по " + ?(Упорядочить = 1, "Контрагент.Наименование", "Сумма") + ";";//Контрагент.Наименование;";// Иначе ТекстЗапроса = ТекстЗапроса + "Группировка Контрагент " + ?(БезГрупп = 1, "Без Групп", "") + " упорядочить по " + ?(Упорядочить = 1, "Контрагент.Наименование", "Сумма") + ";";//Контрагент.Наименование;"; конецЕсли; Итог=0; если Реж = 2 тогда ТекстЗапроса = ТекстЗапроса + "Группировка Докум упорядочить по Докум.ДатаДок;"; конецЕсли; если выбПост.Выбран()=1 тогда если выбПост.ЭтоГруппа()=1 тогда ТекстЗапроса = ТекстЗапроса + "Условие (Контрагент.ПринадлежитГруппе(выбПост)=1);"; Заг = "По контрагентам группы "+выбПост.Наименование; иначе ТекстЗапроса = ТекстЗапроса + "Условие (Контрагент = выбПост);"; Заг = "По контрагенту " + выбПост.Наименование; конецЕсли; иначе Заг = "По всем конрагентам"; конецЕсли; если выбВид.Выбран() = 1 тогда Заг1 = Заг1 + ", По "+строка(выбВид); ТекстЗапроса = ТекстЗапроса + "Условие (ВидЗакупки = выбВид);"; иначе Заг1 = Заг1 + ", По всем взаиморасчетам"; конецЕсли; если выбФир.Выбран() = 1 тогда Заг1 = Заг1 + ", По "+строка(выбФир); ТекстЗапроса = ТекстЗапроса + "Условие (Фирма = выбФир);"; иначе Заг1 = Заг1 + ", По всем фирмам"; конецЕсли; если ВыбПроект.Выбран() = 1 тогда Заг1 = Заг1 + ", По проекту: "+строка(ВыбПроект); ТекстЗапроса = ТекстЗапроса + "Условие (Проект = ВыбПроект);"; иначе Заг1 = Заг1 + ", По всем проектам"; конецЕсли; Запрос = СоздатьОбъект("Запрос"); Запрос.ВключитьSQL(1); если Запрос.Выполнить(ТекстЗапроса) = 0 тогда возврат; конецЕсли; Таб = СоздатьОбъект("Таблица"); если Реж = 0 тогда Таб.ИсходнаяТаблица("Итоги"); конецЕсли; Таб.ВывестиСекцию("Шапка"); НачДолг=0; ПрихДолг=0; РасхДолг=0; КонДолг=0; Прих1=0; Расх1=0; Если Проект = 1 Тогда пока Запрос.Группировка("Проект") = 1 цикл Таб.ВывестиСекцию("Проект"); пока Запрос.Группировка("Контрагент") = 1 цикл Если (НашДолг = 0) И (Запрос.Сумма > 0) Тогда Продолжить КонецЕсли;//НашДолг = 1 Если (Нулевые = 0) И (Запрос.Сумма = 0) Тогда Продолжить КонецЕсли;//Нулевые = 1 Если (ДолгКонтрагента = 0) И (Запрос.Сумма < 0) Тогда Продолжить КонецЕсли;//ДолгКонтрагента = 1 если Запрос.Контрагент.ЭтоГруппа()=1 тогда Таб.ВывестиСекцию("Группа"); иначе Таб.ВывестиСекцию("Контрагент"); НачДолг=НачДолг+Запрос.НачДолг; ПрихДолг=ПрихДолг+Запрос.ПрихДолг; РасхДолг=РасхДолг+Запрос.РасхДолг; КонДолг=КонДолг+Запрос.Сумма; конецЕсли; Итог=Итог+Запрос.Сумма; если Реж = 2 тогда Сум1 = Запрос.НачДолг; Пока Запрос.Группировка("Докум")=1 цикл если Запрос.Докум.Выбран()=1 тогда Прих1=Прих1+Запрос.ПрихДолг; Расх1=Расх1+Запрос.РасхДолг; Сум1=Сум1+Запрос.ПрихДолг-Запрос.РасхДолг; Таб.ВывестиСекцию("Докум"); конецЕсли; КонецЦикла; конецЕсли; конецЦикла; конецЦикла; Иначе пока Запрос.Группировка("Контрагент") = 1 цикл Если (НашДолг = 0) И (Запрос.Сумма > 0) Тогда Продолжить КонецЕсли;//НашДолг = 1 Если (Нулевые = 0) И (Запрос.Сумма = 0) Тогда Продолжить КонецЕсли;//Нулевые = 1 Если (ДолгКонтрагента = 0) И (Запрос.Сумма < 0) Тогда Продолжить КонецЕсли;//ДолгКонтрагента = 1 если Запрос.Контрагент.ЭтоГруппа()=1 тогда Таб.ВывестиСекцию("Группа"); иначе Таб.ВывестиСекцию("Контрагент"); НачДолг=НачДолг+Запрос.НачДолг; ПрихДолг=ПрихДолг+Запрос.ПрихДолг; РасхДолг=РасхДолг+Запрос.РасхДолг; КонДолг=КонДолг+Запрос.Сумма; конецЕсли; Итог=Итог+Запрос.Сумма; если Реж = 2 тогда Сум1 = Запрос.НачДолг; Пока Запрос.Группировка("Докум")=1 цикл если Запрос.Докум.Выбран()=1 тогда Прих1=Прих1+Запрос.ПрихДолг; Расх1=Расх1+Запрос.РасхДолг; Сум1=Сум1+Запрос.ПрихДолг-Запрос.РасхДолг; Таб.ВывестиСекцию("Докум"); конецЕсли; КонецЦикла; конецЕсли; конецЦикла; КонецЕсли;//Проект = 1 Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,5,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Взаиморасчеты",""); КонецПроцедуры ДатаС = Мин(ПолучитьДатуТА(),НачМесяца(РабочаяДата())); ДатаПо = РабочаяДата() //******************************************* Процедура НеОплаченныеНакладные() ... // Отчет по неоплаченным накладным... КонецПроцедуры Процедура ПриОткрытии() НеОплаченныеНакладные(); КонецПроцедуры держи | |||
| 17
    
        itlikbez 16.09.15✎ 11:26 | 
        ДатаС = Мин(ПолучитьДатуТА(),НачМесяца(РабочаяДата()));
 ДатаПо = РабочаяДата() поставь в самый конец | |||
| 18
    
        AlaMaRit 16.09.15✎ 11:45 | 
        (17) дабавил, вот ошибка
 <<?>>Процедура НеОплаченныеНакладные() {Отчет.Взаиморасчеты.Форма.Модуль(386)}: Определения процедур и функций должны размещаться перед операторами основной программы | |||
| 19
    
        AlaMaRit 16.09.15✎ 11:52 | 
        Людии почему мне показывает  <<?>> перед Процедура НеОплаченныеНакладные(), там что то должно стоять? или что, у мня щас голова лопнет     | |||
| 20
    
        AlaMaRit 16.09.15✎ 12:05 | 
        (17) ошибка осталась, куда копать?     | |||
| 21
    
        NikVars 16.09.15✎ 12:28 | 
        (20) Начни с самого начала.
 Ты что делаешь вообще?! Отчет, документ, справочник. Соориентируй сообщество, а то по вопросам ты можешь писать код в самых неожиданных местах. Далее интересен ВЕСЬ код, а не место ошибки. На вопрос "куда копать" отвечу - начинай копать с того момента, который начал изменять и далее по цепочке своих действий. | |||
| 22
    
        AlaMaRit 16.09.15✎ 12:30 | 
        (21) весь я код я выкладывал в (16)сообщении, а делаю я отчет, контрагенты, взаиморасчеты     | |||
| 23
    
        itlikbez 16.09.15✎ 12:37 | 
        (18) А оттуда, откуда поставил убери.
 В промежутках между КонеПроцедуры и Процедура не должно быть ничего. | |||
| 24
    
        AlaMaRit 16.09.15✎ 12:42 | 
        (23)//******************************************* 
 Процедура НеОплаченныеНакладные() // Отчет по неоплаченным накладным... КонецПроцедуры Процедура ПриОткрытии() НеОплаченныеНакладные() КонецПроцедуры ДатаС = Мин(ПолучитьДатуТА(),НачМесяца(РабочаяДата())); ДатаПо = РабочаяДата() Вот эту часть кода я добавил, именно так щас он у меня выглядит, и выдает эту ошибку:(смотри ниже) <<?>>Процедура НеОплаченныеНакладные() {Отчет.Взаиморасчеты.Форма.Модуль(386)}: Определения процедур и функций должны размещаться перед операторами основной программы | |||
| 25
    
        xaozai 16.09.15✎ 13:03 | 
        ДатаПо = РабочаяДата()<<ТУТ ДОЛЖНА БЫТЬ ТОЧКА С ЗПТ>>     | |||
| 26
    
        xaozai 16.09.15✎ 13:04 | 
        +(25) А описания процедур нужно выше перенести, можно в самое начало.     | |||
| 27
    
        AlaMaRit 16.09.15✎ 13:08 | 
        (26) поставил ДатаПо = РабочаяДата(); но все равно 
 <<?>>Процедура НеОплаченныеНакладные() {Отчет.Взаиморасчеты.Форма.Модуль(386)}: Определения процедур и функций должны размещаться перед операторами основной программы | |||
| 28
    
        AlaMaRit 16.09.15✎ 13:08 | 
        что он хочет?     | |||
| 29
    
        HawkEye 16.09.15✎ 13:15 | 
        так надо
 Таб.Показать("Взаиморасчеты",""); КонецПроцедуры //******************************************* Процедура НеОплаченныеНакладные() ...// Отчет по неоплаченным накладным... КонецПроцедуры Процедура ПриОткрытии() НеОплаченныеНакладные(); КонецПроцедуры ДатаС = Мин(ПолучитьДатуТА(),НачМесяца(РабочаяДата())); ДатаПо = РабочаяДата() | |||
| 30
    
        HawkEye 16.09.15✎ 13:15 | 
        ;     | |||
| 31
    
        AlaMaRit 16.09.15✎ 13:18 | 
        (29) Таб<<?>>.Показать("Взаиморасчеты","");
 {Отчет.Взаиморасчеты.Форма.Модуль(385)}: Переменная не определена (Таб) Таб.Показать("Взаиморасчеты","");<<?>> {Отчет.Взаиморасчеты.Форма.Модуль(385)}: Обнаружено логическое завершение исходного текста модуля Выдал эту ошибку | |||
| 32
    
        AlaMaRit 16.09.15✎ 13:28 | 
        (30) ну че там?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |