Примеры кода

makfromkz
Сообщения: 541
Зарегистрирован: Чт май 25, 2017 11:56 am

Re: Примеры кода

Сообщение makfromkz » Вс ноя 17, 2019 8:35 pm

Как правильно удаляются строки из текста при помощи встроенного языка системы «1С:8»?
взято тут: https://center-comptech.ru/articles/st-110214-19.html

Код: Выделить всё

Процедура УдалитьСтрокиТекста()
	ТекстДок = Новый ТекстовыйДокумент;
	ТекстДок.Прочитать("Текст.txt");
	Сч = 1;
	// в цикле удаляются строки содержащие: "1С"
	// обратите внимание: при удалении строки счетчик НЕ МЕНЯЕТСЯ !!!
	Пока Сч < ТекстДок.КоличествоСтрок() Цикл
		Строка = ТекстДок.ПолучитьСтроку(Сч);
		Если Найти(Строка, "1С") > 0 Тогда
			ТекстДок.УдалитьСтроку(Сч);
		Иначе  // Благодаря этой переменной мы 
			// не пропускаем строки в тексте
			Сч = Сч + 1;
		КонецЕсли;
	КонецЦикла;
	ТекстДок.Записать("Текст.txt");
КонецПроцедуры

Администратор
Site Admin
Сообщения: 60
Зарегистрирован: Чт май 25, 2017 11:44 am

Re: Примеры кода

Сообщение Администратор » Пн май 11, 2020 10:15 pm

Сортировка слиянием
взято тут: https://fastcode.im/Templates/6752


Дано два отсортированных по возрастанию массива А и В. Необходимо вывести по возрастанию все элементы этих массивов.

Автор: ildarovich

Код: Выделить всё

ёж = 0; 
Для уж = 0 По А.Количество() + В.Количество() - 1 Цикл 
    що = (уж - ёж) = В.Количество() ИЛИ ёж < А.Количество() И А[ёж] < В[уж - ёж]; 
    Сообщить(?(що, "а" + ёж + "=" + А[ёж], "в" + (уж - ёж) + "=" + В[уж - ёж])); 
    ёж = ёж + що 
КонецЦикла
ё = 0; 
Для Сч = 1 По А.Количество() + В.Количество() Цикл 
    ж = (Сч - 1 - ё) = В.Количество() ИЛИ ё < А.Количество() И А[ё] < В[Сч - 1 - ё]; 
    Сообщить(?(ж, "А[" + ё + "]=" + А[ё], "В[" + (Сч - 1 - ё) + "]=" + В[Сч - 1 - ё])); 
    ё = ё + ж 
КонецЦикла
а вот более человеческий вид:

Код: Выделить всё

Процедура СортировкаСлиянием()
Счетчик = 0; 
Для Счетчик2 = 0 По А.Количество() + В.Количество() - 1 Цикл 
    що = (Счетчик2 - Счетчик) = В.Количество() ИЛИ Счетчик < А.Количество() И А[Счетчик] < В[Счетчик2 - Счетчик]; 
    Сообщить(?(що, "а" + Счетчик + "=" + А[Счетчик], "в" + (Счетчик2 - Счетчик) + "=" + В[Счетчик2 - Счетчик])); 
    Счетчик = Счетчик + що 
КонецЦикла
ёПеременная = 0; 
Для Сч = 1 По А.Количество() + В.Количество() Цикл 
    жПеременная = (Сч - 1 - ёПеременная) = В.Количество() ИЛИ ёПеременная < А.Количество() И А[ёПеременная] < В[Сч - 1 - ёПеременная]; 
    Сообщить(?(жПеременная, "А[" + ёПеременная + "]=" + А[ёПеременная], "В[" + (Сч - 1 - ёПеременная) + "]=" + В[Сч - 1 - ёПеременная])); 
    ёПеременная = ёПеременная + жПеременная 
КонецЦикла
КонецПроцедуры

makfromkz
Сообщения: 541
Зарегистрирован: Чт май 25, 2017 11:56 am

Программное сохранение отчета СКД в файл Excel

Сообщение makfromkz » Ср май 20, 2020 8:09 am

взято тут: [url]https://грибовы.рф/?p=3393[/url]
Формируем файл

Код: Выделить всё

таб1=новый ТабличныйДокумент();
     
    СКД=Отчеты.ПрибыльЗаПериод.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки=СКД.НастройкиПоУмолчанию;
    Дата1=Настройки.ПараметрыДанных.Элементы.Найти("Дата1");
    Дата1.Значение=НачалоМесяца(ТекущаяДата());
    Дата2=Настройки.ПараметрыДанных.Элементы.Найти("Дата2");
    Дата2.Значение=КонецДня(ТекущаяДата());
    ВидЦены=Настройки.ПараметрыДанных.Элементы.Найти("ВидЦены");
    ВидЦены.Значение=Справочники.ВидыЦен.НайтиПоНаименованию("Основная цена закупки");
    Магазин=Настройки.ПараметрыДанных.Элементы.Найти("Магазин");
    Магазин.Значение=Справочники.Магазины.НайтиПоНаименованию("Вологда Торговля");
 
        Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
         
        //Передаем в макет компоновки схему, настройки и данные расшифровки
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки, Расшифровка);    
        ВнешниеПараметры = Новый Структура;    
         
        //Выполним компоновку с помощью процессора компоновки
        ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеПараметры, Расшифровка);    
         
        //Выводим результат в табличный документ
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(таб1);    
        ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);      
         
        таб1.Записать("c:\temp\моржа.xls",ТипФайлаТабличногоДокумента.XLS);
Последний раз редактировалось makfromkz Ср май 20, 2020 8:14 am, всего редактировалось 1 раз.

makfromkz
Сообщения: 541
Зарегистрирован: Чт май 25, 2017 11:56 am

Отправка отчета по электронной почте.

Сообщение makfromkz » Ср май 20, 2020 8:12 am

взято тут: [url]https://грибовы.рф/?p=3393[/url]

Код: Выделить всё

    ПараметрыПочты = новый ИнтернетПочтовыйПрофиль;
    ПараметрыПочты.АдресСервераSMTP = пснмп;
    ПараметрыПочты.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
    ПараметрыПочты.ПользовательSMTP = плогин;
    ПараметрыПочты.ПарольSMTP=ппароль;
     
    Письмо=новый ИнтернетПочтовоеСообщение;
    Письмо.Тема="Комплексный отчет по продажам в магазине Вологда Торговля";
    Письмо.ИмяОтправителя="1С отправка отчетов";
    Письмо.Отправитель=побратный;
    Письмо.Получатели.Добавить(пполучатель);    
    Письмо.Получатели.Добавить("blabla@mail.ru");   
 
    Письмо.Тексты.Добавить("Комплексный отчет по продажам в магазине Вологда Торговля");        
    Письмо.Вложения.Добавить("c:\temp\моржа.xls");
     
    Подключение=новый ИнтернетПочта;
    Попытка
    Подключение.Подключиться(ПараметрыПочты);
    Подключение.Послать(Письмо);

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя