diff --git a/public/bsp-zagruzka-iz-faila/fragmenty-koda.json b/public/bsp-zagruzka-iz-faila/fragmenty-koda.json
new file mode 100644
index 0000000..2b48cf0
--- /dev/null
+++ b/public/bsp-zagruzka-iz-faila/fragmenty-koda.json
@@ -0,0 +1,54 @@
+[
+ {
+ "value": [
+ {
+ "value": "// Определяет список справочников, доступных для загрузки с помощью подсистемы \"Загрузка данных из файла\".\r\n//\r\n// Параметры:\r\n// ЗагружаемыеСправочники - ТаблицаЗначений - список справочников, в которые возможна загрузка данных:\r\n// * ПолноеИмя - Строка - полное имя справочника (как в метаданных).\r\n// * Представление - Строка - представление справочника в списке выбора.\r\n// * ПрикладнаяЗагрузка - Булево - если Истина, значит справочник использует собственный алгоритм загрузки и\r\n// в модуле менеджера справочника определены функции.\r\n//\r\nПроцедура ПриОпределенииСправочниковДляЗагрузкиДанных(ЗагружаемыеСправочники) Экспорт\r\n\u0009\r\n\u0009// Запрет загрузки в определенные справочники\r\n\u0009ИсключаемыеИзЗагрузки = Новый Массив;\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ВерсииРасширений.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ВидыКонтактнойИнформации.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ЗначенияСвойствОбъектов.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ЗначенияСвойствОбъектовИерархия.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.НастройкиАвторизацииИнтернетСервисов.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ПапкиФайлов.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ПроизводственныеКалендари.ПолноеИмя());\r\n\u0009ИсключаемыеИзЗагрузки.Добавить(Метаданные.Справочники.ЯзыкиПечатныхФорм.ПолноеИмя());\r\n\u0009\r\n\u0009Для каждого ИмяСправочника Из ИсключаемыеИзЗагрузки Цикл\r\n\u0009\u0009\r\n\u0009\u0009СтрокаТаблицы = ЗагружаемыеСправочники.Найти(ИмяСправочника, \"ПолноеИмя\");\r\n\u0009\u0009Если СтрокаТаблицы <> Неопределено Тогда\r\n\u0009\u0009\u0009ЗагружаемыеСправочники.Удалить(СтрокаТаблицы);\r\n\u0009\u0009КонецЕсли;\r\n\u0009\r\n\u0009КонецЦикла;\r\n\r\n\u0009// Собственный алгоритм загрузки данных в справочник \"Номенклатура\"\r\n\u0009СтрокаТаблицы = ЗагружаемыеСправочники.Найти(Метаданные.Справочники.Номенклатура.ПолноеИмя(), \"ПолноеИмя\");\r\n\u0009Если СтрокаТаблицы <> Неопределено Тогда\r\n\u0009\u0009СтрокаТаблицы.ПрикладнаяЗагрузка = Истина;\u0009\u0009\r\n\u0009КонецЕсли;\r\n\r\nКонецПроцедуры\r\n",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "ОМ ЗагрузкаДанныхИзФайлаПереопределяемый"
+ },
+ {
+ "value": "#Область ПрограммныйИнтерфейс\r\n\r\n#Область ДляВызоваИзДругихПодсистем\r\n\r\n// СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла\r\n\r\n// Устанавливает параметры загрузки данных из файла\r\n//\r\n// Параметры:\r\n// Параметры - см. ЗагрузкаДанныхИзФайла.ПараметрыЗагрузкиИзФайла\r\n// \r\nПроцедура ОпределитьПараметрыЗагрузкиДанныхИзФайла(Параметры) Экспорт\r\n\u0009\r\n\u0009Параметры.ТипДанныхКолонки.Вставить(\"Штрихкод\", ОбщегоНазначения.ОписаниеТипаСтрока(50));\r\n\u0009Параметры.ТипДанныхКолонки.Вставить(\"Артикул\", ОбщегоНазначения.ОписаниеТипаСтрока(50));\r\n\u0009Параметры.ТипДанныхКолонки.Вставить(\"Наименование\", ОбщегоНазначения.ОписаниеТипаСтрока(100));\r\n\u0009\u0009\r\nКонецПроцедуры\r\n\r\n// Производит сопоставление загружаемых данных с данными в ИБ.\r\n//\r\n// Параметры:\r\n// ЗагружаемыеДанные - см. ЗагрузкаДанныхИзФайла.ТаблицаСопоставления\r\n//\r\nПроцедура СопоставитьЗагружаемыеДанныеИзФайла(ЗагружаемыеДанные) Экспорт\r\n\u0009\r\n\u0009Запрос = Новый Запрос;\r\n\u0009Запрос.Текст = \r\n\u0009\u0009\"ВЫБРАТЬ\r\n\u0009\u0009|\u0009ЗагружаемыеДанные.Наименование КАК Наименование,\r\n\u0009\u0009|\u0009ЗагружаемыеДанные.Штрихкод КАК Штрихкод,\r\n\u0009\u0009|\u0009ЗагружаемыеДанные.Артикул КАК Артикул,\r\n\u0009\u0009|\u0009ЗагружаемыеДанные.Идентификатор КАК Идентификатор\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_ЗагружаемыеДанные\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009&ЗагружаемыеДанные КАК ЗагружаемыеДанные\r\n\u0009\u0009|\r\n\u0009\u0009|ИНДЕКСИРОВАТЬ ПО\r\n\u0009\u0009|\u0009Штрихкод,\r\n\u0009\u0009|\u0009Идентификатор,\r\n\u0009\u0009|\u0009Артикул\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,\r\n\u0009\u0009|\u0009ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,\r\n\u0009\u0009|\u0009ВТ_ЗагружаемыеДанные.Идентификатор КАК Идентификатор\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_СопоставленныеТоварыПоШтрихкоду\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_ЗагружаемыеДанные КАК ВТ_ЗагружаемыеДанные\r\n\u0009\u0009|\u0009\u0009ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры\r\n\u0009\u0009|\u0009\u0009ПО ВТ_ЗагружаемыеДанные.Штрихкод = ШтрихкодыНоменклатуры.Штрихкод\r\n\u0009\u0009|\u0009\u0009\u0009И (ВТ_ЗагружаемыеДанные.Штрихкод <> \"\"\"\")\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009ВТ_ЗагружаемыеДанные.Идентификатор КАК Идентификатор,\r\n\u0009\u0009|\u0009ВТ_ЗагружаемыеДанные.Артикул КАК Артикул\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_ДанныеДляСопоставленияПоАртикулу\r\n\u0009\u0009|ИЗ \r\n\u0009\u0009|\u0009ВТ_ЗагружаемыеДанные КАК ВТ_ЗагружаемыеДанные\r\n\u0009\u0009|\u0009\u0009ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СопоставленныеТоварыПоШтрихкоду КАК ВТ_СопоставленныеТоварыПоШтрихкоду\r\n\u0009\u0009|\u0009\u0009ПО ВТ_ЗагружаемыеДанные.Идентификатор = ВТ_СопоставленныеТоварыПоШтрихкоду.Идентификатор\r\n\u0009\u0009|ГДЕ\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоШтрихкоду.Штрихкод ЕСТЬ NULL\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоШтрихкоду.Идентификатор КАК Идентификатор,\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоШтрихкоду.Номенклатура КАК Ссылка\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоШтрихкоду КАК ВТ_СопоставленныеТоварыПоШтрихкоду\r\n\u0009\u0009|\r\n\u0009\u0009|ОБЪЕДИНИТЬ ВСЕ\r\n\u0009\u0009|\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставленияПоАртикулу.Идентификатор,\r\n\u0009\u0009|\u0009Номенклатура.Ссылка\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставленияПоАртикулу КАК ВТ_ДанныеДляСопоставленияПоАртикулу\r\n\u0009\u0009|\u0009\u0009ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура\r\n\u0009\u0009|\u0009\u0009ПО ВТ_ДанныеДляСопоставленияПоАртикулу.Артикул = Номенклатура.Артикул\r\n\u0009\u0009|\u0009\u0009\u0009И (ВТ_ДанныеДляСопоставленияПоАртикулу.Артикул <> \"\"\"\")\r\n\u0009\u0009|\u0009\u0009\u0009И (Номенклатура.ПометкаУдаления = ЛОЖЬ)\";\r\n\u0009\r\n\u0009Запрос.УстановитьПараметр(\"ЗагружаемыеДанные\", ЗагружаемыеДанные);\r\n\u0009РезультатЗапроса = Запрос.Выполнить();\r\n\u0009\r\n\u0009Выборка = РезультатЗапроса.Выбрать();\r\n\u0009\r\n\u0009Пока Выборка.Следующий() Цикл\r\n\u0009\u0009\r\n\u0009\u0009Фильтр = Новый Структура(\"Идентификатор\", Выборка.Идентификатор);\r\n\u0009\u0009НайденныеСтроки = ЗагружаемыеДанные.НайтиСтроки(Фильтр);\r\n\u0009\u0009Для каждого Строка Из НайденныеСтроки Цикл\r\n\u0009\u0009\u0009Строка.ОбъектСопоставления = Выборка.Ссылка;\r\n\u0009\u0009КонецЦикла;\r\n\u0009\u0009\r\n\u0009КонецЦикла;\r\n\u0009\r\nКонецПроцедуры\r\n\r\n// Загрузка данных из файла.\r\n//\r\n// Параметры:\r\n// ЗагружаемыеДанные - см. ЗагрузкаДанныхИзФайла.ОписаниеЗагружаемыхДанныеДляСправочников\r\n// ПараметрыЗагрузки - см. ЗагрузкаДанныхИзФайла.НастройкиЗагрузкиДанных\r\n// Отказ - Булево - отмена загрузки. Например, если данные некорректные.\r\n// – Булево – Отмена загрузки\r\nПроцедура ЗагрузитьИзФайла(ЗагружаемыеДанные, ПараметрыЗагрузки, Отказ) Экспорт\r\n\u0009\r\n\u0009ВидыНоменклатуры = Новый Соответствие;\r\n\u0009ЕдиницыИзмерения = Новый Соответствие;\r\n\u0009ГруппыНоменклатуры = Новый Соответствие; \r\n\u0009\r\n\u0009СтавкаНДСПоУмолчанию = Перечисления.СтавкиНДС.НДС20;\r\n\u0009\r\n\u0009Для Каждого СтрокаТаблицы Из ЗагружаемыеДанные Цикл\r\n\u0009\u0009\r\n\u0009\u0009НоменклатураНайдена = ЗначениеЗаполнено(СтрокаТаблицы.ОбъектСопоставления);\r\n\r\n\u0009\u0009Если (НоменклатураНайдена И ПараметрыЗагрузки.ОбновлятьСуществующие = 0)\r\n\u0009\u0009\u0009Или (Не НоменклатураНайдена И ПараметрыЗагрузки.СоздаватьНовые = 0) Тогда\r\n\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009Продолжить;\r\n\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009НачатьТранзакцию();\r\n\u0009\u0009Попытка\r\n\r\n\u0009\u0009\u0009Если НоменклатураНайдена Тогда\r\n\r\n\u0009\u0009\u0009\u0009Блокировка = Новый БлокировкаДанных;\r\n\u0009\u0009\u0009\u0009ЭлементБлокировки = Блокировка.Добавить(\"Справочник.Номенклатура\");\r\n\u0009\u0009\u0009\u0009ЭлементБлокировки.УстановитьЗначение(\"Ссылка\", СтрокаТаблицы.ОбъектСопоставления);\r\n\u0009\u0009\u0009\u0009Блокировка.Заблокировать();\r\n\r\n\u0009\u0009\u0009\u0009ЭлементСправочника = СтрокаТаблицы.ОбъектСопоставления.ПолучитьОбъект();\r\n\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Обновлен\";\r\n\r\n\u0009\u0009\u0009Иначе\r\n\r\n\u0009\u0009\u0009\u0009ЭлементСправочника = СоздатьЭлемент();\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Создан\";\r\n\r\n\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009ЭлементСправочника.Наименование = СтрокаТаблицы.Наименование;\r\n\u0009\u0009\u0009ЭлементСправочника.НаименованиеПолное = СтрокаТаблицы.Наименование;\r\n\u0009\u0009\u0009ЭлементСправочника.Артикул = СтрокаТаблицы.Артикул;\r\n\r\n\u0009\u0009\u0009Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009Группа = ГруппыНоменклатуры.Получить(СтрокаТаблицы.Родитель);\r\n\u0009\u0009\u0009\u0009Если Группа = Неопределено Тогда\r\n\u0009\u0009\u0009\u0009\u0009Группа = НайтиПоНаименованию(СтрокаТаблицы.Родитель, Истина);\r\n\u0009\u0009\u0009\u0009\u0009Если НЕ Группа.ЭтоГруппа ИЛИ Группа.Пустая() Тогда\r\n\u0009\u0009\u0009\u0009\u0009\u0009НоваяГруппа = СоздатьГруппу();\r\n\u0009\u0009\u0009\u0009\u0009\u0009НоваяГруппа.Наименование = СтрокаТаблицы.Родитель;\r\n\u0009\u0009\u0009\u0009\u0009\u0009НоваяГруппа.Записать(); \r\n\u0009\u0009\u0009\u0009\u0009\u0009Группа = НоваяГруппа.Ссылка;\r\n\u0009\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009\u0009ГруппыНоменклатуры.Вставить(СтрокаТаблицы.Родитель, Группа);\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.Родитель = Группа;\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009ВидНоменклатуры = ВидыНоменклатуры.Получить(СтрокаТаблицы.ВидНоменклатуры);\r\n\u0009\u0009\u0009Если ВидНоменклатуры = Неопределено Тогда\r\n\r\n\u0009\u0009\u0009\u0009ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СтрокаТаблицы.ВидНоменклатуры, Истина);\r\n\u0009\u0009\u0009\u0009Если ВидНоменклатуры.Пустая() Тогда\r\n\u0009\u0009\u0009\u0009\u0009НовыйВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();\r\n\u0009\u0009\u0009\u0009\u0009НовыйВидНоменклатуры.Наименование = СтрокаТаблицы.ВидНоменклатуры;\r\n\u0009\u0009\u0009\u0009\u0009НовыйВидНоменклатуры.Записать(); \r\n\u0009\u0009\u0009\u0009\u0009ВидНоменклатуры = НовыйВидНоменклатуры.Ссылка;\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009\u0009ВидыНоменклатуры.Вставить(СтрокаТаблицы.ВидНоменклатуры, ВидНоменклатуры);\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли; \r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009ЭлементСправочника.ВидНоменклатуры = ВидНоменклатуры;\r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009ЕдиницаИзмерения = ЕдиницыИзмерения.Получить(СтрокаТаблицы.ЕдиницаИзмерения);\r\n\u0009\u0009\u0009Если ЕдиницаИзмерения = Неопределено Тогда\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СтрокаТаблицы.ЕдиницаИзмерения, Истина);\r\n\u0009\u0009\u0009\u0009Если ЕдиницаИзмерения.Пустая() Тогда\r\n\u0009\u0009\u0009\u0009\u0009НоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();\r\n\u0009\u0009\u0009\u0009\u0009НоваяЕдиницаИзмерения.Наименование = СтрокаТаблицы.ЕдиницаИзмерения;\r\n\u0009\u0009\u0009\u0009\u0009НоваяЕдиницаИзмерения.Записать(); \r\n\u0009\u0009\u0009\u0009\u0009ЕдиницаИзмерения = НоваяЕдиницаИзмерения.Ссылка;\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009ЕдиницыИзмерения.Вставить(СтрокаТаблицы.ЕдиницаИзмерения, ЕдиницаИзмерения);\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли; \r\n\r\n\u0009\u0009\u0009ЭлементСправочника.ЕдиницаИзмерения = ЕдиницаИзмерения;\r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009Если НЕ ЗначениеЗаполнено(ЭлементСправочника.СтавкаНДС) Тогда\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.СтавкаНДС = СтавкаНДСПоУмолчанию;\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009Если Не ЭлементСправочника.ПроверитьЗаполнение() Тогда\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009\u0009СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);\r\n\u0009\u0009\u0009\u0009Если СообщенияПользователю.Количество() > 0 Тогда\r\n\u0009\u0009\u0009\u0009\u0009ТекстСообщений = \"\";\r\n\u0009\u0009\u0009\u0009\u0009Для Каждого СообщениеПользователю Из СообщенияПользователю Цикл\r\n\u0009\u0009\u0009\u0009\u0009\u0009ТекстСообщений = ТекстСообщений + СообщениеПользователю.Текст + Символы.ПС;\r\n\u0009\u0009\u0009\u0009\u0009КонецЦикла;\r\n\u0009\u0009\u0009\u0009\u0009СтрокаТаблицы.ОписаниеОшибки = ТекстСообщений;\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009ОтменитьТранзакцию();\r\n\u0009\u0009\u0009Иначе\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.Записать();\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.ОбъектСопоставления = ЭлементСправочника.Ссылка;\r\n\r\n\u0009\u0009\u0009\u0009ЗагрузкаДанныхИзФайла.ЗаписатьСвойстваОбъекта(ЭлементСправочника.Ссылка, СтрокаТаблицы);\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009Если ЗначениеЗаполнено(СтрокаТаблицы.Штрихкод) Тогда\r\n\u0009\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009\u0009Блокировка = Новый БлокировкаДанных;\r\n\u0009\u0009\u0009\u0009\u0009ЭлементБлокировки = Блокировка.Добавить(\"РегистрСведений.ШтрихкодыНоменклатуры\");\r\n\u0009\u0009\u0009\u0009\u0009ЭлементБлокировки.УстановитьЗначение(\"Штрихкод\", СтрокаТаблицы.Штрихкод);\r\n\u0009\u0009\u0009\u0009\u0009Блокировка.Заблокировать();\r\n\u0009\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009\u0009НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();\r\n\u0009\u0009\u0009\u0009\u0009НовыйШтрихкод.Штрихкод = СтрокаТаблицы.Штрихкод;\r\n\u0009\u0009\u0009\u0009\u0009НовыйШтрихкод.Номенклатура = ЭлементСправочника.Ссылка;\r\n\u0009\u0009\u0009\u0009\u0009НовыйШтрихкод.Записать();\r\n\u0009\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009ЗафиксироватьТранзакцию(); \r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\r\n\u0009\u0009Исключение\r\n\u0009\u0009\u0009ОтменитьТранзакцию();\r\n\u0009\u0009\u0009Причина = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());\r\n\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009СтрокаТаблицы.ОписаниеОшибки = НСтр(\"ru = 'Невозможна запись данных по причине:'\") + Символы.ПС + Причина;\r\n\u0009\u0009КонецПопытки;\r\n\u0009КонецЦикла;\r\n\u0009\r\nКонецПроцедуры\r\n\r\n// Конец СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла\r\n\r\n#КонецОбласти\r\n\u0009\r\n#КонецОбласти\r\n",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "Свой алгоритм (модуль менеджера справочника)"
+ },
+ {
+ "value": "#Область ПрограммныйИнтерфейс\r\n\r\n#Область ДляВызоваИзДругихПодсистем\r\n\r\n// СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла\r\n\r\n// Переопределяет параметры загрузки данных из файла.\r\n//\r\n// Параметры:\r\n// Параметры - Структура:\r\n// * ИмяМакетаСШаблоном - Строка - наименование макета. Например, \"ЗагрузкаИзФайла\".\r\n// * ИмяТабличнойЧасти - Строка - Полное имя табличной части. Например, \"Документ._ДемоСчетНаОплатуПокупателю.ТабличнаяЧасть.Товары\"\r\n// * ОбязательныеКолонки - Массив из Строка - наименования обязательных для заполнения колонок.\r\n// * ТипДанныхКолонки - Соответствие из КлючИЗначение:\r\n// * Ключ - Строка - имя колонки;\r\n// * Значение - ОписаниеТипов - тип колонки загружаемых данных.\r\n// * ДополнительныеПараметры - Структура\r\n//\r\nПроцедура УстановитьПараметрыЗагрузкиИзФайлаВТЧ(Параметры) Экспорт\r\n\u0009\r\n\u0009Параметры.ТипДанныхКолонки.Вставить(\"Артикул\", ОбщегоНазначения.ОписаниеТипаСтрока(50));\r\n\u0009Параметры.ТипДанныхКолонки.Вставить(\"Номенклатура\", ОбщегоНазначения.ОписаниеТипаСтрока(100));\r\n\u0009\r\n\u0009Параметры.ОбязательныеКолонки.Добавить(\"Артикул\");\r\n\u0009Параметры.ОбязательныеКолонки.Добавить(\"Номенклатура\");\r\n\u0009Параметры.ОбязательныеКолонки.Добавить(\"Количество\");\r\n\u0009Параметры.ОбязательныеКолонки.Добавить(\"Цена\");\r\n\u0009\r\nКонецПроцедуры\r\n\r\n// Производит сопоставление данных, загружаемых в табличную часть ПолноеИмяТабличнойЧасти,\r\n// с данными в ИБ, и заполняет параметры АдресТаблицыСопоставления и СписокНеоднозначностей.\r\n//\r\n// Параметры:\r\n// АдресЗагружаемыхДанных – Строка – адрес временного хранилища с таблицей значений, в которой\r\n// находятся загруженные данные из файла. Состав колонок:\r\n// * Идентификатор – Число – порядковый номер строки;\r\n// * остальные колонки соответствуют колонкам макета ЗагрузкаИзФайла.\r\n// АдресТаблицыСопоставления – Строка – адрес временного хранилища с пустой таблицей значений,\r\n// являющейся копией табличной части документа, \r\n// которую необходимо заполнить из таблицы АдресЗагружаемыхДанных.\r\n// СписокНеоднозначностей – ТаблицаЗначений – список неоднозначных значений, для которых в ИБ имеется несколько подходящих вариантов.\r\n// * Колонка – Строка – имя колонки, в которой была обнаружена неоднозначность;\r\n// * Идентификатор – Число – идентификатор строки, в которой была обнаружена неоднозначность.\r\n// ПолноеИмяТабличнойЧасти – Строка – полное имя табличной части, в которую загружаются данные.\r\n// ДополнительныеПараметры – ЛюбойТип – Любые дополнительные сведения.\r\n//\r\nПроцедура СопоставитьЗагружаемыеДанные(АдресЗагружаемыхДанных, АдресТаблицыСопоставления, СписокНеоднозначностей, ПолноеИмяТабличнойЧасти, ДополнительныеПараметры) Экспорт\r\n\r\n\u0009Товары = ПолучитьИзВременногоХранилища(АдресТаблицыСопоставления); // ТаблицаЗначений\r\n\u0009ЗагружаемыеДанные = ПолучитьИзВременногоХранилища(АдресЗагружаемыхДанных); // ТаблицаЗначений\r\n\u0009\r\n\u0009МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;\r\n\u0009\r\n\u0009Запрос = Новый Запрос;\r\n\u0009Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;\r\n\u0009Запрос.Текст = \r\n\u0009\u0009\"ВЫБРАТЬ\r\n\u0009\u0009|\u0009ДанныеДляСопоставления.Артикул КАК Артикул,\r\n\u0009\u0009|\u0009ДанныеДляСопоставления.Номенклатура КАК Номенклатура,\r\n\u0009\u0009|\u0009ДанныеДляСопоставления.Идентификатор КАК Идентификатор\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_ДанныеДляСопоставления\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009&ДанныеДляСопоставления КАК ДанныеДляСопоставления\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009СпрНоменклатура.Ссылка КАК Ссылка,\r\n\u0009\u0009|\u0009СпрНоменклатура.Артикул КАК Артикул,\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставления.Идентификатор КАК Идентификатор\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_СопоставленныеТоварыПоАртикулу\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставления КАК ВТ_ДанныеДляСопоставления\r\n\u0009\u0009|\u0009\u0009ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура\r\n\u0009\u0009|\u0009\u0009ПО (СпрНоменклатура.Артикул = ВТ_ДанныеДляСопоставления.Артикул)\r\n\u0009\u0009|\u0009\u0009\u0009И (ВТ_ДанныеДляСопоставления.Артикул <> \"\"\"\")\r\n\u0009\u0009|\r\n\u0009\u0009|ИНДЕКСИРОВАТЬ ПО\r\n\u0009\u0009|\u0009Идентификатор\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставления.Номенклатура КАК Номенклатура,\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставления.Идентификатор КАК Идентификатор\r\n\u0009\u0009|ПОМЕСТИТЬ ВТ_ДанныеДляСопоставленияПоНаименованию\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставления КАК ВТ_ДанныеДляСопоставления\r\n\u0009\u0009|\u0009\u0009ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СопоставленныеТоварыПоАртикулу КАК ВТ_СопоставленныеТоварыПоАртикулу\r\n\u0009\u0009|\u0009\u0009ПО ВТ_ДанныеДляСопоставления.Идентификатор = ВТ_СопоставленныеТоварыПоАртикулу.Идентификатор\r\n\u0009\u0009|ГДЕ\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоАртикулу.Идентификатор ЕСТЬ NULL\r\n\u0009\u0009|\r\n\u0009\u0009|ИНДЕКСИРОВАТЬ ПО\r\n\u0009\u0009|\u0009Идентификатор\r\n\u0009\u0009|;\r\n\u0009\u0009|\r\n\u0009\u0009|////////////////////////////////////////////////////////////////////////////////\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009МАКСИМУМ(СпрНоменклатура.Ссылка) КАК Ссылка,\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставленияПоНаименованию.Идентификатор КАК Идентификатор,\r\n\u0009\u0009|\u0009КОЛИЧЕСТВО(ВТ_ДанныеДляСопоставленияПоНаименованию.Идентификатор) КАК Количество\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставленияПоНаименованию КАК ВТ_ДанныеДляСопоставленияПоНаименованию\r\n\u0009\u0009|\u0009\u0009ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура\r\n\u0009\u0009|\u0009\u0009ПО (СпрНоменклатура.Наименование = ВТ_ДанныеДляСопоставленияПоНаименованию.Номенклатура)\r\n\u0009\u0009|\r\n\u0009\u0009|СГРУППИРОВАТЬ ПО\r\n\u0009\u0009|\u0009ВТ_ДанныеДляСопоставленияПоНаименованию.Идентификатор\r\n\u0009\u0009|\r\n\u0009\u0009|ОБЪЕДИНИТЬ ВСЕ\r\n\u0009\u0009|\r\n\u0009\u0009|ВЫБРАТЬ\r\n\u0009\u0009|\u0009МАКСИМУМ(ВТ_СопоставленныеТоварыПоАртикулу.Ссылка),\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоАртикулу.Идентификатор,\r\n\u0009\u0009|\u0009КОЛИЧЕСТВО(ВТ_СопоставленныеТоварыПоАртикулу.Идентификатор)\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоАртикулу КАК ВТ_СопоставленныеТоварыПоАртикулу\r\n\u0009\u0009|\r\n\u0009\u0009|СГРУППИРОВАТЬ ПО\r\n\u0009\u0009|\u0009ВТ_СопоставленныеТоварыПоАртикулу.Идентификатор\";\r\n\r\n\u0009Запрос.УстановитьПараметр(\"ДанныеДляСопоставления\", ЗагружаемыеДанные);\r\n\u0009МассивРезультатов = Запрос.ВыполнитьПакет();\r\n\u0009\r\n\u0009ТаблицаНоменклатура = МассивРезультатов[3].Выгрузить();\r\n\u0009\r\n\u0009ЕдиницыИзмерения = Новый Соответствие;\r\n\u0009\r\n\u0009Для каждого СтрокаТаблицы Из ЗагружаемыеДанные Цикл\r\n\u0009\u0009\r\n\u0009\u0009Товар = Товары.Добавить();\r\n\u0009\u0009Товар.Идентификатор = СтрокаТаблицы.Идентификатор;\r\n\u0009\u0009Товар.Количество = СтрокаТаблицы.Количество;\r\n\u0009\u0009Товар.Цена = СтрокаТаблицы.Цена;\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009СтрокаНоменклатура = ТаблицаНоменклатура.Найти(СтрокаТаблицы.Идентификатор, \"Идентификатор\");\r\n\u0009\u0009Если СтрокаНоменклатура <> Неопределено Тогда \r\n\u0009\u0009\u0009\r\n\u0009\u0009\u0009Если СтрокаНоменклатура.Количество = 1 Тогда \r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009РеквизитыНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаНоменклатура.Ссылка, \r\n\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\"ЕдиницаИзмерения, СтавкаНДС\");\r\n\u0009\u0009\u0009\u0009Товар.Номенклатура = СтрокаНоменклатура.Ссылка; \r\n\u0009\u0009\u0009\u0009Товар.ЕдиницаИзмерения = РеквизитыНоменклатуры.ЕдиницаИзмерения;\r\n\u0009\u0009\u0009\u0009Товар.СтавкаНДС = РеквизитыНоменклатуры.СтавкаНДС;\r\n\u0009\u0009\u0009\u0009ОбработкаТабличныхЧастей.РассчитатьСуммыВСтрокеТЧ(Товар);\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009ИначеЕсли СтрокаНоменклатура.Количество > 1 Тогда\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009\u0009ЗаписьОНеоднозначности = СписокНеоднозначностей.Добавить();\r\n\u0009\u0009\u0009\u0009ЗаписьОНеоднозначности.Идентификатор = СтрокаТаблицы.Идентификатор;\r\n\u0009\u0009\u0009\u0009ЗаписьОНеоднозначности.Колонка = \"Номенклатура\";\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\r\n\u0009\u0009КонецЕсли;\r\n\u0009\u0009\r\n\u0009КонецЦикла;\r\n\u0009\r\n\u0009ПоместитьВоВременноеХранилище(Товары, АдресТаблицыСопоставления);\r\n\u0009\r\nКонецПроцедуры\r\n\r\n// Возвращает список подходящих объектов ИБ для неоднозначного значения ячейки.\r\n// \r\n// Параметры:\r\n// ПолноеИмяТабличнойЧасти - Строка - полное имя табличной части, в которую загружаются данные.\r\n// СписокНеоднозначностей - Массив из СправочникСсылка.Номенклатура - массив для заполнения с неоднозначными данными.\r\n// ИмяКолонки - Строка - имя колонки, в который возникла неоднозначность.\r\n// ЗагружаемыеЗначенияСтрока - Строка - загружаемые данные на основании которых возникла неоднозначность.\r\n// ДополнительныеПараметры - Произвольный - любые дополнительные сведения.\r\n//\r\nПроцедура ЗаполнитьСписокНеоднозначностей(ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, ИмяКолонки, ЗагружаемыеЗначенияСтрока, ДополнительныеПараметры) Экспорт\r\n\u0009\r\n\u0009Если ИмяКолонки = \"Номенклатура\" Тогда\r\n\u0009\u0009\r\n\u0009\u0009Запрос = Новый Запрос;\r\n\u0009\u0009Запрос.Текст = \r\n\u0009\u0009\"ВЫБРАТЬ\r\n\u0009\u0009|\u0009Номенклатура.Ссылка\r\n\u0009\u0009|ИЗ\r\n\u0009\u0009|\u0009Справочник.Номенклатура КАК Номенклатура\";\r\n\r\n\u0009\u0009ТекстУсловия = \"\";\r\n\u0009\u0009Если ЗначениеЗаполнено(ЗагружаемыеЗначенияСтрока.Номенклатура) Тогда\r\n\u0009\u0009\u0009ТекстУсловия = \" ГДЕ Номенклатура.Наименование = &Наименование\";\r\n\u0009\u0009\u0009Запрос.УстановитьПараметр(\"Наименование\", ЗагружаемыеЗначенияСтрока.Номенклатура);\r\n\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\r\n\u0009\u0009Если ЗначениеЗаполнено(ЗагружаемыеЗначенияСтрока.Артикул) Тогда\r\n\u0009\u0009\u0009Если ЗначениеЗаполнено(ТекстУсловия) Тогда\r\n\u0009\u0009\u0009\u0009ТекстУсловия = ТекстУсловия + \" ИЛИ Номенклатура.Артикул = &Артикул\";\r\n\u0009\u0009\u0009Иначе\r\n\u0009\u0009\u0009\u0009ТекстУсловия = \"ГДЕ Номенклатура.Артикул = &Артикул\";\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009Запрос.УстановитьПараметр(\"Артикул\", ЗагружаемыеЗначенияСтрока.Артикул);\r\n\u0009\u0009\u0009\r\n\u0009\u0009КонецЕсли;\r\n\u0009\u0009\r\n\u0009\u0009Запрос.Текст = Запрос.Текст + Символы.ПС + ТекстУсловия;\r\n\u0009\u0009\r\n\u0009\u0009РезультатЗапроса = Запрос.Выполнить();\r\n\u0009\u0009\r\n\u0009\u0009Выборка = РезультатЗапроса.Выбрать();\r\n\u0009\u0009Пока Выборка.Следующий() Цикл\r\n\u0009\u0009\u0009СписокНеоднозначностей.Добавить(Выборка.Ссылка);\r\n\u0009\u0009КонецЦикла;\r\n\r\n\u0009КонецЕсли;\r\n\u0009\r\nКонецПроцедуры\r\n\r\n// Конец СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла\r\n\r\n#КонецОбласти\r\n\u0009\r\n#КонецОбласти",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "Загрузка данных в ТЧ (модуль менеджера)"
+ },
+ {
+ "value": "#Область ОбработчикиКомандФормы\r\n\r\n&НаКлиенте\r\nПроцедура ЗагрузитьТоварыИзФайла(Команда)\r\n\u0009\r\n\u0009ПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();\r\n ПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = \"ПриходнаяНакладная.Товары\";\r\n ПараметрыЗагрузки.Заголовок = НСтр(\"ru = 'Загрузка списка товаров из файла'\");\r\n\r\n\u0009ДополнительныеПараметры = Новый Структура();\r\n ДополнительныеПараметры.Вставить(\"Контрагент\", Объект.Контрагент);\r\n ДополнительныеПараметры.Вставить(\"Организация\", Объект.Организация);\r\n\u0009\r\n\u0009ПараметрыЗагрузки.ДополнительныеПараметры = ДополнительныеПараметры;\r\n\r\n\u0009Оповещение = Новый ОписаниеОповещения(\"ЗагрузитьТоварыИзФайлаЗавершение\", ЭтотОбъект);\r\n ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки(ПараметрыЗагрузки, Оповещение);\r\n\r\nКонецПроцедуры\r\n\r\n#КонецОбласти\r\n\r\n#Область СлужебныеПроцедурыИФункции\r\n\r\n&НаКлиенте\r\nПроцедура ЗагрузитьТоварыИзФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт\r\n \r\n Если АдресЗагруженныхДанных = Неопределено Тогда \r\n Возврат;\r\n КонецЕсли;\r\n \r\n ЗагрузитьТоварыИзФайлаНаСервере(АдресЗагруженныхДанных);\r\n\u0009\r\nКонецПроцедуры\r\n\r\n&НаСервере\r\nПроцедура ЗагрузитьТоварыИзФайлаНаСервере(АдресЗагруженныхДанных)\r\n \r\n ЗагруженныеДанные = ПолучитьИзВременногоХранилища(АдресЗагруженныхДанных);\r\n \r\n ТоварыДобавлены = Ложь;\r\n Для каждого СтрокаТаблицы Из ЗагруженныеДанные Цикл \r\n \r\n Если Не ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда \r\n Продолжить;\r\n КонецЕсли;\r\n\u0009\u0009\r\n\u0009\u0009СтрокаТовары = Объект.Товары.Добавить();\r\n\u0009\u0009ЗаполнитьЗначенияСвойств(СтрокаТовары, СтрокаТаблицы);\r\n\u0009\u0009\u0009\u0009\r\n\u0009\u0009ТоварыДобавлены = Истина;\r\n\u0009\u0009\r\n\u0009КонецЦикла;\r\n \r\n Если ТоварыДобавлены Тогда\r\n Модифицированность = Истина;\r\n КонецЕсли;\r\n \r\nКонецПроцедуры\r\n\r\n#КонецОбласти",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "Загрузка данных в ТЧ (модуль формы)"
+ }
+ ],
+ "type": "П.ЭлементыДанных.Группа",
+ "name": "Внедрение"
+ },
+ {
+ "value": [
+ {
+ "value": "// Создает новую структуру параметров для загрузки данных из файла в табличную часть.\r\n// Синтаксис\r\n//\r\n// Функция ПараметрыЗагрузкиДанных() Экспорт\r\n// Возвращаемое значение\r\n//\r\n// Структура - параметры для открытия формы загрузки данных в табличную часть:\r\n// * ПолноеИмяТабличнойЧасти - Строка - полный путь к табличной части документа,\r\n// в виде \"ИмяДокумента.ИмяТабличнойЧасти\".\r\n// * Заголовок - Строка - заголовок формы загрузки данных из файла.\r\n// * ИмяМакетаСШаблоном - Строка - имя макета с шаблоном для ввода данных.\r\n// * Представление - Строка - заголовок окна в форме загрузке данных.\r\n// * ДополнительныеПараметры - Произвольный - любые дополнительные сведения, которые будут переданы\r\n// в процедуру сопоставления данных.\r\n\r\nПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();\r\nПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = \"ПриходнаяНакладная.Товары\";\r\nПараметрыЗагрузки.Заголовок = НСтр(\"ru = 'Загрузка списка товаров из файла'\");\r\n\r\nДополнительныеПараметры = Новый Структура();\r\nДополнительныеПараметры.Вставить(\"Контрагент\", Объект.Контрагент);\r\nДополнительныеПараметры.Вставить(\"Организация\", Объект.Организация);\r\n\r\nПараметрыЗагрузки.ДополнительныеПараметры = ДополнительныеПараметры;",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "ПараметрыЗагрузкиДанных"
+ },
+ {
+ "value": "// Открывает форму загрузки данных для заполнения табличной части.\r\n// Синтаксис\r\n//\r\n// Процедура ПоказатьФормуЗагрузки(ПараметрыЗагрузки, ОповещениеОЗагрузке) Экспорт\r\n// Параметры\r\n//\r\n// ПараметрыЗагрузки - см. ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных.\r\n// ОповещениеОЗагрузке - ОписаниеОповещения - оповещение, которое будет вызвано для добавления загруженных данных в\r\n// табличную часть.\r\n\r\n// Пример открытия формы загрузки данных при выполнении команды \"Загрузить из файла\" в форме документа\r\n\r\n&НаКлиенте\r\nПроцедура ЗагрузитьТоварыИзФайла(Команда)\r\n\u0009\r\n\u0009ПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();\r\n ПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = \"ПриходнаяНакладная.Товары\";\r\n ПараметрыЗагрузки.Заголовок = НСтр(\"ru = 'Загрузка списка товаров из файла'\");\r\n\r\n\u0009ДополнительныеПараметры = Новый Структура();\r\n ДополнительныеПараметры.Вставить(\"Контрагент\", Объект.Контрагент);\r\n ДополнительныеПараметры.Вставить(\"Организация\", Объект.Организация);\r\n\u0009\r\n\u0009ПараметрыЗагрузки.ДополнительныеПараметры = ДополнительныеПараметры;\r\n\r\n\u0009Оповещение = Новый ОписаниеОповещения(\"ЗагрузитьТоварыИзФайлаЗавершение\", ЭтотОбъект);\r\n ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки(ПараметрыЗагрузки, Оповещение);\r\n\r\nКонецПроцедуры\r\n",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "ПоказатьФормуЗагрузки"
+ },
+ {
+ "value": "// Сохраняет значения дополнительных реквизитов и свойств из строки таблицы загружаемых данных в объект-владелец.\r\n// Внутри функции код сам находит колонки содержащие значения дополнительных реквизитов или свойств и записывает их.\r\n// Вызывается из процедуры ЗагрузитьИзФайла при прикладной загрузке данных в модуле менеджере объекта.\r\n// Синтаксис\r\n//\r\n// Процедура ЗаписатьСвойстваОбъекта(СсылкаНаОбъект, СтрокаТаблицы) Экспорт\r\n// Параметры\r\n//\r\n// СсылкаНаОбъект - ЛюбаяСсылка - ссылка на объект-владельца свойств куда загружаются данные.\r\n// СтрокаТаблицы - СтрокаТаблицыЗначений: см. ЗагрузкаДанныхИзФайла.ОписаниеЗагружаемыхДанныхДляСправочников\r\n\r\n// Пример использования в модуле менеджера загружаемого справочника\r\n\r\nПроцедура ЗагрузитьИзФайла(ЗагружаемыеДанные, ПараметрыЗагрузки, Отказ) Экспорт\r\n\r\n\u0009Для Каждого СтрокаТаблицы Из ЗагружаемыеДанные Цикл\r\n\u0009\u0009\r\n\u0009\u0009ОбъектСопоставленияЗаполнен = ЗначениеЗаполнено(СтрокаТаблицы.ОбъектСопоставления);\r\n\r\n\u0009\u0009Если (ОбъектСопоставленияЗаполнен И ПараметрыЗагрузки.ОбновлятьСуществующие = 0)\r\n\u0009\u0009\u0009Или (Не ОбъектСопоставленияЗаполнен И ПараметрыЗагрузки.СоздаватьНовые = 0) Тогда\r\n\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009Продолжить;\r\n\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);\r\n\u0009\u0009НачатьТранзакцию();\r\n\u0009\u0009Попытка\r\n\r\n\u0009\u0009\u0009Если ОбъектСопоставленияЗаполнен Тогда\r\n\r\n\u0009\u0009\u0009\u0009Блокировка = Новый БлокировкаДанных;\r\n\u0009\u0009\u0009\u0009ЭлементБлокировки = Блокировка.Добавить(\"Справочник._ДемоНоменклатура\");\r\n\u0009\u0009\u0009\u0009ЭлементБлокировки.УстановитьЗначение(\"Ссылка\", СтрокаТаблицы.ОбъектСопоставления);\r\n\u0009\u0009\u0009\u0009Блокировка.Заблокировать();\r\n\r\n\u0009\u0009\u0009\u0009ЭлементСправочника = СтрокаТаблицы.ОбъектСопоставления.ПолучитьОбъект();\r\n\r\n\u0009\u0009\u0009\u0009Если ЭлементСправочника = Неопределено Тогда\r\n\u0009\u0009\u0009\u0009\u0009ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(\r\n\u0009\u0009\u0009\u0009\u0009\u0009НСтр(\"ru = 'Номенклатура с артикулом %1 не существует.'\"), СтрокаТаблицы.Артикул);\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Обновлен\";\r\n\r\n\u0009\u0009\u0009Иначе\r\n\r\n\u0009\u0009\u0009\u0009ЭлементСправочника = СоздатьЭлемент();\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Создан\";\r\n\r\n\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009ЭлементСправочника.Наименование = СтрокаТаблицы.Наименование;\r\n\u0009\u0009\u0009ЭлементСправочника.Штрихкод = СтрокаТаблицы.Штрихкод;\r\n\u0009\u0009\u0009Если ЗначениеЗаполнено(СтрокаТаблицы.Страна) Тогда\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.СтранаПроисхождения = Справочники.СтраныМира.НайтиПоНаименованию(СтрокаТаблицы.Страна);\r\n\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда\r\n\u0009\u0009\u0009\u0009Родитель = НайтиПоНаименованию(СтрокаТаблицы.Родитель, Истина);\r\n\u0009\u0009\u0009\u0009Если Родитель = Неопределено Или Не Родитель.ЭтоГруппа Или Родитель.Пустая() Тогда\r\n\u0009\u0009\u0009\u0009\u0009Родитель = СоздатьГруппу();\r\n\u0009\u0009\u0009\u0009\u0009Родитель.Наименование = СтрокаТаблицы.Родитель;\r\n\u0009\u0009\u0009\u0009\u0009Родитель.Записать();\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.Родитель = Родитель.Ссылка;\r\n\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009ВидНоменклатуры = Справочники._ДемоВидыНоменклатуры.НайтиПоНаименованию(СтрокаТаблицы.ВидНоменклатуры, Истина);\r\n\u0009\u0009\u0009Если ВидНоменклатуры = Неопределено Или ВидНоменклатуры.Пустая() Тогда\r\n\u0009\u0009\u0009\u0009ВидНоменклатуры = Справочники._ДемоВидыНоменклатуры.СоздатьЭлемент();\r\n\u0009\u0009\u0009\u0009ВидНоменклатуры.Наименование = СтрокаТаблицы.ВидНоменклатуры;\r\n\u0009\u0009\u0009\u0009ВидНоменклатуры.Записать();\r\n\u0009\u0009\u0009КонецЕсли;\r\n\r\n\u0009\u0009\u0009ЭлементСправочника.ВидНоменклатуры = ВидНоменклатуры.Ссылка;\r\n\u0009\u0009\u0009Если Не ЭлементСправочника.ПроверитьЗаполнение() Тогда\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009\u0009СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);\r\n\u0009\u0009\u0009\u0009Если СообщенияПользователю.Количество() > 0 Тогда\r\n\u0009\u0009\u0009\u0009\u0009ТекстСообщений = \"\";\r\n\u0009\u0009\u0009\u0009\u0009Для Каждого СообщениеПользователю Из СообщенияПользователю Цикл\r\n\u0009\u0009\u0009\u0009\u0009\u0009ТекстСообщений = ТекстСообщений + СообщениеПользователю.Текст + Символы.ПС;\r\n\u0009\u0009\u0009\u0009\u0009КонецЦикла;\r\n\u0009\u0009\u0009\u0009\u0009СтрокаТаблицы.ОписаниеОшибки = ТекстСообщений;\r\n\u0009\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009\u0009\u0009ОтменитьТранзакцию();\r\n\u0009\u0009\u0009Иначе\r\n\u0009\u0009\u0009\u0009ЭлементСправочника.Записать();\r\n\u0009\u0009\u0009\u0009СтрокаТаблицы.ОбъектСопоставления = ЭлементСправочника.Ссылка;\r\n\r\n\u0009\u0009\u0009\u0009ЗагрузкаДанныхИзФайла.ЗаписатьСвойстваОбъекта(ЭлементСправочника.Ссылка, СтрокаТаблицы);\r\n\r\n\u0009\u0009\u0009\u0009УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь);\r\n\u0009\u0009\u0009\u0009ЗафиксироватьТранзакцию();\r\n\u0009\u0009\u0009КонецЕсли;\r\n\u0009\u0009Исключение\r\n\u0009\u0009\u0009ОтменитьТранзакцию();\r\n\u0009\u0009\u0009УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь);\r\n\u0009\u0009\u0009Причина = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());\r\n\u0009\u0009\u0009СтрокаТаблицы.РезультатСопоставленияСтроки = \"Пропущен\";\r\n\u0009\u0009\u0009СтрокаТаблицы.ОписаниеОшибки = НСтр(\"ru = 'Невозможна запись данных по причине:'\") + Символы.ПС + Причина;\r\n\u0009\u0009КонецПопытки;\r\n\u0009КонецЦикла;\r\n\r\nКонецПроцедуры\r\n\r\n",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "ЗаписатьСвойстваОбъекта"
+ },
+ {
+ "value": "// Возвращает описание колонок табличной части или таблицы значений.\r\n// Синтаксис\r\n//\r\n// Функция СформироватьОписаниеКолонок(Таблица, Колонки = Неопределено) Экспорт\r\n// Параметры\r\n//\r\n// Таблица - ТаблицаЗначений - ОписаниеТабличнойЧасти с колонками.\r\n// - Строка - для получения списка колонок табличной части\r\n// необходимо указать его полное имя строкой, как в метаданных, например \"Документы.СчетНаОплату.ТабличныеЧасти.Товары\".\r\n// Колонки - Строка - список извлекаемых колонок, разделенный запятыми. Например: \"Номер, Товар, Количество\".\r\n// Возвращаемое значение\r\n//\r\n// Массив из см. ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета.\r\n\r\n&НаКлиенте\r\nПроцедура ЗагрузитьТоварыИзФайла(Команда)\r\n \r\n ПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();\r\n ПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = \"_ДемоНоменклатура.Аналоги\";\r\n ПараметрыЗагрузки.Заголовок = НСтр(\"ru = 'Загрузка списка аналогов из файла'\");\r\n \r\n // Описание колонок для макета загрузки комплектации\r\n ПараметрыЗагрузки.КолонкиМакета = ОписаниеКолонокМакетаДляЗагрузкиАналогов();\r\n \r\n Оповещение = Новый ОписаниеОповещения(\"ЗагрузитьАналогиИзФайлаЗавершение\", ЭтотОбъект);\r\n ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки(ПараметрыЗагрузки, Оповещение);\r\n \r\nКонецПроцедуры\r\n\r\n&НаСервере\r\nФункция ОписаниеКолонокМакетаДляЗагрузкиАналогов();\r\n \r\n КолонкиМакета = ЗагрузкаДанныхИзФайла.СформироватьОписаниеКолонок(Объект.Аналоги);\r\n ЗагрузкаДанныхИзФайлаКлиентСервер.УдалитьКолонкуМакета(\"Аналог\", КолонкиМакета);\r\n \r\n Если Объект.ВидНоменклатуры.Наименование = \"Услуга\" Тогда\r\n // У услуг нет штрихкода\r\n Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(\"ШтрихкодАртикул\", ОбщегоНазначения.ОписаниеТипаСтрока(20), НСтр(\"ru = 'Артикул'\"));\r\n Иначе\r\n Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(\"ШтрихкодАртикул\", ОбщегоНазначения.ОписаниеТипаСтрока(20), НСтр(\"ru = 'Штрихкод и Артикул'\"));\r\n КонецЕсли;\r\n Колонка.ОбязательнаДляЗаполнения = Истина;\r\n Колонка.Позиция = 1;\r\n Колонка.Группа = \"Номенклатура\";\r\n Колонка.Родитель = \"Аналог\";\r\n КолонкиМакета.Добавить(Колонка);\r\n \r\n Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(\"Наименование\", ОбщегоНазначения.ОписаниеТипаСтрока(100));\r\n Колонка.Группа = \"Номенклатура\";\r\n Колонка.Родитель = \"Аналог\";\r\n Колонка.Позиция = 2;\r\n Колонка.Подсказка = НСтр(\"ru='Наименование аналогичного товара, который полностью идентичен\r\n |по своему функциональному назначению и техническим характеристикам.'\");\r\n КолонкиМакета.Добавить(Колонка);\r\n \r\n Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.КолонкаМакета(\"Совместимость\", КолонкиМакета);\r\n Колонка.Позиция = 3;\r\n \r\n Возврат КолонкиМакета;\r\nКонецФункции",
+ "type": "П.ЭлементыДанных.Код",
+ "name": "Программное создание табличного макета для загрузки данных в табличную часть"
+ }
+ ],
+ "type": "П.ЭлементыДанных.Группа",
+ "name": "Программный интерфейс"
+ }
+]
\ No newline at end of file
diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Обработка Загрузка данных из файла.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/1. Обработка Загрузка данных из файла.md
similarity index 91%
rename from src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Обработка Загрузка данных из файла.md
rename to src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/1. Обработка Загрузка данных из файла.md
index 3c409d3..c4ffdf0 100644
--- a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Обработка Загрузка данных из файла.md
+++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/1. Обработка Загрузка данных из файла.md
@@ -1,6 +1,6 @@
---
-title: Обработка Загрузка данных из файла
-slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/обработка-загрузка-данных-из-файла
+title: 1. Обработка Загрузка данных из файла
+slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/1-обработка-загрузка-данных-из-файла
---
Для загрузки данных используется обработка `Загрузка данных из файла`. По умолчанию она скрыта, найти можно в функциях для технического специалиста.
diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Настраиваемые алгоритмы загрузки в справочники.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/2. Настраиваемые алгоритмы загрузки в справочники.md
similarity index 98%
rename from src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Настраиваемые алгоритмы загрузки в справочники.md
rename to src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/2. Настраиваемые алгоритмы загрузки в справочники.md
index 08c7e57..5838761 100644
--- a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Настраиваемые алгоритмы загрузки в справочники.md
+++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/2. Настраиваемые алгоритмы загрузки в справочники.md
@@ -1,6 +1,6 @@
---
-title: Настраиваемые алгоритмы загрузки в справочники
-slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/настраиваемые-алгоритмы-загрузки-в-справочники
+title: 2. Настраиваемые алгоритмы загрузки в справочники
+slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/2-настраиваемые-алгоритмы-загрузки-в-справочники
---
Т.к. справочники, имеющие реквизиты типа `ХранилищеЗначения` не отображаются в обработке `Загрузка данных из файла` по умолчанию, их при необходимости можно подключить самостоятельно. Также можно отключить какой-нибудь справочник и сделать его недоступным для использования в обработке.
diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/3. Загрузка данных в табличную часть.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/3. Загрузка данных в табличную часть.md
new file mode 100644
index 0000000..0c4d67e
--- /dev/null
+++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/3. Загрузка данных в табличную часть.md
@@ -0,0 +1,319 @@
+---
+title: 3. Загрузка данных в табличную часть
+slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/3-загрузка-данных-в-табличную-часть
+---
+
+Полезное:
+[Консоль кода](/common/konsol-koda-is.epf)
+[Фрагменты кода](/bsp-zagruzka-iz-faila/fragmenty-koda.json)
+
+Подсистема "Загрузка данных из файла" также поддерживает загрузку в табличные части документов и справочников. Для этого нужно:
+
+# Создать макет
+
+Макет создается на уровне объекта и должен обязательно иметь имя, созданное по шаблону **ЗагрузкаИзФайла<ИмяТабличнойЧасти>**. В нем настраиваем вид шапки таблицы **именя ячеек которой должны соответствовать именам реквизитов нужной табличной части**.
+
+>Если табличная часть одна, допускается именовать макет просто **"ЗагрузкаИзФайла"**
+
+
+
+
+
+# Создать команду на форме
+
+В командной панели нужной ТЧ создаем команду `ЗагрузитьТоварыИзФайла` (имя произвольное), в обработчике которой реализуем заполнение служебной структуры, полученной с помощью метода `ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных` и вызываем непосредственное открытие формы загрузки методом `ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки`.
+
+## Пример реализации:
+
+```bsl
+&НаКлиенте
+Процедура ЗагрузитьТоварыИзФайла(Команда)
+
+
+ ПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();
+ ПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = "ПриходнаяНакладная.Товары";
+ ПараметрыЗагрузки.Заголовок = НСтр("ru = 'Загрузка списка товаров из файла'");
+
+ // Любые параметры, которые могут понадобиться дальше при
+ // выполнении метода, указанного в описании оповещения
+ ДополнительныеПараметры = Новый Структура();
+ ДополнительныеПараметры.Вставить("Контрагент", Объект.Контрагент);
+ ДополнительныеПараметры.Вставить("Организация", Объект.Организация);
+
+ ПараметрыЗагрузки.ДополнительныеПараметры = ДополнительныеПараметры;
+
+ Оповещение = Новый ОписаниеОповещения("ЗагрузитьТоварыИзФайлаЗавершение", ЭтотОбъект);
+ ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки(ПараметрыЗагрузки, Оповещение);
+
+КонецПроцедуры
+
+// Выполняем после завершения работы в стандартной форме загрузки из файла
+&НаКлиенте
+Процедура ЗагрузитьТоварыИзФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
+
+ Если АдресЗагруженныхДанных = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ // АдресЗагруженныхДанных - адрес ВХ подготовленной ТЗ с загруженными данными
+ ЗагрузитьТоварыИзФайлаНаСервере(АдресЗагруженныхДанных);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьТоварыИзФайлаНаСервере(АдресЗагруженныхДанных)
+
+ ЗагруженныеДанные = ПолучитьИзВременногоХранилища(АдресЗагруженныхДанных);
+
+ ТоварыДобавлены = Ложь;
+ Для каждого СтрокаТаблицы Из ЗагруженныеДанные Цикл
+
+ Если Не ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ СтрокаТовары = Объект.Товары.Добавить();
+ ЗаполнитьЗначенияСвойств(СтрокаТовары, СтрокаТаблицы);
+
+ ТоварыДобавлены = Истина;
+
+ КонецЦикла;
+
+ Если ТоварыДобавлены Тогда
+ Модифицированность = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+```
+
+# В модуле менеджера реализовать методы программного интерфейса
+
+## Процедура УстановитьПараметрыЗагрузкиИзФайлаВТЧ
+
+Аналогично процедуре `ОпределитьПараметрыЗагрузкиДанныхИзФайла` (см. статью `2. Настраиваемые алгоритмы загрузки в справочники`). Может быть пустой
+
+```bsl
+// Переопределяет параметры загрузки данных из файла.
+//
+// Параметры:
+// Параметры - Структура:
+// * ИмяМакетаСШаблоном - Строка - наименование макета. Например, "ЗагрузкаИзФайла".
+// * ИмяТабличнойЧасти - Строка - полное имя табличной части. Например, "Документ._ДемоСчетНаОплатуПокупателю.ТабличнаяЧасть.Товары"
+// * ОбязательныеКолонки - Массив из Строка - наименования обязательных для заполнения колонок.
+// * ТипДанныхКолонки - Соответствие из КлючИЗначение:
+// * Ключ - Строка - имя колонки;
+// * Значение - ОписаниеТипов - тип колонки загружаемых данных.
+// * ДополнительныеПараметры - Структура
+//
+Процедура УстановитьПараметрыЗагрузкиИзФайлаВТЧ(Параметры) Экспорт
+
+КонецПроцедуры
+```
+
+## Процедура СопоставитьЗагружаемыеДанные
+
+В этой процедуре необходимо заполнить таблицу, находящуюся по адресу `АдресТаблицыСопоставления`
+
+```bsl
+// АдресЗагружаемыхДанных - Строка - адрес временного хранилища с таблицей значений, в которой
+// находятся загруженные данные из файла. Состав колонок:
+// * Идентификатор - Число - порядковый номер строки.
+// Остальные колонки соответствуют колонкам макета ЗагрузкаИзФайла.
+// АдресТаблицыСопоставления - Строка - адрес временного хранилища с пустой таблицей значений,
+// являющейся копией табличной части документа,
+// которую необходимо заполнить из таблицы АдресЗагружаемыхДанных.
+// СписокНеоднозначностей - ТаблицаЗначений - список неоднозначных значений:
+// * Колонка - Строка - имя колонки, в которой была обнаружена неоднозначность.
+// * Идентификатор - Число - идентификатор строки, в которой была обнаружена неоднозначность.
+// ПолноеИмяТабличнойЧасти - Строка - полное имя табличной части, в которую загружаются данные.
+// ДополнительныеПараметры - Произвольный - любые дополнительные сведения.
+Процедура СопоставитьЗагружаемыеДанные(АдресЗагружаемыхДанных, АдресТаблицыСопоставления, СписокНеоднозначностей, ПолноеИмяТабличнойЧасти, ДополнительныеПараметры) Экспорт
+```
+
+|Аргумент|Описание|
+|-|-|
+|`АдресЗагружаемыхДанных`|По этому адресу расположена таблица значений, заполненная на основании введенных пользователем данных в форме обработки|
+|`АдресТаблицыСопоставления`|По этому адресу расположена копия табличной части документа/справочника, которую необходимо заполнить|
+|`СписокНеоднозначностей`|Таблица, в которую записываются идентификаторы строк ТЧ, для которых не удалось однозначно определить сопоставляемые данные|
+
+
+Пример реализации
+
+ ```bsl
+ Процедура СопоставитьЗагружаемыеДанные(АдресЗагружаемыхДанных, АдресТаблицыСопоставления, СписокНеоднозначностей, ПолноеИмяТабличнойЧасти, ДополнительныеПараметры) Экспорт
+
+
+ Товары = ПолучитьИзВременногоХранилища(АдресТаблицыСопоставления); // ТаблицаЗначений
+ ЗагружаемыеДанные = ПолучитьИзВременногоХранилища(АдресЗагружаемыхДанных); // ТаблицаЗначений
+
+ МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
+
+ Запрос = Новый Запрос;
+ Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ВЫРАЗИТЬ(ДанныеДляСопоставления.Штрихкод КАК СТРОКА(13)) КАК Штрихкод,
+ | ДанныеДляСопоставления.Номенклатура КАК Номенклатура,
+ | ДанныеДляСопоставления.Идентификатор КАК Идентификатор
+ |ПОМЕСТИТЬ ДанныеДляСопоставления
+ |ИЗ
+ | &ДанныеДляСопоставления КАК ДанныеДляСопоставления
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | _ДемоНоменклатура.Ссылка КАК Ссылка,
+ | _ДемоНоменклатура.Штрихкод КАК Штрихкод,
+ | ДанныеДляСопоставления.Идентификатор КАК Идентификатор
+ |ПОМЕСТИТЬ СопоставленнаяНоменклатураПоШтрихкоду
+ |ИЗ
+ | ДанныеДляСопоставления КАК ДанныеДляСопоставления
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
+ | ПО (_ДемоНоменклатура.Штрихкод = ДанныеДляСопоставления.Штрихкод)
+ | И (ДанныеДляСопоставления.Штрихкод <> """")
+ |
+ |ИНДЕКСИРОВАТЬ ПО
+ | Идентификатор
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ДанныеДляСопоставления.Номенклатура КАК Номенклатура,
+ | ДанныеДляСопоставления.Идентификатор КАК Идентификатор
+ |ПОМЕСТИТЬ ДанныеДляСопоставленияПоНаименованию
+ |ИЗ
+ | ДанныеДляСопоставления КАК ДанныеДляСопоставления
+ | ЛЕВОЕ СОЕДИНЕНИЕ СопоставленнаяНоменклатураПоШтрихкоду КАК СопоставленнаяНоменклатураПоШтрихкоду
+ | ПО ДанныеДляСопоставления.Идентификатор = СопоставленнаяНоменклатураПоШтрихкоду.Идентификатор
+ |ГДЕ СопоставленнаяНоменклатураПоШтрихкоду.Идентификатор ЕСТЬ NULL
+ |
+ |ИНДЕКСИРОВАТЬ ПО
+ | Идентификатор
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | МАКСИМУМ(_ДемоНоменклатура.Ссылка) КАК Ссылка,
+ | ДанныеДляСопоставленияПоНаименованию.Идентификатор КАК Идентификатор,
+ | КОЛИЧЕСТВО(ДанныеДляСопоставленияПоНаименованию.Идентификатор) КАК Количество
+ |ИЗ
+ | ДанныеДляСопоставленияПоНаименованию КАК ДанныеДляСопоставленияПоНаименованию
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
+ | ПО (_ДемоНоменклатура.Наименование = (ВЫРАЗИТЬ(ДанныеДляСопоставленияПоНаименованию.Номенклатура КАК СТРОКА(500))))
+ |
+ |СГРУППИРОВАТЬ ПО
+ | ДанныеДляСопоставленияПоНаименованию.Идентификатор
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | МАКСИМУМ(СопоставленнаяНоменклатураПоШтрихкоду.Ссылка),
+ | СопоставленнаяНоменклатураПоШтрихкоду.Идентификатор,
+ | КОЛИЧЕСТВО(СопоставленнаяНоменклатураПоШтрихкоду.Идентификатор)
+ |ИЗ
+ | СопоставленнаяНоменклатураПоШтрихкоду КАК СопоставленнаяНоменклатураПоШтрихкоду
+ |
+ |СГРУППИРОВАТЬ ПО
+ | СопоставленнаяНоменклатураПоШтрихкоду.Идентификатор";
+
+ Запрос.УстановитьПараметр("ДанныеДляСопоставления", ЗагружаемыеДанные);
+ РезультатыЗапросов = Запрос.ВыполнитьПакет(); // Массив из РезультатЗапроса
+
+ ТаблицаНоменклатура = РезультатыЗапросов[3].Выгрузить(); // ТаблицаЗначений
+ ФункциональнаяОпцияХарактеристика = ?(ЗагружаемыеДанные.Колонки.Найти("Характеристика") <> Неопределено, Истина, Ложь);
+ Для каждого СтрокаТаблицы Из ЗагружаемыеДанные Цикл
+
+ Товар = Товары.Добавить();
+ Товар.Идентификатор = СтрокаТаблицы.Идентификатор;
+ Товар.Количество = СтрокаТаблицы.Количество;
+ Товар.Цена = СтрокаТаблицы.Цена;
+
+ СтрокаНоменклатура = ТаблицаНоменклатура.Найти(СтрокаТаблицы.Идентификатор, "Идентификатор");
+ Если СтрокаНоменклатура <> Неопределено Тогда
+ Если СтрокаНоменклатура.Количество = 1 Тогда
+ Товар.Номенклатура = СтрокаНоменклатура.Ссылка;
+ Если ФункциональнаяОпцияХарактеристика Тогда
+ Товар.Характеристика = Справочники._ДемоХарактеристики.НайтиПоНаименованию(СтрокаТаблицы.Характеристика,
+ Истина,, Товар.Номенклатура);
+ КонецЕсли;
+ ИначеЕсли СтрокаНоменклатура.Количество > 1 Тогда
+ ЗаписьОНеоднозначности = СписокНеоднозначностей.Добавить();
+ ЗаписьОНеоднозначности.Идентификатор = СтрокаТаблицы.Идентификатор;
+ ЗаписьОНеоднозначности.Колонка = "Номенклатура";
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПоместитьВоВременноеХранилище(Товары, АдресТаблицыСопоставления);
+
+КонецПроцедуры
+ ```
+
+
+
+
+## ЗаполнитьСписокНеоднозначностей
+
+```bsl
+// Возвращает список подходящих объектов ИБ для неоднозначного значения ячейки.
+//
+// Параметры:
+// ПолноеИмяТабличнойЧасти - Строка - полное имя табличной части, в которую загружаются данные.
+// СписокНеоднозначностей - Массив из СправочникСсылка._ДемоНоменклатура - массив для заполнения с неоднозначными данными.
+// ИмяКолонки - Строка - имя колонки, в который возникла неоднозначность.
+// ЗагружаемыеЗначенияСтрока - Строка - загружаемые данные на основании которых возникла неоднозначность.
+// ДополнительныеПараметры - Произвольный - любые дополнительные сведения.
+//
+Процедура ЗаполнитьСписокНеоднозначностей(ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, ИмяКолонки, ЗагружаемыеЗначенияСтрока, ДополнительныеПараметры) Экспорт
+
+```
+
+
+Пример реализации
+
+
+// Возвращает список подходящих объектов ИБ для неоднозначного значения ячейки.
+//
+// Параметры:
+// ПолноеИмяТабличнойЧасти - Строка - полное имя табличной части, в которую загружаются данные.
+// СписокНеоднозначностей - Массив из СправочникСсылка._ДемоНоменклатура - массив для заполнения с неоднозначными данными.
+// ИмяКолонки - Строка - имя колонки, в который возникла неоднозначность.
+// ЗагружаемыеЗначенияСтрока - Строка - загружаемые данные на основании которых возникла неоднозначность.
+// ДополнительныеПараметры - Произвольный - любые дополнительные сведения.
+//
+Процедура ЗаполнитьСписокНеоднозначностей(ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, ИмяКолонки, ЗагружаемыеЗначенияСтрока, ДополнительныеПараметры) Экспорт
+
+ Если ИмяКолонки = "Номенклатура" Тогда
+ Запрос = Новый Запрос;
+
+ ТекстГде = "";
+ Если ЗначениеЗаполнено(ЗагружаемыеЗначенияСтрока.Номенклатура) Тогда
+ ТекстГде = "ГДЕ _ДемоНоменклатура.Наименование = &Наименование";
+ Запрос.УстановитьПараметр("Наименование", ЗагружаемыеЗначенияСтрока.Номенклатура);
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ЗагружаемыеЗначенияСтрока.Штрихкод) Тогда
+ Если ЗначениеЗаполнено(ТекстГде) Тогда
+ ТекстГде = ТекстГде + " ИЛИ _ДемоНоменклатура.Штрихкод = &Штрихкод";
+ Иначе
+ ТекстГде = "ГДЕ _ДемоНоменклатура.Штрихкод = &Штрихкод";
+ КонецЕсли;
+ Запрос.УстановитьПараметр("Штрихкод", ЗагружаемыеЗначенияСтрока.Штрихкод);
+ КонецЕсли;
+
+ Запрос.Текст = "ВЫБРАТЬ
+ | _ДемоНоменклатура.Ссылка
+ |ИЗ
+ | Справочник._ДемоНоменклатура КАК _ДемоНоменклатура " + ТекстГде;
+
+ РезультатЗапроса = Запрос.Выполнить();
+ ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
+ Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
+ СписокНеоднозначностей.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
+ КонецЦикла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+
\ No newline at end of file
diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Программное создание табличного макета для загрузки данных в табличную часть.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Программное создание табличного макета для загрузки данных в табличную часть.md
new file mode 100644
index 0000000..da8529d
--- /dev/null
+++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Загрузка данных из файла/Программное создание табличного макета для загрузки данных в табличную часть.md
@@ -0,0 +1,67 @@
+---
+title: Программное создание табличного макета для загрузки данных в табличную часть
+slug: общие-бсп-стандартные-подсистемы-загрузка-данных-из-файла/программное-создание-табличного-макета-для-загрузки-данных-в-табличную-часть
+---
+
+```bsl
+// Возвращает описание колонок табличной части или таблицы значений.
+// Синтаксис
+//
+// Функция СформироватьОписаниеКолонок(Таблица, Колонки = Неопределено) Экспорт
+// Параметры
+//
+// Таблица - ТаблицаЗначений - ОписаниеТабличнойЧасти с колонками.
+// - Строка - для получения списка колонок табличной части
+// необходимо указать его полное имя строкой, как в метаданных, например "Документы.СчетНаОплату.ТабличныеЧасти.Товары".
+// Колонки - Строка - список извлекаемых колонок, разделенный запятыми. Например: "Номер, Товар, Количество".
+// Возвращаемое значение
+//
+// Массив из см. ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета.
+
+&НаКлиенте
+Процедура ЗагрузитьТоварыИзФайла(Команда)
+
+ ПараметрыЗагрузки = ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных();
+ ПараметрыЗагрузки.ПолноеИмяТабличнойЧасти = "_ДемоНоменклатура.Аналоги";
+ ПараметрыЗагрузки.Заголовок = НСтр("ru = 'Загрузка списка аналогов из файла'");
+
+ // Описание колонок для макета загрузки комплектации
+ ПараметрыЗагрузки.КолонкиМакета = ОписаниеКолонокМакетаДляЗагрузкиАналогов();
+
+ Оповещение = Новый ОписаниеОповещения("ЗагрузитьАналогиИзФайлаЗавершение", ЭтотОбъект);
+ ЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗагрузки(ПараметрыЗагрузки, Оповещение);
+
+КонецПроцедуры
+
+&НаСервере
+Функция ОписаниеКолонокМакетаДляЗагрузкиАналогов();
+
+ КолонкиМакета = ЗагрузкаДанныхИзФайла.СформироватьОписаниеКолонок(Объект.Аналоги);
+ ЗагрузкаДанныхИзФайлаКлиентСервер.УдалитьКолонкуМакета("Аналог", КолонкиМакета);
+
+ Если Объект.ВидНоменклатуры.Наименование = "Услуга" Тогда
+ // У услуг нет штрихкода
+ Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета("ШтрихкодАртикул", ОбщегоНазначения.ОписаниеТипаСтрока(20), НСтр("ru = 'Артикул'"));
+ Иначе
+ Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета("ШтрихкодАртикул", ОбщегоНазначения.ОписаниеТипаСтрока(20), НСтр("ru = 'Штрихкод и Артикул'"));
+ КонецЕсли;
+ Колонка.ОбязательнаДляЗаполнения = Истина;
+ Колонка.Позиция = 1;
+ Колонка.Группа = "Номенклатура";
+ Колонка.Родитель = "Аналог";
+ КолонкиМакета.Добавить(Колонка);
+
+ Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета("Наименование", ОбщегоНазначения.ОписаниеТипаСтрока(100));
+ Колонка.Группа = "Номенклатура";
+ Колонка.Родитель = "Аналог";
+ Колонка.Позиция = 2;
+ Колонка.Подсказка = НСтр("ru='Наименование аналогичного товара, который полностью идентичен
+ |по своему функциональному назначению и техническим характеристикам.'");
+ КолонкиМакета.Добавить(Колонка);
+
+ Колонка = ЗагрузкаДанныхИзФайлаКлиентСервер.КолонкаМакета("Совместимость", КолонкиМакета);
+ Колонка.Позиция = 3;
+
+ Возврат КолонкиМакета;
+КонецФункции
+```
\ No newline at end of file