Имя: Пароль:
1C
1С v8
Доступ к справочнику из документа при конвертации
,
0 ant19
 
17.03.14
13:57
Подскажите, как справиться с такой проблемой. Переношу документы из 1С ПУБ 7.7 в 1С БП 8.3 через конвертацию данных.
Переносятся документы РеализацияТоваровУслуг и ПоступлениеТоваровУслуг.
В этих документах есть ссылка на ДоговорКонтрагента. В каждом договоре соответственно есть поле (перечисление) ВидДоговора. Так вот его нужно заполнить соответственно либо как "СПокупателем", либо как "СПоставщиком", в зависимости от того, какой документ - Реализация или Поступление.
И я никак не могу понять, как получить доступ к этому полю. Если бы нужно было жестко заполнить "СПокупателем", я бы написал в ПКС "Вид договора":

Значение="СПоставщиком";

а как мне определить, из какого документа подтянулся этот справочник?
1 vicof
 
17.03.14
13:59
По метаданным можно, я уж не помню, как это в 7.7 было.
И функция Вид(), по-моему была
2 Господин ПЖ
 
17.03.14
13:59
накуа это делать из документа... в документе должен быть уже выбран адекватный виду операции договор
3 ДенисЧ
 
17.03.14
14:00
надо сделать так, как предлагает 1с...
Т.е. добавиь реквизит, заполнить его, а уже потом перегружать...

Ещё вариант - сделать 2 правила и при выгрузке документа использовать ВыгрузитьПоПравилу()

А потом подумать, что делать, если реализация и поступление прошли по одному договору.
И с прочими договоарми что делать...
4 КРТЩ
 
17.03.14
14:04
Думаю, что надо читать ТипЗнч() создаваемого объекта, если это РТУ, то в договор записать "СПокупателем", если ПТУ то "СПоставщиком"
5 ant19
 
17.03.14
15:58
(2) так я создаю документы на основе документов из 7.7, а в договорах из 7.7 нет такого поля как ВидДоговора
(3) А как это сделать, можно подробнее? С двумя правилами, например?
(4) Вот за этот совет спасибо, он пока единственный, который я понял своим simple mind, сейчас попробую :)
6 Defender aka LINN
 
17.03.14
16:03
(3) Это где 1С такое предлагает? О_о
(0) В договоре делаешь ПКС для вида договора без источника, с флагом "Получить из входящих данных".
В ПКС договора в документе:

ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("ВидДоговора", "СПокупателем");
7 Defender aka LINN
 
17.03.14
16:04
(6) С порядком параметров у "Установить" мог и попутать, 7.7 забыл давно и прочно.
8 ant19
 
17.03.14
16:10
(6) тогда получается, все документы будут содержать ссылки на договоры "СПокупателем", а мне нужно для документа ПоступлениеТоваровУслуг, чтобы было "СПоставщиком".

короче, с ТипЗнч() тоже не понял, где его использовать, в каком ПКС или ПКО. Если в договорах, то там не знаю, как достать документ-источник, а если в документе, то не знаю, как сохранить договор. Пробовал в ПКО так:

ДоговорОб = Объект.ДоговорКонтрагента.ПолучитьОбъект();
ДоговорОб.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
ДоговорОб.Записать();


выводит ошибку 21, что не может записать объект.
9 Defender aka LINN
 
17.03.14
16:24
(8) Тебе чтобы в другом документе написать другой код - официальное благословение из Ватикана нужно, что ли?
10 ant19
 
17.03.14
16:28
(9) дык а какой код-то? естественно, я в поступлении написал "СПоставщиком". но этот код из (8) не работает - перенес 10 документов, а потом вывалился с ошибкой 21
11 Alamo-10
 
17.03.14
16:40
(0) Тебе нужно определить тип значения документа-источника, запихать его в исходящие данные, передать в ПКО для договоров, потом передать дальше в ПКС ВидДоговора типа

ИсходящиеДанные = ВходящиеДанные;

А при конвертации вида договора уже подставляешь нужное тебе значение перечисления
12 Defender aka LINN
 
18.03.14
09:38
(11) ИсходящиеДанные = ВходящиеДанные; - чушь. КД это сама делает, причем наоборот, что правильно :)
(10) Угу. 20 раз отработал, а на 21 сломался. Бабушку-то мне не лохмать.
13 Alamo-10
 
18.03.14
09:44
(12) Ну ваще т, после того, как ты из ПКО документа передашь свои исходящие данные в ПКО договора, они там станут входящими данными, и чтобы их передать дальше, нужно их снова сделать исходящими. Насчет того, что КД это делает сама спорить не буду, может и так, но если написать, страшного ничего не случится
14 Йохохо
 
18.03.14
09:50
типовые правила ПУБ-УПП Алгоритм ЭтоДоговорСПокупателем
Перем РезультатЗапроса;

Если Источник = "" Тогда
    
    Возврат 0;
    
КонецЕсли;

ДатаНач = ?(ПустоеЗначение(ДатаНачала) = 0, ДатаНачала, Дата(0000, 1, 1));
ДатаКон = ?(ПустоеЗначение(ДатаОкончания) = 0, ?(ДатаОкончания > ПолучитьДатуТА(), ПолучитьДатуТА(), ДатаОкончания), ПолучитьДатуТА());

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНач по ДатаКон;
|Договор = Регистр.РасчетыСПокупателями.Договор;
|Долг = Регистр.РасчетыСПокупателями.Долг;
|Функция ДолгПриход = Приход(Долг);
|Функция ДолгРасход = Расход(Долг);
|Условие(Договор = Источник);
|"//}}ЗАПРОС
;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    
    Возврат 0;
    
КонецЕсли;

Запрос.Выгрузить(РезультатЗапроса);

Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда
    
    РезультатЗапроса.ПолучитьСтрокуПоНомеру(РезультатЗапроса.КоличествоСтрок());
    
    Если (РезультатЗапроса.ДолгПриход > 0) ИЛИ (РезультатЗапроса.ДолгРасход > 0) Тогда
        
        Возврат 1;
    
    Иначе
        
        Возврат 0;
        
    КонецЕсли;
    
Иначе
    
    Возврат 0;
    
КонецЕсли;
15 ant19
 
18.03.14
10:28
(14) там какие-то долги считаются, мне это не надо же.
тупо надо одно поле заполнить, эхехех. всю голову сломал.

как из ПКО документа передать значение в ПКС договора?
к примеру, я в ПКО Реализации пишу:

ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("ТипДок", "Реализация");

а дальше что делать? как передать эти исходящие данные дальше?
16 Йохохо
 
18.03.14
10:44
(15) я из-за адблока не вижу электронку в профиле, напиши, отправлю типовые правила для примера. Там не долги считаются, а определяется тип договора
17 Defender aka LINN
 
18.03.14
10:52
(13) Да, станут входящими. И достаточно флага в ПКС, чтобы обработка конвертации сама все остальное сделала.
(15) Вот ты тугой. Это надо писать в ПКС (!) реквизита "Договор" документа. И устанавливать там конкретный вид.
18 ant19
 
18.03.14
11:07
(16) отписал на почту
(17) уж какой есть. так, хорошо, пишу в ПКО документ "Реализация" - ПКС "ДоговорКонтрагента" эти строчки, а дальше что?
Как в ПКО справочника "ДоговорыКонтрагентов" - ПКС "ВидДоговора" их получить?
19 Defender aka LINN
 
18.03.14
11:15
(18) Открыть глаза и ветку прочитать, ять. Поставь у этого ПКС флаг "Получить из входящих данных", будь мужиком!
20 ant19
 
18.03.14
13:05
уфф, всем спасибо, получилось через ИсходящиеДанные.