Загрузка данных из табличного документа (управляемые формы)

Обработка загрузки данных из табличного документа на основе стандартной от 1С, переделанная для тонкого клиента.
Для 8.2 и 8.3

Описание:

Загрузка данных из табличного документа для управляемых форм.

Создана на основе стандартной обработки для толстого клиента.

Возможности все те же, за исключением сохранения настроек в базе — настройки можно сохранить только в файл.

Писал для себя, но может ещё кому поможет.

31.03.2014

Устранил ошибку: При открытии обработки в интерфейсе Такси, при переключении загрузки в Таб. часть, в поле «Ссылка» нет кнопки выбора объекта.
В процедуре ПриОткрытии формы добавлена проверка версии платформы и для 8.3 устанавливается свойство элемента, отвечающее за кнопку выбора.

10.04.2014

Учтено замечание от qwinter — в поле «Значение по умолчанию» настроена связь по типу с полем «Описание типов». Отказ от программного ограничения типов.

Устранён недочет — в 8.3 в поле «Значение по умолчанию» не было кнопки выбора. Теперь есть.

08.12.2014

Добавил файл обработки, работающей в режиме без использования модальных окон.

09.01.2024

Доработал сохранение настроек: Теперь при сохранении настройки загрузки сохраняются и номера колонок, заданные при ручной нумерации колонок (по замечанию от ToJIuK. Спасибо за замечание :).
А также наконец добавил функцию СведенияОВнешнейОбработке в модуль.
Обработка прописывается как Дополнительная обработка с одной командой открытия формы «Загрузка из табличного документа». Пробовал на Библиотеке стандартных подсистем 2.2.4.43 и Бухгалтерии 3.0. Необходимо будет ручками указать в каком разделе должна быть обработка, потом в списке дополнительных обработок её можно будет добавлять.

17.06.2024

Сохранение в настройках номеров колонок было реализовано только для платформы 8.3. Обновлена обработка для 8.2 — теперь в настройках этой версии обработки тоже сохраняются номера колонок. Ранее сохраненные настройки необходимо открыть, проставить номера колонок и сохранить заново. При последующем открытии номера колонок восстановятся.

Известные ошибки:

Перед восстановлением настроек загрузки, вначале нужно выбрать вид загружаемого объекта. Если вы загружаете файл с настройками загрузки Складов, а у вас в текущий момент выбран загружаемый справочник Номенклатуры, то при попытке настроить условие связи (в колонке «Условие связи / Выражение для значения») будет появлятся ошибка.

 

Если загружать файл с настройками по объекту метаданных, отсутствующих в текущей конфигурации — будет вызвана ошибка «Неправильный формат файла», настройки очистятся.

Известные особенности:

Перед настройкой условия связи для реквизита с составным типом — нужно вначале в колонке «Описание типа» выбрать конкретный тип загружаемых данных. Иначе настроить связь не получится.

 

76 Comments

  1. gull22

    Проверил на Итилиум. Работает. Желательно добавить заголовки у табличной части. А то при проверке сообщает номер ячейки с ошибкой, а среди 1500 строки искать 1235-ю трудновато.

    Было бы еще добавить возможность правки в самой ячейке.

    Reply
  2. qwinter

    А я свой перевод данной обработки на УФ все никак не дошлифую))

    Reply
  3. qwinter

    если в форме элемент ТаблицаЗагружаемыхРеквизитовЗначениеПоУмолчанию связать по типу с описанием типов, то будет нормальный выбор значений по умолчанию.

    Reply
  4. AleksSF

    В функциях описания событий определенных пользователем используется предопределенная переменная Объект.

    И возникает неоднозначность, желательно ее изменить на например ТекОбъект.

    А так +.

    Reply
  5. AlexanderP

    Отличная вещь, спасибо!

    Правда, с настройками не получилось. Сохранил в mxlz, выбираю тип документа, загружаю настройки, документ — настройки слетают. И наоборот, если сначала настройки, то документ слетает.

    Не знаю, стоит ли при выборе документа считывать его ТЧ — если не нужно, то приходится зря ждать для больших непустых ТЧ

    Reply
  6. TitanLuchs

    Давно пора было кому-то это написать. Сам юзаю загрузку из табличного документа года с 2008, но до написания универсальной обработки так и не добрался…

    Reply
  7. alean

    почему бы не использовать типовую, запустив отладку в обычном приложении?

    хотя…

    вот к примеру типовая не умеет грузить в тч справочников.

    Reply
  8. ext23

    Отличная вещь, спасибо!

    Reply
  9. ben_art

    Подскажите , как в список регистров сведений добавить периодичные

    Reply
  10. qwinter

    (9) ben_art, так там переодические и так же есть?

    Reply
  11. Stety

    Спасибо, нужная и актуальная вещь. 🙂

    Reply
  12. ben_art

    а не планируется ли добавить возможность сохранения настроек ?

    Reply
  13. ben_art

    (10) qwinter, Прошу прощения , я имел ввиду как добавить регистры с регистратором

    Reply
  14. qwinter

    (13) ben_art, можете посмотреть как это реализовано тут http://infostart.ru/public/21890/ , ничего сложного нет.

    Reply
  15. gavlexx

    Не получается открыть обработку в веб-интерфейсе (конфигурация УТ3 для Украины). При открытии пишет «{(2267,20)}»: Переменная не определена (КодировкаXBase)

    Reply
  16. Algiz

    Спасибо, заберу

    Reply
  17. MaksS

    Спасибо, как раз нужна загрузка табличной части справочников в УП.

    Reply
  18. Sintson

    Спасибо за обработку, то что надо, завтра опробую!

    Reply
  19. ron1

    Спасибо за обработку. Загрузила курс у.е. за год без проблем за 1 минуту.

    Reply
  20. Atow

    Спасибо за обработку!

    Есть проблемка: вывела она 10 тыс. предупреждений при контроле заполнения. Переключился в другое окно, поправил данные, вернулся в окно обработки, а оно «повисло». И бегунок на списке сообщений уменьшается — видимо, повторно сообщения отображает.

    Ну, подождал минут 20 — не отвисло.

    Если сообщения в отдельную закладку обработки выводить, это может улучшить ситуацию?

    Reply
  21. qwinter

    (20) Atow, это стандартное поведение управляемых форм. Просто привыкните к этому.

    Reply
  22. Atow

    (21) qwinter, Дело не в привычке, а в том, что обработка, переделанная на УФ неюзабельна в ряде случаев.

    Я и предложил добавить закладку на форму и выводить логи в табличный документ на форме. Ну или в список какой-нить.

    Возможно, это было бы более правильно для УФ.

    Reply
  23. proal

    (22) Atow, На таких больших объемах данных не пробовал. Поэтому не могу сказать, поможет или нет.

    На днях протестирую, напишу.

    Reply
  24. zoytsa

    Спасибо! Отличная работа!

    Reply
  25. cbr900

    А почему не сохраняются нумерация колонок при загрузке настроек

    Reply
  26. proal

    (26) Polkaver, я не сталкивался с таким… Можно считать ошибкой. На всякий случай надо исправить переменную цикла ПланСчетов на мПланСчетов.

    (20) Atow, я попробовал контроль заполнения на больших объемах — у меня система в процессе контроля выводила сообщения, а после того как обработка закончилась — ещё 10 минут перерисовывала табличный документ. Может, в вашем случае обработка тоже была открыта на закладке с табличным документом? Он постоянно перерисовывается при переключении на окно обработки и при переключении с закладки на закладку в форме обработки. Тут я ничего сделать не могу, насколько я знаю — это сама платформа так работает.

    Reply
  27. proal

    (25) cbr900, Можно поподробнее?

    Например, я на закладке «Настройка» включил ручную нумерацию колонок, поставил номера колонок для каких-либо реквизитов, сохранил настройки, переоткрыл обработку, открыл настройки — номера колонок встали как надо.

    Какие действия надо предпринять, чтобы нумерация колонок сбилась?

    Reply
  28. Polkaver

    При запущенном конфигураторе обработка выдает ошибку

    {Форма.Форма.Форма(1301)}: Поле объекта недоступно для записи (ПланСчетов)

    Для каждого ПланСчетов Из Метаданные.ПланыСчетов Цикл

    А если конфигуратор не запускать и сразу входить в тонкий клиент, то все работает нормально.

    Скажите пожалуйста, так и должно быть или это ошибка?

    Reply
  29. iaks

    Добрый день.

    Хочу обновить справочник Номенклатура в Бухгалтерии 8.3

    В файле с обновлением есть уже имеющиеся наименования товаров.

    Как сделать чтобы при загрузке с помощью этой обработки не возникало дубликатов?

    Как можно изменить отдельное свойство номенклатуры при совпадении наименования в файле импорта и справочнике Номенклатура, например артикул?

    Reply
  30. proal

    (29) iaks, Насколько я понял, задачка такая:

    Есть строки с новой номенклатурой, для которой нужно загрузить все реквизиты из файла

    + есть строки с существующей номенклатурой, для которых нужно загрузить только определённый реквизит.

    Легкий путь: Разбить этот файл на два (новая, существующая номенклатура), и загружать каждый отдельно.

    Сложный путь: Для каждого реквизита (кроме наименования) ставить режим загрузки «Вычислять» и задать выражение, в котором искать номенклатуру по наименованию из ячейки номер N, если номенклатура есть в справочнике — то значение реквизита брать из номенклатуры (или из ячейки, если это тот самый загружаемый реквизит), если номенклатуры нет — брать из ячейки.

    Штука в том, что обработка обрабатывает всю строку, считывает все значения, которые отмечены как обрабатываемые на закладке «Настройка», и вгружает их в объект. Поэтому и надо считывать значения из существующей номенклатуры, чтобы не затереть их другими значениями.

    Reply
  31. елена777

    Спасибо за обработку! Очень пригодилась!

    Reply
  32. PVG_73

    Спасибо! Очень пригодилась.

    Reply
  33. ketr

    Подскажите пожалуйста, а почему при загрузке в табличную часть я не могу выбрать справочник номенклатуры?

    У него же в УФ есть табличная часть «ДополнительныеРеквизиты»

    Reply
  34. Sabfir

    Здравствуйте!

    Под 8.3 с установленным свойством конфигурации

    «Режим использования модальности» = Не использовать

    кто-то запускал? Работает?

    Reply
  35. profisasha

    (35) Sabfir, Не работает. Необходимо избавится от модальных окон, в частности от Предупреждение И Вопрос.

    Как один из примеров статья от 1с http://v8.1c.ru/o7/201312ref/index.htm

    Reply
  36. proal

    (35) Sabfir, добавил второй файл — переработанная обработка для режима использования модальности «Не использовать».

    И спасибо (36) Profisasha.

    Reply
  37. ToJIuK

    Очень хотелось бы уточнить . Если ли возможность сохранить настройки формы с последующим восстановление . У меня что то не получается. нумерация Колонок сбрасывется.

    Reply
  38. PYCTAM

    метод объекта не обнаружен сведения о внешней обработке

    Reply
  39. qwinter

    (38) ToJIuK, в данной обработке нет.

    Reply
  40. carey

    Добрый вечер!

    При загрузке выдает ошибку — Ошибка. Возможно неверно указан номер листа книги Excel.

    в исходном файле номер листа — Лист1

    Reply
  41. layout

    Подскажите, пожалуйста, а как можно загрузить данные в справочник, если у его элемента, помимо реквизитов, 3 табличные части, в которых может быть много строк? Можно как-то настроить автоматическую загрузку, не указывая каждый раз вручную к какому справочнику относится данная табличная часть. В поточной загрузке можно добавлять табличные части, но куда там вставлять данные для загрузки?

    Reply
  42. proal

    (42) layout,

    В этой обработке такого нет 🙁

    Reply
  43. OldmenInfo

    В модулях обработок нет стандартных процедур для размещения в справочнике дополнительных отчетов обработок, немножко неудобно

    Reply
  44. 9830035

    Подскажите что я делаю не так, почему номенклатура загружается криво

    Все этапы

    http://clip2net.com/s/3fnXN4B

    http://clip2net.com/s/3fnZAeO

    http://clip2net.com/s/3fnZYIY

    http://clip2net.com/s/3fo3fJU

    http://clip2net.com/s/3fo3zxf

    http://clip2net.com/s/3fo3LXW

    Если зайти в номенклатуры и нажать сохранить, то выскакивает такое сообщение

    http://clip2net.com/s/3fo4T2t

    Reply
  45. Morffinius

    Доброго дня, скачал оьработку все супер, только с одним вопросом не могу разобраться, гружу табличную часть в документ поступление товаров и услуг в бухгалтерии 3.0 товары цены количество, все грузит, а вот с номерами гтд возникает проблема пишет объект не найден, забыл сказать для обработки гтд свои настройки если по списку не находит, то в справочник выписывает, а вот в документ пишет объект не найден. В чем может быть проблема, подскадите.

    Reply
  46. proal

    (45) 9830035,

    Добрый день.

    Я думаю, вы уже разобрались с проблемой, если же нет, то у меня вопрос:

    На последней картинке ругается на пустое значение в поле «Вариант оформления продажи».

    При этом на второй картинке (там где закладка Настройка) есть строка с этим полем, и флажок в этой строке выключен.

    Т.е. поле не загружается.

    Вопрос — Почему флажок не включен? Ведь если загружается новая номенклатура, очевидно что это поле надо заполнять.

    Reply
  47. proal

    (46) Morffinius, Добрый день.

    Я так понимаю, что элементы справочника ГТД вы создаете алгоритмом при загрузке.

    А вы точно потом присваиваете Ссылку от созданного элемента? Не пытаетесь записать в документ сам объект?

    Т.е. если есть код вида:

    ОбъектСправочника = Справочники.НомераГТД.СоздатьЭлемент();

    … обработка…

    в конце должно быть вроде:

    ОбъектСправочника.Записать();

    СтрокаДокумента.НомерГТД = ОбъектСправочника.Ссылка;

    если же идет такое присваивание:

    СтрокаДокумента.НомерГТД = ОбъектСправочника; — тут слева требуется ссылка, а справа объект. Не сработает.

    Reply
  48. Morffinius

    (48) proal, Доброго дня proal, с программным кодом пока не силен, постараюсь объяснить на пальцах, в основной настройке указываю в поле гтд записывать, ссылка на настройка 1 номера ГТД, в настройке гтд ставлю искать указываю номер колонки ставлю галочку поле для поиска.

    Reply
  49. yellowheel

    (41) carey, у меня та же проблема,в с ней разобрались?

    Reply
  50. proal

    (50) yellowheel, Добрый день.

    А перед сообщением об ошибке появляется сообщение «Обработка файла Microsoft Excel…» ?

    Если нет, тогда ошибка возникла ещё при открытии файла. Может быть слишком длинный путь до файла, попробуйте перекинуть его в папку C:Temp, например.

    Если да, то ошибка возникла при попытке выбрать первый лист книги. Что-то не так с самой книгой Excel, попробуйте в файле добавить пустой лист _после_ листа с данными, сохранить и ещё раз загрузить.

    Reply
  51. AlexandraSerg

    Спасибо большое! все отлично работает на бухгалтерии 3.0.39.65

    Reply
  52. KristinaKometa

    (51) proal, Наверное повторю вопрос. Однако проблема возникает. Например, я на закладке «Настройка» включила ручную нумерацию колонок, поставила номера колонок для каких-либо реквизитов, сохранила настройки, переоткрыла обработку, открыла настройки — номера колонок встают по порядку от 1 до 9 , а не так как было задано. Уточню, что номера колонок были заданы в разброс.

    Какие действия надо предпринять, чтобы нумерация сохранилась?

    Reply
  53. sstas007

    Отличная обработка, но в Веб-режиме выдает ошибку. Подскажите куда копать.

    Reply
  54. tsifra@inbox.ru

    (51) proal, Здравствуйте,

    Только что скачал данный скрипт. Выдается ошибка «Возможно неверное указан номер листа книги Excel». Ваш совет про добавить пустые листы видел. Но это не помогает. Не подскажете в какую сторону думать? Не могли бы вы выложить куда-то экселевский файл, который «подхватывается».

    Reply
  55. A.Belash

    Обработка не преобразовывает значения ячеек к типу «Число».

    Также не преобразовывает в число «ТекстЯчейки».

    Преобразование получилось только таким способом: Результат = ЧИСЛО(ТекстыЯчеек[5])

    Проверял только для импорта ТЧ «Товары» документа «Установка цен номенклатуры» в УТ11.

    В целом отличная обработка!

    Reply
  56. 1801

    Добрый день!

    Суть проблемы — эта обработка (как и подобные стандартные) при загрузке в табличную часть документа каждый раз заново заполняет и перезаписывает эту табличную часть. Но часто требуется в уже имеющейся табличной части залить только один столбец, при этом не удаляя и не изменяя ранее заполненные данные.

    Вопрос — можно ли доработать обработку так, что-бы был выбор (галка) перезаписывать всю табличную часть или только замещать данные в указанном столбце?

    Пример: в документе «Поступление товаров и услуг», который заполнен на основании документа «Заказ поставщику», нужно исправить только колонку с количеством поступившего товара. В процессе обработка ищет в уже заполненной табличной части по реквизиту «Код номенклатуры поставщика» соответствующую строку табличной части и замещает данные в колонке «Количество».

    Reply
  57. proal

    (57) 1801, Задачка в целом интересная, просто мне не встречалась. Насчет доработать — ничего пока сказать не могу, на работе завал.

    Но когда разгребусь — то подумаю над её решением.

    Reply
  58. DC

    {Форма.Форма.Форма(5104)}: Ошибка при вызове метода контекста (ЗапуститьПриложение)

    ЗапуститьПриложение(«http://it-titan.ru/index.php?id=4»);

    по причине:

    Использование синхронных методов на клиенте запрещено!

    {Форма.Форма.Форма(4157)}: Ошибка при вызове метода контекста (Выбрать)

    Если ДиалогВыбораФайла.Выбрать() Тогда

    по причине:

    Использование синхронных методов на клиенте запрещено!

    Я так понимаю, до конца от модальности так и не избавились).. Плюс отменять не буду, исправте пожалуйста… В свое время то же наваял подобное, для обычных форм… В справочники хорошо бы добавить возможность загрузки Групп — такое нередеко бывает и добавить ПланыВидовХарактеристик… Да и вообще хорошо бы уметь грузить в любые объекты)

    Reply
  59. Alkemist

    Добрый день.

    Столкнулся со следующей проблемой.

    Загружаю в табличную часть «ПоступлениеТоваровУслуг»

    Созданный документ видит, данные из него подгружает

    Добавляю новые данные. Проверку заполнения проходит нормально.

    При загрузке выдает следующую ошибку:

    Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {Документ.УстановкаЦенНоменклатуры.МодульОбъекта(62)}: Поле объекта недоступно для записи (ЭтотОбъект)

    Так происходит при записи и в любой другой документ (((

    Reply
  60. bazhalex

    При загрузке в 1С Розница 2.2 отчет розничных продаж не загружается количество

    Reply
  61. user595924_fedor_zaycev

    Не запускается 1С:Предприятие 8.2 (8.2.19.130) «Управление торговым предприятием для Украины», редакция 1.2. Очень жалко…

    Reply
  62. reshenie

    на конфигурации 1С:Розница 8. базовая версия. ред.2.2.2.15 не работает. Сначала выдает ошибку, а потом вешает программу.

    Reply
  63. zaia

    Спасибо большое, очень помогло! Загрузил серийники для ОС в БП 3

    Reply
  64. 7OH

    А можно добавить загрузку и документ ?

    В табличную часть не совсем то — нужно именно в шапку загрузитьизменить.

    Reply
  65. dj_serega

    Спасибо за обработку.

    Я бы состояние добавил на основные кнопки.

    А то нажал, и непонятно, работает или нет. Ну и когда закончилось не ясно 🙁

    Reply
  66. CheBurator

    Как абсолютно невосьмерочник — попробовал данной обработкой перенести простейшие справочники из 7.7

    вроде как все в целом получилось

    но

    ожидал, что будет какая-то возможность указать, типа «колонка табличных данных «Артикул» соответствует реквизиту (загружаемого справочника) «Номенклатура» — но навскидку такого не нашел… Есть такая возможность?

    и как вообще колонки табличного документа сопоставляются с реквизитами загружаемого справочника..?

    Reply
  67. CheBurator

    хм.. на картинках вроде есть «номер колонки»…

    возможно, я проглядел? или такого параметра нет при загрузке в регистр сведений?

    Reply
  68. CheBurator

    При выборе загрузки в регистр сведений — при нажатии на кнопку «события» — выдает ошибку.

    Reply
  69. CheBurator

    Усовершенствованный вариант этой обработки https://infostart.ru/public/281544/

    — сохранение/восстановление настроек,

    — загрузка плана счетов,

    — загрузка реквизитов объектов типа ПВХ

    Reply
  70. proal

    (67) На закладке «Настройка» есть кнопка «Нумерация колонок» — там нужно выбрать пункт «Ручная нумерация колонок табличного документа».

    И тогда в таблице настройки появится дополнительная колонка. В которой можно будет указать номер колонки, из которой брать данные для реквизита. Для всех реквизитов, для которых включена «Пометка», номер колонки должен быть указан ( <> 0 ).

    Reply
  71. CheBurator

    (71) спсб!

    Reply
  72. request4t

    Пытаюсь загрузить данные в док «Установка цен». Все ок, только не получается с характеристиками. Для вида товара они общие. Справочник «Характеристики» подчинен справочнику «Виды номенклатуры». Реквизит «условие связи» = Искать по Наименование по владельцу Справочник.ВидыНоменклатуры. При загрузке получаю ошибку «Задано неверное имя атрибута структуры».

    Reply
  73. proal

    (73)

    Такие сложные случаи не пробовал. Запускаете в конфигурации УТ? Может, вам попробовать с выполнением произвольного кода?

    Reply
  74. Nefilimus

    Скачивали эту обработку давно. Очень полезная для интегратора и программиста. советую всем!

    Reply
  75. s-a-n-t-a

    Не загружает данные в периодический регистр сведений.

    Reply
  76. s-a-n-t-a

    (76) Загрузка в периодический регистр сведений работает, надо просто оставить «Режим загрузки» у реквизитов везде «Искать».

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *