[ { "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": "Программный интерфейс" } ]