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

Автор Тема: Среда. Вопрос 7  (Прочитано 28770 раз)

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

Оффлайн vlad___2011___

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-19
  • Сайт: 
  • Профессия: Программист 8.1
Re: Среда. Вопрос 7
« Ответ #40: 15 Мар 2013, 15:11 »
Обработка проверки отчета


Оффлайн SergioSS

  • **
  • Сообщений: 52
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-12-29
  • Сайт: 
  • Профессия: Программист 1С
Re: Среда. Вопрос 7
« Ответ #41: 15 Мар 2013, 16:26 »
&НаКлиенте
Процедура Проверка(Команда)
Ошибка = Ложь;
Массив = Новый Массив;
Для каждого Элемент Из Объект.ТаблИсходныеДанные Цикл
Массив.Добавить(Элемент.Число);
КонецЦикла;


Если Объект.Сумма = СуммаПоОтчету(Массив) Тогда
Сообщить("Ошибка отсутствует");
Иначе
Для Индекс = 0 По Массив.Количество()-1 Цикл
Если Объект.Сумма = СуммаПоОтчету(Массив) Тогда Прервать;
КонецЕсли;

Для ИндексСтр = 1 По СтрДлина(Массив[Индекс]) Цикл

ЧислоСтр = Массив[Индекс];

Если Число(Сред(ЧислоСтр,ИндексСтр,1)) = 0 Тогда Продолжить
КонецЕсли;

ПраваяЧасть = Сред(ЧислоСтр,ИндексСтр+2,СтрДлина(ЧислоСтр)-ИндексСтр-1);
ЛеваяЧасть = Лев(ЧислоСтр,ИндексСтр-1);

Если ИндексСтр = 1 Тогда
Массив[Индекс] = Число(Сред(ЧислоСтр,ИндексСтр+1,1) + Сред(ЧислоСтр,ИндексСтр,1) + ПраваяЧасть);
Иначе
Массив[Индекс] = Число(ЛеваяЧасть + Сред(ЧислоСтр,ИндексСтр+1,1) + Сред(ЧислоСтр,ИндексСтр,1) + ПраваяЧасть);
КонецЕсли;


Если СуммаПоОтчету(Массив) = Объект.Сумма Тогда Сообщить("Ошибка находится в строке" + Число(Индекс+1) + "Правильное значение: " + Массив[Индекс]);
Ошибка = Истина;
Прервать;
Иначе Массив[Индекс] = ЧислоСтр;

КонецЕсли;


КонецЦикла;

КонецЦикла;
Если Ошибка = Ложь Тогда Сообщить("Ошибка не найдена")
КонецЕсли;
КонецЕсли;
КонецПроцедуры


&НаКлиенте
Функция СуммаПоОтчету(Массив)
Сумма = 0;
Для Номер = 0 По Массив.Количество() - 1 Цикл

Сумма = Сумма + Массив[Номер];
КонецЦикла;
Возврат Сумма;
КонецФункции // СуммаОтчета()





Оффлайн Efa

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-25
  • Сайт: 
  • Профессия: Программист 1С
Re: Среда. Вопрос 7
« Ответ #42: 15 Мар 2013, 23:19 »
Без рекурсии по поиску разницы в 9 между цифрами соседнего порядка, запрос будет  выглядеть примерно так:

выбрать
12 как ф1,
26 как ф2,
45 как ф3,
119 как сумма
поместить  ВТ
;
выбрать
вт.ф1+вт.ф2+вт.ф3 как суммаПолей,
(вт.ф1+вт.ф2+вт.ф3 - вт.сумма) как разность,
(выбор когда
    (вт.ф1+вт.ф2+вт.ф3) = вт.сумма тогда
    "ошибка отсутствует"
    иначе
    выбор когда ((вт.ф1+вт.ф2+вт.ф3) - вт.сумма)/9 = Выразить(((вт.ф1+вт.ф2+вт.ф3) - вт.сумма)/9 как число(10)) тогда
    "можно найти ошибку" 
    иначе
    "ошибка не найдена"
    конец
    конец)
    как ответ
    из ВТ


Теги:
 


* Реклама

* Поиск

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

* Реклама

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

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

oleg-x
64 Сообщений
wise wise
58 Сообщений
AIFrame AIFrame
50 Сообщений
alexandr_ll
46 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
43 Сообщений
alex0402
41 Сообщений
LexaK
32 Сообщений
BuhRust
28 Сообщений
andron81_81
24 Сообщений
MuI_I_Ika MuI_I_Ika
22 Сообщений

* Кто онлайн

  • Точка Гостей: 172
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal