ЗАПИСЬ ЧТЕНИЕ XML 2

XML
3 Добавил: Артур
   //Имя справочника для примера
    ИмяСправочника = "Номенклатура";
    
    ////////////////////////////////////////////////////////////­/////////////
    //Выгрузка
    
    Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку();
    
    //записываем объявление xml файла: <?xml version="1.0"?>
    Запись.ЗаписатьОбъявлениеXML();
    
    //записываем корневой элемент, по спецификации xml он может быть только один, назовем его "Данные"
    Запись.ЗаписатьНачалоЭлемента("Данные");
    
    //для того чтобы пространства имен не объявлялись сериализатором в кажом элементе, пишем их в корневой элемент
    //они будут работать на все вложеные элементы
    //пространство имен по-умолчанию
    Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config");
    
    //пространства имен остальные префиксы
    Запись.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
    Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    
    //ограничение количества выгружаемых элементов для примера
    Кол = 4;
    Выборка = Справочники[ИмяСправочника].Выбрать();
    Пока Выборка.Следующий() Цикл
        
        //вместо этого кода в боевой реализации выгрузки будет создание ОбъектаXDTO и его сериализация
        //через ФабрикуXDTO и загруженные в нее схемы конфигурации приемника
        СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
        //
        
        Кол = Кол - 1;
        Если Кол=0 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    //записываем конец корневого элемента
    Запись.ЗаписатьКонецЭлемента();
    
    //покажем что получилось
    Текст = Запись.Закрыть();
    Сообщить("Содержимое файла:");
    Сообщить(Текст);
    
    //а теперь загрузим это обратно
    
    ////////////////////////////////////////////////////////////­/////////////
    //Загрузка
    Сообщить("Данные полученные при загрузке:");
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Текст);
    
    //прочитаем начало xml файла
    Чтение.ПерейтиКСодержимому();
    
    //прочитаем начало корневого элемента
    Чтение.Прочитать();
    
    //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
    //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
    Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл
        
        //читаем очередной элемент справочника
        Объект = СериализаторXDTO.ПрочитатьXML(Чтение);
        
        //покажем что прочитали, осталось только записать объект
        Сообщить(""+ТипЗнч(Объект)+" - "+Объект);
    КонецЦикла;
    
    Чтение.Закрыть();

Получить представление [разницы] времени

Функцию удобно использовать для всяких обработок, чтобы получать время выполнения в наглядном виде. Поддерживает разницу дат в милисекундах (но не отлажено полностью эта функция)
Дата
Добавил: markers
// Возвращает представление прошедшего времени
//
// Параметры:
//  РазницаВремени  - Число - Высчитанная разница времени в секундах/милисекундах
//	ВремяВМилисекундах - Булево - Время передано в милисекундах
//
// Возвращаемое значение:
//   Строка   - Представление разницы времени
//
Функция ПолучитьПредставлениеВремени(РазницаВремени, ВремяВМилисекундах = Ложь) Экспорт
	
	РазмерЧаса = 3600;
	РазмерМинуты = 60;
	РазмерСекунды = 1;
	
	Если ВремяВМилисекундах Тогда
		
		РазмерЧаса = РазмерЧаса * 1000;
		РазмерМинуты = РазмерМинуты * 1000;
		РазмерСекунды = РазмерСекунды * 1000;
		
	КонецЕсли;
	
	Часов = Цел(РазницаВремени / РазмерЧаса);
	Минут = Цел((РазницаВремени - (Часов * РазмерЧаса)) / РазмерМинуты);
	Секунд = Цел((РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты))) / РазмерСекунды);
	
	Если ВремяВМилисекундах Тогда
		
		Милисекунд = РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты) + (Секунд * РазмерСекунды));
		
	Иначе
		
		Милисекунд = Цел((РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты) + (Секунд * РазмерСекунды))) * 1000);
		
	КонецЕсли;
	
	ВремяТекст = "";
	
	Если РазницаВремени >= РазмерЧаса Тогда
		
		//ВремяТекст = ВремяТекст + Строка(Часов) + " час.";
		ВремяТекст = ВремяТекст + " " + СтрокаСЧислом(";%1 час;;%1 часа;%1 часов;%1 часа", Часов, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если РазницаВремени >= РазмерМинуты Тогда
		
		//ВремяТекст = ВремяТекст + ?(Часов > 0, ?(Секунд > 0, " ", " и "), "") + Строка(Минут) + " мин.";
		ВремяТекст = ВремяТекст + ?(Часов > 0, ?(Секунд > 0, " ", " и "), "") + " " + СтрокаСЧислом(";%1 минута;;%1 минуты;%1 минут;%1 минут", Минут, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если РазницаВремени >= РазмерСекунды и Секунд > 0 Тогда
		
		//ВремяТекст = ВремяТекст + ?(Минут > 0, ?(Милисекунд > 0, " ", " и "), "") + Строка(Секунд) + " сек.";
		ВремяТекст = ВремяТекст +  ?(Минут > 0, ?(Милисекунд > 0, " ", " и "), "") + " " + СтрокаСЧислом(";%1 секунда;;%1 секунды;%1 секунд;%1 секунд", Секунд, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если Милисекунд > 0 и РазницаВремени <= РазмерСекунды Тогда
		
		//ВремяТекст = ВремяТекст + ?(Секунд > 0, " и ", "") + Строка(Милисекунд) + " мсек.";
		ВремяТекст = ВремяТекст + Строка(Милисекунд) + " мсек.";
		
	КонецЕсли;
	
	Возврат ВремяТекст;
	
КонецФункции // ПолучитьПредставлениеВремени()
// Внимание, если у вас старая платформа и не поддерживает  метод "СтрокаСЧислом" закоментируйте строки и раскоментируйте строки над ними

Получить разницу дат в [секундах, минутах, днях, ...]

Получает разницу дат в указанной единице изменения
Дата
3 Добавил: markers
// Получение запросом

// Возращает разницу переданных дат в указанном типе разницы
//
// Параметры:
//  МеньшаяДата 	- Меньшая (Начальная) дата, к примеру дата документа
//  БольшаяДата 	- Большая (Конечная) дата, к примеру текущая дата
//  Тип		- Тип разницы, поддерживается: секунда, минута, час, день, неделя, месяц, год
//	ВыбиратьБольшуюДатуПервой - В случае если в качестве меньшей даты, указана большая, можно ли их поменять местами
//
// Порядок указания дат не пренципиален, функция сама определит какая из дат большая.
// По умолчанию тип разницы "день".
// Указывать тип можно в любом регистре.
// Возращает целое число!
//
Функция ПолучитьРазницуДатВ(Знач МеньшаяДата, Знач БольшаяДата, Тип = "день", ВыбиратьБольшуюДатуПервой = Истина) Экспорт

	Тип = НРег(Тип);
	
	Если МеньшаяДата > БольшаяДата и ВыбиратьБольшуюДатуПервой Тогда
		
		ВремДата = БольшаяДата;
		БольшаяДата = МеньшаяДата;
		МеньшаяДата = ВремДата;
		
	ИначеЕсли БольшаяДата = МеньшаяДата Тогда 
		
		Возврат 0;
		
	КонецЕсли;
		
	Если Тип = "сек" или Тип = "секунда" или Тип = "секунды" Тогда Возврат БольшаяДата - МеньшаяДата;
	ИначеЕсли Тип = "мин" или Тип = "минута" или Тип = "минуты" Тогда Тип = "МИНУТА"
	ИначеЕсли Тип = "час" или Тип = "часы" Тогда Тип = "ЧАС"
	ИначеЕсли Тип = "день" или Тип = "дней" или Тип = "дни" Тогда Тип = "ДЕНЬ"
	ИначеЕсли Тип = "неделя" или Тип = "недель" или Тип = "недели" Тогда Тип = "НЕДЕЛЯ"
	ИначеЕсли  Тип = "месяц" или Тип = "месяцев" или Тип = "месяцы" Тогда Тип = "МЕСЯЦ"
	ИначеЕсли Тип = "год" или Тип = "лет" Тогда Тип = "ГОД"
	Иначе Возврат 0;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("БольшаяДата", БольшаяДата);
	Запрос.УстановитьПараметр("МеньшаяДата", МеньшаяДата);
	Запрос.УстановитьПараметр("ВидСравнения", Тип);
	Запрос.Текст= "ВЫБРАТЬ РАЗНОСТЬДАТ(&МеньшаяДата, &БольшаяДата, ДЕНЬ) КАК Разница";
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДЕНЬ", Тип);
	Выборка = Запрос.Выполнить().Выбрать(); 
	
	Возврат ?(Выборка.Следующий(), ?(Выборка.Разница <> Null, Выборка.Разница, 0), 0);
		
КонецФункции

// На клиенте

// Возращает разницу переданных дат в указанном типе разницы
//
// Параметры:
//  МеньшаяДата 	- Меньшая (Начальная) дата, к примеру дата документа
//  БольшаяДата 	- Большая (Конечная) дата, к примеру текущая дата
//  Тип		- Тип разницы, поддерживается: секунда, минута, час, день, неделя, месяц, год
//	ВыбиратьБольшуюДатуПервой - В случае если в качестве меньшей даты, указана большая, можно ли их поменять местами
//
// Порядок указания дат не пренципиален, функция сама определит какая из дат большая.
// По умолчанию тип разницы "день".
// Указывать тип можно в любом регистре.
// Возращает целое число!
//
Функция ПолучитьРазницуДатВ(Знач МеньшаяДата, Знач БольшаяДата, Тип = "день", ВыбиратьБольшуюДатуПервой = Истина) Экспорт
	
	Тип = НРег(Тип);
	
	Если МеньшаяДата > БольшаяДата и ВыбиратьБольшуюДатуПервой Тогда
		
		ВремДата = БольшаяДата;
		БольшаяДата = МеньшаяДата;
		МеньшаяДата = ВремДата;
		
	ИначеЕсли БольшаяДата = МеньшаяДата Тогда 
		
		Возврат 0;
		
	КонецЕсли;
	
	Разница = БольшаяДата - МеньшаяДата;	
	
	Если Тип = "сек" или Тип = "секунда" или Тип = "секунды" Тогда
		Возврат Разница;
	ИначеЕсли Тип = "мин" или Тип = "минута" или Тип = "минуты" Тогда
		Возврат Цел(Разница / 60);
	ИначеЕсли Тип = "час" или Тип = "часы" Тогда
		Возврат Цел(Разница / (60*60));
	ИначеЕсли Тип = "день" или Тип = "дней" или Тип = "дни" Тогда 
		Возврат Цел(Разница / (60*60*24));
	ИначеЕсли Тип = "неделя" или Тип = "недель" или Тип = "недели" Тогда
		Возврат Цел(Разница / (60*60*24*7));
	ИначеЕсли  Тип = "месяц" или Тип = "месяцев" или Тип = "месяцы" Тогда
		Возврат Цел(Разница / (60*60*24*30));
	ИначеЕсли Тип = "год" или Тип = "лет" Тогда
		Возврат Цел(Разница / (60*60*24*365));
	Иначе 
		Возврат 0;
	КонецЕсли;
	
КонецФункции

Получить дату через указанное количество [дней, месяцев, лет, ...]

Функция получает при помощи запроса дату через указанный промежуток
Дата
2 Добавил: markers
// Возращает дату через указанное количество в указанном типе
//
// Параметры:
//	Дата1	- Дата от которой будет производится исчисление
//	Кол		- Количество прибавляемых или убавляемых единиц указанного типа
//	Тип		- Тип исчисления, поддерживается: секунда, минута, день, час, неделя, меняс, год
//	Знак	- При значении "+" прибавляет к дате указанное количество единиц указанного типа
//			  При значении "-" отнимает от даты указанное количество единиц указанного типа
//
// По умолчанию тип разницы "День", знак равен "+". 
// Указывать тип можно в любом регистре!
// Допускается передавать отрицательное количество единиц в поле "Кол" и опускании значения "Знак"
// В таком случае функция будет считать значение параметра знак равным "-"
//
Функция ПолучитьДатуЧерез(Дата1, Кол, Знач Тип = "день", Знач Знак = "") Экспорт

	Если Кол = 0 Тогда
		Возврат Дата1;
	КонецЕсли;
	
	Тип = НРег(Тип);
	
	Если Кол < 0 и НЕ ЗначениеЗаполнено(Знак) Тогда
		Кол = Кол * -1;
		Знак = "-";
	ИначеЕсли НЕ ЗначениеЗаполнено(Знак) Тогда
		Знак = "+";
	КонецЕсли;
	
	ЗнакПлюс = ?(Знак = "+", Истина, Ложь);
	
	Если НЕ ЗнакПлюс Тогда
		
		Кол = Кол * -1;
		
	КонецЕсли;
	
	Если Тип = "сек" или Тип = "секунда" или Тип = "секунды" Тогда Тип = "СЕКУНДА"
	ИначеЕсли Тип = "мин" или Тип = "минута" или Тип = "минуты" Тогда Тип = "МИНУТА"
	ИначеЕсли Тип = "час" или Тип = "часы" Тогда Тип = "ЧАС"
	ИначеЕсли Тип = "день" или Тип = "дней" или Тип = "дни" Тогда Тип = "ДЕНЬ"
	ИначеЕсли Тип = "неделя" или Тип = "недель" или Тип = "недели" Тогда Тип = "НЕДЕЛЯ"
	ИначеЕсли  Тип = "месяц" или Тип = "месяцев" или Тип = "месяцы" Тогда Тип = "МЕСЯЦ"
	ИначеЕсли Тип = "год" или Тип = "лет" Тогда Тип = "ГОД"
	Иначе Возврат 0;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Дата", Дата1);
	Запрос.УстановитьПараметр("Кол", Кол);
	Запрос.Текст= "ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, &Кол) КАК Значение";
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДЕНЬ", Тип);
	Выборка = Запрос.Выполнить().Выбрать(); 
	
	Возврат ?(Выборка.Следующий(), Выборка.Значение, 0);
	
КонецФункции

Отправка сообщения в чат-бот телеграм

Удобно использовать при отладке: добавив к условию точки остановки <здесь ваше произвольное условие> И ОповеститьВтелеграм(ОписаниеОшибки()) = Неопределено - отправит в телеграм причину ошибки, если она произошла. Или, условие точки остановки ОповеститьВтелеграм("Процедура окончена") = Неопределено И Ложь - сообщит о том, что точка остановки пройдена
telegram отладка
20 Добавил: mikaelangelo
// отправка любого сообщения, в т.ч. ОписаниеОшибки(), в Телеграм бот
Функция ОповеститьВтелеграм(Сообщение) Попытка 
	
	// 1) Создаем бота в телеграме, для этого нужно перейти в @BotFather и проследовать инструкциям,
	//    по окончании которых нам предоставят Access token	
	ДанныеДоступа = "это Access token";
	
	// 2) однократно получаем ID чата с ботом, предварительно написав боту любое сообщение
	// быстро: https://cms3.ru/kak-poluchit-chat-id-telegram/
	// чуть дольше: из текста json ответа, в объекте chat: "chat": {"id": "ид чата"}
    Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    ТекстJSONОтвета = Соединение.Получить(Новый HTTPЗапрос("bot" + ДанныеДоступа + "/getUpdates")).ПолучитьТелоКакСтроку();
	//(затем можно закомментировать две строчки кода выше)
	ИдЧата = "это chat.id";
	
      // 3) Отправляем сообщение с ранее указанными сообщением, токеном, ид чата
   ЗапрячьТелегу = Новый HTTPСоединение("api.telegram.org",443,,,,15,Новый ЗащищенноеСоединениеOpenSSL());
   ЗапрячьТелегу.Получить(Новый HTTPЗапрос("bot" + ДанныеДоступа + "/sendMessage?chat_id=" + ИдЧата + "&text=" + Сообщение));
	
Исключение КонецПопытки КонецФункции

Соединение и запрос данных из другой базы 1с

делаем запрос в УТ из сторонней базы для поиска документа
V82.COMConnector
8 Добавил: kAndrat
//Подключение к внешней базе
&НаСервере
 Функция ПодключитьВнешнийИсточник(СтрокаСоединения, ОбъектПодключения="V82.COMConnector") 
	 Попытка
		 Connector = Новый COMОбъект("V82.COMConnector");
		 COM = Connector.connect(СтрокаСоединения);
		 Возврат COM;
	 Исключение
		  Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
		  Возврат Неопределено;
	 КонецПопытки;
	 
 КонецФункции	


&НаКлиенте
Процедура Подключение(Команда)
	ПодключениеСервер();
КонецПроцедуры


//Подключение и Выгрузка данных из сторонней базы
&НаСервере
Процедура ПодключениеСервер()
	 Соединение = ПодключитьВнешнийИсточник("Srvr=""ИмяСервера"";Ref=""ИмяБазы"";Usr=""Пользователь"";Pwd=""Пароль"";");
	 Запрос = Соединение.NewObject("Запрос");
	 Запрос.Текст = "ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер
		|		ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|		ГДЕ
		|	РеализацияТоваровУслуг.Номер =  &Номер";
	Запрос.УстановитьПараметр("Номер",Номер);
	РезультатЗапроса = Запрос.Выполнить().Выгрузить(); //Получили COM объект
	Преобразование = ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(РезультатЗапроса));  //преобразовали COM объект

	Для каждого стр из Преобразование Цикл
		Сообщить(стр.номер);
	КонецЦикла;
		
КонецПроцедуры

Cформировать сумму строкой в договор

Cформировать сумму строкой в договор: 375 165 (триста семьдесят пять тысяч сто шестьдесят пять) рублей 07 копеек
сумма строкой в договор
3 Добавил: babys
ОбластьМакета.Параметры.Сумма  = ""+окр(СведенияОДокументе.Сумма) + " (" + ЧислоПрописью(СведенияОДокументе.Сумма,"Л=ru_RU",") рубль, ) рубля, ) рублей, м, копейка, копейки, копеек, ж, 2");

СКД внешние источники данных

СКД внешние источники данных
8 Добавил: Николай Зайцев
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	ТЗВывод = ПолучитьТЗДляСКД();
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 
 
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
 
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);	
	
	ВнешнийНаборДанных = Новый Структура("ТЗ", ТЗВывод); 
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); 
	
	ДокументРезультат.Очистить();
	
 	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры

Как получить дату и время создания элемента справочника, документа по ссылке

9 Добавил: Kams
 // но по GUID можно определить время и дату
Функция ДатаСозданияСсылки(Ссылка)
    ГУИД = Ссылка.УникальныйИдентификатор();
    Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
    Разрядность = СтрДлина(Строка16);
    ЧислоСек = 0;
    Для Позиция = 1 По Разрядность Цикл
        ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка16,Позиция,1))*Pow(16,Разрядность - Позиция);
    КонецЦикла;
    ЧислоСек = ЧислоСек / 10000000;
    Возврат Дата(1582, 10, 15, 04, 00, 00) + ЧислоСек;
КонецФункции   

Подключение к DBF

Подключение к DBF с параметрами
DBF
5 Добавил: Артур
Функция НовоеПодключение2()  //Подключение к DBF
	Таблица = Новый ТаблицаЗначений();

Connection = Новый COMОбъект("ADODB.Connection"); // Создание COM-объекта
	Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;
	         |Data Source=" +КаталогФайла +";
	         |Extended Properties=DBASE III");    
    Connection.BeginTrans();    
   // Создание объекта выполнения команды
    Command = Новый COMОбъект("ADODB.Command");
   // Указание активного соединения 
    Command.ActiveConnection = Connection;    
   // Определение текста команды

	Command.CommandText = "SELECT * FROM Calls WHERE DATE between  @DataN AND @DataK";  //Calls  -название файла DBF
	Дата1 = Формат(НачПериода, "ДФ=MM.dd.yyyy");
	Дата2 = Формат(КонПериода, "ДФ=MM.dd.yyyy");
	
    Param1 = Command.CreateParameter("@DataN", 133, 1);
    Command.Parameters.Append(Param1);
    Param1.Value = Дата1;
	
	Param2 = Command.CreateParameter("@DataK", 133, 1);
    Command.Parameters.Append(Param2);
    Param2.Value = Дата2;

   // Определение типа команды
   //Command.CommandType = 4;
   // Создание объекта набора записей
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    RecordSet = Command.Execute();
	
	Пока RecordSet.EOF=0 Цикл //Цикл по записям файла DBF
	        м= Таблица.Добавить();
		м.Дата 			   	=  RecordSet.Fields("DATE").Value;
		м.Длительность		=  RecordSet.Fields("IDURATION").Value ;
		м.Время	           	=  RecordSet.Fields("ITIME").Value;
		м.СО              	=  RecordSet.Fields("CO").Value   ;
		м.ВнутрНомер        =  RecordSet.Fields("EXTENSION").Value ;
		м.TrunkГруппа       =  RecordSet.Fields("TRUNKGROUP").Value ;
		м.Transfer         	=  RecordSet.Fields("TRANSFER").Value   ;
		м.Цена            	=  RecordSet.Fields("PRICE").Value     ;
		м.Номер           	=  RecordSet.Fields("NUMBER").Value   ;
		м.Статус           	=  RecordSet.Fields("STATUS").Value   ;
		м.ВремяДоОтвета     =  RecordSet.Fields("RINGBEFORE").Value ;
		м.CallerID         	=  RecordSet.Fields("CALLERID").Value  ;
	    RecordSet.MoveNext(); //Переходим к следующей записи
	КонецЦикла;
	RecordSet.Close();

Возврат Таблица;	
КонецФункции