Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:50

Создание и обработка отчетов

Автор warshadow, 23 мар 2011, 19:44

0 Пользователей и 1 гость просматривают эту тему.

warshadow

Вот так корректней на мой взгляд будет и правильно...



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

   
   
   //////////////////////////////////////////////////////////////////////////////////////

        Если ВидОперации = Перечисления.ВидыОпераций.ОтЧитателей и ТблПоступлДарЧитат.Количество()=0 Тогда
   Сообщить("Табличная часть не заполнена!");
   Отказ=Истина;
КонецЕсли;
   

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

warshadow

//1 ТЧ
Если ВидОперации=Перечисления.ВидыОпераций.ОтИздательства Тогда
Если  ТблПоступлОтиздат.Количество()>0 Тогда
Для Каждого ТекСтрокаТблПоступлОтиздат Из ТблПоступлОтиздат Цикл
Движения...
КонецЦикла;
КонецЕсли;
КонецЕсли;
//2 ТЧ
Если ВидОперации=Перечисления.ВидыОпераций.ОтЧитателей Тогда
Если  ТблПоступлДарЧитат.Количество()>0  Тогда
Для Каждого ТекСтрокаТблПоступлДарЧитат Из ТблПоступлДарЧитат Цикл
Движения...
КонецЦикла;
КонецЕсли;
КонецЕсли;

Получается так...
Если делать условие Иначе, то программа не будет проверять...

warshadow

Дальше надо писать код уже в отчете или делать какую-то связь ?

warshadow

Народ, подскажите пожалуйста..., а то все отчеты сделал,  осталось только реализовать этот с 2 ТЧ.

warshadow

Тема так и не решена ((((
Да и еще все-таки странно работает регистрНакопления, он например ЦенаПриход или Расход ( все цены документов суммирует)...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск