Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при создании отчета "Кассовая книга (КО-4)"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
URMASH
Добрый день.
Установлена конфигурация "Управление торговым предприятием для Украины", редакция 1.2. (1.2.8.7) Платформа 1С:Предприятие 8.2 (8.2.15.301)
06.08.2012 г. обновил конфигурацию до 1.2.8.7
При создании отчета "Кассовая книга (КО-4)" при выборе периода с 01.08.2012 г. и раньше появляется ошибка "Поле объекта не найдено (НомерОрдера)"
Подробно:
{Отчет.КассоваяКнига.МодульОбъекта(845)}: Поле объекта не найдено (НомерОрдера)
Строка.НомерОрдера = ОбщегоНазначения.ПреобразоватьВЧисло(Результат.Регистратор.НомерОрдера);
При выборе периода с 02.08.2012 г. такой ошибки нет.
Подскажите плиз как эту ошибку устранить?
Vofka
У вас отчет, видимо, доработанный. 1.2.8.7 у меня в данный момент под рукой нету, но в 1.2.7.4 такой ошибки нету и вообще строки, на которой у вас возникает ошибка тоже нету. Выложите отчет.
URMASH
#Если Клиент Тогда

Перем НП Экспорт;
Перем ВидЛистаКассовойКниги Экспорт;
Перем мВалютаРегламентированногоУчета Экспорт;

Функция ОрдерПоРегистратору(Регистратор)
    
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"Регистратор\",Регистратор);
        
    Запрос.Текст=\"ВЫБРАТЬ ПЕРВЫЕ 1
                 |    ПриходныйКассовыйОрдер.ДокументОснование,
                 |    ПриходныйКассовыйОрдер.Ссылка
                 |ИЗ
                 |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                 |ГДЕ
                 |  ПриходныйКассовыйОрдер.ДокументОснование = &Регистратор
                 |\";
                
    Результат=Запрос.Выполнить().Выбрать();
    Если Результат.Следующий() Тогда
        Возврат Результат.Ссылка;
    Иначе
        Возврат Документы.ПриходныйКассовыйОрдер.ПустаяСсылка();
    КонецЕсли;    

    
КонецФункции    

Процедура СформироватьЖурналРегистрацииПриходных(ДокументРезультат)
    
    Запрос=Новый Запрос;
    Запрос.Текст=\"ВЫБРАТЬ
                    | Назначения.Наименование
                  |ИЗ
                 | Справочник.НазначенияНаличныхДенежныхСредств КАК Назначения\";
    Результат=Запрос.Выполнить();
    
    ТаблицаНазначения=Результат.Выгрузить();
    ТаблицаНазначения.Колонки.Добавить(\"НомерКолонки\");
    ТаблицаНазначения.Колонки.Добавить(\"Всего\");
    
    НомерКолонки = 3;
    Для Каждого Назначение из ТаблицаНазначения Цикл
        Назначение.НомерКолонки = НомерКолонки;
        Назначение.Всего = 0;
        НомерКолонки = НомерКолонки+1;
    КонецЦикла;
    ЦентральнаяКолонка = Окр((НомерКолонки-3)/2) + 2;
    
    //Вывод шапки
    Макет       = ПолучитьМакет(\"ЖурналРегистрации\");
    
    Если ВыводитьТитульныйЛист Тогда
    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Титул\");
        СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаНач);
        ОбластьМакета.Параметры.Год                         = Год(ДатаНач);
        ОбластьМакета.Параметры.КодЕДРПОУ                 = УправлениеКонтактнойИнформацией.ПолучитьКодОрганизации(СведенияОбОрганизации);
        ОбластьМакета.Параметры.НаименованиеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
        ДокументРезультат.Вывести(ОбластьМакета);
        
        ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|ДатаНомер\");
    ОбластьМакета.Параметры.ВидДокумента = \"Прибутковий документ\";
    ДокументРезультат.Вывести(ОбластьМакета);
    Для Каждого Назначение из ТаблицаНазначения Цикл
        ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|Назначение\");
        ОбластьМакета.Параметры.Назначение   = Назначение.Наименование;
        ОбластьМакета.Параметры.НомерКолонки = Назначение.НомерКолонки;
        Если Назначение.НомерКолонки = ЦентральнаяКолонка Тогда
            ОбластьМакета.Параметры.ТекстШапки = \"Надійшло грошей\";
        КонецЕсли;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|Комментарий\");
    ОбластьМакета.Параметры.НомерКолонки = НомерКолонки;
    ДокументРезультат.Присоединить(ОбластьМакета);
    
    //Запрос по ордерам
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    Запрос.УстановитьПараметр(\"Валюта\",Валюта);
    
    УчетнаяПолитикаНеЗадана = Ложь;
    УчетнаяПолитикаБУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(ДатаКон, УчетнаяПолитикаНеЗадана, Организация, \"Бух\");
    УчетДенежныхСредствПоОбособленнымПодразделениям = Ложь;
    Если УчетнаяПолитикаБУ.Количество() > 0 Тогда    
        УчетДенежныхСредствПоОбособленнымПодразделениям = УчетнаяПолитикаБУ.ВестиУчетДенежныхСредствПоОбособленнымПодразделениям;
    КонецЕсли;
    
    Если УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        УсловиеПоОбособленномуПодразделению = \" И (ПриходныйКассовыйОрдер.Касса.ОбособленноеПодразделение = &ОбособленноеПодразделениеОрганизации) \";
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
    КонецЕсли;
    
    Запрос.Текст=\"ВЫБРАТЬ
                 |    НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ) КАК День,
                 |    ПриходныйКассовыйОрдер.Ссылка КАК Ордер,
                 |    ПриходныйКассовыйОрдер.НомерОрдера КАК НомерОрдера,
                 |    ПриходныйКассовыйОрдер.ВалютаДокумента КАК Валюта,
                 |    ПриходныйКассовыйОрдер.СуммаДокумента КАК Приход,
                 |    ПриходныйКассовыйОрдер.НазначениеДенежныхСредств КАК Назначение,
                 |    ПриходныйКассовыйОрдер.Комментарий КАК Комментарий
                 |ИЗ
                 |        Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                 |    ГДЕ
                 |        (ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ) И
                 |        (ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНач И &ДатаКон) И
                 |        (ПриходныйКассовыйОрдер.Организация = &Организация) И
                 |        (ПриходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете) И
                 |        (ПриходныйКассовыйОрдер.ВалютаДокумента = &Валюта) И
                 |        (ПриходныйКассовыйОрдер.Проведен)\" + УсловиеПоОбособленномуПодразделению + \"
                 |УПОРЯДОЧИТЬ ПО
                 |    День,
                 |  НомерОрдера\";
                
    Результат=Запрос.Выполнить().Выбрать();
    
    //Вывод таблицы
    Пока Результат.Следующий() Цикл
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|ДатаНомер\");
        ОбластьМакета.Параметры.Дата = Результат.День;
        ОбластьМакета.Параметры.Номер = Результат.НомерОрдера;
        ОбластьМакета.Параметры.Ордер = Результат.Ордер;
        ДокументРезультат.Вывести(ОбластьМакета);
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|Назначение\");
        Для Каждого Назначение из ТаблицаНазначения Цикл
            Если Результат.Назначение.Наименование = Назначение.Наименование Тогда
                ОбластьМакета.Параметры.СуммаДокумента = Результат.Приход;
                Назначение.Всего = Назначение.Всего + Результат.Приход;
            Иначе
                ОбластьМакета.Параметры.СуммаДокумента = 0;
            КонецЕсли;    
            ОбластьМакета.Параметры.Ордер = Результат.Ордер;
            ДокументРезультат.Присоединить(ОбластьМакета);
        КонецЦикла;    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|Комментарий\");
        ОбластьМакета.Параметры.Комментарий = Результат.Комментарий;
        ОбластьМакета.Параметры.Ордер = Результат.Ордер;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    
    //Вывод всего
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|ДатаНомер\");
    ДокументРезультат.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|Назначение\");
    ИтоговаяСумма = 0;
    Для Каждого Назначение из ТаблицаНазначения Цикл
        ОбластьМакета.Параметры.СуммаВсего = Назначение.Всего;
        ИтоговаяСумма = ИтоговаяСумма + Назначение.Всего;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|Комментарий\");
    ДокументРезультат.Присоединить(ОбластьМакета);
    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
КонецПроцедуры    

Процедура СформироватьЖурналРегистрацииРасходных(ДокументРезультат)
    
    Запрос=Новый Запрос;
    Запрос.Текст=\"ВЫБРАТЬ
                    | Назначения.Наименование
                  |ИЗ
                 | Справочник.НазначенияНаличныхДенежныхСредств КАК Назначения\";
    Результат=Запрос.Выполнить();
    
    ТаблицаНазначения=Результат.Выгрузить();
    ТаблицаНазначения.Колонки.Добавить(\"НомерКолонки\");
    ТаблицаНазначения.Колонки.Добавить(\"Всего\");
    
    НомерКолонки = 3;
    Для Каждого Назначение из ТаблицаНазначения Цикл
        Назначение.НомерКолонки = НомерКолонки;
        Назначение.Всего = 0;
        НомерКолонки = НомерКолонки+1;
    КонецЦикла;
    ЦентральнаяКолонка = Окр((НомерКолонки-3)/2) + 2;
    
    //Вывод шапки
    Макет       = ПолучитьМакет(\"ЖурналРегистрации\");
    
    Если ВыводитьТитульныйЛист Тогда
    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Титул\");
        СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаНач);
        ОбластьМакета.Параметры.Год                         = Год(ДатаНач);
        ОбластьМакета.Параметры.КодЕДРПОУ                 = УправлениеКонтактнойИнформацией.ПолучитьКодОрганизации(СведенияОбОрганизации);
        ОбластьМакета.Параметры.НаименованиеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
        ДокументРезультат.Вывести(ОбластьМакета);
        
        ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|ДатаНомер\");
    ОбластьМакета.Параметры.ВидДокумента = \"Видатковий документ\";
    ДокументРезультат.Вывести(ОбластьМакета);
    Для Каждого Назначение из ТаблицаНазначения Цикл
        ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|Назначение\");
        ОбластьМакета.Параметры.Назначение   = Назначение.Наименование;
        ОбластьМакета.Параметры.НомерКолонки = Назначение.НомерКолонки;
        Если Назначение.НомерКолонки = ЦентральнаяКолонка Тогда
            ОбластьМакета.Параметры.ТекстШапки = \"Витрачено грошей\";
        КонецЕсли;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка|Комментарий\");
    ОбластьМакета.Параметры.НомерКолонки = НомерКолонки;
    ДокументРезультат.Присоединить(ОбластьМакета);
    
    //Запрос по ордерам
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    Запрос.УстановитьПараметр(\"Валюта\",Валюта);
    
    УчетнаяПолитикаНеЗадана = Ложь;
    УчетнаяПолитикаБУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(ДатаКон, УчетнаяПолитикаНеЗадана, Организация, \"Бух\");
    УчетДенежныхСредствПоОбособленнымПодразделениям = Ложь;
    Если УчетнаяПолитикаБУ.Количество() > 0 Тогда    
        УчетДенежныхСредствПоОбособленнымПодразделениям = УчетнаяПолитикаБУ.ВестиУчетДенежныхСредствПоОбособленнымПодразделениям;
    КонецЕсли;
    
    Если УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        УсловиеПоОбособленномуПодразделению = \" И (РасходныйКассовыйОрдер.Касса.ОбособленноеПодразделение = &ОбособленноеПодразделениеОрганизации) \";
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
    КонецЕсли;
    
    Запрос.Текст=\"ВЫБРАТЬ
                 |    НАЧАЛОПЕРИОДА(РасходныйКассовыйОрдер.Дата, ДЕНЬ) КАК День,
                 |    РасходныйКассовыйОрдер.Ссылка КАК Ордер,
                 |    РасходныйКассовыйОрдер.НомерОрдера КАК НомерОрдера,
                 |    РасходныйКассовыйОрдер.ВалютаДокумента КАК Валюта,
                 |    РасходныйКассовыйОрдер.СуммаДокумента КАК Расход,
                 |    РасходныйКассовыйОрдер.НазначениеДенежныхСредств КАК Назначение,
                 |    РасходныйКассовыйОрдер.Комментарий КАК Комментарий
                 |ИЗ
                 |        Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
                 |    ГДЕ
                 |        (РасходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ) И
                 |        (РасходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНач И &ДатаКон) И
                 |        (РасходныйКассовыйОрдер.Организация = &Организация) И
                 |        (РасходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете) И
                 |        (РасходныйКассовыйОрдер.ВалютаДокумента = &Валюта) И
                 |        (РасходныйКассовыйОрдер.Проведен)\" + УсловиеПоОбособленномуПодразделению +
                 \"УПОРЯДОЧИТЬ ПО
                 |    День,
                 |    НомерОрдера\";
                
                
    Результат=Запрос.Выполнить().Выбрать();
    
    //Вывод таблицы
    Пока Результат.Следующий() Цикл
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|ДатаНомер\");
        ОбластьМакета.Параметры.Дата = Результат.День;
        ОбластьМакета.Параметры.Номер = Результат.НомерОрдера;
        ОбластьМакета.Параметры.Ордер = Результат.Ордер;
        ДокументРезультат.Вывести(ОбластьМакета);
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|Назначение\");
        Для Каждого Назначение из ТаблицаНазначения Цикл
            Если Результат.Назначение.Наименование = Назначение.Наименование Тогда
                ОбластьМакета.Параметры.СуммаДокумента = Результат.Расход;
                Назначение.Всего = Назначение.Всего + Результат.Расход;
            Иначе
                ОбластьМакета.Параметры.СуммаДокумента = 0;
            КонецЕсли;    
            ОбластьМакета.Параметры.Ордер = Результат.Ордер;
            ДокументРезультат.Присоединить(ОбластьМакета);
        КонецЦикла;    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка|Комментарий\");
        ОбластьМакета.Параметры.Комментарий = Результат.Комментарий;
        ОбластьМакета.Параметры.Ордер = Результат.Ордер;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    
    //Вывод всего
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|ДатаНомер\");
    ДокументРезультат.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|Назначение\");
    ИтоговаяСумма = 0;
    Для Каждого Назначение из ТаблицаНазначения Цикл
        ОбластьМакета.Параметры.СуммаВсего = Назначение.Всего;
        ИтоговаяСумма = ИтоговаяСумма + Назначение.Всего;
        ДокументРезультат.Присоединить(ОбластьМакета);
    КонецЦикла;    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Всего|Комментарий\");
    ДокументРезультат.Присоединить(ОбластьМакета);
    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;    
    
КонецПроцедуры

Процедура СформироватьЖурналРегистрацииРасходныхИПриходных(ДокументРезультат)
    
    //Вывод шапки
    Макет = ПолучитьМакет(\"ЖурналРегистрации3а\");
    
    Если ВыводитьТитульныйЛист Тогда
    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Титул\");
        СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаНач);
        ОбластьМакета.Параметры.Год                         = Год(ДатаНач);
        ОбластьМакета.Параметры.КодЕДРПОУ                 = УправлениеКонтактнойИнформацией.ПолучитьКодОрганизации(СведенияОбОрганизации);
        ОбластьМакета.Параметры.НаименованиеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
        ДокументРезультат.Вывести(ОбластьМакета);
        
        ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка\");
    ДокументРезультат.Вывести(ОбластьМакета);
    
    //Запрос по ордерам
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    Запрос.УстановитьПараметр(\"Валюта\",Валюта);
    
    УчетнаяПолитикаНеЗадана = Ложь;
    УчетнаяПолитикаБУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(ДатаКон, УчетнаяПолитикаНеЗадана, Организация, \"Бух\");
    УчетДенежныхСредствПоОбособленнымПодразделениям = Ложь;
    Если УчетнаяПолитикаБУ.Количество() > 0 Тогда    
        УчетДенежныхСредствПоОбособленнымПодразделениям = УчетнаяПолитикаБУ.ВестиУчетДенежныхСредствПоОбособленнымПодразделениям;
    КонецЕсли;
    
    Если УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        УсловиеПоОбособленномуПодразделению = \" И (Касса.ОбособленноеПодразделение = &ОбособленноеПодразделениеОрганизации) \";
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
    КонецЕсли;
    
    Запрос.Текст=\"ВЫБРАТЬ
                 |    НАЧАЛОПЕРИОДА(РасходныйКассовыйОрдер.Дата, ДЕНЬ) КАК ДеньРасход,
                 |    РасходныйКассовыйОрдер.Ссылка                      КАК ОрдерРасход,
                 |    РасходныйКассовыйОрдер.НомерОрдера                  КАК НомерОрдераРасход,
                 |    РасходныйКассовыйОрдер.СуммаДокумента              КАК СуммаРасход,
                 |    РасходныйКассовыйОрдер.Комментарий                  КАК КомментарийРасход
                 |ИЗ
                 |        Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
                 |    ГДЕ
                 |        (РасходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ) И
                 |        (РасходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНач И &ДатаКон) И
                 |        (РасходныйКассовыйОрдер.Организация = &Организация) И
                 |        (РасходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете) И
                 |        (РасходныйКассовыйОрдер.ВалютаДокумента = &Валюта) И
                 |        (РасходныйКассовыйОрдер.Проведен)\" + УсловиеПоОбособленномуПодразделению + \"
                 |УПОРЯДОЧИТЬ ПО
                 |    ДеньРасход,
                 |    НомерОрдераРасход\";
                
                
    РезультатРасход =Запрос.Выполнить().Выбрать();
    
    Запрос.Текст=\"ВЫБРАТЬ
                 |    НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ) КАК ДеньПриход,
                 |    ПриходныйКассовыйОрдер.Ссылка                      КАК ОрдерПриход,
                 |    ПриходныйКассовыйОрдер.НомерОрдера                  КАК НомерОрдераПриход,
                 |    ПриходныйКассовыйОрдер.СуммаДокумента              КАК СуммаПриход,
                 |    ПриходныйКассовыйОрдер.Комментарий                  КАК КомментарийПриход
                 |ИЗ
                 |        Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                 |    ГДЕ
                 |        (ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ) И
                 |        (ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНач И &ДатаКон) И
                 |        (ПриходныйКассовыйОрдер.Организация = &Организация) И
                 |        (ПриходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете) И
                 |        (ПриходныйКассовыйОрдер.ВалютаДокумента = &Валюта) И
                 |        (ПриходныйКассовыйОрдер.Проведен)\" + УсловиеПоОбособленномуПодразделению + \"
                 |УПОРЯДОЧИТЬ ПО
                 |    ДеньПриход,
                 |  НомерОрдераПриход\";    
                
    РезультатПриход =Запрос.Выполнить().Выбрать();    
    
    Пока 1=1 Цикл
        
        ЕстьЗапись = Ложь;
        
        Если РезультатПриход.Следующий() Тогда
            
            ЕстьЗапись = Истина;
            
            ОбластьМакета = Макет.ПолучитьОбласть(\"Строка\");
            ОбластьМакета.Параметры.ДатаПриход          = РезультатПриход.ДеньПриход;
            ОбластьМакета.Параметры.НомерПриход         = РезультатПриход.НомерОрдераПриход;
            ОбластьМакета.Параметры.ОрдерПриход            = РезультатПриход.ОрдерПриход;
            ОбластьМакета.Параметры.СуммаПриход         = РезультатПриход.СуммаПриход;
            ОбластьМакета.Параметры.КомментарийПриход     = РезультатПриход.КомментарийПриход;
            
        КонецЕсли;    
        
        Если РезультатРасход.Следующий() Тогда
            
            Если Не ЕстьЗапись Тогда
                ОбластьМакета = Макет.ПолучитьОбласть(\"Строка\");    
            КонецЕсли;
            
            ЕстьЗапись = Истина;
            
            ОбластьМакета.Параметры.ДатаРасход          = РезультатРасход.ДеньРасход;
            ОбластьМакета.Параметры.НомерРасход         = РезультатРасход.НомерОрдераРасход;
            ОбластьМакета.Параметры.ОрдерРасход         = РезультатРасход.ОрдерРасход;
            ОбластьМакета.Параметры.СуммаРасход          = РезультатРасход.СуммаРасход;
            ОбластьМакета.Параметры.КомментарийРасход     = РезультатРасход.КомментарийРасход;
            
        КонецЕсли;    
        
        Если ЕстьЗапись Тогда
            ДокументРезультат.Вывести(ОбластьМакета);
        Иначе
            Прервать;    
        КонецЕсли;
    
    КонецЦикла;
    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
КонецПроцедуры

Процедура СформироватьКнигаПринятыхВыданных(ДокументРезультат)
    
    //Запрос по остаткам и оборотам кассы
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    
    Если Валюта = мВалютаРегламентированногоУчета Тогда
        ВалютнаяКасса = Ложь;
        ТекстФильтр = \"\";
        Запрос.УстановитьПараметр(\"Счет\",ПланыСчетов.Хозрасчетный.КассаВНациональнойВалюте);
    Иначе
        ВалютнаяКасса = Истина;
        ТекстФильтр = \"ГДЕ
                       | ХозрасчетныйОстаткиИОбороты.Валюта = &Валюта
                       |\";
        Запрос.УстановитьПараметр(\"Валюта\",Валюта);
        Запрос.УстановитьПараметр(\"Счет\",ПланыСчетов.Хозрасчетный.КассаВИностраннойВалюте);
    КонецЕсли;    
    
    УчетнаяПолитикаНеЗадана = Ложь;
    УчетнаяПолитикаБУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(ДатаКон, УчетнаяПолитикаНеЗадана, Организация, \"Бух\");
    УчетДенежныхСредствПоОбособленнымПодразделениям = Ложь;
    Если УчетнаяПолитикаБУ.Количество() > 0 Тогда    
        УчетДенежныхСредствПоОбособленнымПодразделениям = УчетнаяПолитикаБУ.ВестиУчетДенежныхСредствПоОбособленнымПодразделениям;
    КонецЕсли;
    
    Если УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        ТекстСубконто = \"&ВидСубконто\";
        Запрос.УстановитьПараметр(\"ВидСубконто\",ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОбособленныеПодразделения
БезОбразованияЮрЛица);
        
        УсловиеПоСубконто = \"И Субконто1 = &ОбособленноеПодразделениеОрганизации\";
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
    Иначе
        ТекстСубконто = \"\";
        УсловиеПоСубконто = \"\";
    КонецЕсли;
    
    Запрос.Текст=\"ВЫБРАТЬ
                 | ХозрасчетныйОстаткиИОбороты.Период КАК Период,
                 | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
                 | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстаток КАК ВалютнаяСуммаНачальныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстаток КАК ВалютнаяСуммаКонечныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт
                 |ИЗ
                 | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, ДЕНЬ, Движения, Счет = &Счет,\" + ТекстСубконто + \", Организация = &Организация \" + УсловиеПоСубконто + \") КАК ХозрасчетныйОстаткиИОбороты
                 |\"+ ТекстФильтр+
                 \"УПОРЯДОЧИТЬ ПО
                  | Период\";
                
    Результат=Запрос.Выполнить().Выбрать();
    
    //Вывод шапки
    Макет       = ПолучитьМакет(\"КнигаПринятыхВыданных\");
    ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка\");
    ДокументРезультат.Вывести(ОбластьМакета);
    
    //Вывод таблицы
    Пока Результат.Следующий() Цикл
        ОбластьМакета = Макет.ПолучитьОбласть(\"Строка\");
        ОбластьМакета.Параметры.Дата = Результат.Период;
        Если НЕ ВалютнаяКасса Тогда
            ОбластьМакета.Параметры.ОстатокНачало = Результат.СуммаНачальныйОстаток;
            ОбластьМакета.Параметры.Расход = Результат.СуммаОборотКт;
            ОбластьМакета.Параметры.Приход = Результат.СуммаОборотДт;
            ОбластьМакета.Параметры.ОстатокКонец = Результат.СуммаКонечныйОстаток;
        Иначе
            Если (Результат.ВалютнаяСуммаОборотКт=0)И(Результат.ВалютнаяСуммаОборотДт=0) Тогда
                //валютную кассу могут еще трогать и переоценки
                Продолжить;
            КонецЕсли;    
            ОбластьМакета.Параметры.ОстатокНачало = Результат.ВалютнаяСуммаНачальныйОстаток;
            ОбластьМакета.Параметры.Расход = Результат.ВалютнаяСуммаОборотКт;
            ОбластьМакета.Параметры.Приход = Результат.ВалютнаяСуммаОборотДт;
            ОбластьМакета.Параметры.ОстатокКонец = Результат.ВалютнаяСуммаКонечныйОстаток;
        КонецЕсли;    
        ДокументРезультат.Вывести(ОбластьМакета);
    КонецЦикла;
    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
        
КонецПроцедуры    

Функция СформироватьСтруктуруНомеровЛистов(УчетДенежныхСредствПоОбособленнымПодразделени
ям)
    
    Запрос = Новый Запрос;        
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоГода(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    
    Если Валюта = мВалютаРегламентированногоУчета Тогда
        ВалютнаяКасса = Ложь;
        ТекстФильтр = \"\";
        Запрос.УстановитьПараметр(\"Счет\", ПланыСчетов.Хозрасчетный.КассаВНациональнойВалюте);
    Иначе
        ВалютнаяКасса = Истина;
        ТекстФильтр = \"ГДЕ
                       | ХозрасчетныйОбороты.Валюта = &Валюта
                       |\";
        Запрос.УстановитьПараметр(\"Валюта\",Валюта);
        Запрос.УстановитьПараметр(\"Счет\",ПланыСчетов.Хозрасчетный.КассаВИностраннойВалюте);
    КонецЕсли;
    
    Если НЕ УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        ТекстСубконто = \"\";
    Иначе
        ТекстСубконто = \"&Субконто\";
        Если ПустаяСтрока(ТекстФильтр) Тогда
            ТекстФильтр = \"ГДЕ
                           |  ХозрасчетныйОбороты.Субконто1 = &ОбособленноеПодразделениеОрганизации
                           |\";
        Иначе
            ТекстФильтр = ТекстФильтр + \" И
                           |  ХозрасчетныйОбороты.Субконто1 = &ОбособленноеПодразделениеОрганизации
                           |\";
        КонецЕсли;
        Запрос.УстановитьПараметр(\"Субконто\", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОбособленныеПодразделенияБезОбр
азованияЮрЛица);
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
    КонецЕсли;
    
    
    Запрос.Текст=\"ВЫБРАТЬ
                 | ХозрасчетныйОбороты.Период КАК Период
                 |ИЗ
                 | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, День, Счет = &Счет,\"+ТекстСубконто+\", Организация = &Организация) КАК ХозрасчетныйОбороты
                 |\"+ ТекстФильтр+
                 \"УПОРЯДОЧИТЬ ПО
                 | Период\";
                
    Выборка = Запрос.Выполнить().Выбрать();
    
    СтруктураВозврата        = Новый Структура();
    СоответствиеНомеровМесяц = Новый Соответствие();
    СоответствиеНомеровГод   = Новый Соответствие();
    
    ТекГод   = Неопределено;
    ТекМесяц = Неопределено;
    
    Пока Выборка.Следующий() Цикл
        
        Если Месяц(Выборка.Период) <> ТекМесяц Тогда
            ТекМесяц = Месяц(Выборка.Период);
            НомерЛистаМесяц = 1;    
        КонецЕсли;
        
        Если Год(Выборка.Период) <> ТекГод Тогда
            Если ТекГод = Неопределено Тогда
                НомерЛистаГод = НачальныйНомерЛиста;
            Иначе
                НомерЛистаГод = 1;
            КонецЕсли;
            ТекГод = Год(Выборка.Период);
        КонецЕсли;
        
        СоответствиеНомеровМесяц.Вставить(Выборка.Период, НомерЛистаМесяц);
        СоответствиеНомеровГод.Вставить(Выборка.Период, НомерЛистаГод);
        
        НомерЛистаМесяц = НомерЛистаМесяц +1;
        НомерЛистаГод = НомерЛистагод + 1;    
        
    КонецЦикла;
    
    СтруктураВозврата.Вставить(\"СоответствиеНомеровМесяц\", СоответствиеНомеровМесяц);
    СтруктураВозврата.Вставить(\"СоответствиеНомеровГод\", СоответствиеНомеровГод);
    
    Возврат СтруктураВозврата;
        
КонецФункции    

Процедура СформироватьКассоваяКнига(ДокументРезультат)
    
    //Запрос по остаткам и оборотам кассы
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр(\"ДатаНач\",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр(\"ДатаКон\",КонецДня(ДатаКон));
    Запрос.УстановитьПараметр(\"Организация\",Организация);
    Если Валюта = мВалютаРегламентированногоУчета Тогда
        ВалютнаяКасса = Ложь;
        ТекстФильтр = \"\";
        Запрос.УстановитьПараметр(\"Счет\",ПланыСчетов.Хозрасчетный.КассаВНациональнойВалюте);
    Иначе
        ВалютнаяКасса = Истина;
        ТекстФильтр = \"ГДЕ
                       | ХозрасчетныйОстаткиИОбороты.Валюта = &Валюта
                       |\";
        Запрос.УстановитьПараметр(\"Валюта\",Валюта);
        Запрос.УстановитьПараметр(\"Счет\",ПланыСчетов.Хозрасчетный.КассаВИностраннойВалюте);
    КонецЕсли;    
    
    УчетнаяПолитикаНеЗадана = Ложь;
    УчетнаяПолитикаБУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(ДатаКон, УчетнаяПолитикаНеЗадана, Организация, \"Бух\");
    УчетДенежныхСредствПоОбособленнымПодразделениям = Ложь;
    БУ = ПланыСчетов.Хозрасчетный.КассаВНациональнойВалюте;
    УчетДСПоОбособленнымПодразделениямВПланеСчетов = ?(БУ.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Обособле
нныеПодразделенияБезОбразованияЮрЛица, \"ВидСубконто\") = Неопределено, Ложь, Истина);
    Если УчетнаяПолитикаБУ.Количество() > 0 Тогда    
        УчетДенежныхСредствПоОбособленнымПодразделениям = УчетнаяПолитикаБУ.ВестиУчетДенежныхСредствПоОбособленнымПодразделениям И УчетДСПоОбособленнымПодразделениямВПланеСчетов;
    КонецЕсли;
    
    Если УчетДенежныхСредствПоОбособленнымПодразделениям Тогда
        ТекстСубконто = \"&ВидСубконто\";
        Запрос.УстановитьПараметр(\"ВидСубконто\",ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОбособленныеПодразделения
БезОбразованияЮрЛица);
        
        УсловиеПоСубконто = \"И Субконто1 = &ОбособленноеПодразделениеОрганизации\";
        Запрос.УстановитьПараметр(\"ОбособленноеПодразделениеОрганизации\", ОбособленноеПодразделениеОрганизации);
        
    Иначе
        ТекстСубконто = \"\";
        УсловиеПоСубконто = \"\";
    КонецЕсли;
    
    Если ВалютнаяКасса Тогда
        УсловиеПоСубконто = УсловиеПоСубконто + \" И Валюта = &Валюта\";
    КонецЕсли;
        
    Запрос.Текст=\"ВЫБРАТЬ
                 | ХозрасчетныйОбороты.Регистратор КАК Регистратор,
                 | ХозрасчетныйОстаткиИОбороты.Период КАК Период,
                 | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйРазвернутыйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаНачальныйРазвернутыйОстатокКт КАК СуммаНачальныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокКт КАК СуммаКонечныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
                 | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйРазвернутыйОстатокДт - ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйРазвернутыйОстатокКт КАК ВалютнаяСуммаНачальныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйРазвернутыйОстатокДт - ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйРазвернутыйОстатокКт КАК ВалютнаяСуммаКонечныйОстаток,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
                 | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт,
                 | ХозрасчетныйОбороты.КорСчет КАК КорСчет,
                 | ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаКорОборотДт,
                 | ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаКорОборотКт,
                 | ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаКорОборотДт,
                 | ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаКорОборотКт
                 |ИЗ
                 | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, Движения, Счет = &Счет, \" + ТекстСубконто + \", Организация = &Организация \" + УсловиеПоСубконто + \") КАК ХозрасчетныйОстаткиИОбороты
                 | ЛЕВОЕ СОЕДИНЕНИЕ
                 | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, Регистратор, Счет = &Счет, \" + ТекстСубконто + \", Организация = &Организация \" + УсловиеПоСубконто + \") КАК ХозрасчетныйОбороты
                 | ПО ХозрасчетныйОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(ХозрасчетныйОбороты.Период,День)
                 |\"+ ТекстФильтр+
                 \"УПОРЯДОЧИТЬ ПО
                  | Период,
                  | ХозрасчетныйОбороты.Регистратор.МоментВремени
                  |ИТОГИ
                  |    МАКСИМУМ(Период),
                  |    МАКСИМУМ(СуммаНачальныйОстаток),
                  |    МАКСИМУМ(СуммаКонечныйОстаток),
                  |    МАКСИМУМ(СуммаОборотДт),
                  |    МАКСИМУМ(СуммаОборотКт),
                  |    СУММА(СуммаКорОборотДт),
                  |    СУММА(СуммаКорОборотКт),
                  |    МАКСИМУМ(ВалютнаяСуммаНачальныйОстаток),
                  |    МАКСИМУМ(ВалютнаяСуммаКонечныйОстаток),
                  |    МАКСИМУМ(ВалютнаяСуммаОборотДт),
                  |    МАКСИМУМ(ВалютнаяСуммаОборотКт),
                  |    СУММА(ВалютнаяСуммаКорОборотДт),
                  |    СУММА(ВалютнаяСуммаКорОборотКт)
                  |ПО
                  |    Регистратор\";

    Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    СтруктураНомеров = СформироватьСтруктуруНомеровЛистов (УчетДенежныхСредствПоОбособленнымПодразделениям);
    СоответствиеНомеровМесяц = СтруктураНомеров.СоответствиеНомеровМесяц;
    СоответствиеНомеровГод   = СтруктураНомеров.СоответствиеНомеровГод;
    
    ТекДата = Дата(\"00010101\");
    ТекРегистратор = \"\";
    ОстатокЗаДень  = 0;ВалютныйОстатокЗаДень  = 0;
    ПриходЗаДень   = 0;ВалютныйПриходЗаДень   = 0;
    РасходЗаДень   = 0;ВалютныйРасходЗаДень   = 0;
    КоличествоПКОЗаДень = 0;
    КоличествоРКОЗаДень = 0;
    ТаблицаСтрокДляВывода = Новый ТаблицаЗначений;
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"НомерОрдера\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"ДокументОрдер\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"Контрагент\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"Ордер\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"КоррСчет\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"Приход\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"ПриходВалюта\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"Валюта\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"Расход\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"РасходВалюта\");
    ТаблицаСтрокДляВывода.Колонки.Добавить(\"РасходПриход\");
      
    Макет       = ПолучитьМакет(\"КассоваяКнига\");
    
    Если ВыводитьТитульныйЛист Тогда
    
        ОбластьМакета = Макет.ПолучитьОбласть(\"Титул\");
        СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаНач);
        ОбластьМакета.Параметры.Год                         = Год(ДатаНач);
        ОбластьМакета.Параметры.КодЕДРПОУ                 = УправлениеКонтактнойИнформацией.ПолучитьКодОрганизации(СведенияОбОрганизации);
        ОбластьМакета.Параметры.НаименованиеОрганизации = СведенияОбОрганизации.ПолноеНаименование;
        ДокументРезультат.Вывести(ОбластьМакета);
        
        ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЕсли;

    Пока Результат.Следующий() Цикл
        Если Результат.Период <> ТекДата Тогда
            Если (ОстатокЗаДень<>0)или(ПриходЗаДень<>0)или(РасходЗаДень<>0) Тогда
                ТаблицаСтрокДляВывода.Сортировать(\"РасходПриход Возр, НомерОрдера Возр\");
                Для каждого Строка Из ТаблицаСтрокДляВывода Цикл
                    ОбластьМакета = Макет.ПолучитьОбласть(\"Строка\");
                    ОбластьМакета.Параметры.Заполнить(Строка);    
                    ДокументРезультат.Вывести(ОбластьМакета);
                КонецЦикла;
                ТаблицаСтрокДляВывода.Очистить();

                ОбластьМакета = Макет.ПолучитьОбласть(\"ОстатокКонец\");
                ОбластьМакета.Параметры.ОстатокКонец = ?(ОстатокЗаДень = 0, \"-\", ОстатокЗаДень);
                ОбластьМакета.Параметры.Приход = ?(ПриходЗаДень = 0, \"-\", ПриходЗаДень);
                ОбластьМакета.Параметры.Расход = ?(РасходЗаДень = 0, \"-\", РасходЗаДень);
                
                Отбор = Новый Структура();
                Отбор.Вставить(\"СтруктурнаяЕдиница\", Организация);
                Отбор.Вставить(\"ОтветственноеЛицо\", Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер);
                ОбластьМакета.Параметры.Бухгалтер = РегистрыСведений.ОтветственныеЛицаОрганизаций.ПолучитьПоследнее(ТекДата, Отбор).ФизическоеЛицо.Наименование;
                Отбор.Вставить(\"ОтветственноеЛицо\", Перечисления.ОтветственныеЛицаОрганизаций.Кассир);
                ОбластьМакета.Параметры.Кассир    = РегистрыСведений.ОтветственныеЛицаОрганизаций.ПолучитьПоследнее(ТекДата, Отбор).ФизическоеЛицо.Наименование;
                
                ФорматнаяСтрока = \"Л = uk_UA\";    
                КоличествоПКОЗаДень = ?(КоличествоПКОЗаДень = 0, \"-   \", ЧислоПрописью(КоличествоПКОЗаДень, ФорматнаяСтрока));
                КоличествоРКОЗаДень = ?(КоличествоРКОЗаДень = 0, \"-   \", ЧислоПрописью(КоличествоРКОЗаДень, ФорматнаяСтрока));
                КоличествоПКОЗаДень = СокрЛП(Лев(КоличествоПКОЗаДень, СтрДлина(КоличествоПКОЗаДень) - 3 ));
                КоличествоРКОЗаДень = СокрЛП(Лев(КоличествоРКОЗаДень, СтрДлина(КоличествоРКОЗаДень) - 3 ));
                ОбластьМакета.Параметры.КоличествоПКО = КоличествоПКОЗаДень;
                ОбластьМакета.Параметры.КоличествоРКО = КоличествоРКОЗаДень;
                
                Если ВалютнаяКасса Тогда
                    ОбластьМакета.Параметры.ОстатокКонецВалюта = ?(ВалютныйОстатокЗаДень = 0, \"\", Формат(ВалютныйОстатокЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
                    ОбластьМакета.Параметры.ПриходВалюта = ?(ВалютныйПриходЗаДень = 0, \"\", Формат(ВалютныйПриходЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
                    ОбластьМакета.Параметры.РасходВалюта = ?(ВалютныйРасходЗаДень = 0, \"\", Формат(ВалютныйРасходЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
                    ОбластьМакета.Параметры.Валюта = Валюта.Наименование;
                КонецЕсли;
                
                // количество листов за месяц
                Если ВидЛистаКассовойКниги = \"Конец месяца\" Тогда
                    Если Месяц(Результат.Период) <> Месяц(ТекДата) Тогда
                        ОбластьМакета.Параметры.КоличествоЛистовМесяц = \"Листів з початку місяця: \" + СоответствиеНомеровМесяц.Получить(НачалоДня(ТекДата));
                    КонецЕсли;
                КонецЕсли;    
                // количество листов за год
                Если ВидЛистаКассовойКниги = \"Конец года\" Тогда
                    Если Месяц(Результат.Период) <> Месяц(ТекДата) Тогда
                        ОбластьМакета.Параметры.КоличествоЛистовМесяц = \"Листів з початку місяця: \" + СоответствиеНомеровМесяц.Получить(НачалоДня(ТекДата));
                    КонецЕсли;
                    Если Год(Результат.Период) <> Год(ТекДата) Тогда
                        ОбластьМакета.Параметры.КоличествоЛистовГод = \"Листів з початку року: \" + СоответствиеНомеровГод.Получить(НачалоДня(ТекДата));
                    КонецЕсли;
                КонецЕсли;    

                ДокументРезультат.Вывести(ОбластьМакета);
                
                КоличествоПКОЗаДень = 0;
                КоличествоРКОЗаДень = 0;
            КонецЕсли;    
            ТекДата = Результат.Период;
            ОбластьМакета = Макет.ПолучитьОбласть(\"Шапка\");
            
            ЧислоДокумента                          = Формат(Результат.Период,\"ДФ=\'дд\';Л=uk_UA\");
            ДатаДокумента                           = Формат(Результат.Период,\"ДФ=\'дд ММММ ггггр.\';Л=uk_UA\");
            ДатаДокументаБезЧисла                   = Прав(ДатаДокумента, СтрДлина(ДатаДокумента) - 2);
            ОбластьМакета.Параметры.ДатаПрописью       = \"\"\"\" + ЧислоДокумента + \"\"\"\" + ДатаДокументаБезЧисла;
            // номер листа
            ОбластьМакета.Параметры.НомерЛиста = СоответствиеНомеровГод.Получить(НачалоДня(ТекДата));
            
            ДокументРезультат.Вывести(ОбластьМакета);
            ОбластьМакета = Макет.ПолучитьОбласть(\"ОстатокНачало\");
            ОбластьМакета.Параметры.ОстатокНачало = ?(Результат.СуммаНачальныйОстаток = 0, \"-\", Результат.СуммаНачальныйОстаток);
            Если ВалютнаяКасса Тогда
                ОбластьМакета.Параметры.ОстатокНачалоВалюта = ?(Результат.ВалютнаяСуммаНачальныйОстаток = 0, \"\",Формат(Результат.ВалютнаяСуммаНачальныйОстаток,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
                ОбластьМакета.Параметры.Валюта = Валюта.Наименование;
            КонецЕсли;
            ДокументРезультат.Вывести(ОбластьМакета);
            ОстатокЗаДень = Результат.СуммаКонечныйОстаток;
            ПриходЗаДень = Результат.СуммаОборотДт;
            РасходЗаДень = Результат.СуммаОборотКт;
            ВалютныйОстатокЗаДень = Результат.ВалютнаяСуммаКонечныйОстаток;
            ВалютныйПриходЗаДень = Результат.ВалютнаяСуммаОборотДт;
            ВалютныйРасходЗаДень = Результат.ВалютнаяСуммаОборотКт;
        КонецЕсли;
        
        
        Строка = ТаблицаСтрокДляВывода.Добавить();
        Строка.ДокументОрдер = Результат.Регистратор;        

        Если Результат.Регистратор <> ТекРегистратор Тогда
            ТекРегистратор = Результат.Регистратор;
            Если ТипЗнч(ТекРегистратор) = Тип(\"ДокументСсылка.ОперацияБух\") Тогда
                //Тут мы ничего не знаем
                Строка.НомерОрдера = \"\";
                Строка.Контрагент  = \"\";
            ИначеЕсли ТипЗнч(ТекРегистратор) = Тип(\"ДокументСсылка.ПриходныйКассовыйОрдер\") Тогда
                Строка.НомерОрдера = ОбщегоНазначения.ПреобразоватьВЧисло(Результат.Регистратор.НомерОрдера);
                Если Строка.НомерОрдера = 0 Тогда
                    Строка.НомерОрдера = Результат.Регистратор.НомерОрдера;
                КонецЕсли;
                Строка.Контрагент = Результат.Регистратор.ПринятоОт;
                КоличествоПКОЗаДень = КоличествоПКОЗаДень + 1;
            ИначеЕсли ТипЗнч(ТекРегистратор) = Тип(\"ДокументСсылка.РасходныйКассовыйОрдер\") Тогда    
                Строка.НомерОрдера = ОбщегоНазначения.ПреобразоватьВЧисло(Результат.Регистратор.НомерОрдера);
                Если Строка.НомерОрдера = 0 Тогда
                    Строка.НомерОрдера = Результат.Регистратор.НомерОрдера;
                КонецЕсли;
                Строка.Контрагент = Результат.Регистратор.Выдать;
                КоличествоРКОЗаДень = КоличествоРКОЗаДень + 1;
            Иначе
                //Попробуем найти для него ордер
                Ордер = ОрдерПоРегистратору(Результат.Регистратор);
                Строка.НомерОрдера = ОбщегоНазначения.ПреобразоватьВЧисло(Результат.Регистратор.НомерОрдера);
                Если Строка.НомерОрдера = 0 Тогда
                    Строка.НомерОрдера = Ордер.НомерОрдера;
                КонецЕсли;
                Строка.Контрагент = Ордер.ПринятоОт;
            КонецЕсли;    
        КонецЕсли;
        РезультатПоСчетам = Результат.Выбрать();
        СписокСчетов = \"\"; Разделитель = \"\";
        ЕстьКурсоваяРазница = Ложь;
        Пока РезультатПоСчетам.Следующий() Цикл
            СписокСчетов = СписокСчетов + Разделитель + Строка(РезультатПоСчетам.КорСчет);
            Разделитель = \", \";
            Если ВалютнаяКасса И (РезультатПоСчетам.СуммаКорОборотДт <> 0 И РезультатПоСчетам.ВалютнаяСуммаКорОборотДт = 0)
                ИЛИ (РезультатПоСчетам.СуммаКорОборотКт <> 0 И РезультатПоСчетам.ВалютнаяСуммаКорОборотКт=0) Тогда
                ЕстьКурсоваяРазница = Истина;    
            КонецЕсли;    
        КонецЦикла;
        Строка.КоррСчет = СписокСчетов;
        Строка.Приход = ?(Результат.СуммаКорОборотДт = 0, \"-\", Результат.СуммаКорОборотДт);
        Строка.Расход = ?(Результат.СуммаКорОборотКт = 0, \"-\", Результат.СуммаКорОборотКт);
        Строка.РасходПриход = ?(Результат.СуммаКорОборотДт    = 0, 1, 0);
        Если ВалютнаяКасса Тогда
            Строка.ПриходВалюта = ?(Результат.ВалютнаяСуммаКорОборотДт = 0, \"\", Формат(Результат.ВалютнаяСуммаКорОборотДт,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
            Строка.РасходВалюта = ?(Результат.ВалютнаяСуммаКорОборотКт = 0, \"\", Формат(Результат.ВалютнаяСуммаКорОборотКт,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
            Строка.Валюта = Валюта.Наименование;
            Если ЕстьКурсоваяРазница Тогда
                Если ПустаяСтрока(Строка.Контрагент) Тогда
                    Строка.Контрагент = \"Курсова різниця\";
                Иначе
                    Строка.Контрагент = Строка.Контрагент + \", Курсова різниця\";
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        Строка.Ордер = Результат.Регистратор;
        ДатаПоследнейЗаписи = Результат.Период;
    КонецЦикла;    
    Если (ОстатокЗаДень<>0)или(ПриходЗаДень<>0)или(РасходЗаДень<>0) Тогда
        ТаблицаСтрокДляВывода.Сортировать(\"РасходПриход Возр, НомерОрдера Возр\");
        Для каждого Строка Из ТаблицаСтрокДляВывода Цикл
            ОбластьМакета = Макет.ПолучитьОбласть(\"Строка\");
            ОбластьМакета.Параметры.Заполнить(Строка);    
            ДокументРезультат.Вывести(ОбластьМакета);
        КонецЦикла;
        ТаблицаСтрокДляВывода.Очистить();

        ОбластьМакета = Макет.ПолучитьОбласть(\"ОстатокКонец\");
        ОбластьМакета.Параметры.ОстатокКонец = ?(ОстатокЗаДень = 0, \"-\", ОстатокЗаДень);
        ОбластьМакета.Параметры.Приход = ?(ПриходЗаДень = 0, \"-\", ПриходЗаДень);
        ОбластьМакета.Параметры.Расход = ?(РасходЗаДень = 0, \"-\", РасходЗаДень);
        
        Отбор = Новый Структура();
        Отбор.Вставить(\"СтруктурнаяЕдиница\", Организация);
        Отбор.Вставить(\"ОтветственноеЛицо\", Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер);
        ОбластьМакета.Параметры.Бухгалтер = РегистрыСведений.ОтветственныеЛицаОрганизаций.ПолучитьПоследнее(ДатаПоследнейЗап
иси, Отбор).ФизическоеЛицо.Наименование;
        Отбор.Вставить(\"ОтветственноеЛицо\", Перечисления.ОтветственныеЛицаОрганизаций.Кассир);
        ОбластьМакета.Параметры.Кассир    = РегистрыСведений.ОтветственныеЛицаОрганизаций.ПолучитьПоследнее(ДатаПоследнейЗап
иси, Отбор).ФизическоеЛицо.Наименование;

        ФорматнаяСтрока = \"Л = uk_UA\";
        КоличествоПКОЗаДень = ?(КоличествоПКОЗаДень = 0, \"-   \", ЧислоПрописью(КоличествоПКОЗаДень, ФорматнаяСтрока));
        КоличествоРКОЗаДень = ?(КоличествоРКОЗаДень = 0, \"-   \", ЧислоПрописью(КоличествоРКОЗаДень, ФорматнаяСтрока));
        КоличествоПКОЗаДень = СокрЛП(Лев(КоличествоПКОЗаДень, СтрДлина(КоличествоПКОЗаДень) - 3 ));
        КоличествоРКОЗаДень = СокрЛП(Лев(КоличествоРКОЗаДень, СтрДлина(КоличествоРКОЗаДень) - 3 ));
        ОбластьМакета.Параметры.КоличествоПКО = КоличествоПКОЗаДень;
        ОбластьМакета.Параметры.КоличествоРКО = КоличествоРКОЗаДень;

        Если ВалютнаяКасса Тогда
            ОбластьМакета.Параметры.ОстатокКонецВалюта = ?(ВалютныйОстатокЗаДень = 0, \"\", Формат(ВалютныйОстатокЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
            ОбластьМакета.Параметры.ПриходВалюта = ?(ВалютныйПриходЗаДень = 0, \"\", Формат(ВалютныйПриходЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
            ОбластьМакета.Параметры.РасходВалюта = ?(ВалютныйРасходЗаДень = 0, \"\", Формат(ВалютныйРасходЗаДень,\"ЧЦ=15; ЧДЦ=2; ЧН=0,00\"));
            ОбластьМакета.Параметры.Валюта = Валюта.Наименование;
        КонецЕсли;
        // количество листов за месяц
        Если ВидЛистаКассовойКниги = \"Конец месяца\" Тогда    
            ОбластьМакета.Параметры.КоличествоЛистовМесяц = \"Листів з початку місяця: \" + СоответствиеНомеровМесяц.Получить(НачалоДня(ТекДата));
        КонецЕсли;    
        // количество листов за год
        Если ВидЛистаКассовойКниги = \"Конец года\" Тогда
            ОбластьМакета.Параметры.КоличествоЛистовМесяц = \"Листів з початку місяця: \" + СоответствиеНомеровМесяц.Получить(НачалоДня(ТекДата));
            ОбластьМакета.Параметры.КоличествоЛистовГод = \"Листів з початку року: \" + СоответствиеНомеровГод.Получить(НачалоДня(ТекДата));
        КонецЕсли;
        ДокументРезультат.Вывести(ОбластьМакета);
    КонецЕсли;    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    
КонецПроцедуры

Функция ПроверкаПериода()
    
    ПроверкаПройдена=Истина;
    
    Если ДатаНач > ДатаКон Тогда
        
        Предупреждение(\"Неправильно задан период формирования отчета!\"
\"Дата начала больше даты окончания периода.\");
                      
        ПроверкаПройдена=Ложь;
        
    ИначеЕсли ДатаНач=\'00010101\' Тогда
        
        Предупреждение(\"Не указана дата начала отчета\");
                      
        ПроверкаПройдена=Ложь;
        
    ИначеЕсли ДатаКон=\'00010101\' Тогда
        
        Предупреждение(\"Не указана дата конца отчета\");
                      
        ПроверкаПройдена=Ложь;
    
    КонецЕсли;
        
    Возврат ПроверкаПройдена;
    
КонецФункции // ПроверкаПериода()

Процедура СформироватьОтчет(ДокументРезультат, ВидОтчета) Экспорт
    
    Если НЕ ПроверкаПериода() Тогда
        Возврат;
    КонецЕсли;
    
    Если Организация.Пустая() Тогда
        Предупреждение(\"Не выбрана организация\");
        Возврат;
    КонецЕсли;
    
    Если Валюта.Пустая() Тогда
        Предупреждение(\"Не выбрана валюта\");
        Возврат;
    КонецЕсли;
        
    ДокументРезультат.Очистить();
    
    Если ВидОтчета = \"Журнал регистрации приходных ордеров\" Тогда
        СформироватьЖурналРегистрацииПриходных(ДокументРезультат);
    ИначеЕсли ВидОтчета = \"Журнал регистрации расходных ордеров\" Тогда
        СформироватьЖурналРегистрацииРасходных(ДокументРезультат);
    ИначеЕсли ВидОтчета = \"Журнал регистрации приходных и расходных ордеров\" Тогда
        СформироватьЖурналРегистрацииРасходныхИПриходных(ДокументРезультат);
    ИначеЕсли ВидОтчета = \"Книга учета принятых и выданных денег\" Тогда
        СформироватьКнигаПринятыхВыданных(ДокументРезультат);
    ИначеЕсли ВидОтчета = \"Кассовая книга\" Тогда
        СформироватьКассоваяКнига(ДокументРезультат);        
    КонецЕсли;    
            
КонецПроцедуры // СформироватьРезультат()

НП =  Новый НастройкаПериода;
мВалютаРегламентированногоУчета   = глЗначениеПеременной(\"ВалютаРегламентированногоУчета\");

#КонецЕсли



 ! 

Ознакомьтесь с правилами форума.
 


Эта ошибка возникает только если выбрать период с 01.08.2012 г.или ранее. Если выбрать период с 02.08.2012 г. такой ошибки нет.
Vofka
Сам отчет, а не код
alex040269
Скорее всего в данном случае Результат.Регистратор = неопределено, можно изменить обработку для этого случая.
URMASH
Цитата(Vofka @ 07.08.12, 9:16) необходимо зарегистрироваться для просмотра ссылки
У вас отчет, видимо, доработанный. 1.2.8.7 у меня в данный момент под рукой нету, но в 1.2.7.4 такой ошибки нету и вообще строки, на которой у вас возникает ошибка тоже нету. Выложите отчет.


необходимо зарегистрироваться для просмотра ссылки
Vofka
URMASH, у меня на типовой конфе отчет формируется нормально. Для того, чтобы понять причину нужно смотреть на вашей базе.

Я думаю, имеет смысл обратиться к программисту.
URMASH
Цитата(Vofka @ 07.08.12, 14:31) необходимо зарегистрироваться для просмотра ссылки
Я думаю, имеет смысл обратиться к программисту.

Спасибо за информацию.Будем искать программиста.
Vofka
Цитата(URMASH @ 07.08.12, 14:59) необходимо зарегистрироваться для просмотра ссылки
Спасибо за информацию.Будем искать программиста.

необходимо зарегистрироваться для просмотра ссылки wink.gif
URMASH
Вот прогнал через отладчик:

Строка.НомерОрдера = ОбщегоНазначения.ПреобразоватьВЧисло(Результат.Регистратор.НомерОрдера);    {(1,93)}: Ошибка у виражении


Как с этим бороться?


 ! 

Последнее предупреждение прочесть правила!
 
Vofka
Что находится здесь Результат.Регистратор ?
logist
Попробуйте "Результат.Регистратор.НомерОрдера" заменить на "Ордер.НомерОрдера" только в той строке.
URMASH
Всем спасибо за помощь.Проблему решили путем работы через Внешний отчет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.