Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка создания и заполнения  (Прочитано 5083 раз)
0 Пользователей и 1 Гость смотрят эту тему.
funbl4
Интересующийся

by
Offline Offline
Пол: Мужской
на самообучении


« : 31-08-2010 06:24 » 

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

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

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

Я на правильном пути?
« Последнее редактирование: 31-08-2010 06:43 от Sel » Записан

Нет ничего невозможного.
Dest
Опытный

ru
Offline Offline

« Ответ #1 : 31-08-2010 08:06 » 

Ну это зависит от того от куда вы берете данные. Какой там формат (если это внешний источник)?
Записан
funbl4
Интересующийся

by
Offline Offline
Пол: Мужской
на самообучении


« Ответ #2 : 31-08-2010 08:19 » 

Данные берутся из справочников, которые нам нужно создать с помощью обработки и с помощью обработки заполнить эти данные. Например: товар1, товар2 и т.д. Какая-то конкретика в данных не нужна. Обработка создаётся с целью проверки нагрузки на сервер.
Записан

Нет ничего невозможного.
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 31-08-2010 14:34 » 

Определись сначала с алгоритмом: что за чем и для чего должно создаваться. Например:
для создания расходной нужно создать контрагента, его договор и товары, тогда будет внешний цикл по документам, внутри создание контрагента и договора и потом внутренний цикл по товарам. Что за задача "распределение документов в течении года" для меня совсем не понятно: задавай дату документа случайным образом - и получишь распределение.
Записан
funbl4
Интересующийся

by
Offline Offline
Пол: Мужской
на самообучении


« Ответ #4 : 01-09-2010 06:45 » 

Про дату я и имел в виду что нужно задать случайную)
Записан

Нет ничего невозможного.
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 01-09-2010 09:01 » 

Код:
ГСЧ = Новый ГенераторСлучайныхЧисел();
Док.Дата = Дата(Год,1,1)+ГСЧ.СлучайноеЧисло(0, 60*60*24*355); // случайное распределение до секунд
Записан
funbl4
Интересующийся

by
Offline Offline
Пол: Мужской
на самообучении


« Ответ #6 : 08-09-2010 05:49 » 

Вот что получилось у меня :
Код:
ГСЧ = Новый ГенераторСлучайныхЧисел();
Для НомерДок = 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]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines