Обработка создания и заполнения

Тема в разделе "1C и всё что с ней связано", создана пользователем funby, 25 авг 2010.

  1. funby

    funby Гость

    Репутация:
    0
    Здравствуйте. Передо мной стоит такая задача: нужно создать обработку, которая программно заполняла бы в документе Расходная накладная 5 субконто (Договор, контрагент, отгрузка - ссылка на саму расходную накладную, заказы, номер заказа). При этом в расходной накладной должно заполнятся около 10 строк (товар, количество и сумма). Так же нужно с помощью обработки программно создавать контрагентов (контрагент1, контрагент2,..., договор(n)), договора (договор1, договор2,...,договор(n)) и сам товар (товар1, товар2,... ,товар(n)). При этом при всём нужно раскидать документы в течении года.
    Честно говоря когда мне сказали задание у меня глаза на лоб закатились О_о

    Как я понимаю для того чтобы это всё работало нужно делать через цикл причём не один.
    Один цикл на заполнение самой расходной накладной.
    Второй на создание контрагентов.
    Третий на создание договор.
    Четвёртый на создание товаров.
    Пятый на заполнение строк с товарами в расходной накладной.
    шестой на распределение документов в течении года.

    Платформа 1С Предприятие 8.2

    Я на правильном пути? Я новенький в этом деле, до этого программированием не занимался. :)
     
  2. Гость

    Репутация:
    0
    funby
    Я так понимаю идет загрузка из некоего файла? Строение файла нужно бы. Еще не понятно что значит "раскидать документы в течении года"?

    Если у тебя есть информация о документах и строках отдельно, то циклов должно быть намного меньше:
    1. Обход массива документов
    1.1. Создание документа
    1.2. Если контрагента еще нет, то создать
    1.3. Если договора у контрагента нет, то создать
    2. Обход строка документа
    2.1. Добавление строки
    2.2. Если номенклатуры еще нет, то создать.

    Итого получается 2 цикла, остальное условия. Заранее определись по каким полям искать номенклатуру, контрагента, договор- или они всегда новые?
     
  3. funby

    funby Гость

    Репутация:
    0
    Найлло, никого файла нету. Нужно сделать обработку.
    В этой обработке нужно:
    1) программное создание контрагентов (n-ое количество)
    2) программное создание товаров (номенклатуры, n-ое количество)
    3) программное создание договоров (n-ое количество)
    4) после этого нужно программно заполнить этими данными расходную накладную,
    1.1) в самой накладной есть 5 субконто:
    а)договор
    б)контрагент
    в)отгрузка - ссылка на саму расходную накладную
    г)заказы
    д)номер заказа)
    1.2) также присутствует табличная часть, в которой нужно заполнить около 10 строк в каждой расходной накладной и реквизиты(основные):
    а) товар(номенклатура)
    б) количество
    в) сумма
    5) раскидать в течении года - задать расходным накладным даты проведения в течении года
    6) ну и соответственно накладные должны быть проведены
     
  4. Гость

    Репутация:
    0
    funby
    Вы данные для создание контрагентов и прочего откуда берете?
    В накладной нет субконто, там есть реквизиты.
    Даты для "раскидывания" опять же непонятно откуда брать.
     
  5. funby

    funby Гость

    Репутация:
    0
    Найлло Данные для создание контрагентов и всего прочего задаются тестовые, типа:
    ПолноеНаименование - Фирма1
    Адрес - адрес1
    и т.д.
    Тоже самое и с номенклатурой и договорами. Какие данные будут представлены неважно. Суть самой задачи в том чтобы забить данными саму базу, и посмотреть тормозит ли сервер. С помощью данной обработки нужно создать, ну допустим 20 000 расходных накладных :)
     
  6. Darlock

    Darlock Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    Не проще ли составить запрос к вашей внешней таблице (именно таблице), в запросе использовать итоги по Контрагенту/Договору. А потом уже циклами обходить результат. Запрос быстрее отработается и сервер не сильно загрузится.
     
  7. Гость

    Репутация:
    0
    funby
    Вопрос уже стал совсем другим :)
    Вам нужно протестировать нагрузку сервера при работе ПОЛЬЗОВАТЕЛЕЙ? Тогда при создании документов\справочников не забывайте открывать и закрывать формы, потому что там тоже происходят действия, причем иногда немаленькие.

    Для удобства создайте таблицы в том же экселе, где забейте сколько угодно строк. В строке указываете артикул номенклатуры, количество, стоимость, код контрагента, код договора, дата. А далее обходите это все одним циклом и заполняете данные. Механизм как я описал в самом начале, только в пункте 2 нужно не обходить строки, а написать условие, что если один из реквизитов документа изменился по сравнению с предыдущей строкой, то нужно создавать новый документ.
     
  8. funby

    funby Гость

    Репутация:
    0
    Честно говоря не имея практики в 1С и читая такое, глаза, невольно, с каждой строкой открываются всё шире и шире, а челюсть всё ниже и ниже. :)
     
  9. Гость

    Репутация:
    0
    funby
    прочитайте ЧТО ТАКОЕ ФОРУМ

    Писать текст обработки вам тут никто не будет. Либо учитесь и заходите сюда за разъяснением непонятного, либо платите деньги тем, кто научился.
     
  10. funby

    funby Гость

    Репутация:
    0
    Найлло Если Вы где-то увидели что я просил написать мне обработку, то шире открывайте глаза.
    За данную ссылку отдельное спасибо, до этого на форумах не встречал.
     
  11. Гость

    Репутация:
    0
    Что вы хотите получить здесь в ответах? Механизм я описал достаточно подробно, что еще ждет человек, который не имеет практики в 1С на форуме программистов в разделе 1С? Я вам могу еще посоветовать обратиться в раздел "работа", где найдутся желающие и имеющие практику люди помочь вам с вашей проблемой.
     
  12. Gluk8888

    Gluk8888 Гость

    Репутация:
    0
  13. funby

    funby Гость

    Репутация:
    0
    Найлло

    Я хотел услышать ответ вот на этот вопрос, правильно ли я логически построил схему решения данной задачи.
     
  14. Гость

    Репутация:
    0
    funby
    Нет, не правильно- я вам в каждом отвечал на то, как лучше сделать.

    Скажите лучше, что вы хотели услышат в ответ на
    ?
     
  15. funby

    funby Гость

    Репутация:
    0
    Найлло каждый думает как он хочет.
    Сколько людей, столько и мнений. (с) Ганнибал Лектор

    Спасибо за помощь.
     
  16. funby

    funby Гость

    Репутация:
    0
    Вот что получилось.

    Код ( (Unknown Language)):
    ГСЧ = Новый ГенераторСлучайныхЧисел();
    Для НомерДок = 1 По 5000 Цикл //количество документов
    Конт = Справочники.Контрагенты.СоздатьЭлемент();
    Конт.Наименование = "Контрагент" + ГСЧ.СлучайноеЧисло(10000);
    Конт.УНП = ГСЧ.СлучайноеЧисло(100000000,999999999);
    Конт.Страна = Справочники.Страны.НайтиПоНаименованию("РБ");
    Конт.Записать();
    Дог = Справочники.Договоры.СоздатьЭлемент();
    Дог.НомерДоговора = ГСЧ.СлучайноеЧисло(0,5000);
    Дог.Наименование = "Договор" + Строка(НомерДок);
    Дог.Владелец = Конт.Ссылка;
    Дог.ВидДоговора = Перечисления.ВидыДоговоров.Годовой;
    Дог.ВалютаДоговора = Справочники.Валюты.НайтиПоНаименованию("RUB");
    Дог.СуммаПоДоговору = ГСЧ.СлучайноеЧисло(0,50000000);
    //Дог.ДатаДоговора = Дата(2009,1,1)+ГСЧ.СлучайноеЧисло(0, 60*60*24*355);
    Дог.Записать();
    Зак = Документы.Заказ.СоздатьДокумент();
    Зак.ДиапазонНомеров = ГСЧ.СлучайноеЧисло(0,9000);
    Зак.Дата = Дата(2009,1,1)+ГСЧ.СлучайноеЧисло(0, 60*60*24*355);
    Зак.Записать();
    НовДок = Документы.РасходнаяНакладная.СоздатьДокумент();
    НовДок.Грузоотправитель = Конт.Ссылка;
    НовДок.Грузополучатель = Конт.Ссылка;
    НовДок.ВидОтгрузки = Перечисления.ВидыОтгрузок.ОтгрузкаПродукции;
    НовДок.Валюта = Справочники.Валюты.НайтиПоНаименованию(Неопределено);
    НовДок.Договор = Дог.Ссылка;
    НовДок.Дата = Дата(2010,1,1)+ГСЧ.СлучайноеЧисло(0, 60*60*24*355);
    Для НомерСтроки = 1 по 10 цикл //количество строк в документе
    НовСтр = НовДок.ТЧ.Добавить();
    НовСтр.НомерЗаказа = НомерСтроки+ГСЧ.СлучайноеЧисло(0,1000);
    НовСтр.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар");
    НовСтр.ДокЗаказ = Зак.Ссылка;
    НовСтр.Количество = ГСЧ.СлучайноеЧисло(0,5000);
    НовСтр.Цена = ГСЧ.СлучайноеЧисло(0,60000);
    НовСтр.Сумма = НовСтр.Цена*НовСтр.Количество;
    НовСтр.СтавкаНДС = "20%";
    НовСтр.СуммаНДС = НовСтр.Сумма*0.2;
    НовСтр.СуммаВсего = НовСтр.Сумма-НовСтр.СуммаНДС; 
    КонецЦикла;
    НовДок.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
    КонецЦикла;
     
Загрузка...

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