8.х Внешняя обработка для заноса данных из xls

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Vitalik85, 27 фев 2013.

  1. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Вроде понял.
    Код:
    ДокТ = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    ТЧ = ДокТ.Маршрут.Добавить();
    
    Надеюсь со временем пойму 1С)))
  2. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Все-таки не получается. В техоперациях создал операцию Сборка.
    Код:
    ДокТ = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    ДокТ.Наименование = "Проверка";
    ДокТ.Записать();
    ТЧ = ДокТ.Маршрут.Добавить();
    ТЧ.ТехнологическаяОперация = "Сборка";
    ДокТ.Записать();
    
    Как я понимаю нужно как минимум сохранить табличную часть но как это сделать не понимаю.

    Код:
    ДокТ.Маршрут.
    Нету не Сохранить, не Записать.
  3. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    тип реквизита ТехнологическаяОперация какой?
  4. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Аааа.... ТОЧНО!
    Теперь понял.
    Спасибо!
  5. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Все работает, осталось только научиться в табличную часть заполнять более одной строки. Нужно как-то сделать перебор и если более одной строки с одинаковым техпроцессом, то добавлять еще одну строку. Направьте на правильный путь...
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    НаименованиеТ = Лист.Cells(Строка,2).Value;
    Если НаименованиеТ = Неопределено Или СокрЛП(НаименованиеТ)="" Тогда
    Продолжить;
    КонецЕсли;
    ДокСсылкаТ = Справочники.ТехнологическиеКартыПроизводства.НайтиПоНаименованию(НаименованиеТ);
    Если ЗначениеЗаполнено(ДокСсылкаТ) Тогда
    Продолжить;
    КонецЕсли;
    ДокТ = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    ДокТ.Наименование = НаименованиеТ;
    ДокТ.Записать();
    ТЧ = ДокТ.Маршрут.Добавить();
    НаименованиеО = Лист.Cells(Строка,5).Value;
    ТЧ.ТехнологическаяОперация = Справочники.ТехнологическиеОперации.НайтиПоНаименованию(НаименованиеО);
    ДокТ.Записать();
    КонецЦикла;
    
    Как я понимаю нужно заполнить модуль
    Код:
    Если ЗначениеЗаполнено(ДокСсылкаТ) Тогда
    Продолжить;
    
  6. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    промазал :)
  7. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Проставляется, но только первая технологическая операция. Последующие не заносятся. Нужно в код
    Код:
    Если ЗначениеЗаполнено(ДокСсылкаТ) Тогда
    //Здесь будет код
    Продолжить;
    
    Сделать вставку, чтобы при совпадении наименования техкарты не пропускалась строка, а дописывалась. Не могу понять как получить доступ к уже созданному документу и добавить новую строку в таблицу.
    Код:
    ДокТО = Справочники.ТехнологическиеКартыПроизводства.ЧтоДалее???
    
  8. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    ДокТО = Справочники.ТехнологическиеКартыПроизводства.НайтиПоНаименованию(Наименование);
    Если Не ЗначениеЗаполнено(ДокТО) Тогда
    // карту не нашли - делаем новую
    ДокТООбъект = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    // тут заполняем свойства новой карты
    ДокТООбъект.Записать();
    ДокТО = ДокТО.Ссылка;
    КонецЕсли;
    // теперь в ДокТО лежит карта - либо найденная, либо созданная
    
  9. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Что-то не совсем понимаю. Не работает. Заполняется только первое вхождение.
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    НаименованиеТ = Лист.Cells(Строка,2).Value;
    Если НаименованиеТ = Неопределено Или СокрЛП(НаименованиеТ)="" Тогда
    Продолжить;
    КонецЕсли;
    ДокТО = Справочники.ТехнологическиеКартыПроизводства.НайтиПоНаименованию(НаименованиеТ);
    Если ЗначениеЗаполнено(ДокТО) Тогда		
    Продолжить;
    КонецЕсли;
    ДокТ = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    ДокТ.Наименование = НаименованиеТ;
    ДокТ.Записать();
    ТЧ = ДокТ.Маршрут.Добавить();
    НаименованиеО = Лист.Cells(Строка,5).Value;
    ТЧ.ТехнологическаяОперация = Справочники.ТехнологическиеОперации.НайтиПоНаименованию(НаименованиеО);
    ДокТ.Записать();
    ДокТО = ДокТО.Ссылка;
    КонецЦикла;
    
    Вот такого вида исходная таблица:
    АБВГ.687332.034 Кабель Входной контроль
    АБВГ.687332.034 Кабель Комплектование
    АБВГ.687332.034 Кабель Подготовительная
    АБВГ.687332.034 Кабель Сборочно-монтажная
    АБВГ.687332.034 Кабель Пайка
    АБВГ.687444.031 Стол раскладной Входной контроль
    АБВГ.687444.031 Стол раскладной Комплектование
    АБВГ.687444.031 Стол раскладной Сборка
    АБВГ.687444.031 Стол раскладной Монтажная
    АБВГ.687444.031 Стол раскладной Монтажная
    АБВГ.687444.031 Стол раскладной Проверка

    А мне нужно чтобы под новыми номерами проставлялись все тех операции, а проставляется только входной контроль.
  10. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    БРЕД какой то....

    Если я правильно поймал мысль..то как то так :

    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    НаименованиеТ = Лист.Cells(Строка,2).Value;
    Если НаименованиеТ = Неопределено Или СокрЛП(НаименованиеТ)="" Тогда
    Продолжить;
    КонецЕсли;
    ДокТО = Справочники.ТехнологическиеКартыПроизводства.НайтиПоНаименованию(НаименованиеТ);
    Если ДокТО.Пустая() Тогда	   
    ДокТО = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    ДокТО.Наименование = НаименованиеТ;
    ДокТО.Записать();
    ИНАЧЕ
    ДокТО=ДокТО.ПолучитьОбъект();
    КонецЕсли;
    ТЧ = ДокТО.Маршрут.Добавить();
    НаименованиеО = Лист.Cells(Строка,5).Value;
    ТЧ.ТехнологическаяОперация = Справочники.ТехнологическиеОперации.НайтиПоНаименованию(НаименованиеО);
    ДокТО.Записать();
    КонецЦикла;
    
  11. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Да, именно мне это и нужно.
  12. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Прошу опять о помощи. Ввожу номенклатуру, где-то тут ошибка. При заполнении вносится только последняя строка. Где ошибка не могу понять. Спасибо.
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    Артикул = Лист.Cells(Строка,2).Value;
    Если Артикул = Неопределено Или СокрЛП(Артикул)="" Тогда
    Продолжить;
    КонецЕсли;
    ДокСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
    Если ЗначениеЗаполнено(ДокСсылка) Тогда
    Продолжить;
    КонецЕсли;
    Док = Справочники.Номенклатура.СоздатьЭлемент();
    Док.Наименование = "Бирка";
    Док.Артикул = Артикул;
    Док.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);
    Док.Записать();
    КонецЦикла;
    
    
  13. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Такие вопросы так не могут решаться. Это программирование. Этот вопрос можно решить только с помощью отладчика. Либо Вы, либо кто-то другой. Умеете им пользоваться?
  14. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Знаю что он есть, но не работал с нимю
  15. Patros
    Offline

    Patros

    Регистрация:
    21 фев 2016
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    // Очистить предыдущие значения
    ТаблицаДокумента.Очистить();
    ТаблицаДокумента.Колонки.Очистить();

    А у меня тут запинается: я задал ТаблицаДокумента = Новый ТаблицаЗначений;
    А пишет Тип не определен (ТаблицаЗначений) - как его задать?
    Последнее редактирование: 22 фев 2016
  16. Patros
    Offline

    Patros

    Регистрация:
    21 фев 2016
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    у меня тут запинается: ТаблицаДокумента - это у меня таблица значений, она получается только на сервере, а данные, которые я достал из xls, получаются на клиенте. И как мне ими заполнить таблицу значений?
  17. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Советую почитать эту книгу
    http://www.v8.1c.ru/metod/books/book.jsp?id=231
  18. Patros
    Offline

    Patros

    Регистрация:
    21 фев 2016
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    книгу попробую скачать, но это долго. Может подскажете, почему в процедуре на клиенте ругается: Тип не определен (ТаблицаЗначений),
    а если я вынес в функцию на сервере Таблица = Новый ТаблицаЗначений - то не ругается, но значение (ТаблицаЗначений), возвращаемое функцией, все равно не принимается в процедуре.
  19. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Вы, в принципе, сами ответили на свой вопрос. Потому что ТаблицаЗначений не доступна клиенте
    upload_2016-2-22_23-9-52.png
  20. Patros
    Offline

    Patros

    Регистрация:
    21 фев 2016
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    ну и как ТЗ заполнить данными из COMОбъект? Вообще мне надо заполнить табличную часть в элементе справочника.
Похожие темы
  1. OIT
    Ответов:
    1
    Просмотров:
    676
Загрузка...

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