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

Помогите решить Тест

Автор ok_istina, 14 авг 2011, 16:09

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

ok_istina

Здравствуйте!
Помогите пожалуйста решить тест по 1с.

1. Есть ли в приведенном ниже куске из текста программы какие либо ошибки, присутствуют ли неэффективные решения? Если есть, то исправьте ошибки, повысьте эффективность.

Для Каждого Товар Из ТабличнойЧасти Цикл
   ЕстьХотьОдноЯблоко = ложь;
   Если Товар.Наименование = "Яблоко" Тогда
      ЕстьХотьОдноЯблоко = Истина;
   КонецЕсли;
КонецЦикла;   
Если НЕ ЕстьХотьОдноЯблоко Тогда
   Предупреждение("Яблок нет в этом документе!");   
КонецЕсли;


2. Данная функция вызывается без последнего аргумента. Какое значение возвращает нижеприведенная функция? Можете объяснить, как работает функция?

Функция НС (Строка,Пока,ППВ=0)
   Ном = Найти(Строка,Пока);
   Возврат ?(Ном = 0, ППВ, НС (Сред(Строка,Ном+1),Пока,ППВ+Ном));
КонецФункции

3. Какое значение возвращает нижеприведенная функция? Можете объяснить, как работает функция?

Функция НП(Строка,Вие)
     ДлинаВх = СтрДлина(Вие);     
     Позиция = СтрДлина(Строка);
     Позиция = Позиция - ДлинаВх;
     Пока Позиция >= ДлинаВх Цикл
          Если Сред(Строка, Позиция + 1, ДлинаВх) = Вие Тогда
               Возврат Позиция + 1;
          КонецЕсли;
          Позиция = Позиция - 1;
     КонецЦикла;
     Возврат 0;
КонецФункции

4. Какое значение возвращает нижеприведенная функция? Можете объяснить, как работает функция?

Функция НР(Строка, ПП)
   НС = СтрЧислоВхождений(Строка, ПП);
   Строка2 = Строка;   ПВ = 0;
   Пока НС>1 Цикл
      НомерС = найти(Строка2,ПП);
      ПВ = ПВ + НомерС+СтрДлина(ПП);
      Строка2 = Сред(Строка2, НомерС+СтрДлина(ПП), СтрДлина(Строка2)-НомерС);
      НС = НС-1;   
   КонецЦикла;
   ПВ = ПВ + найти(Строка2,ПП);
   Возврат ПВ;
КонецФункции

5. Чем отличаются вышеприведенные три функции? Эффективно ли работают функции? В каких ситуациях какая из функций работает быстрее? Можно ли повысить эффективность?

6. Есть ли в приведенном ниже куске из текста программы какие либо ошибки, присутствуют ли неэффективные решения? Если то исправьте ошибки, повысьте эффективность.

Зап = Новый Запрос;
Зап.Текст=
"ВЫБРАТЬ
|   ЦеныСрезПоследних.Период,
|   ЦеныСрезПоследних.Номенклатура,
|   ЦеныСрезПоследних.Цена
|ИЗ
|   РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
|ГДЕ
|   ЦеныСрезПоследних.Период = &Период";

Зап.УстановитьПараметр("Период",Дата('20070101010101'));
Рез = Зап.Выполнить().Выбрать();
Рез.Следующий();
Если Рез.Период = '20070101010101' Тогда
   НовогодняяЦена = Рез.Цена;   
КонецЕсли;


7. Есть ли в приведенном ниже куске из текста программы какие либо ошибки, присутствуют ли неэффективные решения? Если то исправьте ошибки, повысьте эффективность.

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



Заранее Большое всем спасибо!!!

sergejK74


ЕстьХотьОдноЯблоко = ложь;
Для Каждого Товар Из ТабличнойЧасти Цикл
   Если Товар.Наименование = "Яблоко" Тогда
      ЕстьХотьОдноЯблоко = Истина;
      прервать;
   КонецЕсли;
КонецЦикла;   
Если НЕ ЕстьХотьОдноЯблоко Тогда
   Предупреждение("Яблок нет в этом документе!");   
КонецЕсли;
Кнопочка Спасибо - слева!

sergejK74

Цитировать2. Данная функция вызывается без последнего аргумента. Какое значение возвращает нижеприведенная функция? Можете объяснить, как работает функция?

Функция НС (Строка,Пока,ППВ=0)
   Ном = Найти(Строка,Пока);
   Возврат ?(Ном = 0, ППВ, НС (Сред(Строка,Ном+1),Пока,ППВ+Ном));
КонецФункции
Вообще-то функция не рабочая (использовано зарезервированное слово Пока). А должна возвращать либо 0, либо последнюю позицию вхождения подстроки Пока в Строка (за счет рекурсии)
Кнопочка Спасибо - слева!

Теги:

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

Рейтинг@Mail.ru

Поиск