среда, 30 сентября 2015 г.

Преобразовать строку в массив 1С

//##########################################
//https://rusanovdevlog.blogspot.ru/ - Разработка 1С (примеры кода)
//Rusanov M. (c)
//###########################################
//Функция осуществляется разбор строки вида "02050401;02050402;02050403;02050404" в массив, знак разделения ";"
Функция РазобратьСтрокуВМассив(РазбиваемаяСтрока, ЗнакРазбива = ";",УдалятьПробелы = Истина)
                Если УдалятьПробелы Тогда
                               РазбиваемаяСтрока = СтрЗаменить(РазбиваемаяСтрока," ","");                      
                КонецЕсли;
                РазбиваемаяСтрока = СтрЗаменить(РазбиваемаяСтрока,ЗнакРазбива,Символы.ПС); //заменить знакои разбива на перенос строки    
                МассивРезультат = Новый Массив;
                Попытка
                               Для Сч = 1 По СтрЧислоСтрок(РазбиваемаяСтрока) Цикл
                                               МассивРезультат.Добавить(СтрПолучитьСтроку(РазбиваемаяСтрока,Сч));
                               КонецЦикла;
                Исключение
                               Сообщить("Информация для разработчика: ошибка при разборе строки: " + ОписаниеОшибки());
                КонецПопытки;
                Возврат МассивРезультат;
КонецФункции

//использование
МассивX = РазобратьСтрокуВМассив(РазбираемаяСтрока, ";");


Открытие, вызов контекстного меню в 1С 8.2

//##########################################
//https://rusanovdevlog.blogspot.ru/ - Разработка 1С (примеры кода)
//Rusanov M. (c)
//###########################################
Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
                Скрипт = Новый COMОбъект("WScript.Shell");
                Скрипт.SendKeys("+{F10}"); //эмуляция нажатия Shift+F10
КонецПроцедуры

среда, 16 сентября 2015 г.

Таблица значений в XML и обратно в 1С с помощью XDTO

//##########################################
//https://rusanovdevlog.blogspot.ru/ - Разработка 1С (примеры кода)
//Rusanov M. (c)
//###########################################
//1. Сохраняем таблицу значений в XML
Процедура ВыгрузитьНастройки()
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "РезервноеКопированиеНастроекОтчета_"+Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy");
Фильтр = "Текст(*.XML)|*.XML";            
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";
  Если ДиалогСохраненияФайла.Выбрать() Тогда
            ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
            Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
            XML = Новый ЗаписьXML;
            XML.ОткрытьФайл(ПутьКФайлу);
            Данные = НастройкиСтрок.Выгрузить();
            Сериализатор.ЗаписатьXML(XML,Данные);                    
    КонецЕсли;
 КонецПроцедуры

//2. Загружаем таблицу значений из XML в табличную часть отчета.
Процедура ЗагрузитьНастройки()
              //Выбор файла
              Режим = РежимДиалогаВыбораФайла.Открытие;
              ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);        
              ДиалогОткрытияФайла.ПолноеИмяФайла = "";
              Фильтр = "Текст(*.XML)|*.XML";
              ДиалогОткрытияФайла.Фильтр = Фильтр;
              ДиалогОткрытияФайла.МножественныйВыбор = Ложь;             
              ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки";
              Если ДиалогОткрытияФайла.Выбрать() Тогда 
                  ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
                  ЧтениеXML = Новый ЧтениеXML;
                  ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
                  Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
                  ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML,Тип("ТаблицаЗначений"));
                  ЧтениеXML.Закрыть();
              КонецЕсли;
              НастройкиСтрок.Очистить();
              НастройкиСтрок.Загрузить(ТЗ);
КонецПроцедуры