wakadakawaka e60192d3ed edit
2025-07-27 21:46:00 +05:00

54 lines
66 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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