Как обновить классификатор банков Меня часто спрашивают: КАК в 1C Бухгалтерии 3.0 обновить классификатор банков?
Все просто, идем по меню:
"Администрирование - Поддержка и обслуживание - "Загрузить классификатор банков"
После этого классификатор будет загружен и обновлен. Можете по БИКу искать нужный вам банк.
Бывает, что при нажатии Загрузить классификатор банков выходит сообщение: Классификатор актуален и ничего не грузит
Тогда необходимо в Меню (маленький черный треугольник в верхнем левом углу)
Все функции - Справочники - Классификатор банков - жмем "Загрузить классификатор"
У кого нету строки "Все функции": Меню - Сервис - Параметры - ставим галочку "Отображать "Все функции"
Категория:
1С Бухгалтерия 3.0 Получение уникального идентификатора ссылки в СКД Как известно, с помощью языка запросов 1С получить уникальный идентификатор объекта ссылочного типа на данный момент нельзя. Но используя возможность СКД обращаться к внешним функциям можно получить строковое представление уникального идентификатора ссылки. Для этого необходимо использовать глобальную функцию XMLСтрока в вычисляемых полях в макете схемы компоновки.
Далее проведем эксперимент по быстродействию получения результата через запрос с последующей обработкой выборки и вариантов с использованием СКД.
Рассмотрим два случая - вывод в табличный документ и формирование текстового документа.
Так же в случае с СКД мы можем создать схему компоновки программно или использовать готовую. Результат работы СКД так же можно обойти в цикле, либо вывести в таблицу значений с последующей обработкой. Для экспериментов будет использоваться платформа 8.3, конфигурация УТ11 (файловая), справочник "КлассификаторБанковРФ", более 4000 элементов.
Схему компоновки и макет можно посмотреть, скачав обработку (ссылка в конце).
Код 1C v 8.2 УП &НаКлиентеНаСервереБезКонтекста
Функция ПолучитьТекстЗапроса()
Возврат "ВЫБРАТЬ
| КлассификаторБанковРФ.Ссылка,
| КлассификаторБанковРФ.Наименование
|ИЗ
| Справочник.КлассификаторБанковРФ КАК КлассификаторБанковРФ" ;
КонецФункции
&НаСервере
Функция ПолучитьСхемуОбработки()
Возврат РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( "Макет" ) ;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСхемуКомпоновки()
Схема = Новый СхемаКомпоновкиДанных;
ИсточникДанных = Схема. ИсточникиДанных. Добавить( ) ;
ИсточникДанных. Имя = "Источник" ;
ИсточникДанных. ТипИсточникаДанных = "Local" ;
НаборДанных = Схема. НаборыДанных. Добавить( Тип( "НаборДанныхЗапросСхемыКомпоновкиДанных" ) ) ;
НаборДанных. Имя = "НаборДанных" ;
НаборДанных. ИсточникДанных = "Источник" ;
НаборДанных. Запрос = ПолучитьТекстЗапроса( ) ;
НаборСсылка = НаборДанных. Поля. Добавить( Тип( "ПолеНабораДанныхСхемыКомпоновкиДанных" ) ) ;
НаборСсылка. Поле = "Ссылка" ;
НаборСсылка. ПутьКДанным = "Ссылка" ;
НаборНаименование= НаборДанных. Поля. Добавить( Тип( "ПолеНабораДанныхСхемыКомпоновкиДанных" ) ) ;
НаборНаименование. Поле = "Наименование" ;
НаборНаименование. ПутьКДанным = "Наименование" ;
ПолеИД = Схема. ВычисляемыеПоля. Добавить( ) ;
ПолеИД. Выражение = "XMLСтрока(Ссылка)" ;
ПолеИД. Заголовок = "ИД" ;
ПолеИД. ПутьКДанным = "ИД" ;
СтрокаТЗ = Схема. НастройкиПоУмолчанию. Структура. Добавить( Тип( "ГруппировкаКомпоновкиДанных" ) ) ;
СтрокаТЗ. Выбор. Элементы. Добавить( Тип( "АвтоВыбранноеПолеКомпоновкиДанных" ) ) ;
ЭлементыВыбора = Схема. НастройкиПоУмолчанию. Выбор. Элементы;
ПолеСсылка = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеСсылка. Поле = Новый ПолеКомпоновкиДанных( "Ссылка" ) ;
ПолеНаименование = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеНаименование. Поле = Новый ПолеКомпоновкиДанных( "Наименование" ) ;
ПолеИД = ЭлементыВыбора. Добавить( Тип( "ВыбранноеПолеКомпоновкиДанных" ) ) ;
ПолеИД. Поле = Новый ПолеКомпоновкиДанных( "ИД" ) ;
Возврат Схема;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоКомпоновкеПрямойОбход(Схема)
Док = Новый ТекстовыйДокумент;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию, , , Тип( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ) ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода. УстановитьОбъект( Новый ТаблицаЗначений) ;
ПроцессорВывода. НачатьВывод( ) ;
Пока Истина Цикл
ЭлементКомпоновки = ПроцессорКомпоновки. Следующий( ) ;
Если ЭлементКомпоновки = Неопределено Тогда
Прервать ;
КонецЕсли ;
ПроцессорВывода. ВывестиЭлемент( ЭлементКомпоновки) ;
Если ЭлементКомпоновки. Макет = "Макет2" И ЭлементКомпоновки. ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных. НачалоИКонец Тогда
Док. ДобавитьСтроку( ЭлементКомпоновки. ЗначенияПараметров. П2 . Значение + ";" + ЭлементКомпоновки. ЗначенияПараметров. П3 . Значение) ;
КонецЕсли ;
КонецЦикла ;
ТЗ = ПроцессорВывода. ЗакончитьВывод( ) ;
Возврат Док;
КонецФункции
&НаСервере
Функция ЗаполнитьОбходТЗ(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
КонецЕсли ;
Возврат ЗаполнитьПоКомпоновкеОбходТЗ( Схема) ;
КонецФункции
&НаСервере
Функция ЗаполнитьПрямойОбход(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
КонецЕсли ;
Возврат ЗаполнитьПоКомпоновкеПрямойОбход( Схема) ;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоКомпоновкеОбходТЗ(Схема)
Док = Новый ТекстовыйДокумент;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию, , , Тип( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ) ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода. УстановитьОбъект( Новый ТаблицаЗначений) ;
ТЗ = ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
Для Каждого СтрокаТЗ Из ТЗ Цикл
Док. ДобавитьСтроку( СтрокаТЗ. Наименование + ";" + СтрокаТЗ. ИД) ;
КонецЦикла ;
Возврат Док;
КонецФункции
&НаСервереБезКонтекста
Функция ЗаполнитьПоЗапросу()
Док = Новый ТекстовыйДокумент;
Запрос = Новый Запрос( ПолучитьТекстЗапроса( ) ) ;
Результат = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
Док. ДобавитьСтроку( Результат. Наименование + ";" + XMLСтрока( Результат. Ссылка) ) ;
КонецЦикла ;
Возврат Док;
КонецФункции
&НаСервере
Процедура ЗаполнитьТабДокСхема(ИспользоватьСхемуОбработки)
Если ИспользоватьСхемуОбработки Тогда
Схема = ПолучитьСхемуОбработки( ) ;
ТабДок = ТабДок1 ;
Иначе
Схема = ПолучитьСхемуКомпоновки( ) ;
ТабДок = ТабДок2 ;
КонецЕсли ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Схема. НастройкиПоУмолчанию) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ТабДок) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТабДокЗапрос()
Макет = РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( "Отчет" ) ;
ОбластьСтрока = Макет. ПолучитьОбласть( "Строка" ) ;
Запрос = Новый Запрос( ПолучитьТекстЗапроса( ) ) ;
Результат = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
ОбластьСтрока. Параметры. Заполнить( Результат) ;
ОбластьСтрока. Параметры. ИД = XMLСтрока( Результат. Ссылка) ;
ТабДок3 . Вывести( ОбластьСтрока) ;
КонецЦикла ;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьТабДокСхема( Истина ) ;
ЗаполнитьТабДокСхема( Ложь ) ;
ЗаполнитьТабДокЗапрос( ) ;
Т1 = ЗаполнитьПоЗапросу( ) ;
Т2 = ЗаполнитьОбходТЗ( Ложь ) ;
Т3 = ЗаполнитьОбходТЗ( Истина ) ;
Т4 = ЗаполнитьПрямойОбход( Ложь ) ;
Т5 = ЗаполнитьПрямойОбход( Истина ) ;
КонецПроцедуры
По результатам замера производительности видно, что вывод результата в табличный документ происходит быстрее при использовании СКД, причем вариант с программным созданием схемы отрабатывает несколько быстрее.
В тоже время вывод результатов в текстовый документ отрабатывает быстрее для запроса.
Программное создание схемы компоновки отработало быстрее, чем получение макета схемы.
Источник
Категория:
Схема Компоновки Данных