Странное поведение табличной части при заполнении обработкой

1. Seraph6 30.08.19 09:58 Сейчас в теме
Документ: Заказ клиента в ERP.
Табличная часть: Товары.
Колонки: Номенклатура, Характеристика, Действие, ДатаОтгрузки, КоличествоУпаковок.

Если заполнять ТЧ вручную, то добавляешь Номеклатуру, потом выбираешь ее Характеристику, сразу автоматом встает Действие "К обеспечению" и ДатаОтгрузки сегодняшняя и курсор перескакивает в поле КоличествоУпаковок.

Если же ТЧ заполняется внешней обработкой, которая заполняет колонки Номенклатура, Характеристика, КоличествоУпаковок, то в ТЧ заполняются только колонки Номеклатура и КоличествоУпаковок. В колонки Характеристика стоит "<характеристики не используются>", причем поменять нельзя, выбор недоступен, колонки Действие и ДатаОтгрузки остаются пустыми.

Если документ в таком виде записать, то после записи колонка Характеристика заполняется верными значениями. Но колонки Действие и ДатаОтгрузки так и остаются пустыми. Их можно заполнить, выбрав команду "Заполнить обеспечение".

Если же после заполнения обработкой просто прокликать вручную поле Номенклатура (выбрав еще раз то же самое, что там уже находится), то заполняются уже все поля, какие нужно, как и при ручном вводе.

ВОПРОС: чего не хватает документу при заполнении обработкой и как сделать, чтобы после заполнения обработкой все поля сразу были заполнены как после ручного ввода без дополнительных операций (сначала Сохранить, а потом еще Заполнить обеспечение)?

P.S. В ERP и вообще в управляемых формах я сущий новичок, до этого моя аналогичная обработка прекрасным образом заполняла табличные части Заказа клиента в УПП, но там как-то с этим попроще...

P.P.S. Пробовал включать версионирование, но не вижу существенной разницы между автозаполненным документом после сохранения и документом созданным вручную. А как получить слепок "до сохранения", когда еще поле Характеристика глючное - непонятно.
По теме из базы знаний
Найденные решения
6. VmvLer 30.08.19 10:35 Сейчас в теме
(5) тогда из отладчика вытащить значения колонок загруженной строки еще до записи документа.
и потом сравнить да хоть в экселе обе строки одна над одной.

зачем вы так много пишите несущественного?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FetisovAN 30.08.19 10:01 Сейчас в теме
а вы не пробовали посмотреть обработчики которые отрабатывают при заполнении поля номенклатура в тч ?
Seraph6; alex-l19041; +2 Ответить
4. Seraph6 30.08.19 10:15 Сейчас в теме
(2) Пока ничего не пробовал вообще. Я вчера рефакторил свою обработку из УПП под работу с ERP (и это был мой первый опыт работы в конфигураторе 8.3 вообще :)).
Вы имеете в виду попробовать отладить типовую работу конфигурации при ручном заполнении? ОК, попробую.
Я просто подумал, что вдруг это что-то давно известное и очевидное типа - в ERP при программном заполнении ТЧ нужно обязательно заполнить невидимое служебное поле какое-нибудь, или метод известный какой-нибудь вызвать, и мне новичку сразу подскажут, потому что на эти грабли уже все наступали тыщу раз. :)
3. VmvLer 30.08.19 10:07 Сейчас в теме
Очень простые шаги чтобы не ходить вокруг да около

1. в один и тот же документ загрузите строку табличной части
2. в этот же документ введите строку вручную
3. проведите документ
4. Откройте консоль запросов и выполните запрос к табличной части этого документа, выбрав все колонки
5. глазками определите, что не так
6. Исправьте в выгрузке, что не так
5. Seraph6 30.08.19 10:20 Сейчас в теме
(3) Можно попробовать, но проблема в том, что на третьем шаге (запишите документ), колонка Характеристика все же заполняется тем, что я из обработки в нее загрузил. А мне бы хотелось, чтобы она сразу после загрузки заполнялась, еще до записи.
Кроме того, если я верно понимаю, я увижу примерно то же самое, что показывает мне отчет о сравнении версий этого документа. А в выдаче этого отчета мне никакого криминала в глаза не бросается.
Ну то есть я банально вижу, что в автозаполненных строках не заполнены поля Действие и ДатаОтгрузки. А в заполненной вручную строке эти поля заполнены, но и все на этом.
6. VmvLer 30.08.19 10:35 Сейчас в теме
(5) тогда из отладчика вытащить значения колонок загруженной строки еще до записи документа.
и потом сравнить да хоть в экселе обе строки одна над одной.

зачем вы так много пишите несущественного?
7. Seraph6 30.08.19 10:53 Сейчас в теме
(6) Потому что я тут второй день. И я не знаю, что может оказаться существенным. И вообще я не профессиональный программист 1С, а любитель-самоучка можно сказать.
Например, я вот не знаю, как воспользоваться вашим советом и "вытащить из отладчика значения колонок еще до записи документа". Можете пояснить подробнее?

P.S. Пробовал посмотреть, что происходит в системе (через "Замер производительности"), когда я вручную меняю Номенклатуру загруженной строки и она подтягивает нормально все остальные поля. Ну, вполне ожидаемо там отрабатывает куча процедур типа "ТоварыНоменклатураПриИзменении" или "ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВСтрокеТЧ" или даже "ХарактеристикаИУпаковкаПринадлежатВладельцу". Вопрос больше в том, почему заполнение ТЧ не вручную, а из обработчика не триггерит все эти замечательные процедуры?
8. VmvLer 30.08.19 10:59 Сейчас в теме
(7) этот сайт - это школа или институт для 1С-специалистов.
а если вам нужно в детский сад, то вы ошиблись адресом.
9. Seraph6 30.08.19 11:14 Сейчас в теме
(8) Спасибо вам, вы все равно мне подкидываете хорошие мысли в какую сторону копать. Надеюсь, я со своим детсадовским подходом не слишком сильно вас раздражаю.
Строку из отладчика вытащил, кстати, поставив breakpoint в самом начале процедуры "ТоварыНоменклатураПриИзменении", буду сравнивать. Собственно, именно эта процедура и заполняет все необходимые поля при ручном изменении поля Номенклатура. Но она не запускается при заполнении ТЧ из обработчика. Возможно, это потому что ТЧ я заполняю на сервере и потом на клиенте копирую данные:
ОбъектДляЗаполнения = ВыполнитьЗаполнениеНаСервере(ОбъектДляЗаполнения);
КопироватьДанныеФормы(ОбъектДляЗаполнения, ВладелецФормы.Объект);

Попробую ее принудительно запустить на клиенте после этого.
10. VmvLer 30.08.19 11:27 Сейчас в теме
(9) может не взлететь, т.к. на форме( в ТЧ) разработчики любят вставлять колонки которые живут только на форме.

и о чудо - эти искусственные колонки участвуют в методах общих модулей пересчета и перезаполнения строки при изменении какой-либо колонки в ней.

подозреваю, что так сделано в целях троллинга новичков, чтобы они сдались сразу.
просто я не нашел иного объяснения подобной логики.
11. Seraph6 30.08.19 11:56 Сейчас в теме
(10) Да, вы правы, сходу не получается, пишет, что метод не обнаружен. Беглый поиск по коду показывает, что эта процедура запускается событием формы, а не из кода.
Зато сравнение в Экселе по вашему методу помогло обнаружить недостающую колонку, которая мешала сразу (до записи) показывать характеристику. Попробую, в конце концов и остальные значимые колонки заполнить из кода.
В любом случае спасибо за пинок в верном направлении. :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот