расчет суммы в строке табличной части

расчет суммы в строке табличной части
Табличная часть
1 Добавил: buketoff
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
	РассчитатьСумму();
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьСумму()
	Стр = Элементы.Товары.ТекущиеДанные;
	Стр.Сумма = Стр.Цена * Стр.Количество;
КонецПроцедуры


ip адрес локального компьютера

узнать ip адрес локального компьютера
ip адресс
2 Добавил: buketoff
&НаКлиенте
Процедура УзнатьIP(Команда)
	
	COMОбъект1 = Новый COMОбъект("WbemScripting.SWbemLocator");
	COMОбъект2 = COMОбъект1.ConnectServer(".","root\CIMV2");
	
	Результат = COMОбъект2.ExecQuery("SELECT IPAddress FROM 
	|Win32_NetworkAdapterConfiguration 
	|WHERE IPEnabled = TRUE");
	
	Для каждого Строка Из Результат Цикл
		Для каждого ПодСтрока Из Строка.IPAddress Цикл 
			Стр = Объект.IPAddress.Добавить();
			Стр.Адрес = ПодСтрока;
			//Сообщить(ПодСтрока);
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры

Пересчет сумм в табличной части документа

2 Добавил: Yuriy K.
НА СЕРВЕРЕ:

СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ДокЗаказ);	
СтруктураДействий = Новый Структура;	
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ДокЗаказ.Товары, СтруктураДействий, Неопределено);


НА КЛИЕНТЕ:

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



СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаСтрока.Склад, ПараметрыУказанияСерий));
				ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаСтрока, СтруктураДействий, Неопределено);

Загрузка XML в 1С из FTP

ftp xml загрузка
Добавил: Yuriy K.
КаталогВрФл = КаталогВременныхФайлов();
	
	ФТПСоединение = Новый FTPСоединение("адрес",, "логин", "пароль",, Истина);
	
	НайдемФайлаНаФТП = ФТПСоединение.НайтиФайлы("/", "*.xml");
	
	Если НайдемФайлаНаФТП.Количество() = 0 Тогда
		ФТПСоединение = Неопределено;
		Возврат;
	КонецЕсли;
	
	ДанныеИзФайлаТовары = Новый ТаблицаЗначений();
	ДанныеИзФайлаТовары.Колонки.Добавить("Артикул");
	ДанныеИзФайлаТовары.Колонки.Добавить("ИД");
	ДанныеИзФайлаТовары.Колонки.Добавить("Производитель");
	ДанныеИзФайлаТовары.Колонки.Добавить("Номенклатура");
	ДанныеИзФайлаТовары.Колонки.Добавить("Количество");
	ДанныеИзФайлаТовары.Колонки.Добавить("Цена");
	ДанныеИзФайлаТовары.Колонки.Добавить("Размер");
	ДанныеИзФайлаТовары.Колонки.Добавить("Цвет");
	ДанныеИзФайлаТовары.Колонки.Добавить("Серия");
	ДанныеИзФайлаТовары.Колонки.Добавить("ЦенаСоСкидкой");
	
	ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар");
	ЕдиницаИзмШТ = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("796");
	ПриоритетСредний = Справочники.Приоритеты.НайтиПоНаименованию("Средний");
	СкладОсновной = Справочники.Склады.НайтиПоНаименованию("Основной склад");
	ТиповоеСоглашение = Справочники.СоглашенияСКлиентами.НайтиПоНаименованию("Основное");
	ВалютаДок = Константы.ВалютаРегламентированногоУчета.Получить(); 
		
	Для каждого ФайлФТП из НайдемФайлаНаФТП Цикл
		
		ДанныеИзФайлаТовары.Очистить();
		НомерКП = ФайлФТП.ИмяБезРасширения;
		ДатаКП = "";
		
		ПутьКФайлуОбъект = КаталогВрФл + ФайлФТП.Имя;
		
		Попытка
		
		ФТПСоединение.Получить(ФайлФТП.ПолноеИмя, ПутьКФайлуОбъект);		
		ФТПСоединение.Переместить(ФайлФТП.ПолноеИмя, "OldFiles" + "\" + ФайлФТП.Имя);
				
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ПутьКФайлуОбъект);
		
		Пока ЧтениеXML.Прочитать() Цикл
			Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда Продолжить; КонецЕсли;
			ИмяУзла = ЧтениеXML.ЛокальноеИмя;	
			Если ИмяУзла = "PRODUCT" Тогда
				НоваяСтрока = ДанныеИзФайлаТовары.Добавить();
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "ID" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.ИД = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "ARTICLE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Артикул = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "SIZE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Размер = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "COLOR" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Цвет = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "NAME" И ЧтениеXML.КонтекстПространствИмен.Глубина = 5 Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Серия = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PROPERTY_PROVIDER_NAME" И ЧтениеXML.КонтекстПространствИмен.Глубина = 5 Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Производитель = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "NAME" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Номенклатура = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "QUANTITY" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Количество = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PRICE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Цена = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PRICE_DISCOUNT" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.ЦенаСоСкидкой = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "DATE" Тогда
				ЧтениеXML.Прочитать();
				ДатаСтр = СокрЛП(ЧтениеXML.Значение);
				ДатаКП = Дата(ДатаСтр);
				Продолжить;
			КонецЕсли;
		КонецЦикла;
		
		ЧтениеXML.Закрыть();
		УдалитьФайлы(ПутьКФайлуОбъект);

Программная обработка расшифровки отчета на СКД на обычных формах

Добавил: Igozz
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   Перем ВыполненноеДействие;

   // Запретим стандартную обработку расшифровки
 
    СтандартнаяОбработка = Ложь;

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

        Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
            
            ФормированиеПечатныхФорм.ПеренестиПорядокВОтчет(Настройки);
            
           // Если требется упорядочить - упорядочим в текущем отчете
 
            КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
            СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);


        Иначе
            
             // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
 
            Отчет = Отчеты[Метаданные().Имя].Создать();
            Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
            Форма = Отчет.ПолучитьФорму();
            Форма.ОбновитьОтчет();
            Форма.Открыть();

        КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Пауза

Предоставляет функционал паузы в 1С
sleep пауза
Функция Ожидать(ВремяОжидания) Экспорт
    
    Если ВремяОжидания <> 0 Тогда
        
        НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
        НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
        
        Попытка
            Замыкание = Новый HTTPСоединение(
                "127.0.0.0",,,,НастройкиПрокси,
                ВремяОжидания);
            Замыкание.Получить(Новый HTTPЗапрос());
        Исключение
            ВремяОжидания = 0;
        КонецПопытки;
        
    КонецЕсли;
    
КонецФункции

Сократить лидирующие нули

Убирает лидирующие нули в строке без пробелов
Лидирующие нули Строка Сокращение Убрать нули
1 Добавил: ChOP
Функция УбратьЛидирующиеНули(СокращаемаяСтрока)

		Возврат СтрЗаменить(СокрЛ(СтрЗаменить(СокращаемаяСтрока,"0"," "))," ","0");

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

Есть реквизит у объекта

6 Добавил: Igozz
Функция ЕстьРеквизитУОбъекта(Объект, ИмяРеквизита) Экспорт
	
	СлучайноеЗначение= Новый УникальныйИдентификатор();
    Буфер = Новый Структура(ИмяРеквизита, СлучайноеЗначение);
    ЗаполнитьЗначенияСвойств(Буфер, Объект);
    Возврат Буфер[ИмяРеквизита] <> СлучайноеЗначение;
	
КонецФункции

Убрать лишние символы из строки

Возвращает строку, состоящую только из цифр и символов русского и английского алфавита
1 Добавил: Igozz
Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
	РезультирующаяСтрока = "";
	Для н = 1 По СтрДлина(Строка) Цикл
		Если (КодСимвола(Строка, н) >= 48 И КодСимвола(Строка, н) <= 57)
			ИЛИ (КодСимвола(Строка, н) >= 65 И КодСимвола(Строка, н) <= 90)
			ИЛИ (КодСимвола(Строка, н) >= 97 И КодСимвола(Строка, н) <= 122)
			ИЛИ (КодСимвола(Строка, н) >= 1040 И КодСимвола(Строка, н) <= 1103) Тогда
			РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
		КонецЕсли;
	КонецЦикла;
	Возврат РезультирующаяСтрока;
КонецФункции

Загрузка данных из Excel

Excel Эксель
4 Добавил: Yuriy K.
&НаСервере
Функция ПолучитьТЗДляНестандарта()
	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("ЕдИзм", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
	Результат.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Результат.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
	Возврат Результат;
КонецФункции

&НаКлиенте
Процедура Расш1_ЮКОЗ_ЗагрузитьНестандартПосле(Команда)
	
	Результат = ПолучитьТЗДляНестандарта();
	
	Режим = РежимДиалогаВыбораФайла.Открытие; 
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
	ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
	Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx"; 
	ДиалогОткрытияФайла.Фильтр = Фильтр; 
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь; 
	ДиалогОткрытияФайла.Заголовок = "Выберите файл"; 
	
	Если ДиалогОткрытияФайла.Выбрать() Тогда 
		
		Попытка
			Эксель = Новый COMОбъект("Excel.Application");
		Исключение
			Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!"); 
			Возврат;
		КонецПопытки;
		
		Книга = Эксель.WorkBooks.Open(ДиалогОткрытияФайла.ПолноеИмяФайла);
		Лист = Книга.WorkSheets(1);
		
		НомерСтроки = 2;
				
		Пока НЕ ПустаяСтрока(Лист.Cells(НомерСтроки, 1).Value) Цикл
			
			НоваяСтрока = Результат.Добавить();
			НоваяСтрока.Артикул	= СокрЛП(Лист.Cells(НомерСтроки,1).Value);
			НоваяСтрока.Номенклатура	= СокрЛП(Лист.Cells(НомерСтроки,2).Value);
			НоваяСтрока.Характеристика	= СокрЛП(Лист.Cells(НомерСтроки,3).Value);
			НоваяСтрока.Количество	= СокрЛП(Лист.Cells(НомерСтроки,4).Value);
			НоваяСтрока.ЕдИзм	= СокрЛП(Лист.Cells(НомерСтроки,5).Value);
			НоваяСтрока.Цена	= СокрЛП(Лист.Cells(НомерСтроки,6).Value);
			НоваяСтрока.Сумма	= СокрЛП(Лист.Cells(НомерСтроки,7).Value);
			
			Если НЕ ЗначениеЗаполнено(НоваяСтрока.Номенклатура) Тогда
				ВызватьИсключение "В строке №" + НомерСтроки + " не заполнено наимевание номенклатуры. Загрузка прервана!";	
				Возврат;
			КонецЕсли;
			
			НомерСтроки = НомерСтроки + 1;
			
		КонецЦикла;	
		
		Эксель.Application.Quit();
		
	КонецЕсли;
	
КонецПроцедуры