Имя: Пароль:
1C
1С v8
КД2 Документ в Операцию
0 GreyTim
 
14.04.14
17:29
Из самописной конфы надо перекинуть документ в Бухню в виде операции с соответствующими проводками. В результате операция появляется, но пустая. Проблема, скорее всего, в том, что обмен не заходит в часть, касающуся загрузки (ПередЗагрузкой, ПриЗагрузке и ПослеЗагрузки). Что ему может мешать?
1 Wobland
 
14.04.14
17:30
а ты уже перестал пить коньяк по утрам?
2 GreyTim
 
14.04.14
17:32
(1) стараюсь держать себя в руках.
3 vicof
 
14.04.14
17:43
(0) Юзай отладку обработчиков в универсальном обмене
4 GreyTim
 
14.04.14
18:00
(3) Спасибо за наводку, пойду разбираться с механизмом.
5 SleepyHead
 
гуру
14.04.14
18:44
В ПКО "После загрузки" пропиши

Объект.Движения.Проводки.Записывать=Истина;
6 GreyTim
 
15.04.14
09:01
(5) Да дело в том, что обмен не заходит ни в "ПослеЗагрузки", ни в "При", ни в "Перед". Пытаюсь с этим разобраться.
7 SleepyHead
 
гуру
15.04.14
09:46
ПВД спроизвольным алгоритмом?
8 GreyTim
 
15.04.14
09:52
(7) да, запросом получаем движения документа и, затем, создаем соответствующие проводки в "ПослеЗагрузки"
9 vicof
 
15.04.14
09:54
А почему проводки при выгрузке не создавать?
10 GreyTim
 
15.04.14
09:54
запрос по движениям не пустой (выводится сообщение о количестве строк в рез. таблице), а вот дальше затык. Операция есть, проводок нет.
11 GreyTim
 
15.04.14
09:56
(9) есть опасение, что на этот момент операции в бух. еще нет, но сейчас попробую.
12 vicof
 
15.04.14
10:00
(11) Как так? Ты же проводки на основании движений создаешь.
13 GreyTim
 
15.04.14
10:02
(12) Да, на оснований движений, но в "ПриВыгрузке" Объекта еще нет, обмен выдает ошибку. Т.е., как я понимаю, проводки некуда записывать. Поэтому использовали "ПозлеЗагрузки"
14 vicof
 
15.04.14
10:06
(13) А с чего объект должен быть? При выгрузке у тебя есть Источник. И значеняи полей можешь инициализировать как тебе вздумается. Классическую книжку пробовал читать?
15 GreyTim
 
15.04.14
10:10
(14) Да кто ж спорит, что Источник есть, только дальше-то что? Я не совсем ход ваших мыслей ловлю. Если идея в (9), то нужен Объект, куда я проводки вставлять буду? Из Источника в Источник? Или я опять вас не понял.
16 Йохохо
 
15.04.14
10:11
(13) а есть понимание в которой базе исполняется то и то? возьмите правила обмена УТ-БП, там есть рабочий пример
17 GreyTim
 
15.04.14
11:08
(16) Посмотрел типовой обмен. Там создается некая ТЗ, в которой все Бух проводки. Не совсем понял, как эта таблица связывается с целевой бухоперацией.
18 SleepyHead
 
гуру
15.04.14
11:10
В ПКО кеширование отключено?
19 SleepyHead
 
гуру
15.04.14
11:12
(17) По сути это перенос в регистр бухгалтерии с привязкой к регистратору.

Когда у вас настраиваются реквизиты приемника, нужно из свойств документа-приемника выбрать нужный регистр бухгалтерии (он выглядит как ПКГС).
20 GreyTim
 
15.04.14
11:27
(18) как галка называется, прям кеширование не нашел.
(19) вроде как, понятно. копаюсь дальше...
21 SleepyHead
 
гуру
15.04.14
11:32
"Не запоминать выгруженные объекты"
22 GreyTim
 
15.04.14
11:37
(21) Не стоит
23 SleepyHead
 
гуру
15.04.14
11:52
Так надо поставить, это обязательное требование для ПВД с произвольным алгоритмом
24 GreyTim
 
15.04.14
11:57
(23) Ставлю и пробую
25 GreyTim
 
15.04.14
12:08
Со старым вариантом не помогло (
26 Йохохо
 
15.04.14
12:14
(25) кажется у тебя нет старого варианта, переделывай полностью по примеру из типовых, а старый вариант выкинь
27 GreyTim
 
15.04.14
12:16
Ребят, а почему нельзя предварительно создать запрос. Используя его, создать ПКС, где получить необходимую табличку и, наконец, заполнить, уже созданную пустую операцию, проводками по этой таблице в "ПослеЗагрузки"?
28 vicof
 
15.04.14
12:19
Потому что при выгрузке эту табличку можно создать. Хоть запросом, хоть руками.
29 GreyTim
 
15.04.14
12:22
(28) Согласен, можно. Только заполнить операцию в бухне по этой табличке в "ПослеЗаписи" не выходит, потому что не заходит извилистая туда, хоть ты тресни.
30 vicof
 
15.04.14
12:23
Все заходит, только надо руки вырастить.
Давай хотя бы скрины.
31 Йохохо
 
15.04.14
12:23
(27) потому, что запрос и пкс в базе источнике, а чтобы что-то получить в послезагрузки в базе приемнике, это что-то надо правильно записать в иксэмель файлик. Причем правильность не зависит от того, насколько ты хочешь, чтобы было правильно, а зависит от правил конвертации
32 GreyTim
 
15.04.14
12:27
(30) скрины чего конкретно, помогут отцу русской демократии?
33 vicof
 
15.04.14
12:29
(32) Пко, пвд и пкс, которыми ты пытаешься выгружать иконвертировать данные
34 GreyTim
 
15.04.14
12:29
(31) у меня ощущение, что при конвертации Док в ОперБух (27) вообще нельзя использовать.
35 vicof
 
15.04.14
12:31
(34) Можешь жить со своими ощущениями, можешь скрины запостить
36 GreyTim
 
15.04.14
12:33
(35) делаю )
37 SleepyHead
 
гуру
15.04.14
12:38
(34) можно
38 GreyTim
 
15.04.14
12:43
39 GreyTim
 
15.04.14
12:44
40 GreyTim
 
15.04.14
12:46
Код в "ПослеЗагрузки"

Если ОбъектНайден и Не Источник.Проведен Тогда
    Сообщить("#1");
    Объект.ПометкаУдаления = Истина;
    Объект.Записать();
    ДвиженияБУ = Объект.Движения.Хозрасчетный;    
    ДвиженияБУ.Очистить();
    ДвиженияБУ.Записать();
Иначе
    Сообщить("#2");
    Объект.Записать();
    ДвиженияБУ = Объект.Движения.Хозрасчетный;
    
    ДвиженияБУ.Очистить();
    
    ТаблицаОбхода = ПараметрыОбъекта["ТаблицаДвиженийИсточника"];
    Сообщить("Таблица обхода " + ТаблицаОбхода.Количество());
    Для каждого Строка из ТаблицаОбхода Цикл
        
        НовоеДвижение = ДвиженияБУ.Добавить();
        Если Строка.ВидЦенности = "Спецодежда" тогда
            НовоеДвижение.СчетДт = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный;
            НовоеДвижение.СчетКт = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный;
        ИначеЕсли Строка.ВидЦенности = "Инвентарь и хозяйственные принадлежности" тогда
            НовоеДвижение.СчетДт = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации;
            НовоеДвижение.СчетКт = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации;
        Иначе
            НовоеДвижение.СчетДт = ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатацииВспомогательный;
            НовоеДвижение.СчетКт = ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатацииВспомогательный;
        КонецЕсли;
        НовоеДвижение.Активность = Истина;
        НовоеДвижение.КоличествоДт = Строка.Количество;
        НовоеДвижение.КоличествоКт = Строка.Количество;
        НовоеДвижение.Сумма = Строка.Сумма;
        НовоеДвижение.Организация  = Объект.Организация;
        НовоеДвижение.Период = Объект.Дата;
        НовоеДвижение.Регистратор = Объект.Ссылка;
        
        НужнаяНоменклатура = Справочники.Номенклатура.НайтиПоКоду(Строка.КодНоменклатуры);
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетДт, НовоеДвижение.СубконтоДт, "Номенклатура", НужнаяНоменклатура);
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетКт, НовоеДвижение.СубконтоКт, "Номенклатура", НужнаяНоменклатура);
        Сообщить("Номенклатура");
        
        НужнаяПартия = Документы.ПередачаМатериаловВЭксплуатацию.НайтиПоНомеру(Строка.НомерПартии, Строка.Датапартии);
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетДт, НовоеДвижение.СубконтоДт, "ПартииМатериаловВЭксплуатации", НужнаяПартия);
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетКт, НовоеДвижение.СубконтоКт, "ПартииМатериаловВЭксплуатации", НужнаяПартия);
        Сообщить("Парития");
        
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетДт, НовоеДвижение.СубконтоДт, "РаботникиОрганизаций", Справочники.ФизическиеЛица.НайтиПоКоду(Строка.Принимающий));
        БухгалтерскийУчет.УстановитьСубконто(НовоеДвижение.СчетКт, НовоеДвижение.СубконтоКт, "РаботникиОрганизаций", Справочники.ФизическиеЛица.НайтиПоКоду(Строка.Передающий));
        Сообщить("Работник");
        
    КонецЦикла;
    
    //ДвиженияБУ.Записать();
    Объект.Записать();
    Объект.Движения.Проводки.Записывать=Истина;
КонецЕсли;
41 vicof
 
15.04.14
12:58
В пвд - делаешь запрос, который будет содержать поля и табличную часть выгрузки, псевдонимы полей должны совпадать с наименованиями свойств приемника.
В пко можешь оставить пустой источник.
42 GreyTim
 
15.04.14
13:09
(41) мысль уловил, буду пробовать. Спасибо.
43 Йохохо
 
15.04.14
13:11
Источник.Проведен это точно ошибка, нету там источника. Может потому и не заходит? Плюс надо посмотреть, что записано в файле выгрузки, передача ТЗ параметром не очевидная возможность
44 SleepyHead
 
гуру
15.04.14
13:12
а зачем пометку удаления ставить, не понял
45 SleepyHead
 
гуру
15.04.14
13:13
Объект.Движения.Проводки.Записывать=Истина;

это должно быть в самом начале, по моему..
46 SleepyHead
 
гуру
15.04.14
13:14
А вообще сделано методически неверно, все, что написано в коде в 40 посте, нужно переносить в ПКС, а в после загрузки должно быть только то, что в (45)
47 GreyTim
 
15.04.14
13:15
Все учту.
48 SleepyHead
 
гуру
15.04.14
13:27
Если часто делаешь переносы, есть смысл купить гилевский курс по КД, просто глаза откроются. Там твой пример разбирается достаточно подробно, как очень типичный.
49 GreyTim
 
15.04.14
13:30
(48) Это книга? Диск?
50 SleepyHead
 
гуру
15.04.14
13:31
http://курсы-по-1с.рф/ и смотри ссылки по курсам. я отучился по КД в декабрьском потоке.
51 GreyTim
 
15.04.14
13:32
Все, понял. Спасибо.