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

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

Наш партнер Genesis Hackspace
  1. funby

    funby Гость

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

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

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

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

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

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

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

    funby Гость

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

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

    funby Гость

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

    Darlock Well-Known Member
    1C Team

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

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

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

    funby Гость

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

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

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

    funby Гость

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

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

    Gluk8888 Гость

  13. funby

    funby Гость

    Найлло

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

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

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

    funby Гость

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

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

    funby Гость

    Вот что получилось.

    Код ( (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;
    НовСтр.СуммаВсего = НовСтр.Сумма-НовСтр.СуммаНДС; 
    КонецЦикла;
    НовДок.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
    КонецЦикла;
     
Загрузка...
Похожие Темы - Обработка создания заполнения
  1. kolka
    Ответов:
    6
    Просмотров:
    323
  2. anna
    Ответов:
    9
    Просмотров:
    974
  3. FaRReLL
    Ответов:
    0
    Просмотров:
    907
  4. crow1986
    Ответов:
    8
    Просмотров:
    1.953
  5. Dazzel
    Ответов:
    1
    Просмотров:
    981

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