Шаблоны 1С


Добавить новый Назад

Преобразование строки в число

Преобразование строки в число без выбрасывания исключений при получении числа в виде строи из внешних источников

вЧисло

Добавил: acsent
Функция вЧисло(Знач Парам)
	
	Парам = СтрЗаменить(Парам, Символы.НПП, "");
	Парам = СтрЗаменить(Парам, " ", "");
	Парам = СтрЗаменить(Парам, ",", ".");
	
	Попытка
		Возврат Число(Парам);
	Исключение
		Возврат 0;
	КонецПопытки;	
	
КонецФункции
Добавить комментарий

Блокировка

Блокировка

Блокировка

Добавил: Александр
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.Стоимость");
ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();
Добавить комментарий

глТекущийПользователь

глТекущийПользователь

глТекущийПользователь

Добавил: Александр
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
ПодразделениеОрганизации = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
ЦФО = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделение");
Добавить комментарий

Чтение файла XML в объект XDTO по схеме *.xsd

Чтение файла XML в объект XDTO по схеме *.xsd с преобразованием типов согласно схеме

ФабрикаXDTO ОбъектXDTO Схема XSD

Добавил: acsent
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл(ИмяФайла);

Фабрика = СоздатьФабрикуXDTO(ИмяФайлаСхемы); //*.xsd
ОбъектXDTO = Фабрика.ПрочитатьXML(ЧтениеXML);

ЧтениеXML.Закрыть();
Добавить комментарий

Чтение файла XML в объект XDTO

Чтение файла XML в объект XDTO

ОбъектXDTO ФабрикаXDTO

Добавил: acsent
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
	
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
	
ЧтениеXML.Закрыть();
	
Добавить комментарий

Пересчет строки товаров

УТ11, пересчитать сумму, ндс на сервере

УТ11

Добавил: acsent
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Источник);
	
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
	
КэшированныеЗначения = Неопределено;
		
ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаТЧ, СтруктураДействий, КэшированныеЗначения);
Добавить комментарий

ЗаполнитьМассивУникальнымиЗначениями

Заполняет массив-приемник уникальными значениями из массива-источника.

Коллекции

Добавил: m.bolsun
// Заполняет массив-приемник уникальными значениями из массива-источника.
// Если элемент в массиве-приемнике уже существует, то добавления нового элемента не происходит.
//
// Параметры:
//  МассивПриемник – Массив – массив, который заполняется уникальными значениями
//  МассивИсточник – Массив – массив, из которого подбираются элементы в массив-приемник.
// 
Процедура ЗаполнитьМассивУникальнымиЗначениями(МассивПриемник, МассивИсточник) Экспорт
	
	Для Каждого Элемент Из МассивИсточник Цикл
		
		Если МассивПриемник.Найти(Элемент) = Неопределено Тогда
			
			МассивПриемник.Добавить(Элемент);
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры
Добавить комментарий

ПрочитатьXMLВТаблицу

Преобразует текст формата XML в таблицу значений, при этом колонки таблицы формируются на основе описания в XML.

XML

Добавил: m.bolsun
// Преобразует текст формата XML в таблицу значений,
// при этом колонки таблицы формируются на основе описания в XML.
//
// Параметры:
//  ТекстXML     - текст в формате XML.
//
// Схема XML:
//<?xml version="1.0" encoding="utf-8"?>
//<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
//  <xs:element name="Items">
//	<xs:complexType>
//	  <xs:sequence>
//		<xs:element maxOccurs="unbounded" name="Item">
//		  <xs:complexType>
//			<xs:attribute name="Code" type="xs:integer" use="required" />
//			<xs:attribute name="Name" type="xs:string" use="required" />
//			<xs:attribute name="Socr" type="xs:string" use="required" />
//			<xs:attribute name="Index" type="xs:string" use="required" />
//		  </xs:complexType>
//		</xs:element>
//	  </xs:sequence>
//	  <xs:attribute name="Description" type="xs:string" use="required" />
//	  <xs:attribute name="Columns" type="xs:string" use="required" />
//	</xs:complexType>
//  </xs:element>
//</xs:schema>
//
// Примеры XML-файлов см. в демонстрационной конфигурации.
// 
// Пример использования:
//   КлассификаторТаблица = ПрочитатьXMLВТаблицу(РегистрыСведений.АдресныйКлассификатор.
//       ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст());
//
// Возвращаемое значение:
//  ТаблицаЗначений.
//
Функция ПрочитатьXMLВТаблицу(ТекстXML) Экспорт
	
	Чтение = Новый ЧтениеXML;
	Чтение.УстановитьСтроку(ТекстXML);
	
	// Прочитаем первый узел и проверим его
	Если Не Чтение.Прочитать() Тогда
		ВызватьИсключение("Пустой XML");
	ИначеЕсли Чтение.Имя <> "Items" Тогда
		ВызватьИсключение("Ошибка в структуре XML");
	КонецЕсли;
	
	// Получим описание таблицы и создадим ее
	ИмяТаблицы = Чтение.ПолучитьАтрибут("Description");
	ИменаКолонок = СтрЗаменить(Чтение.ПолучитьАтрибут("Columns"), ",", Символы.ПС);
	Колонок = СтрЧислоСтрок(ИменаКолонок);
	
	ТаблицаЗначений = Новый ТаблицаЗначений;
	Для Сч = 1 По Колонок Цикл
		ТаблицаЗначений.Колонки.Добавить(СтрПолучитьСтроку(ИменаКолонок, Сч), Новый ОписаниеТипов("Строка"));
	КонецЦикла;
	
	// Заполним значения в таблице
	Пока Чтение.Прочитать() Цикл
		
		Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда
			Продолжить;
		ИначеЕсли Чтение.Имя <> "Item" Тогда
			ВызватьИсключение("Ошибка в структуре XML");
		КонецЕсли;
		
		новСтр = ТаблицаЗначений.Добавить();
		Для Сч = 1 По Колонок Цикл
			ИмяКолонки = СтрПолучитьСтроку(ИменаКолонок, Сч);
			новСтр[Сч-1] = Чтение.ПолучитьАтрибут(ИмяКолонки);
		КонецЦикла;
		
	КонецЦикла;
	
	// Заполним результат
	Результат = Новый Структура;
	Результат.Вставить("ИмяТаблицы", ИмяТаблицы);
	Результат.Вставить("Данные", ТаблицаЗначений);
	
	Возврат Результат;
	
КонецФункции // ПрочитатьXMLВТаблицу()
Добавить комментарий

Диалог выбора файла

Стандартный диалог выбора файла

ДиалогВыбораФайла РежимДиалогаВыбораФайла

Добавил: slavik
    Режим = РежимДиалогаВыбораФайла.Открытие; 
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
    ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
    Фильтр = "Текст(*.txt)|*.txt"; 
    ДиалогОткрытияФайла.Фильтр = Фильтр; 
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь; 
    ДиалогОткрытияФайла.Заголовок = "Выберите файл"; 

    Если ДиалогОткрытияФайла.Выбрать() Тогда 
        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; 
    КонецЕсли;
Добавить комментарий

Дата создания ссылки

Получение даты и времени по ГУИДу ссылки

Добавил: acsent
Функция ДатаСозданияСсылки(Ссылка) Экспорт
	
	Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
		Возврат Неопределено;
	КонецЕсли;	
		
	Момент = Дата(1, 1, 1);
	Попытка
		
        УИ = Строка(Ссылка.УникальныйИдентификатор());
        УИ = ВРег(СтрЗаменить(УИ,"-",""));
		
		Если Сред(УИ, 13, 1) = "1" Тогда
			
            Значение16 = ВРег(Сред(УИ, 14, 3) + Сред(УИ, 9, 4) + Сред(УИ, 1, 8));
            Цифры16    = "123456789ABCDEF";
            Значение10 = 0;
            Длина16    = СтрДлина(Значение16);
			
			Для Ном = 1 По Длина16 Цикл
                Значение10 = Значение10 + Pow(16, Длина16-Ном)*Найти(Цифры16, Сред(Значение16, Ном, 1));
			КонецЦикла;
			
            Значение10 = Значение10/10000000;
            Момент     = Дата(1582, 10, 15, 3, 0, 0) + Значение10;
			
		КонецЕсли;
		
    Исключение
    КонецПопытки;
	
	Возврат Момент;
		
КонецФункции
Добавить комментарий