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

Автор Тема: Оптимизация проведения документа  (Прочитано 2260 раз)

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

Оффлайн lilia93

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-26
  • Сайт: 
  • Профессия: Ученик 1С
Доброе утро, уважаемые программисты :-)

    При разработке конфигурации столкнулась со следующей ситуацией. У меня есть документ "Заявка", в котором присутствует реквизит "Статус" со значениями, взятыми из перечислений "Назначен", "Выполняется", "Выполнено", "Не выполнено". Поскольку я новичок в этом деле и это моя первая разработка, все значения реквизитов для каждой заявки приходится менять вручную. Статус заявки при проведении документа фиксируется в соответствующем регистре сведений "Статус заявки".
    Помимо этого с заявкой связаны документы "ЗаказМатериаловДляВыполненияУслуги" и "АктОказанияУслуг". Подскажите, пожалуйста, как сделать, чтобы при записи "Заказа материалов" (его движения ни в одном из созданных регистров не отражаются) движения документа "Заявка" перепизасывались с соответствующим изменением реквизита "Статус" на "Назначено", и при проведении док-та "Акт оказания услуг" (регистр накопления "Услуги") статус в док-те "Заявка" менялся на "Выполнено".
Вот модули объектов всех документов

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


Заказ материалов для оказания услуги: Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
   
   Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаОказаниеПлатныхУслуг") Тогда
      Исполнитель = ДанныеЗаполнения.Исполнитель;
      ДокументОснование = ДанныеЗаполнения.Ссылка;
      Для Каждого ТекСтрокаТабличнаяЧасть1 Из ДанныеЗаполнения.ТабличнаяЧасть1 Цикл
         НоваяСтрока = ТабличнаяЧасть1.Добавить();
         НоваяСтрока.Услуга = ТекСтрокаТабличнаяЧасть1.ВидУслуги;
      КонецЦикла;
   ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаОказаниеБесплатныхУслуг") Тогда
      Исполнитель = ДанныеЗаполнения.Исполнитель;
      ДокументОснование = ДанныеЗаполнения.Ссылка;
      Для Каждого ТекСтрокаТабличнаяЧасть1 Из ДанныеЗаполнения.ТабличнаяЧасть1 Цикл
         НоваяСтрока = ТабличнаяЧасть1.Добавить();
         НоваяСтрока.Услуга = ТекСтрокаТабличнаяЧасть1.ВидУслуги;
      КонецЦикла;
   КонецЕсли;
КонецПроцедуры


Акт оказания услуг:  Процедура ОбработкаПроведения(Отказ, Режим)
   // регистр Услуги
   Движения.Услуги.Записывать = Истина;
   Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл
      Движение = Движения.Услуги.Добавить();
      Движение.Период = Дата;
      Движение.ВидУслуги = ТекСтрокаТабличнаяЧасть1.ВидУслуги;
      Движение.Исполнитель = Исполнитель;
      Движение.Количество = ТекСтрокаТабличнаяЧасть1.Количество;
   КонецЦикла;
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
   Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаОказаниеПлатныхУслуг") Тогда
      Инициатор = ДанныеЗаполнения.Заказчик;
      Исполнитель = ДанныеЗаполнения.Исполнитель;
      ДокументОснование = ДанныеЗаполнения.Ссылка;
      Для Каждого ТекСтрокаТабличнаяЧасть1 Из ДанныеЗаполнения.ТабличнаяЧасть1 Цикл
         НоваяСтрока = ТабличнаяЧасть1.Добавить();
         НоваяСтрока.ВидУслуги = ТекСтрокаТабличнаяЧасть1.ВидУслуги;
         НоваяСтрока.Количество = ТекСтрокаТабличнаяЧасть1.Количество;
      КонецЦикла;
   ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаОказаниеБесплатныхУслуг") Тогда
      Инициатор = ДанныеЗаполнения.Заказчик;
      Исполнитель = ДанныеЗаполнения.Исполнитель;
      ДокументОснование = ДанныеЗаполнения.Ссылка;
      Для Каждого ТекСтрокаТабличнаяЧасть1 Из ДанныеЗаполнения.ТабличнаяЧасть1 Цикл
         НоваяСтрока = ТабличнаяЧасть1.Добавить();
         НоваяСтрока.ВидУслуги = ТекСтрокаТабличнаяЧасть1.ВидУслуги;
         НоваяСтрока.Количество = ТекСтрокаТабличнаяЧасть1.Количество;
      КонецЦикла;
   КонецЕсли;
   
КонецПроцедуры


Спасибо! С уважением, грустный студент :-)





 


Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Есть два варианта перепровести документ "Заявка", или получить набор записей из регистра и где поменять статус заявки.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMB

Оффлайн lilia93

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-26
  • Сайт: 
  • Профессия: Ученик 1С
Есть два варианта перепровести документ "Заявка", или получить набор записей из регистра и где поменять статус заявки.

Дмитрий,как реализовать первый вариант? Чтобы изменялся статус и перепроводился документ?

Конфигурацию делаю в 1С 8.2

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Получаете ссылку на документ "заявка", далее
Попытка
Заявка = Ссылка.ПолучитьОбъект();
Заявка.Записать(РежимЗаписиДокумента.Проведение);
Исключение
КонецПопытки;
Ссылка на примеры работ https://yadi.sk/d/ksVluPMB

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
В "ЗаказМатериаловДляВыполненияУслуги" и "АктОказанияУслуг" есть ссылка на Заявку?
Предположим что есть и называется ДокументОснование.
Тогда делаете Заказ и Акт тоже регистраторами регистра где статусы заявок
и при их проведении делаете соответствующее движение с нужным статусом,
ссылка на заявку берете из ДокументОснование.

ЗЫ зачем вам и реквизит Статус и регистр? оставляйте только регистр.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн lilia93

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-26
  • Сайт: 
  • Профессия: Ученик 1С
В "ЗаказМатериаловДляВыполненияУслуги" и "АктОказанияУслуг" есть ссылка на Заявку?
Предположим что есть и называется ДокументОснование.
Тогда делаете Заказ и Акт тоже регистраторами регистра где статусы заявок
и при их проведении делаете соответствующее движение с нужным статусом,
ссылка на заявку берете из ДокументОснование.

ЗЫ зачем вам и реквизит Статус и регистр? оставляйте только регистр.

Да, Заказ и Акт заполняются на основании заявки, значит, я добавляю в Заказ и Акт тот же реквизит "Статус", что и в заявке , затем формирую движения документов по регистру "Статус заявки".
А вот что делать потом, я, к сожалению, никак не понимаю :(
Дописывать в обработку проведения каждого из документов? что именно прописывать?

Извините, мне очень неудобно за свою глупость (

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Да, Заказ и Акт заполняются на основании заявки, значит, я добавляю в Заказ и Акт тот же реквизит "Статус", что и в заявке , затем формирую движения документов по регистру "Статус заявки".

зачем вам реквизит статус?
у вас же в движение по регистру статусов будет записываться каждый раз одно и то же значение.

Дописывать в обработку проведения каждого из документов? что именно прописывать?

ну у вас в проведении заявки уже же есть код формирования движений по регистру статусов,
его берете и копировать/вставить в заказ и акт...

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Извините, мне очень неудобно за свою глупость (

тут главное не сдаваться )))
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн lilia93

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-26
  • Сайт: 
  • Профессия: Ученик 1С
Сдала вот так
Процедура ОбработкаПроведения(Отказ, Режим)

   // регистр СтатусЗаявки
   Движения.СтатусЗаявки.Записывать = Истина;
   Движение = Движения.СтатусЗаявки.Добавить();
   Движение.Заявка = ДокументОснование;
   Движение.Статус = СтатусЗаявки;
   ДокОсн = ДокументОснование.ПолучитьОбъект();
ДокОсн.Статус = СтатусЗаявки;
ДокОсн.Записать(режимзаписидокумента.проведение);

КонецПроцедуры

Вроде работает, только теперь до меня дошло, что записи в регистре затираются, а как можно это реализовать, если я сделаю этот регистр периодическим, через СрезПоследних?

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
ДокОсн = ДокументОснование.ПолучитьОбъект();
ДокОсн.Статус = СтатусЗаявки;
ДокОсн.Записать(режимзаписидокумента.проведение);

еще раз. реквизит документа НЕ НУЖЕН. статус видно по регистру.
то есть эти строки не нужны.

регистр - периодический?
рекомендую сделать его подчиненным регистратору и периодичность - по позиции регистратора.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

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

Ответов: 1
Просмотров: 4475
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

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

Ответов: 6
Просмотров: 15938
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

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

Ответов: 3
Просмотров: 4200
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

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

Ответов: 1
Просмотров: 631
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

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

Ответов: 4
Просмотров: 7746
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
alex0402
46 Сообщений
andron81_81
41 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal