Это старая версия документа!
Кодинг
Изменение имени переменной в цикле
Функция ДобавитьСтрокиВТЗ(ТЗ,Строка,ТекстДок) стр = ТЗ.Добавить(); Для Каждого Колонка ИЗ ТЗ.Колонки Цикл Стр[Колонка.Имя] = СокрЛП(ТекстДок.ПолучитьСтроку(Строка)); Строка = Строка + 1; КонецЦикла; Возврат Строка КонецФункции
Запуск обработки из макета внешней обработки
- Добавляем внешнюю обработку для запуска как макет с типом «Внешняя компонента».
- В модуле обработки пишем функцию:
&НаСервере Функция ПолучитьОбмен_Данными_XML_2_1_7() Экспорт Обработка = ЭтотОбъект.ПолучитьМакет("EPF_Универсальный_Обмен_Данными_XML_2_1_7"); АдресОбработкиВХранилище = ПоместитьВоВременноеХранилище(Обработка); Возврат АдресОбработкиВХранилище КонецФункции
- На форме обработки создаем событие :«При открытии», В его обработчике пишем:
&НаКлиенте Процедура ПриОткрытии(Отказ) ИмяОбработки = ПодключитьВнешнююОбработку(); // Откроем форму подключенной внешней обработки Форма = ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма.УправляемаяФорма"); //ЭтаФорма.Закрыть(); КонецПроцедуры &НаСервере Функция ПодключитьВнешнююОбработку() Возврат ВнешниеОбработки.Подключить(РеквизитФормыВЗначение("Объект").ПолучитьОбмен_Данными_XML_2_1_7(), , Ложь); КонецФункции
Разбивка строки по разделителю на подстроки
#Если ТолстыйКлиентОбычноеПриложение Тогда Если Счетчик % 100 = 0 Тогда Состояние("Загружается отчет № " + НомерОтчета + " с POS № " + ЛогНомерИзОтчета + ", строка " + Счетчик + "/" + ВсегоСтрок); КонецЕсли; #КонецЕсли //Разделитель в этом случае ";" Стр = СтрЗаменить(ФайлОтчета.ПолучитьСтроку(Счетчик), ";", Символы.ПС); Дата = СтрПолучитьСтроку(Стр, 2); Время = СтрПолучитьСтроку(Стр, 3); НомерЧека = СтрПолучитьСтроку(Стр, 6); Сумма = СтрПолучитьСтроку(Стр, 12);
Прибавляет Нужное количество рабочих дней к дате
Не совсем рабочая функция взята здесь
Функция РабочихДнейСДаты(НачДата,КолвоДней) Экспорт //Перем РабочихДней, ОбычныхДней, ДеньНедели; РабочихДней = 0; ОбычныхДней = 0; Пока РабочихДней <= Число(КолвоДней) Цикл ОбычныхДней = ОбычныхДней+ 1; // определим день недели ДеньНедели=ДеньНедели(НачДата+(ОбычныхДней*86400)); // если не выходной, то прошел еще один рабочий день Если ДеньНедели < 6 Тогда РабочихДней=РабочихДней+1; КонецЕсли; КонецЦикла; Возврат (НачДата + (ОбычныхДней*86400)); КонецФункции
Читает текст с разделителями в ТЗ
Разделитель в данном случае - ";"
Функция ПрочитатьТекстВТЗ(ПутьКФайлу,ИмяФайла) Реализации = Новый ТаблицаЗначений; Реализации.Колонки.Добавить("Номер"); Реализации.Колонки.Добавить("Дата"); Реализации.Колонки.Добавить("Сумма"); Реализации.Колонки.Добавить("ИНН"); // загрузим текст Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ПутьКФайлу+"\"+ИмяФайла); КоличествоСтрок = Текст.КоличествоСтрок(); Пока Инд <= КоличествоСтрок Цикл Стр = СтрЗаменить(Текст.ПолучитьСтроку(Инд),";",Символы.ПС); СтрТЗ = Реализации.Добавить(); СтрТЗ.Номер = СокрЛП(СтрПолучитьСтроку(Стр,1)); СтрТЗ.Дата = СтрПолучитьСтроку(Стр,2); СтрТЗ.Сумма = СтрПолучитьСтроку(Стр,3); СтрТЗ.ИНН = СтрПолучитьСтроку(Стр,4); КонецЦикла; Возврат Реализации // возвращаем ТЗ КонецФункции
Журналирование (Логирование) работы обработки в *.txt
В имени файла слова должны идти через "_", например: "Выгрузка_реализаций"
Функция ПолучитьЖурнал(ПутьКФайлу,ИмяФайла) Путь = ПутьКФайлу+"\"+Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy_hh_mm_ss")+"_"+ИмяФайла+".txt"; Журнал = Новый ТекстовыйДокумент; Журнал.ДобавитьСтроку("Начало работы"); Журнал.Записать(Путь); Возврат Журнал КонецФункции