[РЕШЕНО] Регламентное задание на клиенте

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Базовик, 11 мар 2017.

  1. TopicStarter Overlay
    Базовик
    Offline

    Базовик

    Регистрация:
    11 мар 2017
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    Есть функция, которая выгружает данные из файла Excel и заполняет справочник. Создал регламентное задание, оно запускается, но тут же выскакивают ошибки. Я так понял, что на сервере нельзя работать с СОМ-объектами и интерфейсными методами и еще на сервере не установлены сетевые диски, то есть путь к файлу видят только машины клиентов. Следовательно, мне нужно как-то в регламентном задании на сервере вызывать метод от лица кого-то из клиентов. Пока не знаю как это реализовать. Может кто-то сталкивался с похожими ситуациями?
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    Никак

    Файлы - брать из сетевых папок, если они нужны, только проверьте, что ваш сервер может туда ходить.
    Какие интерфейсные методы вы хотите использовать в регламентном задании и зачем?
  3. TopicStarter Overlay
    Базовик
    Offline

    Базовик

    Регистрация:
    11 мар 2017
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    Интерфейсные методы можно и убрать, но вот как быть с тем, что сервер не работает с СОИ-объектами? Сетевые папки добавлять не желательно. Есть ли возможность запускать задание от лица клиента?
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    это как это он с COM не умеет работать? умеет аж бегом
    просто для работы с excel надо чтобы пользователю windows, под которым работает сервер 1с, было разрешено работать с excel.
    запускаете mmc, добавляете в нее оснастку Component Services, отыскиваете там в разделе Component Services->Computers->My Computer->DCOM Config приложение Microsoft Excel Application, тыкаете в него правой кнопкой мыши, заходите в свойства и на закладке Security выдаете разрешение. За названия из англоязычной винды прошу прощения, русской под рукой давно не было.

    Вопрос остается в сетевых папках. Зачем нужны они? Вы файлы хотите с клиентских компьютеров читать? Не стоит так делать регламентами. Хотите - сделайте шару на сервере, куда пользователи будут файлы для обработки регламентом складывать, хотите - справочник или регистр сведений с файлами для обработки (лучший наверное вариант)
    --- Объединение сообщений, 12 мар 2017 ---
    А, и еще одно дополнение про работу с excel
    Если у вас файлы состоят из одного листа, то не надо использовать excel для того, чтобы прочитать его файлы. Читайте его в табличный документ, 1с это уже достаточно давно умеет (с 8.3.6 если мне память не изменяет). Это быстрее и кушает меньше ресурсов.
    Базовик нравится это.
  5. TopicStarter Overlay
    Базовик
    Offline

    Базовик

    Регистрация:
    11 мар 2017
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    Люди в другом подразделении работают с программой на C++, которая записывает данные в файл Excel в сетевой диск с общим доступом, я загружаю из этого файла данные в справочник 1с. Если вызывать метод кнопкой на форме, все работает без проблем. Мне нужно создать регламентное задание и тут уже мой код не работает. Не подскажете, как это лучше реализовать?
  6. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    сколько листов в файле?
    если один, то
    Код:
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
    все, дальше у вас обычный табличный документ, мучайте его как хотите, excel вам не нужен

    Если несколько, то придется работать с excel, все точно так же как и в коде, который у вас есть. Разница только в том, что нельзя ничего спрашивать у пользователя.
    Если у вас есть выделенные админы - попросите их настроить права на сетевом диске и на запуск dcom excel
    Разница в работее с excel - только в настройках безопасности.
    Базовик нравится это.
  7. TopicStarter Overlay
    Базовик
    Offline

    Базовик

    Регистрация:
    11 мар 2017
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    Файл пока положил на диск C: на сервере и все работает. Только из табличного документа вместо даты пустые ячейки выгружаются, пока не разобрался как их преобразовывать.

    Пишу что-то вроде:
    НовыйЭлемент.Дата = ТабДок.ПолучитьОбласть("R" + N + "C3").ТекущаяОбласть.Текст;

    В тех местах где значение дата -пустые ячейки.

    Причём, если выполнять этот код на клиенте - все работает нормально. Проблемы начинаются именно в регламентном задании.
    Сделал запись в журнале регистрации, так вот в ТабДок строка в виде 05.10.2016, после присваивания НовыйЭлемент.Дата = 01.01.0001 0:00:00 и в справочнике пустая ячейка вместо даты
    Последнее редактирование: 14 мар 2017
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    Попробуйте вместо СпособЧтенияЗначенийТабличногоДокумента.Значение использовать Текст, правда тогда числа и даты из строк придется преобразовывать
  9. TopicStarter Overlay
    Базовик
    Offline

    Базовик

    Регистрация:
    11 мар 2017
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    В журнале регистрации пишет:
    Преобразование значения к типу Дата не может быть выполнено.
  10. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    смотрите формат даты в строке, полученной из табдока
    А лучше табдок сохраните, чтобы глазами посмотреть что оно там прочитало
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.411
    Симпатии:
    974
    Баллы:
    204
    /vanga mode on/
    в Excel записывается дата в виде строки вида "DD.mm.yyyy" вместо значения типа Дата.
    Это либо платформа 1С делает при сохранении табдок в виде файла Excel, либо при работе с Excel через COM выполняют абсолютно не нужное преобразование к строке.
    /vanga mode off/
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    155
    Баллы:
    104
    Оффтоп но все же
    Мне тут индусы присылали файлики под загрузку, в которых дата была да, строкой. В 4 (ЧЕТЫРЕХ) различных форматах.
    Поеду в Бангалор точно топор захвачу :)

Поделиться этой страницей