|   |   | 
| 
 | v7: Ошибка при формировании записей книги-покупок | ☑ | ||
|---|---|---|---|---|
| 0
    
        тоа 24.09.14✎ 16:28 | 
        Релиз Бухгалтерия 7.70.584
 Формирую запись книги-покупок выдает ошибку Если СокрЛП(Запрос.ДокументПоставки.ДатаНомерСчетаФактуры)<>"" Тогда {Документ.ЗаписиКнигиПокупок.Форма.Модуль(719)}: Поле агрегатного объекта не обнаружено (ДатаНомерСчетаФактуры) | |||
| 1
    
        тоа 24.09.14✎ 16:30 | 
        Причем за июль все окау, а за август проблема     | |||
| 2
    
        lavalit 24.09.14✎ 16:35 | 
        Проверьте на ПустоеЗначение(Запрос.ДокументПоставки)     | |||
| 3
    
        lavalit 24.09.14✎ 16:39 | 
        Если увидите "пустышку", То поймете где ошибочка случилась     | |||
| 4
    
        тоа 24.09.14✎ 16:41 | 
        (2) как это сделать? не пойму как должны увидеть пустышку..     | |||
| 5
    
        lavalit 24.09.14✎ 16:44 | 
        Запустите отладчик, поставьте точку останова на строке 719. Далее формируйте книгу. На строке 719 оно остановится и там можно будет посмотреть чему равно Запрос.ДокументПоставки.
 Но если Вы бухгалтер, то можно попросить это сделать Вашего 1С ника. Он знает как это делать | |||
| 6
    
        тоа 24.09.14✎ 16:44 | 
        Док=СоздатьОбъект("Документ");
 Пока Запрос.Группировка(1) = 1 Цикл СтрокаТЗ = ""; ТЗ.НоваяСтрока(); ТЗ.ДокРезерв = Запрос.ДокументПоставки; ТЗ.Резерв = Запрос.СуммаДок; Если СокрЛП(Запрос.ДокументПоставки.ДатаНомерСчетаФактуры)<>"" Тогда ТЗ.СчетФактура = Запрос.ДокументПоставки; Иначе Док.ВыбратьПодчиненныеДокументы(Запрос.ДокументПоставки.ДатаДок,ДатаКон,Запрос.ДокументПоставки); Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Вид()="СчетФактураПолученный" Тогда ТЗ.СчетФактура = Док.ТекущийДокумент(); Прервать; КонецЕсли; КонецЦикла; Вот что имеем. Где Пустышка? Где запрос ПустоеЗначение? | |||
| 7
    
        lavalit 24.09.14✎ 16:45 | 
        Док.ВыбратьПодчиненныеДокументы(Запрос.ДокументПоставки.ДатаДок,ДатаКон,Запрос.ДокументПоставки);
 По ходу это и есть строка 719 | |||
| 8
    
        lavalit 24.09.14✎ 16:46 | 
        нет сори вот эта строка СокрЛП(Запрос.ДокументПоставки.ДатаНомерСчетаФактуры)<>""     | |||
| 9
    
        lavalit 24.09.14✎ 16:48 | 
        А сам запрос покажите     | |||
| 10
    
        тоа 24.09.14✎ 16:49 | 
        Процедура ЗаполнитьРезерв(ТЗ)
 ДатаНач = НачМесяца(ДатаДок); ДатаКон = КонМесяца(ДатаДок); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Запрос) |Период с ДатаНач по ДатаКон; |Обрабатывать НеПомеченныеНаУдаление; |ДокументПоставки = Документ.Выписка.ДокументПоставки, Документ.РасходныйОрдер.ДокументПоставки; |Сумма = Документ.РасходныйОрдер.Сумма, Документ.Выписка.Расход; |Функция СуммаДок = Сумма(Сумма); |Группировка ДокументПоставки без групп без упорядочивания; |Условие(ДокументПоставки.Выбран()=1); |Условие(Сумма>0); |Условие(ДокументПоставки.Договор.АвтоОбработкаНДС=1); |";//}}ЗАПРОС Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Предупреждение("Невозможно выполнить запрос"); Возврат; КонецЕсли; Док=СоздатьОбъект("Документ"); Пока Запрос.Группировка(1) = 1 Цикл СтрокаТЗ = ""; ТЗ.НоваяСтрока(); ТЗ.ДокРезерв = Запрос.ДокументПоставки; ТЗ.Резерв = Запрос.СуммаДок; Если СокрЛП(Запрос.ДокументПоставки.ДатаНомерСчетаФактуры)<>"" Тогда ТЗ.СчетФактура = Запрос.ДокументПоставки; Иначе Док.ВыбратьПодчиненныеДокументы(Запрос.ДокументПоставки.ДатаДок,ДатаКон,Запрос.ДокументПоставки); Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Вид()="СчетФактураПолученный" Тогда ТЗ.СчетФактура = Док.ТекущийДокумент(); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры | |||
| 11
    
        lavalit 24.09.14✎ 16:51 | 
        Так стоп.... там по ходу пустышки не предвидится...
 А во всех ли документах есть реквизит "ДатаНомерСчетаФактуры"? | |||
| 12
    
        тоа 24.09.14✎ 16:53 | 
        а как посмотреть чему равно Запрос.ДокументПоставки все манипуляции с отладчиком сделали     | |||
| 13
    
        lavalit 24.09.14✎ 16:53 | 
        Вернее в документах выписка и расходный ордер есть Документ поставки вот там во всех ли документах есть этот реквизит? Там наверняка могут быть разные доки     | |||
| 14
    
        тоа 24.09.14✎ 16:54 | 
        по реквизитам щас посмотрим     | |||
| 15
    
        lavalit 24.09.14✎ 16:55 | 
        делаете так- отладчик включили, точку останова сделали. запустили формирование книги. после этого отладчик остановился на точке... выделяем Запрос.ДокументПоставки и жмем шифт+F9. в окошке видим содержание.     | |||
| 16
    
        lavalit 24.09.14✎ 16:57 | 
        Если это агрегат, то под плюсиками можно открывать  сам агрегат и смотреть чего там есть еще.. для документа это будут датадок номердок  и т.д.     | |||
| 17
    
        тоа 24.09.14✎ 16:57 | 
        = Ошибка в выражении     | |||
| 18
    
        lavalit 24.09.14✎ 16:59 | 
        ну вот а какой документ ? если ошибка выражения, стало быть реквизита нет     | |||
| 19
    
        тоа 24.09.14✎ 16:59 | 
        смотрим документы...     | |||
| 20
    
        lavalit 24.09.14✎ 17:00 | 
        наверно сразу смотрели "Запрос.ДокументПоставки.ДатаНомерСчетаФактуры"?     | |||
| 21
    
        lavalit 24.09.14✎ 17:01 | 
        Смотрите "Запрос.ДокументПоставки" он должен как раз показать что за документ     | |||
| 22
    
        тоа 24.09.14✎ 17:02 | 
        ага щас     | |||
| 23
    
        тоа 24.09.14✎ 17:03 | 
        не заполнены реквизиты     | |||
| 24
    
        тоа 24.09.14✎ 17:03 | 
        спасибо за помощь     | |||
| 25
    
        lavalit 24.09.14✎ 17:04 | 
        ну вот и суслик))     | |||
| 26
    
        lavalit 24.09.14✎ 17:04 | 
        не за что))     | |||
| 27
    
        тоа 25.09.14✎ 14:30 | 
        Добрый день!
 Разобрались с формированием книги покупок Теперь делаем отчет Книга покупок по Постановлению № 1137 ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации; {Отчет.КнигаПокупок1137.Форма.Модуль(862)}: Поле агрегатного объекта не обнаружено (КодВидаОперации) | |||
| 28
    
        lavalit 25.09.14✎ 15:24 | 
        Можно по той же схеме в принципе.
 Отладчик точка на строке 862 и смотреть что там в ДокАвто.Приход. Что за документ и есть ли у него такой реквизит | |||
| 29
    
        lavalit 25.09.14✎ 15:25 | 
        Обновки надеюсь свежие?     | |||
| 30
    
        тоа 25.09.14✎ 15:58 | 
        (29) 585 поставили     | |||
| 31
    
        тоа 25.09.14✎ 16:00 | 
        Если ПустоеЗначение(ДокАвто.Приход) = 0 Тогда
 Если (ДокАвто.Приход.Вид() = "РасходнаяНакладная") или (ДокАвто.Приход.Вид() = "ОтпускМатериаловНаСторону") Тогда Иначе ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации; КонецЕсли; КонецЕсли; ТабОтчета.ВсегоПокупок = ДокАвто.Всего; ТабОтчета.СуммаБезНДС20 = ДокАвто.БезНДС20; ТабОтчета.НДС20 = ДокАвто.НДС20; ТабОтчета.СуммаБезНДС10 = ДокАвто.БезНДС10; ТабОтчета.НДС10 = ДокАвто.НДС10; ТабОтчета.НДС0 = ДокАвто.НДС0; ТабОтчета.СуммаСовсемБезНДС = ДокАвто.Освобождаемые; Если ПустоеЗначение(ДокАвто.СчетФактура) = 0 Тогда ДокОснование = ДокАвто.СчетФактура; Если ДокОснование.Вид() = "ПоступлениеТоваров" Тогда Если ((ДокОснование.ВидПоступления=4) или (ДокОснование.ВидПоступления=13)) и (ДокОснование.ПокупателемВыставляетсяСчетФактураНаВозврат = 0) и (ДокОснование.ВариантОтраженияВозврата = 1) и (ПустоеЗначение(ДокОснование.ДатаНомерСчетаФактуры) = 1) Тогда ТабОтчета.Возврат = 1; КонецЕсли; строка 862... | |||
| 32
    
        lavalit 25.09.14✎ 16:08 | 
        Вот на этой строке
 ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации; надо глянуть что за документ ДокАвто.Приход Есть ли у него в принципе реквизит "КодВидаОперации" | |||
| 33
    
        тоа 25.09.14✎ 16:27 | 
        рушится на документе об оказании услуг, который введен на основании счета
 В этих документах все ровно | |||
| 34
    
        lavalit 25.09.14✎ 16:34 | 
        Тогда все верно у документа "ОказаниеУслуг" нет такого реквизита     | |||
| 35
    
        lavalit 25.09.14✎ 16:36 | 
        Поправьте строку
 Если (ДокАвто.Приход.Вид() = "РасходнаяНакладная") или (ДокАвто.Приход.Вид() = "ОтпускМатериаловНаСторону") Тогда На эту Если (ДокАвто.Приход.Вид() = "РасходнаяНакладная") или (ДокАвто.Приход.Вид() = "ОтпускМатериаловНаСторону") или (ДокАвто.Приход.Вид() = "ОказаниеУслуг") Тогда | |||
| 36
    
        lavalit 25.09.14✎ 16:38 | 
        В этом случае Отчет не будет считывать реквизит "КодВидаОперации"     | |||
| 37
    
        тоа 25.09.14✎ 16:41 | 
        Все получилось.
 Большое СПАСИБО!!! | |||
| 38
    
        lavalit 25.09.14✎ 16:47 | 
        Вообще то я бы заменил бы вот этот момент  
 Если (ДокАвто.Приход.Вид() = "РасходнаяНакладная") или (ДокАвто.Приход.Вид() = "ОтпускМатериаловНаСторону") Тогда Иначе ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации; КонецЕсли; КонецЕсли; на Реквизит=Метаданные.Документ(ДокАвто.Приход.Вид()).РеквизитТабличнойЧасти(ИмяРеквизита); Если Реквизит.Выбран()=1 Тогда ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации; КонецЕсли; В этом варианте не надо перечислять все виды документов в который нет реквизита... а просто берется документ по его виду и определяется есть ли такой реквизит... а уж какой документ попадется отчету будет все равно | |||
| 39
    
        lavalit 25.09.14✎ 16:48 | 
        Чем смог тем помог. 
 Удачи. Если чего спрашивайте. | |||
| 40
    
        тоа 26.09.14✎ 08:55 | 
        Доброе утро!
 Заменил код, теперь при открытии Книги покупок по постановлению №1137 вылетает ошибка Реквизит=Метаданные.Документ(ДокАвто.Приход.Вид()).РеквизитТабличнойЧасти(ИмяРеквизита<<?>>); {Отчет.КнигаПокупок1137.Форма.Модуль(860)}: Переменная не определена (ИмяРеквизита) Где забить переменную? | |||
| 41
    
        lavalit 29.09.14✎ 09:59 | 
        Вместо ИмяРеквизита ставьте "КодВидаОперации"     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |