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

Прошу объяснить

Автор Ary, 22 дек 2011, 13:58

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

Ary

Для чего пишутся операторы "Если Истина Тогда"? Эти проверки ничего не меняют в логике.
В этом стиле написаны многие, если не все процедуры и функции общего модуля "ПроведениеРасчетов".
В приводимой ниже функции эти операторы "Если..." выделены.
Заранее благодарю.



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

   Запрос.Текст = ТекстЗапроса;
   
   Возврат Запрос.Выполнить().Выбрать();
   
КонецФункции

Klyacksa

Ну может быть, раньше были настройки, а теперь просто поставили заглушки? Ну или обратный вариант: планируется сделать настройки, но пока нету
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

AntonB

Сам так иногда делаю... :)
пишу при отладке
Если 1=1 Тогда
если нужно включить кусок и меняю одним движением на
Если 1=0 Тогда
если нужно выключить

Удобнее даже, чем выписывать Истина/Ложь :)
Но потом, конечно, желательно бы убирать...
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Теги:
Рейтинг@Mail.ru

Поиск