Все публикации

БСП
Разработки

Форматирование кода

Форматирование кода 1С для TurboConf: Установка отступов, сдвигов, приведение к каноническому написанию.
Phoenix 12 2
Бесплатно

Переключатель активной задачи

Возможность вести список задач для установки активной задачи в TurboConf
Phoenix 12 2
Бесплатно

TurboConf - расширение Конфигуратора 1С Промо

TurboConf повышает эффективность работы в Конфигураторе 1С и помогает программисту автоматизировать свои задачи.
bolsun
5 000 руб.

Курс по Web-сервисам и XDTO в 1С

В курсе подробно рассматривается работа с механизмом XDTO: фабрика XDTO, XDTO-пакеты, типы XDTO, объекты и значения XDTO, сериализатор XDTO. А также подробно рассматривается работа с Web-сервисами 1С: создание Web-сервиса, работа с WS-ссылками, работа со с...
1 500 руб.

Выбор файла управляемое приложение

freelance_1C 17 2
&НаКлиенте
Процедура ЗагрузитьФайл(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Фильтр 			= НСтр("ru=’Книга Excel 97 (*.xls)|*.xls|Книга Excel 2007 (*.xlsx)|*.xlsx'");
	Диалог.Заголовок 		= НСтр("ru=’Выберите файл Excel'");
	ОповещениеЗавершения 	= Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект);
	
	Диалог.Показать(ОповещениеЗавершения);

КонецПроцедуры

&НаКлиенте
Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ВыбранныеФайлы <> Неопределено Тогда
		
		ПутьКФайлу = ВыбранныеФайлы[0];
		
	КонецЕсли;
	
КонецПроцедуры

Универсальная процедура проверки на дубли строк в табличной части документа

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Запасы.Количество() = 0 Тогда Возврат; КонецЕсли; ПроверитьДублиСтрок(Ссылка, Запасы, Номенклатура, АлгоритмФормированияШК,Регион, Отказ); КонецПроцедуры //Процедура провер...
buketoff 96 1 1 10

Получить выделенные строки списка (с сохранением выделения)

НаКлиенте Функция ПолучитьЭлементыПоВыделеннымСтрокам(ВыбЭлемент, ПолеСсылка) Экспорт МассивЭлементов = Новый Массив(); ВыдСтроки = Новый Массив(); Для Каждого текСтр Из ВыбЭлемент.ВыделенныеСтроки Цикл ВыдСтроки.Добавить(ТекСтр); КонецЦикла; Дл...

Печать своей печатной формы (без использования команды)

//////////////////////////////////////////////////// Кнопка вызова печати МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(СсылкаНаДокументИлиСправочник); ПараметрыПечать = Новый Структура; ПараметрыПечать.Вставить(ЗаголовокФормы, СсылкаНаДокумент...

СКД. Вывод данных из Таблицы значений

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

Проверка на роль пользователя

Проверяет пользователя на принадлежность его к группе (в которой находится наша роль). Для данной функции не требуется никаких дополнительных танцев с ролями, простое создание профилей групп, назначение профилям ролей и участников группы.
ArtVadan 10 1
Функция ЕстьРоль(ИмяРоли, Пользователь = Неопределено) Экспорт

	Если Пользователь = Неопределено Тогда
		Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	1 
		|ИЗ
		|	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли
		|		ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиГруппДоступаРоли.Ссылка
		|ГДЕ
		|	ПрофилиГруппДоступаРоли.Роль.Имя = &Роль
		|	И ГруппыДоступаПользователи.Пользователь = &Пользователь";
	
	Запрос.УстановитьПараметр("Пользователь", Пользователь);
	Запрос.УстановитьПараметр("Роль", ИмяРоли);
	
	УстановитьПривилегированныйРежим(Истина);
	РезультатЗапроса = Запрос.Выполнить();
	УстановитьПривилегированныйРежим(Ложь);
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат Ложь;		
	Иначе	
		Возврат Истина;		
	КонецЕсли;
	
КонецФункции

Цены на дату документа продажи

Получить цены номенклатуры на дату документа продажи ВЫБРАТЬ Продажи.Период, Продажи.Контрагент, Продажи.Номенклатура, Продажи.КоличествоОборот КАК Количество, Продажи.СтоимостьОборот КАК Стоимость, ЦеныНоменклатуры.Цена ИЗ Р...
akim 7 1

Пересекаются ли два интервала

miha 94 6 1
Пересекаются = Ложь;
Если Макс(Начало1, Начало2) < Мин(Конец1, Конец2) Тогда
    Пересекаются = Истина;
КонецЕсли;

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

Kirushqe 32 2
КоличествоУровней = ЭлементыФормы.ПолеТабличногоДокумента1.КоличествоУровнейГруппировокСтрок() - 1;
Для Уровень = 1 По КоличествоУровней  Цикл
    ЭлементыФормы.ПолеТабличногоДокумента1.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
КонецЦикла;

КоличествоУровней = ЭлементыФормы.ПолеТабличногоДокумента1.КоличествоУровнейГруппировокКолонок() - 1;
Для Уровень = 1 По КоличествоУровней Цикл
    ЭлементыФормы.ПолеТабличногоДокумента1.ПоказатьУровеньГруппировокКолонок(КоличествоУровней - Уровень);
КонецЦикла;

Выделение текущей строки в отчете

Выделяет текущие строки в отчете. Добавляется в форму отчета. НаКлиенте Перем ДанныеВыделенныхСтрок; НаКлиенте Процедура ОтчетТабличныйДокументПриАктивизации(Элемент) // Делаем через обработчик ожидания, чтобы дать возможность выделить несколько ст...
ChOP 121 2 3 4

Как сохранять и восстанавливать настройки системы компоновки данных

Через XML файл
miha 94 6 1
//Сохранение настроек в файл может быть выполнено следующим образом (листинг 6.40):
//Листинг 6.40. Сохранение настроек
Процедура СохранитьНастройки(Кнопка)

    Настройки  = ОтчетОбъект.КомпоновщикНастроек.Настройки;
    НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Путь = СокрЛП(Константы.ПутьДоФайлов.Получить());

    Запись = Новый ЗаписьXML;
    
    Запись.ОткрытьФайл(Путь + "\config.xml");
    Запись.ЗаписатьОбъявлениеXML();
    
    НовыйСXDTO.ЗаписатьXML(Запись, Настройки, НазначениеТипаXML.Явное, ФормаXML.Элемент);
    
    Запись.Закрыть();

КонецПроцедуры

//Восстановление настроек из файла может быть выполнено следующим образом (листинг 6.41):
//Листинг 6.41. Восстановление настроек
Процедура ВосстановитьНастройки(Кнопка)

    Чтение = Новый ЧтениеXML;
    НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Путь = СокрЛП(Константы.ПутьДоФайлов.Получить());
    
    Чтение.ОткрытьФайл(Путь + "\config.xml");
    
    Настройки = НовыйСXDTO.ПрочитатьXML(Чтение);
    
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

КонецПроцедуры

//В константе ПутьДоФайлов хранится путь до файла сохраняемых (восстанавливаемых) настроек.

//(с) Простые примеры разработки

Добавить водяной знак (изображение) в табличный документ

Иногда появляется необходимость добавления картинки в табличный документ, без изменения макета.
// ТабДок уже должен быть сформирован на момент добавления изображения поверх текста

Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
	
// Высота и ширина заданы по желанию, можете задать свои значения.
Рисунок.Картинка = БиблиотекаКартинок.Успешно; // Взял любую картинку из конфы для демонстрации. Фон должен быть прозрачный
Рисунок.Высота = 25;
Рисунок.Ширина = 25;   
Рисунок.ЦветФона = Новый Цвет(); // Необходимо, чтобы 1С не заливала фон по умолчанию
	
// Расположить рисунок по центру изображения
	
Рисунок.Верх = ТабДок.ВысотаТаблицы/2;
Рисунок.Лево = ТабДок.ШиринаТаблицы/2 + Рисунок.Ширина/2;

Отправка почты с вложением БСП

Пример использования функции отправки почты из БСП и преобразования табличного документа в pdf без использования временных файлов. Требуется заполненная системная учетная запись в справочнике УчетныеЗаписиЭлектроннойПочты
Функция ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(УчетнаяЗаписьПочтыОтправителя, ПочтаПолучателя, ТекстПисьма, ТемаПисьма, АдресТабличногоДокументаВоВременномХранилище)

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

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

Курс по разработке внешних компонент для 1С

Курс включает в себя разработку внешних компонент по технологии Native API на C++ как для обычной, так и для мобильной платформы, разработку внешних компонент по технологии COM на C#, а также разработку COM серверов (COM компонентов) на C#.
PROGRAM1S 5
1 750 руб.

Скопировать содержимое документа из Источник в Приемник

Если есть спецы по стандартам кода, с удовольствием "выслушаю" критику и внесу исправления
СергейТ 30 5
&НаСервере
Процедура СкопироватьСодержимоеДокумента(Приемник, Источник, Исключения="")
	Попытка
		МетаданныеДокумента = Источник.Метаданные();
	Исключение
		МетаданныеДокумента = Приемник.Метаданные();
	КонецПопытки;
	//: Приемник = Документы.ЧекККМ.СоздатьДокумент();
	
	// Удалим из строки исключений наименования свойств, которые отсутствуют в реквизитах документа
	Исключения_ = ОбработатьСтрокуРеквизитов(Исключения, МетаданныеДокумента.Реквизиты);
	
	ЗаполнитьЗначенияСвойств(Приемник, Источник, , Исключения_);
	
	Для Каждого ТекТЧ Из МетаданныеДокумента.ТабличныеЧасти Цикл
		ТекТЧИмя = ТекТЧ.Имя;
		
		// Удалим из строки исключений наименования свойств, которые отсутствуют в реквизитах табличной части
		Исключения_ = ОбработатьСтрокуРеквизитов(Исключения, МетаданныеДокумента.ТабличныеЧасти[ТекТЧИмя].Реквизиты);
		
		Приемник[ТекТЧИмя].Очистить();
		Для Каждого ТекСтрИсточника Из Источник[ТекТЧИмя] Цикл
			НоваяСтрокаПриемника = Приемник[ТекТЧИмя].Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрокаПриемника, ТекСтрИсточника, , Исключения_)
		КонецЦикла
	КонецЦикла
КонецПроцедуры

Функция ОбработатьСтрокуРеквизитов(СтрокаРеквизитов, РеквизитыМетаданные)
	
	Результат = Новый Массив;
	МассивРеквизитов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаРеквизитов, ",");
	Для Каждого ТекРеквизит ИЗ МассивРеквизитов Цикл
		Если РеквизитыМетаданные.Найти(ТекРеквизит) = Неопределено Тогда Продолжить КонецЕсли;
		Результат.Добавить(ТекРеквизит)
	КонецЦикла;
	Результат = ?(Результат.Количество()>0, СтрСоединить(Результат, ","), "");
	
	Возврат Результат
	
КонецФункции

Навигация по областям

Выполняет быстрый поиск и переход между областями кода.
Phoenix 12 2
Бесплатно

Сервер 1С в дата-центре. Курс

Как за день собрать и запустить крутую машину для сервера 1С в дата центре
FastCode 1374 11 21 66
-10%