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

Помогите пожалуйста

Автор almagkeeva, 07 апр 2012, 19:08

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

almagkeeva

Добрый вечер) Нужна помощь,пожалуйста) Есть документ "Перемещение книг" с реквизитами "ОтделОтправитель" и "ОтделПолучатель" и регистр накопления "Остатки книг" с измерением "Отдел". Если при проведении документа в поле "Отдел получатель" выбран не отдел обслуживания читателей,а другой отдел нужно,чтоб в регистре движения не происходили,т.е. в регистр чтоб ничего не записывалось,а если выбран отдел обслуживания читателей,то записывалось..не знаю как сделать,как написать условие.. Вид движения Приход. кто может-помогите,пожалуйста)  

090977

Если ОтделПолучатель= "отдел обслуживания читателей"  Тогда
   Движение=.........
   .....
КонецЕсли;

"отдел обслуживания читателей" - я так понимаю элемент справочника ?  который можно найти по коду или наименованию

almagkeeva

Ага.."отдел обслуживания читателей"-это элемент справочника "Отделы") Вот весь мой код,может так легче:
Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   // регистр ОстаткиКниг Расход
   Движения.ОстаткиКниг.Записывать = Истина;
   Движения.ОстаткиКниг.Очистить();
        Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |   ОстаткиКнигОстатки.Отдел,
                      |   ПеремещениеКниги.Книга КАК Книга,
                      |   ПеремещениеКниги.Ссылка,
                      |   ЕСТЬNULL(ОстаткиКнигОстатки.КоличествоЭкземпляровОстаток, 0) КАК КоличествоЭкземпляровОстаток,
                      |   ЕСТЬNULL(ПеремещениеКниги.КоличествоЭкземпляров, 0) КАК Количество
                      |ИЗ
                      |   Документ.Перемещение.Книги КАК ПеремещениеКниги
                      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиКниг.Остатки(&Период, Отдел = &Отдел) КАК ОстаткиКнигОстатки
                      |      ПО ПеремещениеКниги.Книга = ОстаткиКнигОстатки.Книга
                      |ГДЕ
                      |   ПеремещениеКниги.Ссылка = &Ссылка
                      |ИТОГИ
                      |   СУММА(КоличествоЭкземпляровОстаток),
                      |   СРЕДНЕЕ(Количество)
                      |ПО
                      |   Книга";
      
       Запрос.УстановитьПараметр("Период", Дата);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
   
             Запрос.УстановитьПараметр("Отдел",ОтделОтправитель);


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

      
          
   Для Каждого ТекСтрокаКниги Из Книги Цикл
      Движение = Движения.ОстаткиКниг.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Книга = ТекСтрокаКниги.Книга;
      Движение.Отдел = ОтделОтправитель;
      Движение.КоличествоЭкземпляров = ТекСтрокаКниги.КоличествоЭкземпляров;
   КонецЦикла;

          // регистр ОстаткиКниг Приход
          
        Для Каждого ТекСтрокаКниги Из Книги Цикл
   Если ОтделПолучатель= "отдел обслуживания читателей"  Тогда
      Движение=Движения.ОстаткиКниг.Добавить();
   
   Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
      Движение.Период = Дата;
      Движение.Книга = ТекСтрокаКниги.Книга;
      Движение.Отдел = ОтделПолучатель;
      Движение.КоличествоЭкземпляров = ТекСтрокаКниги.КоличествоЭкземпляров;
      КонецЕсли;
         КонецЦикла;
           
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

По идее этот документ в регистре осуществляет движения в виде расхода в любом случае,а приход только при выборе отдела обслуживания читателей. Может я условие не туда вставила(

090977

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

090977

Для универсальности я бы добавил в справочник "Отделы" реквизит булевский например "ПроводитьПоРегистру" и условие строил бы соответственно значения этого реквизита

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

090977

И плиз в модуле нажми Ctrl+A ,потом Alt+Shift+F  ,глаза режет код разбегающийся ))))

almagkeeva

Спасибо огромное)) работает!) и спасибо за совет,в следующий раз буду знать))))))))

Теги:

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

Рейтинг@Mail.ru

Поиск