Имя: Пароль:
1C
1С v8
Запись движений документа в режиме Загрузка = Ложь
, ,
0 MonteCarlo
 
24.04.18
14:58
Уважаемые форумчане. Помогите разобраться с вопросом. Суть задачи такая. Из одной базы ERP, в которой ведется учет зарплаты, выгружается документ в другую базу ERP, в которой бух учет. Документ Отражение зарплаты в финансовом учете. Выгружается сводный документ. Есть проводка Дт 76.09 Кт 68.01. По 76.09 3 субконто, но в сводном режиме документа субконто не пишутся. При по правилам субконто не выгружаются, т.к. в базе они с типом Неопределено. В базе приемника при записи движений, если учет по субконто ведется, но при этом субконто не заполнено, то в случае режима Загрузки в таблицу Значения субконто ничего не пишется. А если режим ОбменДанными.Загрузка = Ложь, тогда в таблицу субконто пишутся запись с типом неопределено. В этом проблема. Обмен всегда записывает в режиме Загрузка. Как ее отключить для регистра бухгалтерии только для этого документа не понимаю. Пробовал в обработчике ПослеЗагрузки в ПКО, но он срабатывает перед записью объекта в ИБ. Да и перед записью в механизме обмена жестко выставляется ОбменДанными.Загрука в Истину. Есть идея записывать в обработчике эти движения, но хотелось бы сделать все аккуратно. Подскажите, кто сталкивался?
1 cw014
 
24.04.18
15:03
Я не очень понял о чем речь, но я не думаю, что проблема именно в Загрузка = Ложь
2 MonteCarlo
 
24.04.18
15:06
Проблема точно в Загрузка ложь. Ставил точку останова Перед записью НАбора записей Хозрасчетный, менял программно этот флаг. В случае когда запись происходит не в режиме Загрузки, то в субконто пишутся запись с типом Неопределено, а в режиме Загрузки ничего не пишется и в дальнейшем в виртуальных таблицах появляются null
3 MonteCarlo
 
24.04.18
15:53
Ни у кого что-ли не было случаев, когда проводки перегружались с пустым субконто?
4 cw014
 
24.04.18
15:54
Что в наборе записей перед записью регистра, и что в наборе записей после записи регистра
5 cw014
 
24.04.18
15:55
Повангую. В наборе записей до записи лежит то, что в итоге у тебя получается с Загрузка = Истина.

При этом если "Загрузка = Истина" - оно так и остается
Если "Загрузка = Ложь" - там чудом что-то появляется. Так?
6 Buster007
 
24.04.18
15:58
допили выгрузку в режиме сводно, чтобы субконто выгружалось со значением неопределено
7 MonteCarlo
 
24.04.18
16:00
Не не совсем. В модуле набора записей есть события ПередЗаписью и ПриЗаписи. Перед записью и при записи набор записей одинаковый. Есть Таблицы СубконтоДТ и СубконтоКТ. Вот СубконтоДТ пустая, хотя у этого счета определены 3 субконто (КА, Договоры, Расчетные документы). Всё происходит в момент записи в таблицу ЗначенияСубконто. Но не могу найти этот момент в коде. Когда происходит эта запись? Сдается мне, что это платформенный механизм. В режиме Загрузка = Истина в таком случае в эту таблицу ничего не пишется, а в режиме Загрузка = Ложь пишется 3 строки с типом неопределено.
8 MonteCarlo
 
24.04.18
16:01
(6) Собственно этим сейчас и занимаюсь. Но хотелось бы понять, где происходит запись в таблицы Субконто и можно ли как-то повлиять на этот процесс?
9 Cyberhawk
 
24.04.18
16:02
Много букв
10 MonteCarlo
 
24.04.18
16:03
(6) Еще была идея писать движения этого документа в режиме Загрузка = Ложь. Но не соображу как это сделать. Ведь механизм обмена жестко ставит Режим = Истина перед записью объект в ИБ.
11 cw014
 
24.04.18
16:03
"Вот СубконтоДТ пустая" - о чем и речь. У тебя событие "ПередЗаписью" срабатывает и что-то дозаполняет. Не срабатывает только, если "ОбменДанными.Загрузка = Истина"
12 MonteCarlo
 
24.04.18
16:04
(9) Если пишешь мало букв, то люди начинают писать сообщения типа "мы не телепаты, опиши подробно"...
13 MonteCarlo
 
24.04.18
16:05
(11) Нет. Я проверил все процедуры, которые выполняются после этой отсечки. Я же написал выше, что состояние набора записей в событии ПриЗаписи не меняется. Таблица СубконтоДТ такая же пустая.
14 Cyberhawk
 
24.04.18
16:05
(12) Писать много букв в этом случае недостаточно. Нужно еще и порядок в голове иметь, чтобы вылить это на бумагу, а не сплошняков за который тебе разве что только плюнуть в лицо можно захотеть
15 cw014
 
24.04.18
16:06
"состояние набора записей в событии ПриЗаписи не меняется" - значит ищи заполнение в событии "ПриЗаписи"
16 MonteCarlo
 
24.04.18
16:06
(14) Что непонятного я написал в посте?
17 cw014
 
24.04.18
16:07
НА худой конец смотри подписки, где фигурирует этот регистр
18 MonteCarlo
 
24.04.18
16:10
(17) В событии перед записью есть функция обработки проводок, но там приводится тип в случае мультитипового субконто. Там обходится коллекция. Но у меня коллекция пустая, так что в ней с моим набором ничего не происходит. Делал замер производительности, чтобы понять, что еще происходит с набором после записи. Но во-первых ничего не нашел, во-вторых, запись уже произошла, если бы что-то делалось с набором записей его же потом снова нужно было бы записать и я бы опять отловил бы события перед записью и при записи.
19 piter3
 
24.04.18
16:12
(16) Все
20 cw014
 
24.04.18
16:14
(18) Ну вот прям не верится. Давай скриншотами закидай, что у тебя "до", а что "после". Желательно примером, что в таблице
21 Buster007
 
24.04.18
16:19
у тебя есть ПКО набора записей РБ. Вот именно туда тебе и надо
22 Buster007
 
24.04.18
16:21
вообще непонятно зачем смотреть в код, который выполняется после загрузка = истина, если у тебя выполняется загрузка? Это говорит о том, что все твои записи уже были записаны ранее и они корректные, и никакие дальнейшие обработки с ними не требуются. Если они у тебя кривые приходят, значит выгрузка записей работает криво и здесь 2 варианта: допилить выгрузку; допилить данные после чтение их из файла.
23 cw014
 
24.04.18
16:22
(22) Ну вот ты так в лоб прямо. Надо же подвести человека к этому умозаключению. А то сейчас он будет охать и ахать, чем же их заполнять
24 MonteCarlo
 
24.04.18
16:26
(22) То что нужно допилить правила обмена, чтобы выгружались записи с НЕопределено я понимаю. Я хотел узнать, почему в одном режиме ничего не пишется в таблицу ЗначенияСубконто, а в другом режиме пишутся записи с типом неопределено, в случае если Субконто пустые.
25 MonteCarlo
 
24.04.18
16:27
(23) Вы наверное действительно не поняли суть вопроса в моем обращении, раз так считаете.
26 MonteCarlo
 
24.04.18
16:30
http://forums.kuban.ru/f1040/1c_bp_8_2_pustye_subkonto_po_70_ne_vzaimozakryvayutsya_kak_zakryt--7152902.html
Вот тут похожая на мою проблема и там в 14 сообщении человек написал про режимы записи в РБ.
27 MonteCarlo
 
24.04.18
16:31
(26) Так я вот хочу понять где можно увидеть момент записи в таблицу ЗначенияСубконто
28 cw014
 
24.04.18
16:32
(25) Как раз таки понял. Детали ты рассказываешь конечно многобуквенно, но туманно. У тебя два события "ПередЗаписью" и "ПриЗаписи". У событий есть начало процедуры и конец процедуры. В обоих случаях (ОбменДанными.Загрузка = [Истина|Ложь]) в обоих обработчиках поставить "зарубки" на начало процедуры и конец процедуры тебе лень. Что бы проверить, что твои доводы действительно такие. Так же тебе лень проверить, какие есть подписки на события
29 cw014
 
24.04.18
16:32
Таблица "ЗначенияСубконто" - это что за таблица?
30 Cyberhawk
 
24.04.18
16:33
(16) Хз, Я ведь не читал его, т.к. много букв сплошняком все - УГ
31 unregistered
 
24.04.18
16:34
(24) >> почему в одном режиме ничего не пишется в таблицу ЗначенияСубконто, а в другом режиме пишутся записи с типом неопределено, в случае если Субконто пустые

Потому что в режиме ОБменДанными.Загрузка = Ложь при выполнении обработчика события ПередЗаписью выполняется процедурка ПривестиПустыеЗначенияСубконтоСоставногоТипа(ЭтотОбъект). В этой процедурке выполняется код для Дт и Кт проводки:

Для Каждого Субконто Из Проводка.СубконтоДт Цикл
   Если НЕ ЗначениеЗаполнено(Субконто.Значение)
     И Субконто.Значение <> Неопределено
     И СоставнойТипСубконто(Субконто.Ключ, КэшВидыСоставныхСубконто) Тогда
     Проводка.СубконтоДт.Вставить(Субконто.Ключ, Неопределено);
   КонецЕсли;
КонецЦикла;
32 cw014
 
24.04.18
16:34
"Вот СубконтоДТ пустая, хотя у этого счета определены 3 субконто" - ты посмотри, что такое "СубконтоДТ" и "СубконтоКТ", как с ними работать. Платформа на самом деле нифига не знает, что туда писать
33 unregistered
 
24.04.18
16:35
(29) Физическая таблица, куда пишутся значения субконто из проводки. В физической таблице самих движений регистра бухгалтерии субконто не пишутся - там только счета, измерения и ресурсы (как у регистров накопления).
34 MonteCarlo
 
24.04.18
16:36
(32) Основная таблица хранит проводки (движения регистра бухгалтерии) без данных аналитического учета. Для хранения данных аналитического учета предназначена вторая реальная таблица регистра бухгалтерии – таблица значений субконто. Эта таблица не содержит числовых характеристик и вряд ли может использоваться самостоятельно. В таблице хранится информация о виде и значении каждого субконто проводки. Для получения полной информации о проводке (включая данные аналитического учета) система соединяет данные таблицы движений и таблицы значений субконто по периоду, регистратору и виду движения. Субконто хранятся платформой компактно, и количество полей этой таблицы не зависит от количества субконто на счете. Чем больше субконто описано в проводке, тем больше записей будет содержать таблица значений субконто. Одной проводке из основной таблицы может соответствовать несколько записей таблицы значений субконто. Обращение к таблице значений субконто в нашем случае будет выглядеть так (листинг 4.23).
35 MonteCarlo
 
24.04.18
16:36
(31) Почитай пожалуйста выше
36 MonteCarlo
 
24.04.18
16:37
(28) Я же русскими буквами написал, что ставил точки останова и в начале процедуры и в конце. И через замер производительности искал, что еще выполняется после этих процедур.
37 unregistered
 
24.04.18
16:37
(32) Я всё внимательно прочитал. Я не понимаю чего ты хочешь и что тебя смущает. Всё работает правильно и корректно.
38 cw014
 
24.04.18
16:37
(33) Я просто конкретно данного идентификатора "ЗначениеСубконто" не нашел в СП. То есть смею предположить, что это какая-то табличная часть или таблица значений
39 unregistered
 
24.04.18
16:37
* (37) к (35)
40 MonteCarlo
 
24.04.18
16:37
(33) Хоть один человек знает и на том спасибо.
41 cw014
 
24.04.18
16:38
(36) Я умываю руки. Видит Павел Дуров, я тебе пытался помочь во имя телеграмма
42 unregistered
 
24.04.18
16:38
(38) См. справку к таблицам регистра бухгалтерии.
Это не таблица значений и не табличная часть.

PS Такое впечатление, что ты регистр бухгалтерии вчера увидел впервые.
43 cw014
 
24.04.18
16:38
(36) + замер производительности с пробегом по таблице из трех строк мало чего тебе даст
44 MonteCarlo
 
24.04.18
16:39
(31) Ты привел кусок кода, который выполняется в процедуры ПередЗаписью, который приводит тип. Но ты же видишь свой же код, который ты пишешь? В нем идет обход по коллекция, а у меня коллекция пустая.
45 cw014
 
24.04.18
16:39
(42) Дык смотрю, и в упор не вижу. Вижу "СубконтоДт" и "СубконтоКт". Имеют тип "РегистрБухгалтерииСубконто.<Имя регистра бухгалтерии>"
46 MonteCarlo
 
24.04.18
16:40
(41) Чем ты мне пытался помочь? НАзвав меня дураком, который не может точку останова поставить и посмотреть что у него в наборе записей? Спасибо, помощник.
47 MonteCarlo
 
24.04.18
16:42
https://www.forum.mista.ru/topic.php?id=803359
Вот еще ситуация похожая, только там не обменом набор приходит, а после добавления нового субконто, по старым записям в этой таблице нет записей и поэтому null имеем.
48 unregistered
 
24.04.18
16:42
(44) >> у меня коллекция пустая

С чего ты это взял?
Что такое СубконтоДт? Это соответствие. В этой коллекции количество элементов соответствует количеству видов субконто. В типовой БП 3.0 их около 60 штук.
49 cw014
 
24.04.18
16:42
(46) Где тебя дураком то обозвали?
50 MonteCarlo
 
24.04.18
16:43
(30) Если лень читать мог бы просто пройти мимо молча. Или не мог?
51 unregistered
 
24.04.18
16:43
(44) >> В нем идет обход по коллекция

Ты понимаешь, что при обмене данными этот код вообще не выполняется и не должен выполняться?...
52 MonteCarlo
 
24.04.18
16:44
(48) Коллекция пустая, потому что я ставил точку останова и в момент обмена смотрел что там внутри. Она пустая.
53 MonteCarlo
 
24.04.18
16:45
(51) А почему не выполняется? Потому что Загрузка = Истина. Мне и не нужно его выполнять, мне нужно, чтобы платформа записывая мою пустую таблицу субконто сама создала записи с типом Неопределено, как это просиходит, если загружаешь в Режиме Загрузка = Ложь.
54 unregistered
 
24.04.18
16:47
(45) Еще раз: смотри не СП, а справку!
В конфигураторе, в главном меню "Справка" - "Справка". Там "Содержание". Потом находишь Встроенный язык - Работа с запросами - Таблицы запросов - Таблицы регистра бухгалтерии (с поддержкой корреспонденции) - Таблица значений субконто.
55 MonteCarlo
 
24.04.18
16:48
Еще раз подробненько.
В базе Источника документ пишет сводно, без аналитики. Создается проводка в которой субконто с типом НЕопределено. При выгрузке этот тип не выгружается, так как в КД при написании ПКС в соответствии описывается очень много типов источника и приемника, но типа НЕопределено там нет. В итоге при загрузке в Приемник эта балица пустая, то есть Количество() = 0, если кому непонятно.
56 cw014
 
24.04.18
17:06
(54) Посмотрел. Почитал. Подумал что сам дебил. Но вот незадача. Раздел посвящен "РегистрБухгалтерии.<Имя регистра бухгалтерии>.Субконто".

Поля:
Вид
ВидДвижения
Значение
МоментВремени
НомерСтроки
Период
Регистратор
УточнениеПериода



ТС оперирует понятием "Таблица "ЗначенияСубконто"". Вот такого ИДЕНТИФИКАТОРА (а написано оно, как именно идентификатор) в справке нет. В СП его тоже нет. Помнится такое когда то существовало в 7.7



Если вы физические абстрактные таблицы так называете - проф может быть и поймет о чем речь, но он и не будет задавать таких вопросов. А новичек будет оперировать данным термином (читай идентфикатором), как абстрактным понятием, не понимая конкретно что это. А вот если оперировать именно типами и идентификаторами виртуальных таблиц - может чего то и возможно будет добиться
57 cw014
 
24.04.18
17:07
(54) К вышесказанному добавлю, что это может быть ИДЕНТИФИКАТОРОМ метаданных
58 MonteCarlo
 
24.04.18
17:10
(56) Я же тебе в (34) цитату с ИТС вставил. Они её так называют. Таблица значений субконто.
59 MonteCarlo
 
24.04.18
17:10
"Наверное, я не открою тайну, сказав что регистр бухгалтерии это несколько таблиц, а виртуальные таблицы запросов в 1С - суть результат соединений нескольких наборов данных в СУБД?
Соответственно, при записи в БД набора затрагиваются несколько таблиц. Так вот, при записи в БД набора в режиме загрузки в таблицу значений субконто (при отсутствующем субконто) не будет записано ничего, и последующие выборки вернут NULL; при записи же не в режиме загрузки платформа запишет в эту таблицу приведённое к допустимому типу пустое значение и последующие выборки NULL уже не вернут"

Это цитата с форума, где люди обсуждают похожую проблему.
60 MonteCarlo
 
24.04.18
17:12
Я понимаю, что платформа отрабатывает правильно. Я просто пытаюсь понять, можно ли вообще отловить это событие записи в эту таблицу субконто. И можно ли при загрузке через обмен записать в режиме Загрузка = Ложь, чтобы платформа отработала по другому сценарию и записала строки с типом НЕопределено.
61 cw014
 
24.04.18
17:12
(58) Коллега, таблица значений субконто <> таблица "ЗначенияСубконто"
62 MonteCarlo
 
24.04.18
17:14
СЕйчас тестировал выгрузку. В обработчике ПКС ПередВыгрузкой и ПослеВыгрузки у свойства НАборДвижений РБ.Хозрасчетный натыкал Сообщить() и увидел, что пустые записи то с типом Неопределено там есть. Но вот в файле обмена xml их уже нет. Где они могу очищаться, не подскажете?
63 MonteCarlo
 
24.04.18
17:16
(61) Тем не менее unregistered понял о чем речь, а ты к сожалению нет. Прости, это моя вина. В дальнейшем постараюсь писать точно термины.
64 cw014
 
24.04.18
17:19
(63) Дело в том, что я приблизительно тоже. Но все же простая характеристика таблицы в виде идентификатора объекта метаданных или внутреннего идентификатора поставила в тупик
(54) Разобрался с физическими таблицами. Правда путь к справке ты неверный написал. Данное перечисление (хотя и строковое) есть только у таблицы, полученной функцией "ПолучитьСтруктуруХраненияДанных" в колонке "Назначение".
65 Сияющий в темноте
 
24.04.18
17:27
А задать пустые субконто явно религия не позволяет?
66 MonteCarlo
 
24.04.18
17:28
(65) Где задать?
67 MonteCarlo
 
24.04.18
17:28
(65) (62)
68 cw014
 
24.04.18
17:34
(62) Есть обработчики какие нибудь у ПКО или ПКС?
69 MonteCarlo
 
24.04.18
17:42
(68) У ПКО документа Отражение зарплаты в финансовом учете есть обработчики ПередВыгрузкой, тут пишется РежимЗаписи и фильтр, чтобы выгружались только документы с флагом Сводно. Есть ПередЗагрузкой, тут выполняется код РежимЗаписи = "Запись";. Есть обработчик ПослеЗагрузки, тут выполняется код: Объект.Движения.ПрочиеРасходы.Записывать = Истина;
Объект.Проведен = Истина;. Всё. Есть ПКС Набор движений РБ. У него нет никаких обработчиков и отдельного правила конвертации тоже нет, просто проведено соответствие его свойств.
70 MonteCarlo
 
24.04.18
17:44
Я думал что не выгружается из-за того, что в соответствии свойства СубконтоДТ нет типа НЕопределено. Но по факту обнаружил, что в обработчике ПередВыгрузкой и ПослеВыгрузки (я их сам добавил для тестирования) в переменной ОбъектКоллекции, есть нужные мне записи с типом Неопределено. Но в файл не попадают (
71 Сияющий в темноте
 
24.04.18
20:15
Неопределено,это пустое значение,а пустые значения в файл писать не принято,вот они туда и не попадают
вопрос же не в том,что в файл попало,а в том,как из пустых значений получить субконто,а это уже обработчик загрузки должен делать
72 Cyberhawk
 
25.04.18
11:10
(50) Так Я в ветку уже зашел, смысл мимо проходить? Покритиковать хоть
73 MonteCarlo
 
25.04.18
11:36
(72) Критиковать можно, когда с материалом обсуждения ознакомился, а Вы судя по всему поленились даже прочитать. Так что иначе как толстый троллинг я это назвать не могу. И вообще замечаю, что на этом ресурсе очень много людей, которые считают, что они самые умные и позволяют себе троллить других. Вам вопрос, а Вы собственно зачем на этом ресурсе?
74 cw014
 
25.04.18
11:44
(73) Возьми обработчик "После загрузки". Пропиши туда все, что тебе нужно и перепроведи документ
75 MonteCarlo
 
25.04.18
12:02
(74) Как добраться до набора записей РБ в обработчике ПослеВыгрузки?
76 Cyberhawk
 
25.04.18
12:03
(73) Куда-то тебя понесло. Посыл простой - не пиши "сплошняковое УГ", структурируй излагаемый на форум текст
77 cw014
 
25.04.18
12:04
(75) Копай в сторону СП "ДокументОбъект.Движения"
78 MonteCarlo
 
25.04.18
12:06
(77) У меня выгружается документ. В его свойствах есть Хозрасчетный, это набор записей регистра бухгалтерии. В обработчике ПослеВыгрузки в ПКО к документу мне нужно добраться до этого самого набора, которые приехал вместе с документом. Объект.Движения есть, только если этот объект был найден в базе приемник. Если едет новый документ, то Объект.Движения.Хозрасчетный.Количество() = 0. Хотя в базе истоника есть проводка. И в файле выгрузке я ее вижу.
79 cw014
 
25.04.18
12:09
(78) в (74) прочитай внимательно каждое слово
80 MonteCarlo
 
25.04.18
12:13
(77) Предлагаете записать новый документ (он выгружается в режиме = "Запись"), а потом скорректировать движения и снова записать?
81 hhhh
 
25.04.18
12:13
(78) сделай Объект.Записать();

и потом Объект.Движения.Прочитать();
82 hhhh
 
25.04.18
12:14
(80) объект можно второй раз не записывать.
83 MonteCarlo
 
25.04.18
12:15
(82) Как отказаться от повторной записи? ОТказ = Истина?
84 MonteCarlo
 
25.04.18
12:35
(82) Пишу после всех действий в обработчике Отказ = НЕ ОбъектНайден. Проверил через трассировку, что объект на этот момент действительно не найден, значит Отказ = Истина. Документ все равно второй раз записывается.
85 MonteCarlo
 
25.04.18
13:01
Ребята, подскажите, как отказаться от второй записи объекта в базу? Отказ = Истина, ОбъектМодифицирован = Ложь. Всё равно пишет после всех манипуляций.
86 cw014
 
25.04.18
13:11
(85) После загрузки у тебя в Объект.Движения уже должны лежать движения. Правишь их. Никаких повторных перезаписей ненужно
87 Buster007
 
25.04.18
13:12
у набора записей установить Записывать = Ложь.
88 MonteCarlo
 
25.04.18
14:08
(86) Если объект не найден в базе приемника, то движения Объекта пустые
89 MonteCarlo
 
25.04.18
14:08
(87) У меня сам документ второй раз записывается.