Выполнение этапа работ и формирование счетов-фактур

1. JUJA 19.10.11 14:12 Сейчас в теме
Есть ли такая обработка для 1С 7.7 - автоматическое формирование счетов-фактур для группы документов "Выполнение этапа работ" (которые формируются в журнале "Реализация")?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. JUJA 19.10.11 14:17 Сейчас в теме
И еще - можно ли построить такую обработку как формирование на основании документа "Выполнение этапа работ" документа "Услуги сторонних организаций", причем предусмотреть там вычитаемый %?
3. warenic 109 19.10.11 14:24 Сейчас в теме
Можно.
Есть в качестве образца обработка формирования приходной накладной на недостающий товар.
4. JUJA 19.10.11 15:04 Сейчас в теме
По формированию счетов-фактур у меня есть такой файл, можно его переделать под "выполнение этапа работ"?
Прикрепленные файлы:
ФормированиеСФ.ert
5. warenic 109 19.10.11 16:00 Сейчас в теме
Это для какой конфигурации?
6. JUJA 19.10.11 16:47 Сейчас в теме
1с Предприятие 7.7 Бух.учет, редакция 4.5
7. warenic 109 19.10.11 17:23 Сейчас в теме
В строке 113 "СчетФактура" заменяем на "ВыполнениеЭтапаРабот"
Далее нужно переработать процедуру Заполнить(ДокОсн), чтобы обрабатывались реквизиты документа ВыполнениеЭтапаРабот.
Например Товар нужно заменить на Работа
Справишься?
8. JUJA 19.10.11 17:38 Сейчас в теме
Постараюсь - это через конфигуратор надо делать?
9. warenic 109 19.10.11 17:45 Сейчас в теме
Да.
Нужно скопировать твою обработку с друрим именем( Напр. ФормированиеЭтапаработ)
Открыть конфигуратор, . в конфигураторе открыть эту обработку, перейти на закладку модуль
Открыть конфигурацию, - Документы - ВыполнениеЭтапаРабот, чтобы видеть. какие там есть реквизиты. Вот их тебе и нужно заполнить из реализации.
потом так же можешь перенисать вторую обработку для услуг сторонних организаций. Количество и сумму можешь умножать на коэффициентик.
Экспериментируй сначала в копии базы.
10. JUJA 19.10.11 17:46 Сейчас в теме
а где строка 113 находится?
11. JUJA 19.10.11 18:02 Сейчас в теме
Ой, похоже я запуталась:(
12. JUJA 19.10.11 18:04 Сейчас в теме
ФОРМИРОВАНИЕСФ_СТРОЙКА.ERT(19)}: Поле агрегатного объекта не обнаружено (Работа)? где косячок?
13. JUJA 19.10.11 18:09 Сейчас в теме
Вот что получилось. И вот такое ругательство - ФОРМИРОВАНИЕСФ_СТРОЙКА.ERT(19)}: Поле агрегатного объекта не обнаружено (Работа)? где косячок?
Прикрепленные файлы:
ФормированиеСФ_стройка.ert
14. warenic 109 19.10.11 18:13 Сейчас в теме
15. warenic 109 19.10.11 18:16 Сейчас в теме
А, вот в чем дело. У документа ФормированиеЭтапаработ в табличной части есть РАБОТА, а у накладной ТОВАР
Вот так должно быть
НовДок.Работа=ДокОсн.Товар;
НовДок - реквизиты, какие есть у создаваемого документа, а ДокОсн - с которого копируем, у него ничего не трогай.
16. JUJA 19.10.11 18:38 Сейчас в теме
Не получается:( Мне нужно сформировать счета-фактуры пакетом на основании документов выполнение этапа работ. Мне кажется, я не то делаю...
17. warenic 109 19.10.11 19:05 Сейчас в теме
(16) JUJA,
Тьфу ты... Конечно не то...
Меня что-йто заклинило формировать Выполнение этапа работ. Извиняюсь, перегрелся...
Значит немного не так. Сейчас сориентируюсь.
вот кусок кода с 19 строки, проверил, формирует.
// НовДок.Работа = ДокОсн.Работа;
НовДок.ВерсияОбъекта=Константа.НомерРелиза;
// Заполнение грузополучателя и грузоотправителя
НовДок.Грузополучатель=ДокОсн.Контрагент;

// Если ПустоеЗначение(ДокОсн.Грузополучатель) = 0 Тогда
// НовДок.Грузополучатель = ДокОсн.Грузополучатель;
// КонецЕсли;

// Если ПустоеЗначение(ДокОсн.Грузоотправитель) = 0 Тогда
НовДок.ВариантОтправки = 1;
// НовДок.Грузоотправитель = ДокОсн.Грузоотправитель;
// КонецЕсли;


// НовДок.Аванс = 0;
НовДок.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Реализация;

ДокОсн.ВыбратьСтроки();
Пока ДокОсн.ПолучитьСтроку()=1 Цикл
НовДок.НоваяСтрока();
НовДок.НазначитьТип("Товар", "Справочник.Номенклатура");
//СтранаПроисхождения = Работа.СтранаПроисхождения;
НовДок.Товар=ДокОсн.Работа;
18. JUJA 20.10.11 09:46 Сейчас в теме
А в последнем абзаце - товар на работа меняется?
19. JUJA 20.10.11 09:48 Сейчас в теме
Перем НовДок;
Перем КолНовДок;
//==========================================================­===================
Функция Заполнить(ДокОсн)
НовДок.Новый();
НовДок.ДатаДок=ДокОсн.ДатаДок;
Если СокрЛП(НачНомер)=0 Тогда
//НовДок.УстановитьНовыйНомер();
Иначе
ааа = Строка(Число(НачНомер) + КолНовДок - 1) + СокрЛП(БуквОк);
Пока СтрДлина(ааа)<8 Цикл
ааа = "0"+ааа;
КонецЦикла;
НовДок.НомерДок = ааа;
КонецЕсли;
НовДок.Договор = ДокОсн.Договор;
НовДок.Контрагент=ДокОсн.Контрагент;
НовДок.ТипЦен = ДокОсн.ТипЦен;
НовДок.Работа = ДокОсн.Работа;
НовДок.ВерсияОбъекта=Константа.НомерРелиза;
// Заполнение грузополучателя и грузоотправителя
НовДок.Грузополучатель=ДокОсн.Контрагент;

Если ПустоеЗначение(ДокОсн.Грузополучатель) = 0 Тогда
НовДок.Грузополучатель = ДокОсн.Грузополучатель;
КонецЕсли;

Если ПустоеЗначение(ДокОсн.Грузоотправитель) = 0 Тогда
НовДок.ВариантОтправки = 1;
НовДок.Грузоотправитель = ДокОсн.Грузоотправитель;
КонецЕсли;


НовДок.Аванс = 0;
НовДок.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Реализация;

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

Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНП = 1 Тогда
Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНДС = 0 Тогда
НовДок.Цена = (ДокОсн.Всего - ДокОсн.НП)/НовДок.Количество;

Иначе
НовДок.Цена = (ДокОсн.Всего - ДокОсн.НДС - ДокОсн.НП)/НовДок.Количество;
КонецЕсли;

Иначе
Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНДС = 0 Тогда
НовДок.Цена = ДокОсн.Цена;

Иначе
НовДок.Цена = (ДокОсн.Всего - ДокОсн.НДС)/НовДок.Количество;
КонецЕсли;
КонецЕсли;

НовДок.Сумма = ДокОсн.Всего - ДокОсн.НДС - ДокОсн.НП;
Иначе
НовДок.Цена = (ДокОсн.Всего - ДокОсн.НП)/НовДок.Количество;
НовДок.Сумма = ДокОсн.Всего - ДокОсн.НП;
КонецЕсли;
НовДок.НДС=ДокОсн.НДС;
НовДок.Счет = СчетПоКоду("90.3");
Если Цел(НовДок.СтавкаНДС.Ставка) = НовДок.СтавкаНДС.Ставка Тогда
НовДок.Всего=НовДок.Сумма+НовДок.НДС;
Иначе
НовДок.Всего=НовДок.Сумма;
КонецЕсли;
КонецЦикла ;

НовДок.ДокументОснование = ДокОсн;

НовДок.СчетНДС = 1;

НовДок.Записать();
Если Проводить=1 Тогда
НовДок.Провести();
КонецЕсли;

Сообщить("Создана Счет Фактура"+НовДок.ТекущийДокумент()+" на основании "+ДокОсн);
КонецФункции
//==========================================================­================================
Процедура Сформировать()
Перем Док,ДокСФ,НаличиеСФ;
КолНовДок = 0;
Док=СоздатьОбъект("Документ.РасходнаяНакладная");
ДокСФ=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если ФормироватьТолькоПоПроведенным=1 Тогда
Если Док.Проведен()=0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если (ВыбКонтрагент.Выбран()=1) И (ВыбКонтрагент<>Док.Контрагент) И (Док.Контрагент.ПринадлежитГруппе(ВыбКонтрагент)=0) Тогда
Продолжить;
КонецЕсли;
Если (ВыбДоговор.Выбран()=1) И (ВыбДоговор<>Док.Договор) И (Док.Договор.ПринадлежитГруппе(ВыбДоговор)=0) Тогда
Продолжить;
КонецЕсли;
НаличиеСФ=0 ;
Если ДокСФ.ВыбратьПодчиненныеДокументы(,,Док.ТекущийДокумент())=1 Тогда
Пока ДокСФ.ПолучитьДокумент()=1 Цикл
Если ДокСФ.ПометкаУдаления()=0 Тогда
Если ДокСФ.Вид()="СчетФактура" Тогда
Сообщить("Существует "+ДокСФ.ТекущийДокумент()+" на основании "+Док.ТекущийДокумент(),"i");
НаличиеСФ=1 ;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НаличиеСФ=0 Тогда
КолНовДок = КолНовДок + 1;
Заполнить(Док.ТекущийДокумент());
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//==========================================================­===========================
Процедура ПриОткрытии()
НовДок=СоздатьОбъект("Документ.СчетФактура");
КонецПроцедуры
//==========================================================­===========================
Я скопировала весь модуль - что мне здесь поменять?
21. JUJA 20.10.11 13:40 Сейчас в теме
НовДок.Работа = ДокОсн.Работа;
\ФОРМИРОВАНИЕСФ_СТРОЙКА_ДУБЛЬ2.ERT(19)}: Поле агрегатного объекта не обнаружено (Работа) Опять ругается!!!
Прикрепленные файлы:
ФормированиеСФ_стройка_дубль2.ert
20. warenic 109 20.10.11 12:05 Сейчас в теме
Да. Но не только
Комментируем строку 19 // НовДок.Работа = ДокОсн.Работа;
Пока не начали выбирать строки, нас значения реквизитов строк не интересуют
Строки, где Грузополучатель и Грузоотправитель тоже (некуда нам их записать).
Оставляем только НовДок.ВариантОтправки = 1;
Ну и меняем Товар на Работа в 42-й строке
В процедуре Сформировать() строка 94
Док=СоздатьОбъект("Документ.ВыполнениеЭтапаРабот"); ты же уже исправляла эту строку, делала правильно.
22. warenic 109 20.10.11 15:08 Сейчас в теме
НовДок.ТОВАР = ДокОсн.Работа
НовДок - счет-фактура, там реквизит ТОВАР
ДокОсн - выполнение этапа работ, там Работа
23. JUJA 20.10.11 16:31 Сейчас в теме
24. JUJA 20.10.11 17:09 Сейчас в теме
Если ПустоеЗначение(ДокОсн.Грузополучатель) = 0 Тогда
\ФОРМИРОВАНИЕСФ_СТРОЙКА_ДУБЛЬ2.ERT(24)}: Поле агрегатного объекта не обнаружено (Грузополучатель)Теперь ругается на это!
25. warenic 109 20.10.11 17:29 Сейчас в теме
(24) JUJA,
Ты можешь ВНИМАТЕЛЬНО, посмотреть на тот кусок, который я тебе прислал в (17)?
И в (20) тоже напомнил, что ЭТОНАДОЗАКОММЕНТИРОВАТЬ!!!! Ну повнимательней, пожалуйста. Сверь построчно модули, все сразу увидишь.
Две черточки в начале строки превращают строчку из программы в комментарий, т.е. она ПЕРЕСТАЕТ ВЫПОЛНЯТЬСЯ
26. JUJA 20.10.11 17:37 Сейчас в теме
Простите, я не программист, поэтому не могу сходу вникнуть в вашу терминологию. Попробую все исправить.
27. JUJA 20.10.11 17:59 Сейчас в теме
УРРРРРРРРРРРРРРРРРРРА!!!!!!Получилось!!!!!!!!!!!!!!!!!!!!!!!Другой вопрос - т.к. это работы - то грузоотправитель и грузополучатель в счетах-фактурах не должны указываться, как бы их убрать? чтобы прочерки вместо них были?
28. warenic 109 20.10.11 18:08 Сейчас в теме
В стандартной печатной форме и так все работает.
Прочерки ставятся если грузоотправитель - он-же (т.е. галочка ВариантОтправки = 1), а грузоотправитель и грузополучатель пустые (мы их закомментировали).
29. JUJA 27.10.11 16:59 Сейчас в теме
Спасибо большое за помощь!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот