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

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

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

При этом, стандартные конфигурации УТ 10.3 и БП 2.0 (возможно, и другие, я просто не тестировал) имеют в меню Сервис настройки Внешние печатные формы и обработки -> Внешние обработки заполнения табличных частей. Эта сервисная настройка позволяет добавить ещё одну строку для вызова обработки в подменю Заполнить командной панели табличной части. Вот пример из УТ 10.3 для заполнения ТЧ документа Поступление Товаров и Услуг. Добавленный пункт называется Excel. 

Для того, чтобы это так получилось, необходимо добавить в стандартную внешнююобработку с диска ИТС Загрузка данных из табличного документа.epf следующуюпроцедуру:

Загрузка в ТЧ














// Процедура инициализирует реквизиты в режиме вызова заполнения ТЧ
Процедура Инициализировать(Объект = Неопределено, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт
// Загрузить ссылки на документ и ТЧ если переданы

Если Объект.Ссылка.Пустая() тогда
Сообщить("Загрузка данных в ТЧ: Ошибка. Для загрузки данных в табличную часть документ должен быть записан в информационную базу.");
Возврат; // ничего не передали
Иначе
ЭтотОбъект.РежимЗагрузки=1; // режим вызова для заполнения ТЧ документа
ЭтотОбъект.СсылкаИсточника=Объект.Ссылка;
ЭтотОбъект.ТабличнаяЧастьИсточника=ИмяТабличнойЧасти;
КонецЕсли;
Форма = ЭтотОбъект.ПолучитьФорму("Форма");

Форма.ЭлементыФормы.РежимЗагрузки.ТолькоПросмотр = Истина; // запретить изменение режима для вызова из ТЧ документа
Форма.ЭлементыФормы.ТипОбъекта.ТолькоПросмотр = Истина;
Форма.ЭлементыФормы.СсылкаИсточника.ТолькоПросмотр = Истина;
Форма.ЭлементыФормы.ТабличнаяЧастьИсточника.ТолькоПросмотр = Истина;


Форма.Открыть();



КонецПроцедуры
 

 

Процедура инициализирует обработку ссылкой на открытый документ и запрещает изменения режима загрузки и ссылки. 

Добавлять процедуру необходимо в модуль объекта. После этого можно зарегистрировать внешнюю обработку через Сервис-Внешние отчеты и обработки-Внешние обработки заполнения табличных частей. Если требуется обслуживать несколько документов/ТЧ — зарегистрируйте обработку для каждой пары Документ/ТЧ.

17 Comments

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

    это лечится сохранением настроек.

    Для меня лично, самое большое неудобство = невозможность обработки загрузить одновременно данные в таб.часть и в справочник

    Reply
  2. rugubara

    Да, частично это лечится сохранением настроек. Однако, сценарий работы всё равно остается неудобным:

    • 1. создать новый документ и заполнить шапку.
    • 2. Сохранить документ и запомнить его номер
    • 3. запустить обработку и загрузить настройки, связанные с этим типом документов.
    • 4. выбрать запомненный документ.
    • 5. Заполнить таб. документ и загрузить.

    Я же предлагаю:

    • 1. создать новый документ и заполнить шапку.
    • 2. Сохранить документ и запомнить его номер
    • 3. запустить обработку и загрузить настройки, связанные с этим типом документов. Выбрать из меню Заполнить пункт Excel.
    • 4. выбрать запомненный документ.
    • 5. Заполнить таб. документ и загрузить.

    Мне кажется, что так быстрее и удобнее.

    Что же касается создания элементов справочников, то я предпочитаю, чтобы это делалось осознанно и отдельной операцией. Мне уже приходилось чистить от дубликатов номенклатурный справочник из 600 000 позиций до 96 000 рабочих позиций. Это надолго отбивает охоту автоматизировать создание дубликатов…

    Reply
  3. nelse

    (2) rugubara,

    Мне уже приходилось чистить от дубликатов номенклатурный справочник из 600 000 позиций до 96 000 рабочих позиций. Это надолго отбивает охоту автоматизировать создание дубликатов…



    Мне тоже, поэтому я Вас очень даже понимаю.

    Reply
  4. vkt

    При попытке использования данного совета в УПП 1.3 обнаружилось, что на форме обработки поле ТабличнаяЧастьИсточника остается незаполненным. А так как поле закрывается от редактирования, то и нет возможности вручную выбрать табличную часть документа. Как это вылечить?

    Reply
  5. rugubara

    (4) vkt, к сожалению, у меня нет конфигурации УПП и проверить я не могу. Попробуйте добавить отладочную печать в процедуру Инизиализировать() и проверить передаваемые значения. Второй вариант — закоментировать строки, которые запрещают изменение реквизитов документа и табличной части.

    Форма.ЭлементыФормы.РежимЗагрузки.ТолькоПросмотр = Истина; // запретить изменение режима для вызова из ТЧ документа

    Форма.ЭлементыФормы.ТипОбъекта.ТолькоПросмотр = Истина;

    Форма.ЭлементыФормы.СсылкаИсточника.ТолькоПросмотр = Истина;

    Форма.ЭлементыФормы.ТабличнаяЧастьИсточника.ТолькоПросмотр = Истина;

    Reply
  6. teflon

    Можно еще в ПриОткрытии() добавить

    Если ТабличнаяЧастьИсточника = Неопределено Тогда

    ТабличнаяЧастьИсточника = ВосстановитьЗначение(«Обработка Загрузка данных из табличного документа: ТабличнаяЧастьИсточника»);

    КонецЕсли;

    вместо:

    ТабличнаяЧастьИсточника = ВосстановитьЗначение(«Обработка Загрузка данных из табличного документа: ТабличнаяЧастьИсточника»);

    Reply
  7. vkt

    (5) rugubara, Не знаю, может быть у меня какая-то другая обработка загрузки данных…, но при открытии формы запускается процедура УстановитьСписокТабличныхЧастей, в которой очищается СписокВыбора табличной части источника:

    Процедура УстановитьСписокТабличныхЧастей()

    СписокВыбора = ЭлементыФормы.ТабличнаяЧастьИсточника.СписокВыбора;

    СписокВыбора.Очистить();

    Если СсылкаИсточника = Неопределено Тогда

    Возврат;

    КонецЕсли;

    Для каждого ТабличнаяЧасть Из СсылкаИсточника.Метаданные().ТабличныеЧасти Цикл

    СписокВыбора.Добавить(ТабличнаяЧасть.Имя, ТабличнаяЧасть.Представление());

    КонецЦикла;

    КонецПроцедуры // ()

    Если только отключить эту процедуру? Неужели у вас в обработках такой процедуры нет? Почему бы не выложить доработанную обработку?

    Reply
  8. vkt

    (6) teflon, Предлагаемое решение сработало. Следовательно, кроме добавления Инициализировать(), необходимо внести изменение в ПриОткрытии().

    Reply
  9. rugubara

    Такое решение корректно работает только до того, как вы загрузите сохраненные настройки вручную или поставите загрузку настройки по умолчанию. Загрузка любых настроек очищает ссылку на документ. Я работаю над исправлением и буду рад любым предложениям по решению этой проблемы.

    Reply
  10. validat

    Не сохраняются настройки.

    1. Подскажите, какой принцип сохранения настроек? Есть ли привязка к чему-нибудь?

    2. Не могу добавить эту обработку в пункт «Обработки» 1С Пр82 УТ 10.3, чтобы

    запускать из меню?

    3. На компьютере с Win7(64 bit)+OpenOffice при открытии Накладной товаро в формате Excel, пустое окно, а mxl открывается нормально? Win7, 1Cпр82 УТ10.3, MS Office на другом компьютере Excel открывается без проблем.

    Форма сохранения позволяет сохранять несколько типов настроек,

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

    Использую ручное указание колонок табл. документа.

    Reply
  11. validat

    Вот по теме нашёл.

    Инструкция «Загрузка справочника номенклатуры в 1С:Бухгалтерия 8 (ред.2.0) из прайс-листа в Excel» находиться теперь здесь:

    http://www.online-ufa.ru/content/articles/…m_excel_part_1/

    Загрузка справочника номенклатуры в 1С:Управление торговлей 8 (ред.10.3) из прайс-листа в Excel, здесь:

    http://www.online-ufa.ru/content/articles/…m_excel_part_2/

    Загрузка приходной накладной в 1С Управление торговлей 8 (ред.10.3) из приходной накладной поставщика в Excel, здесь:

    http://www.online-ufa.ru/content/articles/…m_excel_part_3/

    Reply
  12. validat

    Не сохраняются настройки. Как правильно добавить обработку UploadFromTableDocument в Сервис-Внешние печатные формы и обработки-Внешние обработки заполнения табличных частей?

    1. Подскажите, какой принцип сохранения настроек? Есть ли привязка к чему-нибудь?

    2. Не могу добавить эту обработку в пункт «Обработки» 1С Пр82 УТ 10.3, чтобы

    запускать из меню?

    3. На компьютере с Win7(64 bit)+OpenOffice при открытии Накладной товаро в формате Excel, пустое окно, а mxl открывается нормально? Win7, 1Cпр82 УТ10.3, MS Office на другом компьютере Excel открывается без проблем.

    Форма сохранения позволяет сохранять несколько типов настроек,

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

    Использую ручное указание колонок табл. документа.

    Reply
  13. rugubara

    Добрый день

    мне бесполезно задавать вопросы про саму обработку — её писала 1С. Я всего лишь нашел способ вставить её в панель действий табличной части документов в УТ 10.3

    К сожалению ,с вашими вопросами помочь не могу 🙁

    Reply
  14. ben_art

    Так получается толку от добавления никакого ?

    Reply
  15. sumixam

    ПОМОГИТЕ!!!

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

    Запрос = Новый Запрос;

    Запрос.Текст = «Выбрать * ИЗ Документ.РеализацияТоваровУслуг.Товары как Реал Где реал.ссылка = &ЭтотОбьект»;

    Запрос.УстановитьПараметр(«ЭтотОбьект»,ЭтотОбьект);

    ЭтотОбьект.Товары1.Загрузить(Запрос.Выполнить().Выгрузить());

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

    ЭтотОбьект.Товары1.Загрузить(Запрос.Выполнить().Выгрузить());

    по причине:

    Объект недоступен для изменения.

    Reply
  16. sumixam

    ВСЁ РАЗОБРАЛСЯ!!!!

    Reply
  17. German_Tagil

    завтра посмотрю

    Reply

Leave a Comment

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