Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
24 Апр 2019, 07:09
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обработка создания и заполнения  (Прочитано 6653 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн funbl4

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-08-31
  • Сайт: 
Здравствуйте. Передо мной стоит такая задача: нужно создать обработку, которая программно заполняла бы в документе Расходная накладная 5 субконто (Договор, контрагент, отгрузка - ссылка на саму расходную накладную, заказы, номер заказа). При этом в расходной накладной должно заполнятся около 10 строк (товар, количество и сумма). Так же нужно с помощью обработки программно создавать контрагентов (контрагент1, контрагент2,..., договор(n)), договора (договор1, договор2,...,договор(n)) и сам товар (товар1, товар2,... ,товар(n)). При этом при всём нужно раскидать документы в течении года.
Честно говоря когда мне сказали задание у меня глаза на лоб закатились О_о

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

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


Оффлайн Vit1501

  • ****
  • Сообщений: 392
  • РЕПУТАЦИЯ: 65
  • КПД: 17%
  • Регистрация: 2010-06-05
  • Сайт: 
  • Профессия: Программист 1С
Почему бы в одном цикле этого не сделать? Например:
Пока .... Цикл
НовыйДок = Документы.РасходнаяНакладная.СоздатьДокумент();
НовыйКонтр = СоздатьКонтрагента();
НовыйДок.Контрагент = НовыйКонтр;
НовыйДок.Записать();
КонецЦикла;

и написать отдельно процедуру создатьконтрагента()

Оффлайн funbl4

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-08-31
  • Сайт: 
ну, например, у контрагента есть же реквизиты типа имени, адреса, УНН и т.д.  и нужно чтобы они были разные хотя бы отличались числом или буквой (Контрагент1, контрагент2). А через 1 цикл всё это не сделаешь.
Сразу создаются Контрагенты с реквизитами
потом товары
так же нужно создать договора
а потом уже заполнить расходную накладную.
Тут одним циклом не отделаться :)

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Поддерживаю товарища Vit1501 - не надо усложнять себе жизнь, какие 5 циклов?

Пока ... цикл
   Док=Документы.РасходнаяНакладная.СоздатьДокумент();
   Контрагент=ПодобратьКонтрагента(ПараметрыКонтрагента);
   Договор=ПодобратьДоговор(Организация, Контрагент);
   Док.Контрагент=Контрагент;
   Док.Договор=Договор;
   тчТовары=Док.Товары;
   Пока ... цикл
          Товар=ПодобратьТовар(ПараметрыТовара);
          ТекТовар=тчТовары.Добавить();
          ТекТовар.Номенклатура=Товар;
          // тут можно остальные данные по строке тч заполнить
   конеццикла;
конеццикла;

ну и соответственно, сделать функции, возвращающие ссылку на элемент соответствующего справочника:
1.ПодобратьКонтрагента(ПараметрыКонтрагента); - если по ПараметрамКонтрагента нет существующего Контрагента, то создаем нового, иначе возвращаем ссылку на найденного
2.ПодобратьДоговор(Организация, Контрагент); - если по данной организации и Контрагенту (можно еще какие-нить признаки передавать, зависит от вашей специфики договоров) не нашли существующего договора - создаем новый, иначе возвращаем ссылку на найденный
3.ПодобратьТовар(ПараметрыТовара); - если нет товара с таким-то наименованием, таким-то артикулом - то создаем новый, иначе возвращаем ссылку на найденный
 
Ну а "распределение документов в течении года" - можно и после всего этого сделать, предварительно складывая ссылки на созданные документы в массив. Или сразу в том же цикле дату документа проставлять сразу, по нужным вам принципам "раскидывания документов в течение года" :)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн funbl4

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-08-31
  • Сайт: 
Получилась вот такая вот штука:

ГСЧ = Новый ГенераторСлучайныхЧисел();
Для НомерДок = 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;
НовСтр.СуммаВсего = НовСтр.Сумма-НовСтр.СуммаНДС;
КонецЦикла;
//НовДок.Записать();
НовДок.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
КонецЦикла;

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Ну вот видишь, и никаких 5 циклов :)
Правда, мне не очень понятен смысл этой задачи. Просто забить базу данными?
И вот это как-то печально: Справочники.Валюты.НайтиПоНаименованию(Неопределено).
И почему товар везде один и тот же?

Раз уж Валюта и Товар один и тот же везде - лучше их вынести в отдельные переменные перед циклами. А то получается, ты каждую итерацию шаришься по справочникам в поисках одних и тех же элементов.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн funbl4

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-08-31
  • Сайт: 
Ага, задача была забить базу документами :)
А товар везде один и тот же, потому что я не смог выбрать :( Вот и получилось что задал постоянный)


Теги:
 

Три печатные формы - одна обработка. Внешние печатные формы в КА 2.4

Автор jetdiggerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 304
Последний ответ 10 Дек 2018, 01:05
от jetdigger
Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 10003
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
Обработка "ПодборНоменклатуры"

Автор BigAnnРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3624
Последний ответ 18 Апр 2012, 20:38
от Dethmontt
Обработка "СогласованиеЗаявок"

Автор Денис АндрушкоРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1297
Последний ответ 24 Сен 2016, 00:37
от Денис Андрушко
Обработка "Ввести реализацию"

Автор inoifantomРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 2077
Последний ответ 27 Мар 2011, 12:57
от inoifantom

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
85 Сообщений
AIFrame AIFrame
45 Сообщений
alexandr_ll
39 Сообщений
alex0402
30 Сообщений
wise wise
19 Сообщений
LexaK
14 Сообщений
BuhRust
14 Сообщений
byte777
14 Сообщений
Weidermail
13 Сообщений
pavl_vs
13 Сообщений

* Кто онлайн

  • Точка Гостей: 291
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal