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

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

Значение перечисления по синониму

Получаем значение перечисления по синониму
Функция ЗначениеПеречисления(ИмяПеречисления = Неопределено, Синоним = Неопределено, СообщитьЗначения = Ложь) Экспорт
	
	НайденныеЭлементы = Новый Массив;
	ПредопределенноеПеречисление = Метаданные.Перечисления.Найти(ИмяПеречисления);
	ШаблонВывода = "Перечисление.%1.%2";
	
	Если ПредопределенноеПеречисление <> Неопределено Тогда
		Для Каждого ЭлементПеречисления Из ПредопределенноеПеречисление.ЗначенияПеречисления Цикл
			Если ЗначениеЗаполнено(Синоним) Тогда
				Если ЭлементПеречисления.Синоним = Синоним Тогда
					Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
					НайденныеЭлементы.Добавить(Элемент);
					Прервать;
				КонецЕсли;
			Иначе
				Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
				НайденныеЭлементы.Добавить(Элемент);
			КонецЕсли;
		КонецЦикла;
	Иначе
		Для Каждого ТекущееПеречисление Из Метаданные.Перечисления Цикл
			Для Каждого ЭлементПеречисления Из ТекущееПеречисление.ЗначенияПеречисления Цикл 
				Если ЗначениеЗаполнено(Синоним) Тогда
					Если ЭлементПеречисления.Синоним = Синоним Тогда
						Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
						НайденныеЭлементы.Добавить(Элемент);
						Прервать;
					КонецЕсли;
				Иначе
					Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
					НайденныеЭлементы.Добавить(Элемент);
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
	
	Если СообщитьЗначения Тогда
		Для Каждого ЭлементМассива Из НайденныеЭлементы Цикл
			Сообщить(ЭлементМассива);
		КонецЦикла;
	КонецЕсли;
	
	Возврат НайденныеЭлементы;
	
КонецФункции // ЗначениеПеречисления()

Найти дату самого первого документа в любой базе

Как найти дату самого раннего документа в любой базе (или сам документ при желании)
NMC22 3 1
Функция НайтиСамыйПервыйДокументБазыДата() Экспорт
	
	ТаблицаПервыхДокументов = Новый ТаблицаЗначений;
	ТаблицаПервыхДокументов.Колонки.Добавить("Дата");
	
	Для Каждого ВидДокумента Из Метаданные.Документы Цикл
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ИмяДокумента.Дата КАК Дата
		|ИЗ
		|	Документ.%ИмяДокумента% КАК ИмяДокумента
		|
		|УПОРЯДОЧИТЬ ПО
		|	Дата";
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст,"%ИмяДокумента%", ВидДокумента.Имя);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		Если РезультатЗапроса.Пустой() Тогда
			Продолжить;
		КонецЕсли;
		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		ВыборкаДетальныеЗаписи.Следующий();
		
		НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
		НоваяЗапись.Дата = ВыборкаДетальныеЗаписи.Дата;
		
	КонецЦикла;
	
	ТаблицаПервыхДокументов.Сортировать("Дата Возр");
	
	Если ТаблицаПервыхДокументов.Количество()=0 Тогда
		НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
		НоваяЗапись.Дата = "ЗАМЕНИТЬ НА ВАШУ ДАТА НА ВЫБОР";
	КонецЕсли;
	
	Возврат ТаблицаПервыхДокументов[0].Дата;

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

TurboConf - расширение Конфигуратора 1С Наш выбор

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

Редактор скрипта для TurboConf

База 1С (DT) для удобного редактирования скрипта TurboConf в режиме конфигуратора с ИР адаптером
tormozit 18 2
Бесплатно

Переопределение основных настроек динамического списка БСП

Используем в ПриСозданииНаСервере в форме списка
andrey5565 235 4 5 11
Список.ПроизвольныйЗапрос = Истина;

// 1. Переопределение настроек динамического списка.
// 1.1 Получение структуры настроек.
ПараметрыСписка   = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();    
// 1.2 Заполнение структуры настроек.
ПараметрыСписка.ТекстЗапроса = ПолучитьТекстПроизвольногоЗапросаДинамическогоСписка(); 
ПараметрыСписка.ДинамическоеСчитываниеДанных = Истина;
ПараметрыСписка.ОсновнаяТаблица = "Документ.КорректировкаНазначенияТоваров".
// 2. Установка свойств.
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, ПараметрыСписка);

Чтение файла (в таблицу значений) расширения .xlsx с помощью построителя запроса

andrey5565 235 4 5 11
	// Создаем табдок;
	ТабДок = Новый ТабличныйДокумент;

	ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

	// Получаем данные запросом;
	ПЗ = Новый ПостроительЗапроса;

	ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());

	ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

	ПЗ.ЗаполнитьНастройки();

	ПЗ.Выполнить();

	ТаблицаЗначений = ПЗ.Результат.Выгрузить();

Быстрое объединение двух таблиц значений

Соединяет две разные таблицы значений с одинаковыми колонками в одну целую таблицу значений. Способ интересен тем, что он вставляет одну таблицу в начало другой таблицы, а не добавляет строки из одной таблицы в конец другой. Такой способ работает намного...
nytlenc 28 2 1

Соревнование по программированию на 1С

Онлайн-платформа для проведения соревнований по программированию на 1С В системе большое количество интересных задач разного уровня сложности, есть онлайн-рейтинг и возможность посмотреть решения других участников (после того, как решишь задачу сам), чт...
elcoan 2

Отладка скриптов

Публикация описывает как отлаживаются скрипты TurboConf Предисловие Ранее я публиковал статью о том, как писать свои скрипты для TutboConf - https://turboconf.ru/Forum/Details/1506 Сегодня я хочу рассказать о том, как их отлаживать! Ведь отладка самая в...
nytlenc 28 2 1

Пробуем ChatGPT в реальной работе

Решил поставить небольшую реальную задачу нейросети и посмотреть как она справится. Понадобилось мне преобразовать следующий код на C#: Вместо строк вида e.Graphics.DrawImage(Properties.Resources.context_menu_template, rectImage); нужно было получить im...
bolsun 467 6 11 9

Запись текста без BOM

При попытке записать текстовый файл в кодировке UTF-8 1C добавляет в начало текста три символа BOM (Byte order mark) эти символы не видны в обычном редакторе, однако при обменах могут приводить к ошибке.
ProxyInspector 6 1
//Пример записи Строки в файл	
	Стр = "Строка для записи";
	ИмяФайла = "Текст.txt";
	
//Запись стандартными методами. Добавляет BOM. Размер файла 35 байт
	Текст = Новый ТекстовыйДокумент;
	Текст.УстановитьТекст(Стр);
	Текст.Записать(ИмяФайла, КодировкаТекста.UTF8);
	
//Запись без BOM. Размер файла 32 байта	
	ЗаписатьBOM = Ложь;
	ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Стр, КодировкаТекста.UTF8, ЗаписатьBOM);	
	ДвоичныеДанныеСтроки.Записать(ИмяФайла);

Получить ссылку из навигационной ссылки

Функция возвращает ссылку полученную из навигационной ссылки.

Где-то на просторах интернета, плюс немного своего напильника

CepeLLlka 8 1
Функция ПолучитьСсылкуИзНавигационной(НС) Экспорт
    
    ПерваяТочка = Найти(НС, "e1cib/data/");
    ВтораяТочка = Найти(НС, "?ref=");
    
    ПредставлениеТипа   = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
    ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
    ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));
    Возврат ЗначениеИзСтрокиВнутр(ЗначениеСсылки);
   	 
КонецФункции

Переназначение штатных комбинаций горячих клавиш в конфигураторе 1С

Пользователи часто задают вопрос как изменить штатные хоткеи на свои комбинации. Пока в TurboConf нет такой встроенной возможности, но можно добавить свой простой скрипт. В нем сделать перехват штатных комбинаций и отправку вместо них нужных клавиш. При...
bolsun 467 6 11 9

ИР Найти последнее изменение метода

Довольно часто, анализируя метод, возникает вопрос "Кто когда и какие изменения внес в него последний раз?" Для ответа на этот вопрос при использовании хранилища конфигурации приходится вручную перебирать сравнения последних версий текущего модуля и искать...
tormozit 18 2

TurboConf ИР адаптер 1.10

TurboConf скрипт "ИР Адаптер" обеспечивает в конфигураторе 1С 8 доступ к функциям мощной подсистемы "Инструменты разработчика Tormozit (ИР)"
tormozit 18 2
Бесплатно

Отобразить заголовки периодов на форме отчета БСП

В некоторых версиях БСП форма отчета скрывает заголовки ряда параметров. В том числе с типом "Стандартный период". Данную функцию нужно вставить в модуль отчета и вызывать в обработчике ПослеЗаполненияПанелиБыстрыхНастроек(). Подключить обработчик можно в событии ОпределитьНастройкиФормы
Источник: https://t.me/JuniorOneS
SeiOkami 424 5 8 9
Процедура ОпределитьНастройкиФормы(Параметр, КлючВарианта, НастройкиОтчета) Экспорт
	
	НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
		
КонецПроцедуры

Процедура ПослеЗаполненияПанелиБыстрыхНастроек(ФормаОтчета, ПараметрыОбновления) Экспорт
	
	ПочинитьЗаголовкиПериодов(ФормаОтчета);
		
КонецПроцедуры

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

Функция восстановления значения при чтении JSON (ЧтениеJSON)

Функция восстановления из JSON может использоваться для того, чтобы преобразовать данные JSON в типы платформы 1С, которые либо 1. не могут являться результатом автоматического преобразования, либо 2. чтобы просто изменить получаемые данные, если есть такая необходимость. В данном примере из json файла где ИНН, КПП контрагента - пустая строка, заменим на значение - Пустая строка ИНН (КПП)
andrey5565 235 4 5 11
// Структура JSON файла:
{
 "Info": [
  {
   "Наименование": "Global Trade Company GmbH",
   "НаименованиеПолное": "Global Trade Company GmbH",
   "ИНН": "",
   "КПП": "",
   "ЮрФизЛицо": "Юридическое лицо",
   "ТекущаяДата": "2023-09-03T16:45:44Z",
   "ДанныеАдреса": "Страна - 1; Город  - 1; Индекс - 1"
  },
  {
   "Наименование": "Kikinda (Сербия)",
   "НаименованиеПолное": "Kikinda (Сербия)",
   "ИНН": "",
   "КПП": "",
   "ЮрФизЛицо": "Юридическое лицо",
   "ТекущаяДата": "2023-09-03T16:45:44Z",
   "ДанныеАдреса": "Страна - 2; Город  - 2; Индекс - 2"
  },
  {
   "Наименование": "Koenig Holding GmbH",
   "НаименованиеПолное": "Koenig Holding GmbH",
   "ИНН": "",
   "КПП": "",
   "ЮрФизЛицо": "Юридическое лицо",
   "ТекущаяДата": "2023-09-03T16:45:44Z",
   "ДанныеАдреса": "Страна - 3; Город  - 3; Индекс - 3"
  },
  {
   "Наименование": "АВИКА",
   "НаименованиеПолное": "АВИКА",
   "ИНН": "4825005381",
   "КПП": "482201001",
   "ЮрФизЛицо": "Юридическое лицо",
   "ТекущаяДата": "2023-09-03T16:45:44Z",
   "ДанныеАдреса": "Страна - 4; Город  - 4; Индекс - 4"
  },
  {
   "Наименование": "АвтБанк АКБ",
   "НаименованиеПолное": "АКБ АвтБанк",
   "ИНН": "",
   "КПП": "",
   "ЮрФизЛицо": "Юридическое лицо",
   "ТекущаяДата": "2023-09-03T16:45:44Z",
   "ДанныеАдреса": "Страна - 5; Город  - 5; Индекс - 5"
  }
 ]
}

//Код в модуле формы:
&НаСервере
Функция ФункцияВосстановленияСериализуемогоЗначения(Свойство, Значение, ДополнительныеПараметры) Экспорт

	 Если Свойство = "ИНН" ИЛИ Свойство = "КПП" Тогда
	 	 Если ПустаяСтрока(Значение) Тогда
			Возврат "Пустая строка " + Свойство; 
		 КонецЕсли;
	 КонецЕсли;

КонецФункции // ()

&НаСервере
Процедура ВыполнитьЧтениеДанныхНаСервере()
	
	// Проверка наличия файла по пути;
	ПутьНаСервере1  = "C:\Users\SystemX\Desktop\TestJSON_1.json";
	
	ФайлJSON = Новый Файл(ПутьНаСервере1);
	
	Если НЕ ФайлJSON.Существует() Тогда
		ОбщегоНазначения.СообщитьПользователю("Файл отсутствует по пути: " + ПутьНаСервере1);		
	    Возврат;
	КонецЕсли;
	
	ЧтениеJSON = Новый ЧтениеJSON();
	Попытка
	   ЧтениеJSON.ОткрытьФайл(ПутьНаСервере1, "UTF-8");
	Исключение
	КонецПопытки;
	
	ПрочитанноеЗначение = ПрочитатьJSON(ЧтениеJSON, Ложь,,, "ФункцияВосстановленияСериализуемогоЗначения", ЭтотОбъект);
	
	ЧтениеJSON.Закрыть(); 
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьЧтениеДанных(Команда)
	ВыполнитьЧтениеДанныхНаСервере();
КонецПроцедуры

Функции преобразования ЗаписьJSON

Функция преобразования, используемая при сериализации данных в JSON, вызывается для всех свойств, тип которых не поддерживает преобразование в формат JSON на прямую. В "функции преобразования" разработчик напрямую может проанализировать переданный объект и
andrey5565 235 4 5 11

Вывод табличного документа в типовое окно печати для УФ

Использование типового окна печати для вывода табличного документа (выдержка с Инфостарт https://infostart.ru/1c/articles/394727/) НаКлиенте Процедура КомандаПечати(Команда) ТабличныйДокументДляПечати = ПолучитьТаблчныйДокумент(); Коллекция = У...
SnarkSpb 13 1

Заполнить контрагента по ИНН, Получить данные по ИНН

Пример процедуры для получение данных юридического лица по ИНН используя бесплатное API. Данный способ был реализован на YouTube канале "IRONSKILLS". // Описание функции // // Параметры: // ИНН - Тип.Строка - Строка с ИНН // продолжен...
Razlomalo 19 1 1

Автосохранение текстов модулей в папку TurboConf

Вы знали, что TurboConf умеет периодически сохранять тексты открытых модулей? Это может быть полезно в случае аварийного завершения конфигуратора или каких-то других случаев потери набранного кода. Включить функцию можно на вкладке Разработчикам, в разд...
bolsun 467 6 11 9