8.х Установка цен номенклатуры

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Leprecus, 12 окт 2015.

  1. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Очередной бредовый вопрос. Документ "Установка цен номенклатуры" - не решаюсь писать полную загрузку из файла всех цен номенклатуры (т.е. с созданием самого документа, а после заполнением его табличной части). Можно ли создать этот документ через интерфейс, добавить все позиции номенклатуры и сохранить с нулевыми ценами, а после обработкой заполнить цены в этом документе? Ну или может кто поделится рабочим кодом, буду весьма признателен!
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Можно. Создаете документ. Далее в коде получаете объект. Заполняете ценами и проводите. Все.
  3. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Спасибо - хорошая новость.
  4. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Ну цены же вы все равно будете из екселя тянуть, зачем же перед этим номенклатуру руками забивать? И ее забирайте из файла, а потом поиск по спр.Номенклатура. Код загрузки из Екселя нужен?
  5. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Да, цены буду из экселя тянуть. Но номенклатуру не ручками, а в 8.3 есть такая возможность добавить все позиции номенклатуры в этот документ. Там даже, как я понял, есть штатный импорт из эксель, но я не могу его понять и документацию не удалось найти. Код загрузки из эксель, я думаю, не помешает.
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Ситуации разные бывают.
    --- Объединение сообщений, 13 окт 2015 ---
    А, вон оно как даже. :)
  7. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Код:
        СерверExcel = Новый COMОбъект("Excel.Application");
       
        ДокументХЛС= ФайлДанных;
        ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС);
        ExcelЛист=ФайлХЛС.ActiveSheet;
        КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count;
        Если  Сокрлп(ExcelЛист.Cells(КонечнаяСтрокаДанных,1).Value) ="" Тогда
              КонечнаяСтрокаДанных=КонечнаяСтрокаДанных-1;
        КонецЕсли;
        КоличествоКолонокДанных=2;//ФайлХЛС.ActiveSheet.UsedRange.Columns.Count;
        Состояние("Загрузка в память данных ведомости...");
    
        Область = СерверExcel.Range(ExcelЛист.Cells(1,1), ExcelЛист.Cells(КонечнаяСтрокаДанных,2));
        МассивДанныхEXEL = Область.Value.Выгрузить();
       
        //comsafearray
        СерверExcel.Quit();
    Каждая колонка выгружается в отдельный массив, а МассивДанныхEXEL -это массив из всех массивов колонок.
  8. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Спасибо на досуге буду разбираться
  9. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Задачу решил, понятно что всё это не грамотно реализовано, нот я только учусь)
    Теперь планирую разобраться в тонкостях и сделать всё по человечески. Ну а на данном этапе при написании возникло несколько вопросов, и хотелось бы их для себя уяснить.
    1. Как было бы правильно найти последний документ установки цен номенклатуры (понятно что в идеале его нужно создать с нуля, но для общего образования хочу знать)? Я создавал документ через интерфейс, как писал в первом посте, а после запросом искал его по номеру и получал ссылку.
    2. По ссылке получив объект документа, в цикле обращаюсь к табличной части товары
    Код:
    Для Каждого Товар из ДокументОбъект.Товары Цикл
    //Так обращаюсь к строке табличной части
    ДокументОбъект.Товары[Товар.НомерСтроки-1];
    //И выполняю манипуляции с ней
    КонецЦикла;
    Насколько грамотно таким образом по номеру строки выполнять обращение?
    3. Даст ли 1С в этом цикле удалить строку табличной части? И если даст, то что произойдёт с нумерацией строк?
  10. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Код:
    ДокументОбъект.Товары[Товар.НомерСтроки-1];
    
    Товар - это уже строка ТаблЧасти, (Товар.НомерСтроки-1) - получил номер строки, ДокументОбъект.Товары[Товар.НомерСтроки-1] - у ТЧ объекта получаешь строку по ее номеру. Таким образом прошел по кругу - у тебя уже есть строка таблЧасти - Товар, с ней уже можно работать.
    --- Объединение сообщений, 14 окт 2015 ---
    удаляй на здоровье
  11. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Что Товар это и есть строка табличной части я понимаю, просто я почему то думал, что это типа выборка из табличной части. И если я произведу изменения непосредственно в нём, а не не через объект, то они не применяться. Это не так?
    Т.е. я пишу в цикле так
    Код:
    ДокументОбъект.Товары[Товар.НомерСтроки-1].Цена = 555
    А нужно так
    Код:
    Товар.Цена = 555
    и всё тоже будет работать?
  12. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    ДокументОбъект - это ОБъект или Ссылка? Если Объект - то данные поменяются, если ссылка - нет.
  13. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    ДокументОбъект - это разумеется объект.
    Так в цикле, если я получу товар, посмотрю и пойму, что он мне не нужен, я могу его тут же в цикле удалить? При этом цикл не собьётся при получении следующего элемента? Или же нужно в некий массив загонять те строки которые нужно удалить и по завершении цикла произвести их удаление?
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    По завершении отработанного цикла лучше удалить, иначе у вас индексы поплывут.
  15. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Хорошо, значит не все мои домыслы были неверными) И, кстати, наверное имеет смысл при удалении делать обход списка с конца?
    --- Объединение сообщений, 14 окт 2015 ---
    Ну а по вопросу "Как было бы правильно найти последний документ установки цен номенклатуры?", подскажет кто-нибудь?
    Последнее редактирование: 14 окт 2015
  16. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    у тебя документ сразу на всю номенклатуру устанавливается? Если да, то можно запросом по рег.свед ЦеныНоменклатурыСрезПоследних выбрать первую запись и получить ее регистратор
  17. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Изначально создаётся документ и заполняется номенклатурой. Но цены не проставляются, потому думаю так не прокатит. А можно как то получить типа в массив список всех документов и обратиться к последнему, ну или что то такое?
  18. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Тут почитал. Видимо лучший вариант - написать запрос получения ссылки на первый документ, упорядочив документы по дате в обратном порядке. Если у кого есть другие более грамотные мысли - пишите, для общего образования мне пригодится.
  19. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Может сначала стоит записать документ (чтобы дата документа была, по которой делать срез по ценам), и только потом добавлять номенклатуру?
  20. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Ну я собственно так и делаю. В первом посте же описал - создаю документ через интерфейс, добавляю все позиции номенклатуры, и сохраняю с нулевыми ценами, а уж потом все эти манипуляции. А уж как появится время буду по уму делать, программно создавать и наполнять. В рамках самообразования кручу-верчу)))

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