Получаем значение перечисления по синониму
Функция ЗначениеПеречисления(ИмяПеречисления = Неопределено, Синоним = Неопределено, СообщитьЗначения = Ложь) Экспорт
НайденныеЭлементы = Новый Массив;
ПредопределенноеПеречисление = Метаданные.Перечисления.Найти(ИмяПеречисления);
ШаблонВывода = "Перечисление.%1.%2";
Если ПредопределенноеПеречисление <> Неопределено Тогда
Для Каждого ЭлементПеречисления Из ПредопределенноеПеречисление.ЗначенияПеречисления Цикл
Если ЗначениеЗаполнено(Синоним) Тогда
Если ЭлементПеречисления.Синоним = Синоним Тогда
Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
Прервать;
КонецЕсли;
Иначе
Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекущееПеречисление Из Метаданные.Перечисления Цикл
Для Каждого ЭлементПеречисления Из ТекущееПеречисление.ЗначенияПеречисления Цикл
Если ЗначениеЗаполнено(Синоним) Тогда
Если ЭлементПеречисления.Синоним = Синоним Тогда
Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
Прервать;
КонецЕсли;
Иначе
Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если СообщитьЗначения Тогда
Для Каждого ЭлементМассива Из НайденныеЭлементы Цикл
Сообщить(ЭлементМассива);
КонецЦикла;
КонецЕсли;
Возврат НайденныеЭлементы;
КонецФункции // ЗначениеПеречисления()
Функция ЗначениеПеречисления(ИмяПеречисления = Неопределено, Синоним = Неопределено, СообщитьЗначения = Ложь) Экспорт
НайденныеЭлементы = Новый Массив;
ПредопределенноеПеречисление = Метаданные.Перечисления.Найти(ИмяПеречисления);
ШаблонВывода = "Перечисление.%1.%2";
Если ПредопределенноеПеречисление <> Неопределено Тогда
Для Каждого ЭлементПеречисления Из ПредопределенноеПеречисление.ЗначенияПеречисления Цикл
Если ЗначениеЗаполнено(Синоним) Тогда
Если ЭлементПеречисления.Синоним = Синоним Тогда
Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
Прервать;
КонецЕсли;
Иначе
Элемент = СтрШаблон(ШаблонВывода, ПредопределенноеПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекущееПеречисление Из Метаданные.Перечисления Цикл
Для Каждого ЭлементПеречисления Из ТекущееПеречисление.ЗначенияПеречисления Цикл
Если ЗначениеЗаполнено(Синоним) Тогда
Если ЭлементПеречисления.Синоним = Синоним Тогда
Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
Прервать;
КонецЕсли;
Иначе
Элемент = СтрШаблон(ШаблонВывода, ТекущееПеречисление.Имя, ЭлементПеречисления.Имя);
НайденныеЭлементы.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если СообщитьЗначения Тогда
Для Каждого ЭлементМассива Из НайденныеЭлементы Цикл
Сообщить(ЭлементМассива);
КонецЦикла;
КонецЕсли;
Возврат НайденныеЭлементы;
КонецФункции // ЗначениеПеречисления()
Как найти дату самого раннего документа в любой базе (или сам документ при желании)
Функция НайтиСамыйПервыйДокументБазыДата() Экспорт
ТаблицаПервыхДокументов = Новый ТаблицаЗначений;
ТаблицаПервыхДокументов.Колонки.Добавить("Дата");
Для Каждого ВидДокумента Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИмяДокумента.Дата КАК Дата
|ИЗ
| Документ.%ИмяДокумента% КАК ИмяДокумента
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"%ИмяДокумента%", ВидДокумента.Имя);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Продолжить;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
НоваяЗапись.Дата = ВыборкаДетальныеЗаписи.Дата;
КонецЦикла;
ТаблицаПервыхДокументов.Сортировать("Дата Возр");
Если ТаблицаПервыхДокументов.Количество()=0 Тогда
НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
НоваяЗапись.Дата = "ЗАМЕНИТЬ НА ВАШУ ДАТА НА ВЫБОР";
КонецЕсли;
Возврат ТаблицаПервыхДокументов[0].Дата;
КонецФункции
Функция НайтиСамыйПервыйДокументБазыДата() Экспорт
ТаблицаПервыхДокументов = Новый ТаблицаЗначений;
ТаблицаПервыхДокументов.Колонки.Добавить("Дата");
Для Каждого ВидДокумента Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИмяДокумента.Дата КАК Дата
|ИЗ
| Документ.%ИмяДокумента% КАК ИмяДокумента
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"%ИмяДокумента%", ВидДокумента.Имя);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Продолжить;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
НоваяЗапись.Дата = ВыборкаДетальныеЗаписи.Дата;
КонецЦикла;
ТаблицаПервыхДокументов.Сортировать("Дата Возр");
Если ТаблицаПервыхДокументов.Количество()=0 Тогда
НоваяЗапись = ТаблицаПервыхДокументов.Добавить();
НоваяЗапись.Дата = "ЗАМЕНИТЬ НА ВАШУ ДАТА НА ВЫБОР";
КонецЕсли;
Возврат ТаблицаПервыхДокументов[0].Дата;
КонецФункции
TurboConf повышает эффективность работы в Конфигураторе 1С и помогает программисту автоматизировать свои задачи.
База 1С (DT) для удобного редактирования скрипта TurboConf в режиме конфигуратора с ИР адаптером
Используем в ПриСозданииНаСервере в форме списка
Список.ПроизвольныйЗапрос = Истина;
// 1. Переопределение настроек динамического списка.
// 1.1 Получение структуры настроек.
ПараметрыСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
// 1.2 Заполнение структуры настроек.
ПараметрыСписка.ТекстЗапроса = ПолучитьТекстПроизвольногоЗапросаДинамическогоСписка();
ПараметрыСписка.ДинамическоеСчитываниеДанных = Истина;
ПараметрыСписка.ОсновнаяТаблица = "Документ.КорректировкаНазначенияТоваров".
// 2. Установка свойств.
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, ПараметрыСписка);
Список.ПроизвольныйЗапрос = Истина;
// 1. Переопределение настроек динамического списка.
// 1.1 Получение структуры настроек.
ПараметрыСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
// 1.2 Заполнение структуры настроек.
ПараметрыСписка.ТекстЗапроса = ПолучитьТекстПроизвольногоЗапросаДинамическогоСписка();
ПараметрыСписка.ДинамическоеСчитываниеДанных = Истина;
ПараметрыСписка.ОсновнаяТаблица = "Документ.КорректировкаНазначенияТоваров".
// 2. Установка свойств.
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, ПараметрыСписка);
// Создаем табдок;
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// Получаем данные запросом;
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаЗначений = ПЗ.Результат.Выгрузить();
// Создаем табдок;
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// Получаем данные запросом;
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаЗначений = ПЗ.Результат.Выгрузить();
Соединяет две разные таблицы значений с одинаковыми колонками в одну целую таблицу значений.
Способ интересен тем, что он вставляет одну таблицу в начало другой таблицы, а не добавляет строки из одной таблицы в конец другой.
Такой способ работает намного...
Онлайн-платформа для проведения соревнований по программированию на 1С
В системе большое количество интересных задач разного уровня сложности, есть онлайн-рейтинг и возможность посмотреть решения других участников (после того, как решишь задачу сам), чт...
Публикация описывает как отлаживаются скрипты TurboConf
Предисловие
Ранее я публиковал статью о том, как писать свои скрипты для TutboConf - https://turboconf.ru/Forum/Details/1506
Сегодня я хочу рассказать о том, как их отлаживать!
Ведь отладка самая в...
Решил поставить небольшую реальную задачу нейросети и посмотреть как она справится.
Понадобилось мне преобразовать следующий код на C#:
Вместо строк вида
e.Graphics.DrawImage(Properties.Resources.context_menu_template, rectImage);
нужно было получить
im...
При попытке записать текстовый файл в кодировке UTF-8 1C добавляет в начало текста три символа BOM (Byte order mark) эти символы не видны в обычном редакторе, однако при обменах могут приводить к ошибке.
//Пример записи Строки в файл
Стр = "Строка для записи";
ИмяФайла = "Текст.txt";
//Запись стандартными методами. Добавляет BOM. Размер файла 35 байт
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(Стр);
Текст.Записать(ИмяФайла, КодировкаТекста.UTF8);
//Запись без BOM. Размер файла 32 байта
ЗаписатьBOM = Ложь;
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Стр, КодировкаТекста.UTF8, ЗаписатьBOM);
ДвоичныеДанныеСтроки.Записать(ИмяФайла);
//Пример записи Строки в файл
Стр = "Строка для записи";
ИмяФайла = "Текст.txt";
//Запись стандартными методами. Добавляет BOM. Размер файла 35 байт
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(Стр);
Текст.Записать(ИмяФайла, КодировкаТекста.UTF8);
//Запись без BOM. Размер файла 32 байта
ЗаписатьBOM = Ложь;
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Стр, КодировкаТекста.UTF8, ЗаписатьBOM);
ДвоичныеДанныеСтроки.Записать(ИмяФайла);
Функция возвращает ссылку полученную из навигационной ссылки.
Где-то на просторах интернета, плюс немного своего напильника
Функция ПолучитьСсылкуИзНавигационной(НС) Экспорт
ПерваяТочка = Найти(НС, "e1cib/data/");
ВтораяТочка = Найти(НС, "?ref=");
ПредставлениеТипа = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));
Возврат ЗначениеИзСтрокиВнутр(ЗначениеСсылки);
КонецФункции
Функция ПолучитьСсылкуИзНавигационной(НС) Экспорт
ПерваяТочка = Найти(НС, "e1cib/data/");
ВтораяТочка = Найти(НС, "?ref=");
ПредставлениеТипа = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));
Возврат ЗначениеИзСтрокиВнутр(ЗначениеСсылки);
КонецФункции
Пользователи часто задают вопрос как изменить штатные хоткеи на свои комбинации.
Пока в TurboConf нет такой встроенной возможности, но можно добавить свой простой скрипт. В нем сделать перехват штатных комбинаций и отправку вместо них нужных клавиш.
При...
Довольно часто, анализируя метод, возникает вопрос "Кто когда и какие изменения внес в него последний раз?"
Для ответа на этот вопрос при использовании хранилища конфигурации приходится вручную перебирать сравнения последних версий текущего модуля и искать...
TurboConf скрипт "ИР Адаптер" обеспечивает в конфигураторе 1С 8 доступ к функциям мощной подсистемы "Инструменты разработчика Tormozit (ИР)"
В некоторых версиях БСП форма отчета скрывает заголовки ряда параметров. В том числе с типом "Стандартный период". Данную функцию нужно вставить в модуль отчета и вызывать в обработчике ПослеЗаполненияПанелиБыстрыхНастроек(). Подключить обработчик можно в событии ОпределитьНастройкиФормы
Процедура ОпределитьНастройкиФормы(Параметр, КлючВарианта, НастройкиОтчета) Экспорт
НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
КонецПроцедуры
Процедура ПослеЗаполненияПанелиБыстрыхНастроек(ФормаОтчета, ПараметрыОбновления) Экспорт
ПочинитьЗаголовкиПериодов(ФормаОтчета);
КонецПроцедуры
Процедура ПочинитьЗаголовкиПериодов(ФормаОтчета)
ЗаголовкиЭлементов = Новый Массив;
Для Каждого ПараметрСКД Из СхемаКомпоновкиДанных.Параметры Цикл
ЗначениеТипа = ПараметрСКД.ТипЗначения.ПривестиЗначение(Неопределено);
Если ТипЗнч(ЗначениеТипа) = Тип("СтандартныйПериод") Тогда
ЗаголовкиЭлементов.Добавить(ПараметрСКД.Заголовок + ":");
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементФормы Из ФормаОтчета.Элементы Цикл
СвойстваЭлемента = Новый Структура("ПоложениеЗаголовка,Заголовок,ПутьКДанным");
ЗаполнитьЗначенияСвойств(СвойстваЭлемента, ЭлементФормы);
Если СвойстваЭлемента.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет
И ЗаголовкиЭлементов.Найти(СвойстваЭлемента.Заголовок) <> Неопределено Тогда
ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Параметр, КлючВарианта, НастройкиОтчета) Экспорт
НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
КонецПроцедуры
Процедура ПослеЗаполненияПанелиБыстрыхНастроек(ФормаОтчета, ПараметрыОбновления) Экспорт
ПочинитьЗаголовкиПериодов(ФормаОтчета);
КонецПроцедуры
Процедура ПочинитьЗаголовкиПериодов(ФормаОтчета)
ЗаголовкиЭлементов = Новый Массив;
Для Каждого ПараметрСКД Из СхемаКомпоновкиДанных.Параметры Цикл
ЗначениеТипа = ПараметрСКД.ТипЗначения.ПривестиЗначение(Неопределено);
Если ТипЗнч(ЗначениеТипа) = Тип("СтандартныйПериод") Тогда
ЗаголовкиЭлементов.Добавить(ПараметрСКД.Заголовок + ":");
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементФормы Из ФормаОтчета.Элементы Цикл
СвойстваЭлемента = Новый Структура("ПоложениеЗаголовка,Заголовок,ПутьКДанным");
ЗаполнитьЗначенияСвойств(СвойстваЭлемента, ЭлементФормы);
Если СвойстваЭлемента.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет
И ЗаголовкиЭлементов.Найти(СвойстваЭлемента.Заголовок) <> Неопределено Тогда
ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция восстановления из JSON может использоваться для того, чтобы преобразовать данные JSON в типы платформы 1С, которые либо 1. не могут являться результатом автоматического преобразования, либо 2. чтобы просто изменить получаемые данные, если есть такая необходимость. В данном примере из json файла где ИНН, КПП контрагента - пустая строка, заменим на значение - Пустая строка ИНН (КПП)
// Структура 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 файла:
{
"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 на прямую. В "функции преобразования" разработчик напрямую может проанализировать переданный объект и
Использование типового окна печати для вывода табличного документа (выдержка с Инфостарт https://infostart.ru/1c/articles/394727/)
НаКлиенте
Процедура КомандаПечати(Команда)
ТабличныйДокументДляПечати = ПолучитьТаблчныйДокумент();
Коллекция = У...
Пример процедуры для получение данных юридического лица по ИНН используя бесплатное API. Данный способ был реализован на YouTube канале "IRONSKILLS".
// Описание функции
//
// Параметры:
// ИНН - Тип.Строка - Строка с ИНН
// продолжен...
Вы знали, что TurboConf умеет периодически сохранять тексты открытых модулей?
Это может быть полезно в случае аварийного завершения конфигуратора или каких-то других случаев потери набранного кода.
Включить функцию можно на вкладке Разработчикам, в разд...