|
Проведение документа после переноса в КД | ☑ | ||
---|---|---|---|---|
0
Игорь_МММ
08.04.16
✎
01:01
|
Подскажите плз. если в ПКО ПослеВыгрузки пишу Объект.Записать(РежимЗаписиДокумента.Проведение) - проведение идет по ОбработкеПроведения ? вроде как по-другому? просто ставлю точку останова в ОБработкуПроведения - не останавливается.
|
|||
1
Diman000
08.04.16
✎
01:06
|
В ней самой, куда же она, родная, денется.
Вот только у тебя документ-источник проводится. ПослеВыгрузки это контекст выгрузки. И тамошний объект это объект-источник. |
|||
2
Игорь_МММ
08.04.16
✎
09:36
|
(1) Ну так вроде все так. Проблема изначально в том что половина документов делает движения по регистрам , а какая-то часть не записывается даже - вываливается с ошибкой " ошибка вызова метода "Записать" не установлен отбор по регистратору, ". Я поставил точку останова в ОбработкеПроведения - останавливаться не останавливается. Как так?
|
|||
3
Pro-tone
08.04.16
✎
09:59
|
(0) а зачем тебе проводить документ после выгрузки в файл обмена? Какой в этом смысл?
|
|||
4
Игорь_МММ
08.04.16
✎
10:00
|
(3) движения нужны
|
|||
5
Игорь_МММ
08.04.16
✎
10:01
|
(3) или начинаю догонять ... я не там делаю проведение? а где?
|
|||
6
ДенисЧ
08.04.16
✎
10:02
|
(5) Послевыгрузки работает тогда, когда документ ВЫГРУЖАЕТСЯ, а не когда загружается...
|
|||
7
Pro-tone
08.04.16
✎
10:04
|
(4) движения тебе нужны на стороне приемника, для этого нужно проводить документ после загрузки, установив ему режим проведения, вроде в обработчик ПриЗагрузке пиши РежимЗаписи = Проведение
|
|||
8
Игорь_МММ
08.04.16
✎
10:19
|
(7) Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Материалы оприходованные)
Текст ОбработкиПроведения: Процедура ОбработкаПроведения(Отказ, Режим) ДатаПоследнегоИНВ = Константы.ДатаТекущегоИНВ.Получить(); Если ЭтотОбъект.Дата >= ДатаПоследнегоИНВ Тогда Движения.Хозрасчетный.Очистить(); Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.Хозрасчетный.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; КонецЕсли; // регистр МатериалыОприходованные Приход Движения.МатериалыОприходованные.Очистить(); Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.МатериалыОприходованные.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; // регистр МатериалыПодтвержденныеНеОприходованные Расход Движения.МатериалыПодтвержденныеНеОприходованные.Очистить(); Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.МатериалыПодтвержденныеНеОприходованные.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; КонецПроцедуры На стороне приемника, вводишь накладную (вручную) ,проводишь - ошибок нет. Получается ошибка только если проведение идет при переносе. В чем нюанс? |
|||
9
Pro-tone
08.04.16
✎
10:26
|
(8) а где у тебя строка "Движения.Регистратор=..."?
|
|||
10
Pro-tone
08.04.16
✎
10:28
|
(8) ты понимаешь, что при записи в рн "Регистратор" это обязательное поле для заполнения? и обмен данными вообще тут не причем, а когда руками проводят документ, скорее всего это проводят вообще не этот документ, а какой-то другой
|
|||
11
Игорь_МММ
08.04.16
✎
11:03
|
(10) Это как? .. набиваешь документ, нажимаешь Ок - а проводится другой документ? Сейчас сделал новый документ - провел, проверил движения - все на месте. Не может оно автоматом считаться что коли проводится Этот документ, т о соответственно он и регистратор?
|
|||
12
Pro-tone
08.04.16
✎
11:06
|
(11) напиши все же Движение.Регистратор = Ссылка
|
|||
13
Игорь_МММ
08.04.16
✎
11:13
|
(12) вставил, но при загрузке все равно вылетает (8)
написал так : Движение.Регистратор = ЭтотОбъект; |
|||
14
Diman000
08.04.16
✎
11:16
|
Напиши Ссылка.
ЭтотОбъект это другой тип. |
|||
15
Игорь_МММ
08.04.16
✎
11:32
|
(14) тоже самое ..
"Не установлен отбор по регистратору" и "Движение.Регистратор =" одно и тоже? |
|||
16
Игорь_МММ
08.04.16
✎
12:28
|
закипаю ..
поудалял все загруженные документы, нажимаю загрузить данные - загружается один док и вылетает "Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Материалы оприходованные)" ---- ничего не меняя ----- жму опять загрузить данные - загружает еще один док и снова вылетает таже ошибка и тд. При каждой загрузке загружает ровно один документ и ошибка |
|||
17
ДенисЧ
08.04.16
✎
12:29
|
(16) Ну так может, ты всё таки код проведения поправишь?
Или так и будешь туда-сюда документы удалять? |
|||
18
Игорь_МММ
08.04.16
✎
12:31
|
(17) направь на путь истинный, плз. То что предлагали (Движение.Регистратор = Ссылка) не помогает (
|
|||
19
Альбатрос
08.04.16
✎
12:38
|
(18) У не щаписанного документа есть ссылка?
|
|||
20
Альбатрос
08.04.16
✎
12:39
|
*записанного
|
|||
21
Игорь_МММ
08.04.16
✎
12:45
|
(19) Спасибо тебе человечище !! блин одно слово и все понятно стало
как раз вот это курю - http://catalog.mista.ru/public/160588/ , думаю зачем такие сложности: сначала в таблицу всю инфу сливать , потом по ней все проводить . Получается сначала все записывается без проведения, а потом уже перепроводим. Если все так подскажите еще по указанной статье - там обработчики событий «Перед загрузкой данных», «После загрузки объекта»,«После загрузки данных» - что-то не вижу у себя таких, это где? |
|||
22
Diman000
08.04.16
✎
12:51
|
Незаписанный документ в ОбработкуПроведения не попадает
|
|||
23
Pro-tone
08.04.16
✎
12:56
|
(21) потому что возможны коллизии при блокировках с большим числом документов, поэтому есть даже РС "Отложенные движения", чтобы провести то, что до этого из-за ошибок или блокировок не удалось провести
|
|||
24
Игорь_МММ
08.04.16
✎
13:00
|
(22) таки дело в обработке проведения? что там не так? почему при ручном вводе дока проведение проходит без ошибок, а при конвертации вылетает?
(23) то бишь (21) не мой случай? |
|||
25
Игорь_МММ
08.04.16
✎
14:15
|
апп..
|
|||
26
Pro-tone
08.04.16
✎
14:21
|
(24) ты сделал по (12)?
|
|||
27
Игорь_МММ
08.04.16
✎
14:34
|
(26) (17) (14) мда, все заработало...
туплю, простите - ставил ЭтотОбъект.Ссылка Спасибо |
|||
28
Игорь_МММ
08.04.16
✎
15:36
|
Подскажите еще как сделать Отмену проведения - та же ошибка вываливается: "Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Материалы оприходованные)"
это получается когда повторно загружается документ, который был ранее проведен, теперь распроведен - мне нужно удалить движения по этому документу. |
|||
29
Игорь_МММ
08.04.16
✎
15:42
|
сейчас в обработчике события ПослеЗагрузки так написано:
Если Объект.Проведен Тогда Объект.Записать(РежимЗаписиДокумента.Проведение) Иначе // Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения) КонецЕсли; соответственно если коммент убираю, то вываливается с ошибкой на любом непроведенном документе |
|||
30
Игорь_МММ
08.04.16
✎
17:00
|
никто не поможет горюшку ?
|
|||
31
Popkorm
08.04.16
✎
17:49
|
(30) так что надо,провести после Загрузки?
|
|||
32
Cyberhawk
08.04.16
✎
17:51
|
"ставлю точку останова в ОБработкуПроведения - не останавливается" // Убедись, что в нужной базе отладка в принципе работает (что отладчик останаливается в каком-нибудь любом месте) для начала
|
|||
33
Berezin84
08.04.16
✎
17:59
|
1) http://i.imgur.com/JVWK1kt.png
2) http://i.imgur.com/MGiNkji.png 3) вот по движениям http://i.imgur.com/u0iIJvf.png |
|||
34
Berezin84
08.04.16
✎
18:01
|
Вот если код нужен http://pastebin.com/upE2YH2Q
|
|||
35
Pro-tone
08.04.16
✎
18:12
|
(29) Объект.Записать - так нельзя писать
КД объект - это структура, пришедшая из файла. Поэтому есть такое как ОбъектНайден. Эта переменная имеет булевный тип, ей и проверяй. У объекта есть свойство Ссылка. Если она не пустая, то можно ПолучитьОбъект() - это и есть твой документ, можешь его проводить, распроводить, удалять и т.п. |
|||
36
Fragster
гуру
08.04.16
✎
18:24
|
если документу при выгрузке установить Проведен = Истина, то при обмене по правилам он сам проведется. В обработке - хз.
|
|||
37
Игорь_МММ
08.04.16
✎
23:56
|
(31) пока до дома добирался, пришло, что все куда плачевнее:
задача перенести документы из Бухгалтерии в самописную конфу. Сейчас проводиться документы проводятся, проблема наступает, если я делаю отмену проведения в источнике и гружу документ - получается что на стороне приемника нужно отменить проведение (здесь вываливается с ошибкой, т.е. Объект.Записать(РежимЗаписиДокумента.Проведение) выполняется без проблем, а Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения) вываливается с ошибкой)- это одна беда. Второе - это что делать если в источнике док удалят, как найти его в приемнике и распровести хотя бы? |
|||
38
Игорь_МММ
08.04.16
✎
23:57
|
(32) отладка работает - остановка срабатывает если я в ручную провожу док
|
|||
39
Игорь_МММ
09.04.16
✎
00:05
|
(33) (34) под конец дня сегодня курил эту тему, пробовал и в обработчики ПКО вставлять и как в (21) в обработчики самой конвертации - пока не помогло.
(36) надо не все проводить, а получается и делать отмену проведения см (37) (35) в понедельник буду уже пробовать |
|||
40
Fragster
гуру
09.04.16
✎
08:54
|
Если универсальный обмен по правилам из бсп и объект один к одному - то все должно работать из коробки
|
|||
41
hhhh
09.04.16
✎
09:02
|
(39) надо программиста, который эту самописку наваял, допросить с помощью паяльника. Наверняка там из этого документа вызывается проведение других документов. Которые и ругаются.
|
|||
42
Игорь_МММ
09.04.16
✎
18:28
|
итого:
В ПКО в обработчиках все убрал . В событии ПослеЗагрузки Конвертации написал так: ДатаПоследнегоИНВ = Константы.ДатаТекущегоИНВ.Получить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ПоступлениеТоваровУслуг.Проведен |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Дата >= &Дата"; Запрос.УстановитьПараметр("Дата", ДатаПоследнегоИНВ); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Если ВыборкаДетальныеЗаписи.Проведен Тогда Док.Записать(РежимЗаписиДокумента.Проведение); Иначе Док.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЕсли КонецЦикла; Теперь все ОК!!! Спасибо всем за помощь Осталась последняя проблема (если это вообще решаемо): можно ли отследить объект, который был изначально создан в источнике, потом загружен в приемник, затем в источнике удален - можно ли отследить это и удалить его и в приемнике? Вообще есть ли какой-то признак у документа где он был создан? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |