Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Фев 2018, 02:29
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Помогите оптимизировать обращение к полям  (Прочитано 2728 раз)

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

Оффлайн Хитман

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-06-20
  • Сайт: 
  • Профессия: Программист 8.1
Доброго всем времени суток! Прошу помощи в одном деле: имеется ряд прочих начислений для потребителя, наименования которых вводятся в текстовое поле. затем формируется отчет о том, сколько потребитель должен итого заплатить. Для этого перебираем все начисления


Если ВыборкаЗапроса.Прочее1 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее1.Получить()) = "" , "Прочее 1",СокрЛП(Константы.кск_Прочее1.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее1 = Null,0,ВыборкаЗапроса.Прочее1);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;   
      Если ВыборкаЗапроса.Прочее2 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее2.Получить()) = "" , "Прочее 2",СокрЛП(Константы.кск_Прочее2.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее2 = Null,0,ВыборкаЗапроса.Прочее2);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;   
      Если ВыборкаЗапроса.Прочее3 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее3.Получить()) = "" , "Прочее 3",СокрЛП(Константы.кск_Прочее3.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее3 = Null,0,ВыборкаЗапроса.Прочее3);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;   
      Если ВыборкаЗапроса.Прочее4 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее4.Получить()) = "" , "Прочее 4",СокрЛП(Константы.кск_Прочее4.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее4 = Null,0,ВыборкаЗапроса.Прочее4);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;
      Если ВыборкаЗапроса.Прочее5 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее5.Получить()) = "" , "Прочее 5",СокрЛП(Константы.кск_Прочее5.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее5 = Null,0,ВыборкаЗапроса.Прочее5);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;
      Если ВыборкаЗапроса.Прочее6 <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = ?(СокрЛП(Константы.кск_Прочее6.Получить()) = "" , "Прочее 6",СокрЛП(Константы.кск_Прочее6.Получить()));
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Прочее6 = Null,0,ВыборкаЗапроса.Прочее6);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;
      Если ВыборкаЗапроса.Перерасчет <> 0 Тогда
         ОбластьНачисления.Параметры.Начисления = "Перерасчет";
         ОбластьНачисления.Параметры.Сумма = ?(ВыборкаЗапроса.Перерасчет = Null,0,ВыборкаЗапроса.Перерасчет);
         ТабДокумент.Вывести(ОбластьНачисления);
      КонецЕсли;

Вопрос: как можно оптимизировать этот фрагмент кода, чтобы также просматривал все поля???


Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ну я бы функцию например написал такого вида:
Функция ПолучитьКонстанту(ИмяКонстанты,ВозвращаемыйРезультат = Неопределено)

      Константа = Константы[ИмяКонстанты].Получить();
Если ЗначениеЗаполнено(Константа) Тогда
Возврат Константа;
Иначе
Возврат ВозвращаемыйРезультат;
КонецЕсли;

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

Ну а дальше примерно так:
ОбластьНачисления.Параметры.Начисления = ПолучитьКонстанту("кск_Прочее1","Прочее 1");
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ну я бы функцию например написал такого вида:
Функция ПолучитьКонстанту(ИмяКонстанты,ВозвращаемыйРезультат = Неопределено)

      Константа = Константы[ИмяКонстанты].Получить();
Если ЗначениеЗаполнено(Константа) Тогда
Возврат Константа;
Иначе
Возврат ВозвращаемыйРезультат;
КонецЕсли;

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

Ну а дальше примерно так:
ОбластьНачисления.Параметры.Начисления = ПолучитьКонстанту("кск_Прочее1","Прочее 1");

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ну я бы функцию например написал такого вида:
Функция ПолучитьКонстанту(ИмяКонстанты,ВозвращаемыйРезультат = Неопределено)

      Константа = Константы[ИмяКонстанты].Получить();
Если ЗначениеЗаполнено(Константа) Тогда
Возврат Константа;
Иначе
Возврат ВозвращаемыйРезультат;
КонецЕсли;

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

Ну а дальше примерно так:
ОбластьНачисления.Параметры.Начисления = ПолучитьКонстанту("кск_Прочее1","Прочее 1");

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
[BB]Чо за фигня то???[BB]
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ну я бы функцию например написал такого вида:
Функция ПолучитьКонстанту(ИмяКонстанты,ВозвращаемыйРезультат = Неопределено)

      Константа = Константы"["ИмяКонстанты"]".Получить();
Если ЗначениеЗаполнено(Константа) Тогда
Возврат Константа;
Иначе
Возврат ВозвращаемыйРезультат;
КонецЕсли;

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

Ну а дальше примерно так:
ОбластьНачисления.Параметры.Начисления = ПолучитьКонстанту("кск_Прочее1","Прочее 1");

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Только ковычки убери вот тут --- "["ИмяКонстанты"]".
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Хитман

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-06-20
  • Сайт: 
  • Профессия: Программист 8.1
Спасибо за совет! Можно так попробовать, но код то от этого не слишком то уменьшается....


Теги:
 

Помогите срочно!! В вкладке "Сервис"--> "Журнал регистрации" отражаются все операции как можно определить сделаны ли операции "задним числом" и как вычислить первоначальную информацию какой расчет поменял на другой?

Автор 2ronРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4464
Последний ответ 24 Дек 2015, 15:34
от дфтын
Помогите подобрать Back-office и Front-office

Автор avrnskРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5730
Последний ответ 07 Сен 2010, 12:01
от mohock
Помогите с отчётами в УТ 10.3. (Ведомость по товарам и ведомость по заказам)

Автор chum710Раздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 6062
Последний ответ 28 Мар 2012, 13:02
от chum710
Помогите с отчетом "Валовая прибыль"

Автор Dm109Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 4729
Последний ответ 10 Сен 2015, 13:57
от Dm109
помогите с отчетом "характеристики контрагентов"

Автор Vasya PovarРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2076
Последний ответ 07 Дек 2016, 15:53
от Kironten

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
217 Сообщений
AIFrame AIFrame
78 Сообщений
alexandr_ll
41 Сообщений
MuI_I_Ika MuI_I_Ika
38 Сообщений
BuhRust
29 Сообщений
wise wise
27 Сообщений
andron81_81
25 Сообщений
pavl_vs
23 Сообщений
ildar32 ildar32
22 Сообщений
oleg-x
22 Сообщений

* Кто онлайн

  • Точка Гостей: 215
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal