7.7 Нужен совет по обработке "Загрузка з Ексель"

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем volodya1122, 27 май 2011.

  1. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    Взял здесь обработку для загрузки приходной накладной с екселя. И переделал ее для себя. (ТиС для Украины).
    У меня два вопроса:
    1. При выборе поставщика выбирается как грута, так и поставщик. (В обичном документе, когда вибираешь контрагента то когда нажимаешь на групу, то група не выбирается а открывается список контрагентов в этой групе). Смотрел форма списка справочника и там и здесь прописана одна и та самая "Длявыбора". Для меня это не существенно но если не сложно может подскажите как сделать чтобы група открывалась (не только по"+") а контрагент выбирался, как в обычных документах.
    2. У меня конфигурация реализована таким образом, когда вводим приходную накладную, наименование товара совпадает, а цена отличается от той что прописана в справочнике номенклатура (УчетнаяЦена), то ввожу новый товар (в приходной накладной запретил изменять цену). Номенклатура имеет до 2 уровней вложености (бытовая техника\принтеры\canonMP250).
    Теперь собственно вопрос. Как прописать чтобы когда найдет нужное наименование, но с другой ценой, то новый товар создавался в той групе где найдет.

    Вложения:

    • xls.ert
      Размер файла:
      29 КБ
      Просмотров:
      54
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    1.Тут может быть 2 варианта:
    А. Если это подбор, то использовать метод ВыборГруппы()
    Б. Если это просто форма списка, то использовать методы формы ПриНачалеРедактированияСтроки(), ЭтоГруппа() и ИспользоватьРодителя().

    2. А тут не понятно, чего все-таки надо?
  3. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    1, ФормаСписка. Можно подробнее обяснить?

    2 Идет поиск товара в цикле. Если находит товар, проверяет цену. Если цена совпадает, то выбирает этот товар.
    Если цена не совпадает то создается новый товар.
    Если не совпадает наименование то создается товар в самой верхней групе.

    Я хочу дописать когда находит товар в какой то из груп (два уровня вложенности), но с другой ценой, то в таком случае новый товар создавался бы в той групе где нашелся такой товар (тоисть нашел товар "принтер Санон МР-250" в групе "бытовая техника\принтеры" с ценой "645,00", а у меня в приходной такое же наименование но с ценой "650,00" . Тогда нужно создать новый "принтер Санон МР-250" в групе "бытовая техника\принтеры" с ценой "650,00"). Думаю понятно обясняю....
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Форма списка справочника может открываться для выбора значения какого-то реквизита. А вот может ли данный реквизит получать значение группы справочника или нет, настраивается методом ВыборГруппы().

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

    В чем собственно проблема возникает?
  5. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    1. с списком совсем запутался. Нажимаю на "..." попадаю в справочник.Контрагенты (как в любом документе стандартной ТиС).
    2. Каким образом создать новую номенклатуру (Спр.Новый(); ) в групе где нашелся товар с таким же наименованием?
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    1. вот у реквизита, у которого нажимаешь "..." есть метод ВыборГруппы(), и использовать его нужно в модуле той формы, из которой вызываешь.
    Например, есть обработка, на ней реквизит "ВыбСотр". Значит в модуле формы обработки необходимо написать
    Код:
    ВыбСотр.ВыборГруппы(0);
    
    Таким образом выбрать группу в данный реквизит не получится, группа будет просто открываться.

    2. После того, как создашь новый элемент, заполни реквизит Родитель (не путать с Владелец).
    Как пример, если переменная СпрОбхода - это справочник, который обходит элементы, выполняя поиск
    Код:
    Спр.Новый();
    Спр.Родитель = СпрОбхода.Родитель;
    
    PS чет мне подсказывает, что нет нужды обходить весь справочник. Может стоит подумать использовать методы справочника, ограничивающие выборку? Допустим, ИспользоватьРодителя, НайтиПоНаименованию, ВыбратьЭлементыПоРеквизиту и пр.
  7. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    по второму варианту вчера дома пробовал сам чтото реализовать. Получилось, и главное работает.
    Код:
    Спр.ВыбратьЭлементы(0);
    Пока Спр.ПолучитьЭлемент()=1 Цикл   // Перебираю весь справочник
    
    Если Спр.Наименование=Наименование Тогда     
    ДеЗнайшов=Спр.ТекущийЭлемент().Родитель;    
    
    ,....
    //Потом
    
    Спр.ИспользоватьРодителя(ДеЗнайшов);
    
    
    [warn="Внимание!"]
    Убедительная просьба - пользуемся тегами.
    [/warn]

    По первому вопросу сегодня попробую...
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Быстрее будет так:

    Код:
    Если Спр.НайтиПоНаименованию(Наименование)=1 Тогда
    Спр.Родитель=ДеЗнайшов;
    Спр.Записать();
    КонецЕсли;
    
    
  9. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    не совсем понял как это работает, но всеравно так не пойдет, так как после того как я найду нужное наименование, еще проверяю чтобы совпала цена (одинаковых наименований товара у меня несколько с разными ценами). Новый создаю в том случае если в нужных наименованиях нет нужной цены.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Сурово... Одноименной товар.... Не боитесь запутаться?
  11. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    База так работяет уже 8 лет. Недавно сделал свертку базы. И дальше продолжаю так работать....
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Удачи, раз работает.
    Но все же не думаю что этот вариант самый хороший

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