Корекция и осчетоводяване на документи
Следният проблем възникна в конфигурацията на PUB 1Cv7.7. Ежедневно се издават около 200 фактури за продажба и още толкова фактури "автоматично" по постъпили заявки от купувачи. След като продуктите бъдат доставени на купувачите, операторът ръчно коригира някои фактури в базата данни.
Поставяме задачата: при промяна на документите за продажба е необходимо автоматично да се промени подчинената фактура. Сравнително просто решение без VC е леко да модифицирате модула за формуляр за фактура:
// Предварително зададена процедура Фактури
Param = Форма. Параметър ;
If Param = "Reissue" Тогава
Нека добавим нова процедура към модула за формуляр на документ за изпълнение:
// Предварително дефинирана процедура за изпълнение
Ако DateDoc DateProhibitedEditing Тогава
Ако ReturnStatus()= 0 Тогава
docSF = CreateObject( "Document.Invoice" );
docSF . ИзберетеДокументи (DateDoc, DateDoc);
Докато dokSF. GetDocument() = 1 цикъл
Ако docSF . DocumentBase = CurrentDocument() Тогава
SF = docSF. currentDocument();
OpenForm( docSF.CurrentDocument() , параметър);
docSF = CreateObject( "Документ . Фактура" );
docSF . FindDocument (SF);
Ако docSF . Избрано ()= 1 Тогава
docSF . Коментар = "Променено: " + Потребител ;
Ако премина ()= 1 тогава
И накрая, модулът за обработка на групови корекции и осчетоводяване на фактури
Ако EmptyValue( Date1 ) = 1 Тогава
Предупреждение("Началната дата на отчетния период не е посочена!");
Ако Дата1 > Date2 Then Warning( "Невалиден отчетен период!" +Line Separator+ "Началната дата е по-голяма от крайната дата на периода." );
Ако PeriodCheck()=0 Тогава
ElseIf Date1 EditProhibited Date Then
Предупреждение ("Не можете да публикувате документи преди датата на забраната за редактиране!");
docSF = CreateObject( "Document.Invoice" );
docSF .SelectDocuments( Дата1, Дата2);
Докато dokSF. GetDocument() = 1 цикъл
Ако docSF . База документи. View ()= "ProductImplementation" Тогава
Ако ( docSF . Публикувано ()= 1 ) и ( PostUnpostedOnly = 1 ) Тогава
OpenForm( docSF.CurrentDocument() , параметър);
Ако docSF . База документи. Преминал ()= 1 Тогава
Notify( "Документите са завършени. Време: " + Save(Format((_GetPerformanceCounter() - StartTime )/ 1000 , "P12.1" )) + " сек." ); EndProcedure //Генериране
Дата1 = ТекущаДата() - 1;
Дата2 = ТекущаДата() - 1;
Специални оферти










Коригирането и осчетоводяването на документи, като фактури, въведени въз основа на документи за продажба, може да се организира по много начини. Описан е сравнително прост подход, който е внедрен и работи от няколко години в реално счетоводство 1Cv7.7. Без външни компоненти.
(1) Вашата схема на решение е описана в обработката! Ако фактурата и фактурата са идентични, нищо във фактурата няма да се промени!
Програмистът не води счетоводство, не създава документи за продажба, фактури и други документи! Улеснява работата на счетоводителя. Всичко се прави от счетоводител! Той отговаря за резултата и получава бонус! Мисля, че нашите счетоводители сменят фактури и фактури, ако купувачът не е взел нещо от продукта, той го е задраскал. Документите се препечатват и на следващия ден нов комплект се носи на купувачадокументи. Може би това не е съвсем правилно по отношение на фактурите, защото има коригиращи фактури.
Не предлагам методология за работа на счетоводството, описах как можете да коригирате фактурата АВТОМАТИЧНО и да коригирате фактурата!