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

Замена одной области на другую

Автор gliokker, 19 ноя 2013, 15:20

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

gliokker

Ещё раз здравствуйте

Мне нужно заменить одну область макета на другую и наоборот при определённом условии
Делаю я это в УСХП докумнте кадровое перемещени сотрудников организации
Внешняя обработка
Задача следующая
Если у сотрудника перемещаемого на другую должность либо в другое подразделение меняется сумма тарифа ну или оклада то должно писатся одно если же не изменились то другое.
Я пробывал вот так
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
ОбластьМакета.Параметры.Заполнить(Выборка);
Выборка = Запрос.Выполнить().Выбрать();
        Заменить = 0;
    Пока Выборка.Следующий() Цикл
    Если  Выборка.Период = Период - 1 Тогда
Заменить = 1;
КонецЕсли;
КонецЦикла;
Если Заменить = 0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЦикла;

Но не работает да и помоему тут что то не то получается
я даже не могу понять как это сделать
может кто то уже делал подскажите?

MuI_I_Ika

ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
   ОбластьМакета.Параметры.Заполнить(Выборка);   
   Выборка = Запрос.Выполнить().Выбрать();
   Заменить = 0;
   Пока Выборка.Следующий() Цикл
      Если  Выборка.Период = Период - 1 Тогда
         Заменить = 1;
      КонецЕсли;
   КонецЦикла;

   Если Заменить = 0 Тогда
      ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      ТабДокумент.Вывести(ОбластьМакета);   
   Иначе
      ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
      ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;
     
   

А на каком этапе то не работает, что не делает?

gliokker

Цитата: MuI_I_Ika от 19 ноя 2013, 15:47
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
   ОбластьМакета.Параметры.Заполнить(Выборка);   
   Выборка = Запрос.Выполнить().Выбрать();
   Заменить = 0;
   Пока Выборка.Следующий() Цикл
      Если  Выборка.Период = Период - 1 Тогда
         Заменить = 1;
      КонецЕсли;
   КонецЦикла;

   Если Заменить = 0 Тогда
      ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
      ТабДокумент.Вывести(ОбластьМакета);   
   Иначе
      ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
      ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;
     
   

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

Добавлено: 19 ноя 2013, 16:13


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

Подскажите может я не то что то делаю.

LordWizard

Цитата: gliokker от 19 ноя 2013, 15:20
Ещё раз здравствуйте

Мне нужно заменить одну область макета на другую и наоборот при определённом условии
Делаю я это в УСХП докумнте кадровое перемещени сотрудников организации
Внешняя обработка
Задача следующая
Если у сотрудника перемещаемого на другую должность либо в другое подразделение меняется сумма тарифа ну или оклада то должно писатся одно если же не изменились то другое.
Я пробывал вот так
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
ОбластьМакета.Параметры.Заполнить(Выборка);
Выборка = Запрос.Выполнить().Выбрать();
        Заменить = 0;
    Пока Выборка.Следующий() Цикл
    Если  Выборка.Период = Период - 1 Тогда
Заменить = 1;
КонецЕсли;
КонецЦикла;
Если Заменить = 0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокЗаменяемая");
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЦикла;

Но не работает да и помоему тут что то не то получается
я даже не могу понять как это сделать
может кто то уже делал подскажите?

Вопрос: а что ты передаешь в параметр "Период", а потом еще и уменьшаешь на 1? :xfbnsdfb:
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Теги:

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

Рейтинг@Mail.ru

Поиск