Dmitry Zhurbenko


Последняя строка таблицы на одной странице вместе с подвалом

ВместеСоСледующим
1 Добавил: Dmitry Zhurbenko
 //После цикла вывода строк

ТабДок.Область(ТабДок.ВысотаТаблицы, ,ТабДок.ВысотаТаблицы,).ВместеСоСледующим = Истина;

Обрезка сигнатуры BOM

BOM
1 Добавил: Dmitry Zhurbenko
Процедура ОбрезатьСигнатуру(ИмяФайла) 
	
		Строка64		= Неопределено;
		Данные 			= Неопределено;
		Данные 			= Новый ДвоичныеДанные(ИмяФайла);
		Строка64		= Base64Строка(Данные);
		Строка64		= Прав(Строка64,СтрДлина(Строка64)-4);
		ДанныеНаЗапись 	= Base64Значение(Строка64);
		ДанныеНаЗапись.Записать(ИмяФайла);
	
	
КонецПроцедуры

Обмен данными XDTO (пример)

Обмен данными XDTO (пример)
XDTO
3 Добавил: Dmitry Zhurbenko

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



&НаСервереБезКонтекста
Функция ПолучитьXMLФайл(ГУИДФормы)
	
	ИмяТемпФайла = ПолучитьИмяВременногоФайла("xml");                                                
	Данные = Новый ЗаписьXML;
	Данные.ОткрытьФайл(ИмяТемпФайла);
	Данные.ЗаписатьОбъявлениеXML();
	Данные.ЗаписатьНачалоЭлемента("Данные");
	
	Фабрика = СоздатьФабрикуXDTO("D:\Приемник.xsd");
	
	РаботникиОбъектТип= Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config","CatalogObject.Работники");
	
		
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.Ссылка РаботникСсылка,
	|	Сотрудники.ПометкаУдаления DeletionMark,
	|	Сотрудники.Родитель РодительСсылка,
	|	Сотрудники.ЭтоГруппа IsFolder,
	|	Сотрудники.Код Code,
	|	Сотрудники.Наименование Description,
	|	Сотрудники.ДатаРождения ДеньРождения,
	|	Сотрудники.ПричинаУвольнения ПричинаУвольнения
	|ИЗ
	|	Справочник.Сотрудники КАК Сотрудники";
	
	Результат = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		РаботникиОбъект = Фабрика.Создать(РаботникиОбъектТип);		
		РаботникиОбъект.Ref = ВыборкаДетальныеЗаписи.РаботникСсылка.УникальныйИдентификатор();
		РаботникиОбъект.Parent = ВыборкаДетальныеЗаписи.РодительСсылка.УникальныйИдентификатор();

		Если ВыборкаДетальныеЗаписи.IsFolder Тогда
			ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи,,"ДеньРождения,ПричинаУвольнения");
		Иначе
			ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи);
			РаботникиОбъект.Автомобиль = Неопределено;
			РаботникиОбъект.Должность = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
            РаботникиОбъект.Комментарий = "Импорт из исходной базы";
			РаботникиОбъект.Организация = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
		КонецЕсли; 
		
		Фабрика.ЗаписатьXML(Данные,РаботникиОбъект);
	КонецЦикла;
	
		
	
	Данные.ЗаписатьКонецЭлемента();
	Данные.Закрыть();
	
	Двоичное=Новый ДвоичныеДанные(ИмяТемпФайла);
	Адрес=ПоместитьВоВременноеХранилище(Двоичное,ГУИДФормы);
	Возврат Адрес;
КонецФункции

&НаКлиенте
Процедура Загрузить(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок = "Выберите файл для загрузки";
	Диалог.Фильтр = "xml |*.xml|"; // картинки
	
	Если Диалог.Выбрать() Тогда
		Сообщить(Диалог.ПолноеИмяФайла);
		
	Иначе
		Возврат;
	КонецЕсли;
	
	ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);
	ГуидФормы = Этаформа.УникальныйИдентификатор;
	Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные,ГуидФормы);
	
	ЗагрузитьНаСервере(Адрес);
	
КонецПроцедуры


&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере(Адрес)
	
	ТемпФайл = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
	ДвоичныеДанные.Записать(ТемпФайл);
	Данные = Новый ЧтениеXML;
	Данные.ОткрытьФайл(ТемпФайл);
	Данные.Прочитать();
	Данные.Прочитать();
	
	Пока СериализаторXDTO.ВозможностьЧтенияXML(Данные) Цикл
		РаботникОбъект = СериализаторXDTO.ПрочитатьXML(Данные);
		РаботникОбъект.ОбменДанными.Загрузка=Истина;
		РаботникОбъект.Записать();
	КонецЦикла; 
	
	Данные.Закрыть();
	
КонецПроцедуры 

Поиск кириллицы в строке

Ищет кириллицу в строке.
кириллица
2 Добавил: Dmitry Zhurbenko
Функция ПоискКириллицы(Текст) Экспорт;
Для i=1040 по 1103 цикл
	Результат = Найти (Текст, Символ(i));
	Если Результат>0 Тогда
		Возврат Истина;
	КонецЕсли; 
КонецЦикла;
Возврат Ложь;

КонецФункции;

транслитерация

транслитерация
2 Добавил: Dmitry Zhurbenko
Функция ЗаменитьСимволы (Источник,Текст,Замена) Экспорт
Результат = Текст;
Для Сч = 1 По СтрДлина(Источник) Цикл
Результат = СтрЗаменить(Результат,Сред(Источник,Сч,1),Сред(Замена,Сч,1));
КонецЦикла;
Возврат Результат;    
КонецФункции 

Функция Транслитерация(Знач Слово) Экспорт
Слово = НРег(Слово);
Слово=СтрЗаменить(Слово,"ш","sh");
Слово=СтрЗаменить(Слово,"щ","shh");
Слово=СтрЗаменить(Слово,"ж","zh");
Слово=СтрЗаменить(Слово,"ц","ts");
Слово=СтрЗаменить(Слово,"ь","'");
Слово=СтрЗаменить(Слово,"ъ", Символ(34)); //двойная кавычка
Слово=СтрЗаменить(Слово,"ч","ch");
Слово=СтрЗаменить(Слово,"её","yeyo");
Слово=СтрЗаменить(Слово,"ёе","yoye");
Слово=СтрЗаменить(Слово,"я","ya");
Слово=СтрЗаменить(Слово,"ю","yu");
Слово=СтрЗаменить(Слово," - ","-");
Слово=СтрЗаменить(Слово," -","-");
Слово=СтрЗаменить(Слово,"- ","-");
Слово=СтрЗаменить(Слово," ","-");
Слово=ЗаменитьСимволы("абвгдезийклмнопрстуфыэ",Слово,"abvgdezijklmnoprstufye");
Возврат Слово;
КонецФункции

Значение из буфера обмена

Возвращает текстовое значение буфера обмена
8.2
4 Добавил: Dmitry Zhurbenko
Функция ПолучитьТекстИзБуфераОбмена() Экспорт
  #Если Клиент Тогда
    Объект = Новый COMОбъект("htmlfile");
    Возврат Объект.ParentWindow.ClipboardData.Getdata("Text");
  #КонецЕсли
КонецФункции

Средневзвешенный курс валюты за указанный период

Средневзвешенный курс валюты за указанный период (запрос для 8.0)
8.0 Средневзвешенный курс
Добавил: Dmitry Zhurbenko
////////////////////////////////////////////////////////////////////////////////
//
// Функция ПолучитьСреднийКурсВалюты
//
// Описание: Возвращает средневзвешенный курс за период
//
//
// Параметры (название, тип, дифференцированное значение)
//
// Возвращаемое значение: 
//
Функция ПолучитьСреднийКурсВалюты(НачПериода, КонПериода, Валюта) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонПериода);
	Запрос.УстановитьПараметр("Валюта", Валюта);
	Запрос.Текст = "ВЫБРАТЬ
	               |	ЕСТЬNULL(ВЫРАЗИТЬ(СУММА(ВложенныйЗапрос.Курс) / КОЛИЧЕСТВО(ВложенныйЗапрос.Период) КАК ЧИСЛО(15, 4)), 0) КАК СреднийКурс
	               |ИЗ
	               |	(ВЫБРАТЬ
	               |		ВложенныйЗапрос.Период КАК Период,
	               |		КурсыВалют.Курс КАК Курс
	               |	ИЗ
	               |		(ВЫБРАТЬ
	               |			МАКСИМУМ(КурсыВалют.Период) КАК ПериодКурса,
	               |			ВложенныйЗапрос.Период КАК Период
	               |		ИЗ
	               |			(ВЫБРАТЬ
	               |				ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
	               |			ИЗ
	               |				(ВЫБРАТЬ
	               |					0 КАК a
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					1
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					2
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					3
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					4
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					5
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					6
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					7
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					8
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					9) КАК aa
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК b
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК bb
	               |					ПО (ИСТИНА)
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК c
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК cc
	               |					ПО (ИСТИНА)
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК d
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК dd
	               |					ПО (ИСТИНА)
	               |			ГДЕ
	               |				aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос
	               |				ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
	               |				ПО КурсыВалют.Период <= ВложенныйЗапрос.Период
	               |					И (КурсыВалют.Валюта = &Валюта)
	               |		
	               |		СГРУППИРОВАТЬ ПО
	               |			ВложенныйЗапрос.Период) КАК ВложенныйЗапрос
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
	               |			ПО ВложенныйЗапрос.ПериодКурса = КурсыВалют.Период
	               |				И (КурсыВалют.Валюта = &Валюта)) КАК ВложенныйЗапрос";
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат 0;
	Иначе
		Выборка = Результат.Выбрать();
		Выборка.Следующий();
		Возврат Выборка.СреднийКурс ;		
	КонецЕсли; 
    
КонецФункции //ПолучитьСреднийКурсВалюты