Имя: Пароль:
1C
1C 7.7
v7: Проведение Документа по регистрам.
, , ,
0 demorest36ru
 
25.03.18
01:21
Добрый день, помогите разобраться.
Пишу интеграцию 1с 7.7 тис 9.2 с банком. Документы создаются програмно: строкаВыпБанкаПриход и строкаВыпБанкаРахсод.

Когда документ создан - пишу метод Провести();, но Документ проводится только по регистру Банк. По регистру Поставщики либо Покупатели надо делать самому. Честно, говоря ума не приложу как это сделать. Последние 2 регистра отвечают за взаиморасчеты с поставщиками/покупателями.
1 Klesk
 
25.03.18
03:04
Процедура ОбработкаПроведения(<?>)
КонецПроцедуры
Синтаксис:
ОбработкаПроведения(<Знач>)
Назначение:
Предопределенная процедура обработки проведения документа в любом режиме.
Параметры:
<Знач> - идентификатор переменной, которая получает значение из процедуры Провести.
Замечание:
Данная процедура может располагаться только в модулях документов.
2 Lazy Stranger
 
25.03.18
04:34
КодОперации в своих строках выписки не забываешь ставить? да и вообще-то в ТиС и так есть обработка загрузки банковской выписки, поищи в списке обработок "ПредриятиеКлиент"
3 HawkEye
 
25.03.18
08:13
(0) что мешает открыть код и посмотреть?

Если КодОперации <> глКО.Прочее Тогда
    ОбработкаПроведенияПоВзаиморасчетам();
Иначе
    ОбработкаПроведенияПрочее();
КонецЕсли;      


по названию и так понятно...
4 demorest36ru
 
25.03.18
10:05
Как работает мой проект:
Из .net передаются данные из почты на кот приходят приход/расход из банка.
Код на .net вызывает методы глобального модуля, написанные мной, и передает туда данные из почты.

То есть мне в глобальном модуле в моем метод после метода Провести(), например, нужно дописать код,  который вызовет обработку проведения конкретного дока.
5 demorest36ru
 
25.03.18
10:10
(2) КодОперации ставлю.
6 welwel
 
25.03.18
10:19
Посмотреть можно еще, какие реквизиты заполняют изначально процедуры модуля формы
ВводНового,
ПриОткрытии,
а также ПриЗаписи и некоторые обработчики, вызываемые при заполнении элементов диалога
7 welwel
 
25.03.18
10:23
(6) +
Можно отладчиком сравнить перед записью реквизиты своего документа и интерактивно заполненного
8 demorest36ru
 
25.03.18
10:25
(6) буду пробовать.
9 mishaPH
 
модератор
25.03.18
10:27
(0) включи в отладчике часики, проведи док и посмотри куда заходит код при проведении. и все будет понятно.
10 demorest36ru
 
25.03.18
10:34
(9) спасибо
11 HawkEye
 
25.03.18
15:35
(5) какой?
12 demorest36ru
 
27.03.18
02:10
Взял метод из Модуля Документа:
- ОбработкаПроведенияПоВзаиморасчетам();
- ОбработкаПроведенияПоБанку(ВремБанк);

В конце выдал сообщение:

ДвижениеРасходВыполнить();
Движения регистров не могут выполняться у данного объекта.

Выходит, если программно создал документы то провести по регистрам не получится?
13 big
 
27.03.18
05:18
(0)(4) Надо у вновь созданного и записанного (!) документа вызвать метод Провести(). И всё проведется по тому алгоритму, что прописан в процедуре ОбработкаПроведения(), ничего придумывать не надо.
Документ создается программно средствами 1С или все-таки .net? Как я понял - .net и по OLE. Есть нюансы, но всё довольно работоспособно.

з.ы. кстати, а что за надобность использовать .net? 1С сама может в режиме робота забирать выписки и автоматом грузить в базу.
14 demorest36ru
 
27.03.18
09:59
" Надо у вновь созданного и записанного (!) документа вызвать метод Провести(). И всё проведется по тому алгоритму, что прописан в процедуре ОбработкаПроведения(), ничего придумывать не надо. "
Имеено так и делаю:
Записать();
УстановитьВремя(Часы, Минуты, Секунды);
Провести();
в таком порядке.
"Документ создается программно средствами 1С или все-таки .net? Как я понял - .net и по OLE. Есть нюансы, но всё довольно работоспособно."
Документ создается программно средствами 1С.
.net обрабатывает почту и вызывает методы в 1с из глобального модуля(все методы вызываемые из .net расположены в глоб модуле), передавая в нее текстовые значения. Я тоже думал так. Думал после вызова метода Провести() проведение отработает механизм проведения как положено.

"з.ы. кстати, а что за надобность использовать .net? 1С сама может в режиме робота забирать выписки и автоматом грузить в базу."

Если есть такая возможность - расскажите каким образом это реализуется.
15 Масянька
 
27.03.18
10:01
(0) У меня ТиС 932 - в выписках банках есть движуха и по взаиморасчетам.
16 demorest36ru
 
27.03.18
10:07
(13), Да если в выписке, созданной программно, нажать действия там есть Отчет о движ документа, Отчет о бух проводках. В первом появляется только Остатки на расчетных счетах, а Взаиморасчеты с поставщиками покупателями - нет.
Во втором должны появится проводки, а их тоже нет.
17 Builder
 
27.03.18
10:11
"Если есть такая возможность - расскажите каким образом это реализуется."
Запуск 1С под определенным пользователем, например "Робот".
1 вариант
ПриНачалеРаботыСистемы() проверяем имя пользователя, если это Робот - делаем нужные действия и закрываем 1С.
2 вариант
ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>)
В ней с периодичностью запускается обработка закачки.
18 Масянька
 
27.03.18
10:13
(16) А если из журнала нажать "Движения документа" и просмотреть весь список? Сколько галочек?
19 demorest36ru
 
27.03.18
10:20
(16) Только Банк(. Галочка вз/расчеты с поставщиками по доку стрвыпбанкарасход не стоит(
20 demorest36ru
 
27.03.18
10:23
(18) Только Банк(. Галочка вз/расчеты с поставщиками по доку стрвыпбанкарасход не стоит(
21 Масянька
 
27.03.18
10:25
(20) Открой стандарт и посмотри. Там есть ОбработкаПроведенияПоВзаиморасчетам.
22 Lazy Stranger
 
27.03.18
10:38
если вручную документ перепровести - движения появятся? а если код операции перевыбрать? такое ощущение что в нём дело
23 big
 
27.03.18
10:57
(16) Кусочек кода из модуля проведения документа СтрокаВыпискиРасход:

    Если КодОперации <> глКО.Прочее Тогда
        ОбработкаПроведенияПоВзаиморасчетам();
        
    Иначе
// тут как раз проведение только (!) по банку
        ОбработкаПроведенияПрочее();
        
    КонецЕсли;      

Напрашивается вывод, что КодОперации = глКО.Прочее. Нет?
24 Злопчинский
 
27.03.18
13:20
при программном создании документа ФОРМИРУЙТЕ ДОКУМЕНТ ПРАВИЛЬНО. заполняйте НУЖНЫЕ РЕКВИЗИТЫ - ПРАВИЛЬНЫМИ ЗНАЧЕНИЯМИ. Тогда программное проведение ничем не будет отличаться от интерактивного проведения пользователем.
если не знаете какие реквизиты заполнять какими значениями - то "купите" услуги у специалиста. Я вот как 1сник - в НЕт не лезу, ибо не разбираюсь. Но при этом Net-чик почему-то считает что залезть в 1с - как два пальца обоссать(зачеркнуто) об асфальт. Смишно.
Сорри если не прав.
банковскую выписку в Типовой ТиС заполнить программно и провести - чуть ли не одна из простейших задач начального уровня.
25 Злопчинский
 
27.03.18
13:22
а так - все сказали - все причины в неадекватном заполнении реквизитов.
а если ругается что "Движения регистров не могут выполняться у данного объекта." - у обекта метаданных не стоит галка "Оперативный учет" или что-то делается вообще криво
26 demorest36ru
 
28.03.18
10:50
(24), (25) я все доки правильно сформировал. конфа не кривая. А вот по поводу нужных реквизитов - мне вчера подсказали (до прочтения твоего сообщения) - реквизит "СуммаВзаиморасчетов" отвечает за проведение по регистрам. Заполнил и проблема была решена. Удивительно что на этом форуме вы первый обратили мое внимание на заполнение нужных реквизитов. Не ужели интеграция с другими системами типа .net,java не популярны. Я думал это популярная таска(задача)?!
П.С. 1С не считаю простым, 1,5 недели потратил. Выбесил. Неудобный. Дебажить - сто манипуляций нажать. Код раздувается из-за отсутствия возможности создавать объекты и возвращать их. Контекст доступен только из модуля документа. Про 1С 8 вообще молчу. Никогда не полезу в этот изобретенный заново велосипед с костылями, который сами 1сники разработчики еле-еле поддерживают и выпускают одну заплатку за другой. Мне после Visual studio и Intellij Idea кажется средневековой дикостью. Архаичным пережитком прошлого. Другое дело что 80% бизнеса до сих пор держится на таких вот с позволения сказать конф-циях типа ТИС. И НИКТО НЕ ХОЧЕТ ПЕРЕХОДИТЬ НА 1С8!
Надеюсь когда-нибудь наступят времена свободной конкуренции и 1С не будет монополией. Потому что это бред! Уж, простите, за откровение.) Это мое сугубо личное и как многим покажется не объективное мнение, но оно таково!
27 Масянька
 
28.03.18
10:54
(26) По поводу "обязательных реквизитов": открывай стандартные док-ты и смотри (если книжки не читаешь). И "лучше перебдеть, чем недобдеть" (С)
Насчет PS - ждем-с...
28 big
 
29.03.18
08:00
(26)  ))))  Можно устроить батл - кто быстрее автоматизирует учёт - крутой кодер в VS или крутой одноэсник в 7.7 (!!!), не говоря уже про 8!

Если не умеешь кататься, не надо делать вывод, что "велосипед"  плохой. )))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший