Имя: Пароль:
1C
1С v8
КД: конвертация договоров
0 vicof
 
04.11.11
23:27
Всем привет!
Такая ситуация. Бух 7.7 -> БП 2.0
В 7.7 куча договоров с видом "Основной вид договоров". Как их лучше разделить по виду в 8 (с покупателем, с поставщиком, прочее)?

Сейчас проверяю обороты по договору на 60, 62, 76 счетах, и в зависимости от этого ставлю вид договора. Все бы ничего, но многие договоры участвуют в движениях и по 60, и по 62, и по 76 в совокупности.

Какие выходы могут быть?
Стрелять коленки бухам поздно, 5000 договоров перелопачивать тоже нехорошо, это они месяц будут ковыряться.

Есть идея конвертировать один договор сразу в три - отличающиеся только видом договора. А при конвертации документов уже решать, какой из трех договоров подставлять. Но пока не совсем понятно, как такую штуку реализовать.
1 Господин ПЖ
 
04.11.11
23:29
поздравляю... а за современную технологию взаиморасчетов архитекторов в 1с надо в голову гвоздь забить
2 Axel2009
 
04.11.11
23:30
на каждый счет свой договор, в чем проблема то??
3 Рэйв
 
04.11.11
23:33
если договора не могут зайти один в один, то проще сделать новых столько сколько надо.Т.е. если док расхода- с покупателем делаем новый, если пирхода - с поставщиком..Только имскать надо после загрузки их по кодам или еще чему чтобы дублей не было.Или заполнячть по ПКО,а после записи смотреть найденное и или оставлять если подходит, или искать/создавать новый если нет
4 vicof
 
04.11.11
23:37
(2,3) спасиб, накропаю кода, попозже отпишусь о результатах.
(1)   это точно
5 vicof
 
05.11.11
20:19
Сделал так, не работает:
В ПКО Договоры после загрузки поместил следующий код

Сообщить(Объект.ВидДоговора);
Если Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее Тогда
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
   НовыйОбъект.Записать();
   
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
   НовыйОбъект.Записать();
   Сообщить("111");
   
ИначеЕсли Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
   НовыйОбъект.Записать();
   
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
   НовыйОбъект.Записать();
   Сообщить("222");
   
ИначеЕсли Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем Тогда
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
   НовыйОбъект.Записать();
   
   НовыйОбъект = Объект.Скопировать();
   НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
   НовыйОбъект.Записать();
   Сообщить("333");
   
КонецЕсли    
   
При загрузке ни одного сообщения не выходит. Чего поправить в консерватории?
6 vicof
 
05.11.11
20:36
В помощи написано, что это обработчик только для платформы v8. Может, поэтому? Хотя, с другой стороны, я ж в 8 загружаю.
7 vicof
 
05.11.11
20:43
Еще делал так. Перед выгрузкой такой код. ВидДоговора - получатьИзВходящихДанных.

Если Источник.ВидДоговора = Параметры.ДоговорОсновной Тогда
   ИсходящиеДанные = "СПокупателем";
   ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"ДоговорыКонтрагентовПоВидам");
   ИсходящиеДанные = "СПоставщиком";
   ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"ДоговорыКонтрагентовПоВидам");
   ИсходящиеДанные = "Прочее";
   ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"ДоговорыКонтрагентовПоВидам");
   
ИначеЕсли Источник.ВидДоговора = Параметры.ДоговорЗайма Тогда
   ИсходящиеДанные = "Займ";
   ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"ДоговорыКонтрагентовПоВидам");
КонецЕсли;

тогда вообще ничего не выгружается, а 1ска вылетает.
8 vicof
 
05.11.11
21:02
Мож кто чего подскажет? :)
9 25-11
 
05.11.11
21:11
Наверное, Скопировать() еще нельзя применить. Объект еще в базу не записан.
Попробуй в лоб создавать новый объект типа договор и его реквизиты заполнять. так точно должно работать
10 vicof
 
05.11.11
21:19
Так он мне даже
Сообщить(Объект.ВидДоговора);
не выводит.
11 Axel2009
 
05.11.11
21:23
ну так отладь загрузку и посмотри какое значение у тебя имеет ВидДоговора
12 Naumov
 
05.11.11
22:43
Правила конвертации сами прекрасной разобьют на несколько договоров. только наименование одно будет
13 vicof
 
05.11.11
22:59
(12) поподробней, пожалста. Имеешь ввиду поиск по полям?
Если да, то не прокатит, т.к. - "В 7.7 куча договоров с видом "Основной вид договоров"", которые используются в движениях по разным счетам.
14 МишельЛагранж
 
05.11.11
23:05
(12) 1с-то?? конечно, она и сама все придумает, и работает быстро, и вообще великолепна.
(0) а в 7-ке договора шли по другим счетам? может, есть какой-то флаг, ловить его, и по нему - уже назначать вид договора?
15 vicof
 
05.11.11
23:11
(14) Флага нет, учет велся как попало. Но и 1с-овцы тоже хороши - см.(1).
Могу брать обороты по счетам - 1 вариант. (минус - обороты могут быть по нескольким счетам - какой вид договора будет?)
Могу создавать несколько договоров, и в нужный момент подставлять нужные - 2 вариант. (минус - каждый раз надо формировать исходящие данные для выгрузки).
16 МишельЛагранж
 
05.11.11
23:16
(15) я имел ввиду - счета-то хоть совпадают с 7-ми при разнесении договоров?
вам, наверное, только 2-ой путь - по три разных договора, а там потом пусть выбирают, какой правильный... хотя документы опять же будут привязаны к одному...
17 Naumov
 
05.11.11
23:27
(13) посмотри как поиск в типовых правилах настроен. может поймешь
18 Naumov
 
05.11.11
23:29
(13) Надеюсь имеется в виду, что "куча договоров с видом "Основной вид договоров"" относятся к разным контрагентам?
19 vicof
 
05.11.11
23:39
(18) к разным.
(17) лан, уже не соображаю, с утреца еще раз посмотрю.
(16) Счета совпадают. Виды договоров не совпадают.
20 Naumov
 
05.11.11
23:50
(19) тогда типовая если есть расчеты и с покупателем и споставщиком сделает два договора с одинаковым наименованием, но разыми видами расчетов.