|
v7: Как найти "кривой" документ | ☑ | ||
---|---|---|---|---|
0
John83
11.01.13
✎
08:33
|
Комплексная конфа 519 релиз
При проведении проведении документа формирования книги продаж, ругается ДокПодч.ВыбратьПодчиненныеДокументы(,,ДокДляПроверки); {Документ.КнигаПродаж.Модуль Документа(47)}: Не выбран документ! Вроде бы идем в отладчик и смотрим, в чем проблема, но там документы перебираются в цикле ДокПодч.ВыбратьПодчиненныеДокументы(,ДатаДок,ДокДляПроверки); Пока ДокПодч.ПолучитьДокумент()=1 Цикл Если ДокПодч.Вид()=ВидСФ Тогда Если (ДокПодч.Проведен()=1) ИЛИ (ДокПодч.ФлагСвертки=1) Тогда Если ВидСФ = "СчетФактураПолученный" Тогда Если ДокПодч.АвтоКнигаПокупок = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли; Иначе Если ДокПодч.АвтоКнигаПродаж = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; и нет волшебной галочки "остановка по ошибке", а сидеть и нажимать F8 неск. тыс. раз, как-то неохота... Как тут проще поступить? |
|||
1
tdm
11.01.13
✎
08:42
|
какая конкретно строка - КнигаПродаж.Модуль Документа(47) ?
|
|||
2
John83
11.01.13
✎
08:43
|
ой...
вот эта НайденнаяСФ = ДокПодч.ТекущийДокумент(); |
|||
3
PuhUfa
11.01.13
✎
08:45
|
Сообщить()
|
|||
4
John83
11.01.13
✎
08:51
|
(3) эм.. что-то такое смутно припоминаю - может напоминшь? :)
|
|||
5
John83
11.01.13
✎
08:52
|
PS видать пора спать уже :)
вот модуль ДокПодч.ВыбратьПодчиненныеДокументы(,,ДокДляПроверки); Пока ДокПодч.ПолучитьДокумент()=1 Цикл Если ДокПодч.Вид()="СчетФактураВыданный" Тогда Если (ДокПодч.Проведен()=1) или (ДокПодч.ФлагСвертки=1) Тогда Если ДокПодч.АвтоКнигаПродаж = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли; КонецЕсли; ИначеЕсли ДокПодч.Вид()="СчетФактураПолученный" Тогда Если (ДокПодч.Проведен()=1) или (ДокПодч.ФлагСвертки=1) Тогда Если ДокПодч.АвтоКнигаПокупок = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; и 47ая строка ДокПодч.ВыбратьПодчиненныеДокументы(,,ДокДляПроверки); |
|||
6
evGenius
11.01.13
✎
08:54
|
ДокДляПроверки где присваивается?
|
|||
7
John83
11.01.13
✎
08:56
|
вот вся функция
Функция ПроверкаСФДокумента(ДокДляПроверки,НайденнаяСФ) Если (ДокДляПроверки.Вид() = "ОтчетККМ") Тогда НайденнаяСФ = ДокДляПроверки; Возврат 1; КонецЕсли; Если ДокДляПроверки.Вид() = "РеализацияРозница" Тогда Если ДокДляПроверки.ВидОперации = Перечисление.ВидыОперацийРеализацияРозница.ОтчетПоПродажам Тогда НайденнаяСФ = ДокДляПроверки; Возврат 1; КонецЕсли; КонецЕсли; Если ДокДляПроверки.Вид() = "ПКО" Тогда Если (ДокДляПроверки.КодОперации = глКО.РозничнаяВыручка) ИЛИ (ДокДляПроверки.КодОперации = глКО.РозничнаяВыручкаЗаПринятые)Тогда НайденнаяСФ = ДокДляПроверки; Возврат 1; КонецЕсли; КонецЕсли; ДокПодч.ВыбратьПодчиненныеДокументы(,,ДокДляПроверки); Пока ДокПодч.ПолучитьДокумент()=1 Цикл Если ДокПодч.Вид()="СчетФактураВыданный" Тогда Если (ДокПодч.Проведен()=1) или (ДокПодч.ФлагСвертки=1) Тогда Если ДокПодч.АвтоКнигаПродаж = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли; КонецЕсли; ИначеЕсли ДокПодч.Вид()="СчетФактураПолученный" Тогда Если (ДокПодч.Проведен()=1) или (ДокПодч.ФлагСвертки=1) Тогда Если ДокПодч.АвтоКнигаПокупок = 1 Тогда НайденнаяСФ = ДокПодч.ТекущийДокумент(); Возврат 1; Иначе Возврат 0; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; глСообщениеПроведения("На документ "+ДокДляПроверки+" не зарегистрирован счет - фактура!",ДокДляПроверки,, ТекущийДокумент(),1); Возврат 0; КонецФункции // ПроверкаСФДокумента() |
|||
8
1Сергей
11.01.13
✎
08:56
|
ДокДляПроверки чему равен?
|
|||
9
evGenius
11.01.13
✎
08:57
|
Так все-таки что же ты передаешь в эту функцию?
|
|||
10
John83
11.01.13
✎
08:58
|
(8) (9) туда реализации передаются
|
|||
11
evGenius
11.01.13
✎
08:59
|
(10) код покажи, там у тебя случайно не документ, созданный с помощью СоздатьОбъект()???
|
|||
12
evGenius
11.01.13
✎
08:59
|
а где
ДокПодч = СоздатьОбъект("Документ"); ??? |
|||
13
1Сергей
11.01.13
✎
08:59
|
(10) с отладчиком знаком?
|
|||
14
tdm
11.01.13
✎
09:00
|
НайденнаяСФ - это просто переменная модуля или же реквизит документа ? может просто типы не совпадают...да и в 7-ке нет явной объектной модели (ссылка и объект) в эту сторону бы еще покопал...несколько лет конфигуратор 7-ки не открывал к счастью)))
|
|||
15
1Сергей
11.01.13
✎
09:00
|
(12) кстати +1
|
|||
16
PuhUfa
11.01.13
✎
09:03
|
(12)(15)
////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ // Перем ДокПодч; |
|||
17
John83
11.01.13
✎
09:04
|
(14) та же "проблема" :)
|
|||
18
evGenius
11.01.13
✎
09:05
|
А если переделать так? Заработает?
ДокПодч.ВыбратьПодчиненныеДокументы(,,ДокДляПроверки.ТекущийДокумент()); |
|||
19
PuhUfa
11.01.13
✎
09:05
|
+(16) там дальше еще веселее:
////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ // ДокПодч = СоздатьОбъект("Документ"); |
|||
20
John83
11.01.13
✎
09:07
|
(13) с 7чным давние знакомые
|
|||
21
PuhUfa
11.01.13
✎
09:09
|
(4)
Сообщить("Проверяем: "+ДокДляПроверки); ДокПодч.ВыбратьПодчиненныеДокументы(,ДатаДок,ДокДляПроверки); Дальше смотри из какого запроса ростут ноги так как во все проверки передаются данные запроса: Если ПроверкаСФДокумента(Запрос.КредДокумент,НайденнаяСФ) = 0 Тогда Продолжить; КонецЕсли; |
|||
22
1Сергей
11.01.13
✎
09:11
|
(20) а чего не пользуешься?
|
|||
23
John83
11.01.13
✎
09:11
|
(21) вот запрос с последующим вызовом функции
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала "+ ПериодПо+"; |ФирмаРег = Регистр.Покупатели.Фирма; |ВидДолга = Регистр.Покупатели.ВидДолга; |КредДокумент = Регистр.Покупатели.КредДокумент; |ДокументОплаты = Регистр.Покупатели.ДокументОплаты; |ТекДокумент = Регистр.Покупатели.ТекущийДокумент; |СуммаРуб = Регистр.Покупатели.СуммаРуб; |КодОперации = Регистр.Покупатели.КодОперации; |СтавкаНП = Регистр.Покупатели.СтавкаНП; |Функция СуммаРубПриход = Приход(СуммаРуб); |Функция СуммаРубОтг = Приход(СуммаРуб) Когда (КодОперации <> КодОперацииСуммоваяРазница); |Функция СуммаРубСР = Приход(СуммаРуб) Когда (КодОперации = КодОперацииСуммоваяРазница); |Группировка КредДокумент; |Группировка ВидДолга; |Группировка СтавкаНП; |Условие (ФирмаРег = Фирма); |Условие (КодОперации в СписокНужныхКодов); |Условие (ВидДолга в СписокНужныхВидовДолга); |"//}}ЗАПРОС ; Если ФормироватьТолькоПоДокументамОтгрузки = 1 Тогда ТекстЗапроса = ТекстЗапроса + "Условие (ТекДокумент = КредДокумент); |"; КонецЕсли; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; НайденнаяСФ = ""; ТИКнигаПродаж = СоздатьОбъект("ТаблицаЗначений"); Пока Запрос.Группировка("КредДокумент") = 1 Цикл Если ПроверкаСФДокумента(Запрос.КредДокумент,НайденнаяСФ) = 0 Тогда Продолжить; КонецЕсли; |
|||
24
John83
11.01.13
✎
09:12
|
(22) пытаюсь...
|
|||
25
John83
11.01.13
✎
09:13
|
+24 рядом эта же база, но конвертированная на 8ку - параллельно сижу в ней, запросами смотрю
|
|||
26
evGenius
11.01.13
✎
09:17
|
(23) Хм, не заполнено измерение в регистре похоже, пустая ссылка на документ получается
|
|||
27
Ёпрст
11.01.13
✎
09:17
|
дык проверь регистр, где в КредДок пустая/битая ссылка, делов то.
|
|||
28
Ёпрст
11.01.13
✎
09:17
|
или воткни в функцию проверку на Выбран()..
|
|||
29
PuhUfa
11.01.13
✎
09:23
|
(23)
// Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; НайденнаяСФ = ""; ТИКнигаПродаж = СоздатьОбъект("ТаблицаЗначений"); Тзапроса = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(Тзапроса); Тзапроса.ВыбратьСтроку(); Смотришь таблицу результата запроса, анализируешь -) |
|||
30
John83
11.01.13
✎
09:23
|
(26) так и оказалось
это выписка банка, только вот не пойму, почему кред. документ не заполняется |
|||
31
John83
11.01.13
✎
09:24
|
(28) (29) сейчас уже поздновато - люди начали работать
|
|||
32
PuhUfa
11.01.13
✎
09:25
|
(31) мы на столько суровы, что делаем все на боевой базе? -)
|
|||
33
John83
11.01.13
✎
09:27
|
(32) ну а чего мелочиться?
и бэкапы придумал трусы :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |