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

Внешняя обработка. Вывод чисел, которые без остатка делятся на количество своих цифр

Автор Хомяк, 02 июл 2017, 16:48

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

Хомяк

Здравствуйте! Я нуб в 1с от слова совсем. Есть задание:

Написать внешнюю обработку, которая перебирает целые числа от 0 до бесконечности и выводит на экран те, которые делятся без остатка на количество разрядов (знаков) этого числа (т.е. те двухзначные, которые делятся на 2, трехзначные на три и т.д.). Выполнение обработки должно остановиться в тот момент, когда всего будет выведено N (задается пользователем) таких чисел.

Пыталась реализовать так, но в результате исполнения выводится либо, к примеру, 13 чисел, вместо 15, либо вообще зависает и на этом всё. (Опустим уж проблему с модальными окнами)


&НаКлиенте
Процедура ДействиеВыполнить(Команда)
N = 0;
Если ВвестиЧисло(N) Тогда   
k=0;
i=0;
Пока k<=N Цикл
Если i%(СтрДлина(i))=0 Тогда
Сообщить(i);
k=k+1;
i=i+1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры


Помогите, пожалуйста, разобраться :trhregerhg:

alex0402

&НаКлиенте
Процедура ДействиеВыполнить(Команда)
    N = 0;
    Если ВвестиЧисло(N) Тогда           
        k=0;
        i=0;
        Пока k<=N Цикл
            Если i%(СтрДлина(i))=0 Тогда
                Сообщить(i);
                k=k+1;
            КонецЕсли;
            i=i+1;
        КонецЦикла;
    КонецЕсли;       
КонецПроцедуры
Спасибо за Сказать спасибо

Хомяк

Цитата: alex0402 от 02 июл 2017, 16:55
&НаКлиенте
Процедура ДействиеВыполнить(Команда)
    N = 0;
    Если ВвестиЧисло(N) Тогда           
        k=0;
        i=0;
        Пока k<=N Цикл
            Если i%(СтрДлина(i))=0 Тогда
                Сообщить(i);
                k=k+1;
            КонецЕсли;
            i=i+1;
        КонецЦикла;
    КонецЕсли;       
КонецПроцедуры



Большое Вам спасибо :)
Добавлено: 02 июл 2017, 17:37


А может, кто-нибудь подскажет, как всё-таки исправить проблему с модальными окнами в данном коде?

Dethmontt

Хомяк,

&НаКлиенте
Процедура ДействиеВыполнить(Команда)

Оповещение = Новый ОписаниеОповещения("ПослеВводаКоличества", ЭтотОбъект);
ПоказатьВводЧисла(Оповещение, 1, "Введите количество");

КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаКоличества(Число, Параметры) Экспорт

Если НЕ Число = Неопределено Тогда

        k=0;
        i=0;
        Пока k<=Число Цикл
            Если i%(СтрДлина(i))=0 Тогда
                Сообщить(i);
                k=k+1;
            КонецЕсли;
            i=i+1;
КонецЦикла;

    КонецЕсли;   

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

Hakurei

Добрый вечер, надеюсь кто-нибудь поможет с этой же задачей, только я уже 3 дня бьюсь над тем чтобы вывести результат в эксель, но у меня явно все идет не так:

&НаКлиенте
Процедура ВвестиКоличество(Команда)
   Оповещение = Новый ОписаниеОповещения("ПослеВводаКоличества", ЭтотОбъект);
    ПоказатьВводЧисла(Оповещение, 1, "Введите количество");
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаКоличества(Число, Параметры) Экспорт
    Если НЕ Число = Неопределено Тогда
      k=0;i=0;
        Пока k<=Число Цикл
            Если i%(СтрДлина(i))=0 Тогда
                Получить(i);
                k=k+1;
            КонецЕсли;
            i=i+1;
        КонецЦикла; 
    КонецЕсли;               
КонецПроцедуры;   

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Фильтр = НСтр("ru='xlsx файл (*.xlsx)|*.xlsx'");
    ДиалогВыбораФайла.Заголовок = НСтр("ru='Выберите xlsx файл'");
    ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
    ДиалогВыбораФайла.Расширение = "xlsx";
    ДиалогВыбораФайла.ИндексФильтра = 0;
    ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу;
    ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Ложь;
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ПутьКФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьНаКлиенте(ПутьКФайлу, Число)   
   ApplicationExcel = Новый COMОбъект ("Excel.Application");
   ApplicationExcel.Visible = Истина;
   ApplicationExcel.Workbooks.Open(ПутьКФайлу);//свойство Workbooks.Open - это путь к файлу который мы хотим открыть
   ApplicationExcel.Sheets(1).Cells(1, 1).Value = Число; //первая строка первый столбец
   Счетчик=1;
   Пока Получить(i).Следующий() Цикл
       ApplicationExcel.Sheets(1).Cells(Счетчик, 2).Value = i;//с первой строки 2ой столбец
      Счетчик=Счетчик+1;
   КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Выгрузить(Команда)
   ВыгрузитьНаКлиенте()
КонецПроцедуры

antoneus


LexaK

если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск