не получается написать обработку

Форум 1С: Одинэс.Ру

Найти!

не получается написать обработку

Bio Frode
15.07.2009 - 09:22
бюджетная бухгалтерия 7.7, задача стоит следующая: сделать обработку, которая на основании косгу будет заполнять счет дебета в документе Кассовое выбытие, вроде все просто, только вот в документе есть процедура "привыбореСчДт" которая при выборе счета подставляет значение субконто контрагенты и субконто договора, исходя из реквизитов шапки, если же обработка выбирает счет то это не происходит. как описать это действие в обработке, чтобы подставлял согласно процедуре "привыбореСчДт"
. вот код обработки:
 
Процедура Сформировать()
    Док = СоздатьоБЪЕКТ("Документ.КассовоеВыбытие");
НачатьТранзакцию();
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ТекущийДокумент();
Док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()= 1 Цикл
    
Если док.КОСГУНазначениеПлатежа.Код="221" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.04.1"));
     иначеЕсли док.КОСГУНазначениеПлатежа.Код="222" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.05.1"));
  иначеЕсли док.КОСГУНазначениеПлатежа.Код="223" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.06.1"));
конецесли;
   Док.Записать();
//Док.Провести();
    КонецЦикла;
КонецЦикла;     
   ЗафиксироватьТранзакцию();
Сообщить("Готово");
КонецПроцедуры
 
К списку тем 1 > К списку форумов

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

odines.ru
22.10.2020 - 12:33
Смотри также:
Что бы это было? В ТиС исчезли все остатки после открытия периода
Как быстро программно изменить родителя n-го числа элементов ? в 7.7
ОС приобретено за счет целевых средств, как начислять износ, а не аммортизацию.

Re: не получается написать обработку

Хряк
1 - 15.07.2009 - 09:26
перепиши эту процедуру к себе в обработку и вызывай после установки счета

Re: не получается написать обработку

Bio Frode
2 - 15.07.2009 - 09:37
вызывать после установки каждого счета?

Re: не получается написать обработку

Bio Frode
3 - 15.07.2009 - 09:38
как можно обратиться к документу Кассовое выбытие без создать объект? можно ли вообще

Re: не получается написать обработку

Uho
4 - 15.07.2009 - 09:40
2-Bio Frode > да
3-Bio Frode > зачем?

Re: не получается написать обработку

chief accountant
5 - 15.07.2009 - 09:54
У меня вся эта байда в (0) вставлена в процедуру ОбработкаВыбораЗначения()

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

odines.ru
22.10.2020 - 12:33
Смотри также:
Клиент-банк Сбера
платежки в 1с выгружаются неправильно
Проблема с уникальностью номеров документов

Re: не получается написать обработку

Bio Frode
6 - 16.07.2009 - 07:38
вставил процедуру в обработку обратился к ней, теперь выдает ошибку "Если Док.СчетДт.Выбран()=1 Тогда
{C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\ПФС.ERT(7)}: Значение не представляет агрегатный объект (Выбран)"
 
вот сама обработка:
 

Процедура ПриВыбореСчДт()
 
Док = СоздатьоБЪЕКТ("Документ.СписаниеСоСчета");
Если Док.СчетДт.Выбран()=1 Тогда
Для i=3 По Док.СчетДт.КоличествоСубконто() Цикл
Док.НазначитьТип("СубконтоДт"+i,Док.СчетДт.ВидСубконто(i));
Атрибут=Док.СписокСубк.Получить(Док.ПолучитьАтрибут("СубконтоДт"+i).Вид());
Если ПустаяСтрока(Атрибут)=0 Тогда
Форма.ПолучитьАтрибут("СубконтоДт"+i).Доступность(0);
Иначе
Форма.ПолучитьАтрибут("СубконтоДт"+i).Доступность(1-Форма.ТолькоПросмотр());
КонецЕсли;
КонецЦикла;  
 
Для i=Док.СчетДт.КоличествоСубконто()+1 По 5 Цикл  
Док.НазначитьТип("СубконтоДт"+Строка(i),"");
КонецЦикла;
 
Иначе
Док.НазначитьТип("СубконтоДт3","");
Док.НазначитьТип("СубконтоДт4","");
Док.НазначитьТип("СубконтоДт5","");
КонецЕсли;
 
    Док.УстановитьЗначенияСубконо(1,0);
Док.УстановитьОГС(1,0);
Док.УстановитьЗначенияФКР(1,0);
 
КонецПроцедуры  
//КонецПроцедуры
 

  Процедура Сформировать()
    Док = СоздатьоБЪЕКТ("Документ.СписаниеСоСчета");
// Опер = СоздатьоБЪЕКТ("Операция");    
НачатьТранзакцию();
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ТекущийДокумент();
Док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()= 1 Цикл
    
Если док.ЭКР.Код="261" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.15.1"));
   // Док.Записать();
ПриВыбореСчДт()
     иначеЕсли док.ЭКР.Код="262" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.16.1"));
  ПриВыбореСчДт()
иначеЕсли док.ЭКР.Код="263" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.17.1"));
  ПриВыбореСчДт()
 
    конецесли;
   // Док.ПриВыбореСчДТ();
Док.Записать();
// Док.Провести();
    КонецЦикла;
КонецЦикла;     
   // Док.ПриВыбореСчДТ();
ЗафиксироватьТранзакцию();
Сообщить("Готово");
КонецПроцедуры
 
что нитак подскажите?
 

Re: не получается написать обработку

Uho
7 - 16.07.2009 - 07:58
это чё такое:
Док = СоздатьоБЪЕКТ("Документ.СписаниеСоСчета");
Если Док.СчетДт.Выбран()=1 Тогда

Re: не получается написать обработку

chief accountant
8 - 16.07.2009 - 08:07
Ваще не понятно зачем тебе это обработкой делать?

Re: не получается написать обработку

USSR
9 - 16.07.2009 - 08:07
(7)+1
и это:
Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ТекущийДокумент();
Хоть и не влияет, но зачем?

Re: не получается написать обработку

Uho
10 - 16.07.2009 - 08:41
9-USSR > помнится это уже у кого-то было, даже дискуссия была по этому поводу )))

Re: не получается написать обработку

Bio Frode
11 - 17.07.2009 - 10:24
Из БМО(бухгалтерия муниципального образования) делают выгрузку списания с л/с в бухгалтерию бюджетную. Заказчик хочет обработку, которая на основании КОСГУ будет подставлять счета и проводить документы. Загвостка в том, что в документе есть процедура при выборесчДТ, которая подставляет значения по дебету косгу и субконто, я не знаю как к ней обратиться.
(7) по другому он пишет ошибку, что переменная неопределена

Re: не получается написать обработку

Uho
12 - 17.07.2009 - 10:49
11-Bio Frode > по другому он пишет ошибку, что переменная неопределена
ясное дело! И поэтому ты решил определить ее так?
а почему не просто, например:
 
Перем Док; ???
 
ЗЫ. рано тебе еще такие обработки писать, если ты еще про область действия переменных ничего не знаешь...

Re: не получается написать обработку

Bio Frode
13 - 17.07.2009 - 11:04
может быть =((( а где можно почитать об этом?

Re: не получается написать обработку

chief accountant
14 - 17.07.2009 - 11:07
11-Bio Frode >Как ты себе представляешь автовыбор счета 206 или 208 или 302 или 210.02 скажем по ст. 221

Re: не получается написать обработку

Bio Frode
15 - 17.07.2009 - 11:10
у них всего 2 счета задействуется в этом плане, 206 и 302, 206 я определяю по комментарию, там они пишут, если авансы

Re: не получается написать обработку

chief accountant
16 - 17.07.2009 - 11:14
15-Bio Frode >Тогда загрузку надо сделать грамотную чтобы все рекизиты заполнялись

Re: не получается написать обработку

Bio Frode
17 - 17.07.2009 - 11:19
Это Пенсионный Фонд, у них очень специфическая конфа, очень много реализована внешними обработками, которые периодически обновляются 1С, поэтому не хочется трогать обработку по загрузке.

Re: не получается написать обработку

Uho
18 - 17.07.2009 - 11:21
13-Bio Frode > а где можно почитать об этом?
ну ЖКК, наверное

Re: не получается написать обработку

USSR
19 - 17.07.2009 - 11:35
Автор, тебе же Uho все уже написал. Жалко мн ваш пенсионный фонд, низзя так. Хотя у меня знакомая (нулевая) устроилась во франю и те ее бросили на эту прогу.
Ты просто пойми одно, что еслитебе надо что-то присвоить реквизитам документа, то объект типа "Документ.." должен быть спозициоонирован либо на уже существующем доке, либо быть новым. Потом меняй (если надо, устанавливая тип реквизита), и записывай. Все. Если делаешь выборку, то выбираемый док уже спозиционирован

Re: не получается написать обработку

chief accountant
20 - 17.07.2009 - 11:40
17-Bio Frode >Так и не трогай напиши свою

Re: не получается написать обработку

Bio Frode
21 - 17.07.2009 - 12:01
перем Док;
Перем СписокСубк;
 
Процедура ПриВыбореСчДт()
   Если Док.СчетДт.Выбран()=1 Тогда
Для i=3 По Док.СчетДт.КоличествоСубконто() Цикл
Док.НазначитьТип("СубконтоДт"+i,Док.СчетДт.ВидСубконто(i));
Атрибут=Док.СписокСубк.Получить(Док.ПолучитьАтрибут("СубконтоДт"+i).Вид());
Если ПустаяСтрока(Атрибут)=0 Тогда
Форма.ПолучитьАтрибут("СубконтоДт"+i);
Иначе
Форма.ПолучитьАтрибут("СубконтоДт"+i).Доступность(1-Форма.ТолькоПросмотр());
КонецЕсли;
КонецЦикла;  
 
Для i=Док.СчетДт.КоличествоСубконто()+1 По 5 Цикл  
Док.НазначитьТип("СубконтоДт"+Строка(i),"");
КонецЦикла;
 
Иначе
Док.НазначитьТип("СубконтоДт3","");
Док.НазначитьТип("СубконтоДт4","");
Док.НазначитьТип("СубконтоДт5","");
КонецЕсли;
 
    ДОк.УстановитьЗначенияСубконо(1,0);
ДОк.УстановитьОГС(1,0);
Док.УстановитьЗначенияФКР(1,0);
 
КонецПроцедуры  
 

 
  Процедура Сформировать()
    Док = СоздатьоБЪЕКТ("Документ.СписаниеСоСчета");
    НачатьТранзакцию();
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ТекущийДокумент();
    Док.СчетКт = счетпокоду("304.05.1");
    если док.комментарий = сокрлп("Авансы") тогда
     Док.ВыбратьСтроки();
     Пока док.ПолучитьСтроку()= 1 Цикл
   Если док.ЭКР.Код="261" Тогда
    Док.УстановитьАтрибут("СчетДт",счетпокоду("206.15.1"));
   // Док.Записать();
ПриВыбореСчДт()
     иначеЕсли док.ЭКР.Код="262" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.16.1"));
  ПриВыбореСчДт()
иначеЕсли док.ЭКР.Код="263" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.17.1"));
  ПриВыбореСчДт()
иначеЕсли док.ЭКР.Код="290" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.18.1"));
иначеЕсли док.ЭКР.Код="226" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.09.1"));
иначеЕсли док.ЭКР.Код="221" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.04.1"));
иначеЕсли док.ЭКР.Код="251" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("206.12.1"));
конецесли;
Док.Записать();
Док.Провести();
             конеццикла;
иначе
Док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()=1 Цикл
Если док.ЭКР.Код="261" Тогда
    Док.УстановитьАтрибут("СчетДт",счетпокоду("302.15.1"));
   // Док.Записать();
ПриВыбореСчДт()
     иначеЕсли док.ЭКР.Код="262" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.16.1"));
  ПриВыбореСчДт()
иначеЕсли док.ЭКР.Код="263" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.17.1"));
  ПриВыбореСчДт()
иначеЕсли док.ЭКР.Код="290" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.18.1"));
иначеЕсли док.ЭКР.Код="226" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.09.1"));
иначеЕсли док.ЭКР.Код="221" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.04.1"));
иначеЕсли док.ЭКР.Код="251" Тогда
Док.УстановитьАтрибут("СчетДт",счетпокоду("302.12.1"));
         конецесли;
 
   // Док.ПриВыбореСчДТ();
Док.Записать();
Док.Провести();
  конеццикла;
 
Конецесли;
   КонецЦикла;     
   // Док.ПриВыбореСчДТ();
ЗафиксироватьТранзакцию();
Сообщить("Готово");
КонецПроцедуры
вот так правильно?

Re: не получается написать обработку

Uho
22 - 17.07.2009 - 12:11
//вот это не прокатит:
если док.комментарий = сокрлп("Авансы") тогда
 
//вот это нафиг не нужно:
Если ПустаяСтрока(Атрибут)=0 Тогда
Форма.ПолучитьАтрибут("СубконтоДт"+i);
Иначе
Форма.ПолучитьАтрибут("СубконтоДт"+i).Доступность(1-Форма.ТолькоПросмотр());
КонецЕсли;
 
//вот это тоже не прокатит:
ДОк.УстановитьЗначенияСубконо(1,0);
ДОк.УстановитьОГС(1,0);
Док.УстановитьЗначенияФКР(1,0);
 

Re: не получается написать обработку

Bio Frode
23 - 17.07.2009 - 12:17
//вот это не прокатит:
если док.комментарий = сокрлп("Авансы") тогда
//прокатило
 
//вот это тоже не прокатит:
ДОк.УстановитьЗначенияСубконо(1,0);
ДОк.УстановитьОГС(1,0);
Док.УстановитьЗначенияФКР(1,0);
 
вместо этого присваивать значения, которые мне нужны?

Re: не получается написать обработку

chief accountant
24 - 17.07.2009 - 12:17
22-Uho >Да он пытается процедуры из модуля формы в свою обработку засунуть бесперспективняк

Re: не получается написать обработку

Uho
25 - 17.07.2009 - 12:22
23-Bio Frode >//прокатило
один раз?

Re: не получается написать обработку

Bio Frode
26 - 17.07.2009 - 12:23
я прислушался к (1), если неправильно сделал, подскати, пожалуйста, как?

Re: не получается написать обработку

Uho
27 - 17.07.2009 - 12:23
23-Bio Frode >
объясни свою конструкцию сокрлп("Авансы") , чего ты этим добиваешься?

Re: не получается написать обработку

Bio Frode
28 - 17.07.2009 - 12:31
чтобы исходя из комментария подставлялись либо счета группы 206, либо группы 302

Re: не получается написать обработку

chief accountant
29 - 17.07.2009 - 12:32
26-Bio Frode >Ты не знаешь какие процедуры в документе за заполнение чего отвечают. По крайней мере в твоем коде их только половина

Re: не получается написать обработку

Uho
30 - 17.07.2009 - 12:47
28-Bio Frode > забудь про комментарий, объясни кусок сокрлп("Авансы")

Re: не получается написать обработку

Bio Frode
31 - 17.07.2009 - 12:48
я не буду закидывать процедуры, у меня, достаточно конкретные условия, поэтому я их опишу.
не получается установить ОГСДт, косгу
пытаюсь это сделать следующим образом:
//ЭКР имеет такой же тип что и ОГСДт
Док.УстановитьАтрибут("ОГСДт",Док.Экр.Найтипокоду("830"))
выдает ошибку "Объект не может быть перепозиционирован!"
вот здесь подскажите, и всё - обработка будет работать

Re: не получается написать обработку

Bio Frode
32 - 17.07.2009 - 12:50
(30) отсекеаю пробелы с лева и права, на тот случай, если нечайно начнут не сначала

Re: не получается написать обработку

roma n
33 - 17.07.2009 - 12:53
(32) ммм... кто случайно начнет не с начала?
"и всё - обработка будет работать" - ага, конечно

Re: не получается написать обработку

Bio Frode
34 - 17.07.2009 - 12:56
а какие варианты можно ещё использовать, подскажите, по поводу Авансов?

Re: не получается написать обработку

Uho
35 - 17.07.2009 - 13:05
32-Bio Frode > ты хоть понимаешь, что ты отсекаешь пробелы слева и справа не от комментария, а от ПОСТОЯННОЙ строки "Авансы", в которой НЕТ пробелов и которую написал ТЫ САМ.
ЗЫ.
34-Bio Frode > если уж все так плохо и можно опираться только на комментарий, то тогда уж хотя бы так:
 
Если ВРег(СокрЛП(Док.Комментарий))="АВАНСЫ"

Re: не получается написать обработку

Bio Frode
36 - 17.07.2009 - 13:23
я понял, что на косячил, спасибо.

Re: не получается написать обработку

Has
37 - 18.07.2009 - 04:23
надеюсь что формирование комментария автоматизировано, иначе в нем запросто напишут "Аванс" и проверка пролетает

Re: не получается написать обработку

Блондинка в шок
38 - 18.07.2009 - 07:24
хм... это где ж Пенсионный Фонд такой, любопытно?
в нашем Отделении Пенсионного Фонда все конфы/обновления (и бюджетка и ЗИК) спускаются сверху централизованно из регионального Управления ПФ РФ, никакие фра и фри не допускаются в принципе. А в свете недавней компании по IT-безопасности тем более.
 
нарушает ваше Отделение ПФ их же внутренний регламент по IT-безопасности, однако настучат им по башке за это.
 
зы: а потом на радиорынках всплывают разные базы данных...

Re: не получается написать обработку

Пудель
39 - 18.07.2009 - 13:19
;)

Re: не получается написать обработку

Bio Frode
40 - 21.07.2009 - 15:31
(38) все изменения, которые делаются нашей фирмой в ПФ согласованы и Управлением ПФ РФ, и с фирмой "1С". Так что, по башке им точно не настучат, обработка в итоге заработала как надо, если кому интересно, что за кривую и косую обработку я написал могу выложить

Re: не получается написать обработку

МимохожийОднако
41 - 21.07.2009 - 16:30
40-Bio Frode > Кидай на инфостарт. Там подобного добрища до...
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« V7: Вы будете смеяться, но юзер скопировал МД вместо объединения По ОЛЕ запустить отчет можно ? »
© 2009 Форум 1С: Одинэс.Ру