Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 15:11

Help 1C_8.2 Внешняя_обработка Создание_документов

Автор Art_Александр, 23 сен 2014, 14:45

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

Art_Александр

День добрый. Начал вариться в 1с, программист в отпуске. Нужна помощь с внешней обработкой.
Суть задачи:
Бухгалтеру необходимо автоматически формировать реестры (документы, как лучше то сказать?) за конкретный период по полю задолжностей если оно не равно 0. На форме выбирают дату и вид услуги.

Как я представляю (уже никак Т_Т):
Справочники.Контрагенты.Реквизиты.АбонентскоеОбслуживание - необходимое поле, по которому проверяем.
Документы.СчетНаОплатуПокупателю.ТабличныеЧасти.Услуги.Сумма - поле, которое надо будет заполнить в документе.

*****************************************

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ВыборкаДата=Документы.СчетНаОплатуПокупателю.Выбрать(ДатаВыбора); //возможно стоит искать по контрагенту, у которого АбонентскоеОбслуживание <> 0 ?
   Пока ВыборкаДата.Следующий() Цикл
      ТекущийДокумент=ВыборкаДата.Ссылка;
      ТекущийКонтрагент=ТекущийДокумент.Контрагент.Ссылка;
      Если (ТекущийКонтрагент.АбонентскоеОбслуживание<>0) Тогда             
         ДокУслуги=Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
         ДокУслуги.Заполнить(ТекущийДокумент.Ссылка);
         ДокУслуги.Дата=ДатаВыбора;
         ДокУслуги.Цена=ТекущийКонтрагент.АбонентскоеОбслуживание; //Возможно ли такое?Оо
         ДокУслуги.Записать();
      КонецЕсли;
   КонецЦикла;

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


*****************************************

Если что не так поправьте. Открыл базу, глаза разбежались, заблудился, сформулировать даже нормально не получется =_=. Взаранее спасибо. Буду рад критике, комментариям и ссылкам ^^

has

Я бы советовал сделать запросом это все. Инфы по запросам в 1С в инете полно. Пробуйте, какие-то вопросы будут, обращайтесь.

Art_Александр

На данный момент так:

***************************************

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ВыборкаКонтрагент=Справочники.Контрагенты.Выбрать();
   к=0; //счетчит, только для проверки
   Пока ВыборкаКонтрагент.Следующий() Цикл
      ТекущийКонтрагент=ВыборкаКонтрагент.Ссылка;
      Если (ТекущийКонтрагент.АбонентскоеОбслуживание<>0) Тогда             
         ДокУслуги=Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
         Объект=ДокУслуги.Услуги.Ссылка.Получить();
         Объект.Сумма=ТекущийКонтрагент.АбонентскоеОбслуживание;
         ДокУслуги.Дата=ДатаВыбора;
         ДокУслуги.Записать();
      КонецЕсли;
      к=к+1;
      сообщить("Для счета "+к+"  "+ТекущийКонтрагент+" заполнен справочник "+ДокУслуги);
   КонецЦикла;
         
КонецПроцедуры

***************************************

Но всё ещё нужна помощь (в данный момент гуглю):
{Форма.Форма.Форма(9)}: Поле объекта не обнаружено (Ссылка)
         Объект=ДокУслуги.Услуги.Ссылка.Получить();
Добавлено: 24 сен 2014, 08:55


Цитата: has от 24 сен 2014, 08:32
Я бы советовал сделать запросом это все. Инфы по запросам в 1С в инете полно. Пробуйте, какие-то вопросы будут, обращайтесь.

Просто мне с запросами на данный момент тяжело обращаться (представление) =) Но обязательно попробую.

has

Цитата: Art_Александр от 24 сен 2014, 08:53
ДокУслуги=Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
       Объект=ДокУслуги.Услуги.Ссылка.Получить();
         Объект.Сумма=ТекущийКонтрагент.АбонентскоеОбслуживание;
         ДокУслуги.Дата=ДатаВыбора;
         ДокУслуги.Записать();

Метод СоздатьДокумент уже вернет Вам объект документа.


ДокУслуги=Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
ДокУслуги.Сумма=ТекущийКонтрагент.АбонентскоеОбслуживание;
ДокУслуги.Дата=ДатаВыбора;
ДокУслуги.Записать();

Если конечно у Вас только сумма в документе и нет других реквизитов
Да и Вы пишите что бухгалтеру нужно формировать реестры, то может это отчет всего лишь нужно, а не создавать документы?

Art_Александр

Цитата: has от 24 сен 2014, 09:51

ДокУслуги.Сумма=ТекущийКонтрагент.АбонентскоеОбслуживание;

Если конечно у Вас только сумма в документе и нет других реквизитов

Сумма в табличной части, а такой вариант уже пробовал самым первым:
    {Форма.Форма.Форма(10)}: Поле объекта не обнаружено (Сумма)
    ДокУслуги.Сумма=ТекущийКонтрагент.АбонентскоеОбслуживание;

Цитата: has от 24 сен 2014, 09:51Да и Вы пишите что бухгалтеру нужно формировать реестры, то может это отчет всего лишь нужно, а не создавать документы?

Там получается идут реестры на оказание услуг (находятся в: номенклатура -> услуги -> реестровое обслуживание эмитентов). Я так понял, что их на печать отправляют, типа платёжки. Может и ошибаюсь. Второй день сижу вникаю, взаипонимание идёт тяжело, да и программист не отвечает.
Пойду погляжу, что такое отчёт, вдруг осинит ^^

has

Цитата: Art_Александр от 24 сен 2014, 12:03Сумма в табличной части
Значит надо добавлять строку в табличную часть и там заполнять сумму

mku-rino

Необходимо заполнить табличную часть вашего документа. Например, у Вашего документа "СчетНаОплатуПокупателю" есть табличная часть Услуги.

Создаем документ:
Док = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();

Теперь добавляем строку в табличную часть Услуги, и после этого заполняем реквизиты табличной части:
Услуга = Док.Услуги.Добавить();
Услуга.Сумма = ВашаСумма;

Art_Александр

Цитата: mku-rino от 24 сен 2014, 13:43
Услуга = Док.Услуги.Добавить();
Услуга.Сумма = ВашаСумма;

Вот как раз это только что я и сделал =) Обработка заработала, осталось только допилить немного =)
Всем спасибо за помощь!

Теги: HELP 1C_8.2 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск