В Табличную Часть не выгружается только одно из значений, в чем может быть дело?

1. user1839716 10.07.23 10:54 Сейчас в теме
Всем добрый день. Буду очень благодарен за помощь, ибо я зашел в какой-то тупик...
Итак, в чем суть: есть справочник Ресурсные Спецификации (РС), табличную часть которого можно заполнять с помощью выгрузки данных из Excel-файла.
В целом все просто замечательно, код типовой, но есть нюанс. Есть колонка в ТЧ с названием "Статья калькуляции", тип данных - элементы соответствующего справочника. И я пробовал разные элементы (значения) вносить в сам Excel-файл - он их выгружает в ТЧ РС за исключением одного из элементов. Я проверял название, я копировал его из самого справочника Статьи калькуляции - ничего: именно это одно значение не записывается в ТЧ. Другие элементы этого справочника попадают в РС, а один из них - нет. Причем я смотрел через отладчик: на этапе выгрузки данных из самого файла все статьи калькуляции записываются в создаваемую таблицу значений, но оттуда только один элемент не попадает в ТЧ РС. Почему так - я вообще не понимаю, от слова совсем. Пробовал также составлять запрос в консоли, чтобы попытаться вытащить нужную мне ссылку на этот элемент по его названию, копируя его из файла - все работает, то есть, проблема не в его наименовании.
Насколько я понял, это произошло именно после одного из обновлений от 1С - на копии старой базы, к слову, такой проблемы нет.

Вообще не знаю, куда копать, это очень странно. Возможно, все очень просто по факту, но я, аки слепой котенок, не вижу этого. Буду очень признателен за помощь...
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
7. nomad_irk 76 10.07.23 11:22 Сейчас в теме
(5) Что происходит внутри
ПриВводеНовойСтрокиСпецификации()

?
Что происходит в "ПередЗаписью" элемента справочника?
24. user1839716 10.07.23 14:06 Сейчас в теме
(7) Видимо, у меня уже совсем мозги поплыли от этой работы, но после перезагрузки сервера я решил еще раз попробовать отследить каждый шаг цикла и как происходит заполнение в нем - оказалось, что дело действительно в том, что дальше происходит внутри процедуры "ПриВводеНовойСтрокиСпецификации". Там внутри идет одна проверка, которая, как оказалось, в коде более старой базы просто скипается, и именно из-за нее все дальше рушится
В общем, спасибо всем большое за отклик, правда! По наводкам в итоге удалось дойти до сути.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 10.07.23 11:02 Сейчас в теме
(1)после заполнения из файла, вручную можно указать нужную вам статью калькуляции?
3. user1839716 10.07.23 11:05 Сейчас в теме
(2) Да, можно. Проблема в том, что эта статья калькуляции используется в очень многих РС, и пользователей не устраивает, что раньше такой проблемы не было, а теперь им надо где-то руками это дозаполнять...Вот я и пытаюсь выяснить, в чем вообще ошибка
4. nomad_irk 76 10.07.23 11:14 Сейчас в теме
(3)боюсь, что на ваши вопросы ответит только отладка процесса загрузки данных из файла.
Предполагаю, выполняется постобработка строки ТЧ после заполнения из файла и СК "Полуфабрикаты" по какой-то, известной только методологам 1С, просто не может быть использована.
5. user1839716 10.07.23 11:18 Сейчас в теме
(4) Так вот этим я и занимался...Вот этот простой кусок кода, где происходит вся магия - просто используется функция "ЗаполнитьЗначенияСвойств": вот именно на этом этапе происходит стыковка данных из создаваемой ТЗ на основе Excel-файла и ТЧ РС - как тут можно что-то еще глубже отследить..? Я бы и с радостью даже, но как...

ЗагруженныеДанные = ПолучитьИзВременногоХранилища(АдресЗагруженныхДанных); //ТаблицаЗначений
	
	ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
	
	ТабличнаяЧасть = Объект[ИмяТЧ];// ТабличнаяЧасть
	ТабличнаяЧасть.Очистить();
	                            
	Для Каждого Строка Из ЗагруженныеДанные Цикл
		
		НоваяСтрока = ТабличнаяЧасть.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
		
		НоваяСтрока.ЭтапРедактированиеПредставление = Строка.Этап;
		НоваяСтрока.ЭтапРедактирование               = Строка.Этап;
		
		//++ НЕ УТКА
		НоваяСтрока.ОперацияРедактированиеПредставление = Строка.Операция;
		НоваяСтрока.ОперацияРедактирование              = Строка.Операция;
		//-- НЕ УТКА
		
		НоваяСтрока.ЭлементПроизводственногоПроцессаПредставление = ПредставлениеЭлементаПроизводтвенногоПроцесса(НоваяСтрока);
		
		ПриВводеНовойСтрокиСпецификации(ЭтотОбъект, ИмяТЧ, НоваяСтрока);
		
	КонецЦикла;
Показать
7. nomad_irk 76 10.07.23 11:22 Сейчас в теме
(5) Что происходит внутри
ПриВводеНовойСтрокиСпецификации()

?
Что происходит в "ПередЗаписью" элемента справочника?
9. user1839716 10.07.23 11:36 Сейчас в теме
(7) Если честно, я не думаю, что это сильно важно, так как я отслеживал по отладчику каждый шаг в рамках вот этого цикла. И вот есть у нас Таблица значений "ЗагруженныеДанные", где прочитаны все статьи калькуляции. Я также смотрю в содержание заполняемой ТЧ РС через табло значений - до процедуры "ЗаполнитьЗначенияСвойств" - строка пуста, после ее выполнения - строка заполняется, и только в случае полуфабрикатов это поле остается пустым...то есть, если какое-то программное ограничение и есть, то, мне кажется, оно должно быть где-то этого момента или вообще вне кода загрузки файла, разве нет?
Ну и, более того, саму процедуру "ПриВводеНовойСтрокиСпецификации()" я посмотрел и дошел в итоге до следующего кода. И так как в ДанныеСтроки еще до этого не попадает нужная статья калькуляции, то есть, там пустота, то в проверке условия срабатывает "Иначе"

Процедура ЗаполнитьСтатьюКалькуляцииПоУмолчанию(ДанныеСтроки)
	
	Если УправлениеДаннымиОбИзделияхКлиентСервер.ПолуфабрикатПроизводимыйВПроцессе(ДанныеСтроки) Тогда
		
		ДанныеСтроки.СтатьяКалькуляции = ПредопределенноеЗначение("Справочник.СтатьиКалькуляции.ПолуфабрикатыПроизводимыеВПроцессе");
		
	Иначе
		
		ДанныеСтроки.СтатьяКалькуляции = ПредопределенноеЗначение("Справочник.СтатьиКалькуляции.ПустаяСсылка");
		
	КонецЕсли;

КонецПроцедуры
Показать
11. nomad_irk 76 10.07.23 11:43 Сейчас в теме
(9)
только в случае полуфабрикатов это поле остается пустым...то есть, если какое-то программное ограничение и есть, то, мне кажется, оно должно быть где-то этого момента или вообще вне кода загрузки файла, разве нет?


Значит нужно подняться чуть выше и разобраться как именно формируется ТЗ "ЗагруженныеДанные" и почему в ней СК пустое, хотя в файле данные есть.
13. user1839716 10.07.23 11:45 Сейчас в теме
(11) я же говорю, в саму ТЗ "ЗагруженныеДанные" все статьи калькуляции попадают, тут проблем нет - все, как и в файле. А вот при выгрузке этих полученных данных в ТЧ РС возникает этот самый нюанс, что одна из статей не заносится туда
22. nomad_irk 76 10.07.23 12:29 Сейчас в теме
(13)хорошо. Если попробовать добавить в ТЗ "ЗагруженныеДанные" колонку "СпособПолученияМатериала" и заполнить ее значениями "ПроизводитсяНаЭтапе"/"ПроизвестиПоСпецификации" или в настройках загрузки данных задать значение жестко, проблема с СК "Полуфабрикаты" решится?
19. spacecraft 10.07.23 12:12 Сейчас в теме
(9)
строка заполняется, и только в случае полуфабрикатов это поле остается пустым...

еще можно проверить на соответствие типов.
24. user1839716 10.07.23 14:06 Сейчас в теме
(7) Видимо, у меня уже совсем мозги поплыли от этой работы, но после перезагрузки сервера я решил еще раз попробовать отследить каждый шаг цикла и как происходит заполнение в нем - оказалось, что дело действительно в том, что дальше происходит внутри процедуры "ПриВводеНовойСтрокиСпецификации". Там внутри идет одна проверка, которая, как оказалось, в коде более старой базы просто скипается, и именно из-за нее все дальше рушится
В общем, спасибо всем большое за отклик, правда! По наводкам в итоге удалось дойти до сути.
6. user1839716 10.07.23 11:21 Сейчас в теме
(4) Спасибо за наводку в любом случае, эх. Возможно, дело действительно в каких-то ограничениях в совсем других местах кода, не связанных непосредственно с загрузкой данных из файла, однако, что странно - вручную-то эта статья калькуляции может быть использована, никаких ошибок при заполнении вручную, при записи не возникает
8. spacecraft 10.07.23 11:32 Сейчас в теме
(6)
вручную-то эта статья калькуляции может быть использована, никаких ошибок при заполнении вручную, при записи не возникает

Посмотреть, что в обработчике ПриИзменении для этого поля таблицы. Возможно заполняются служебные поля, которые в коде не заполнены.
10. user1839716 10.07.23 11:39 Сейчас в теме
(8) Идея хорошая, но я сейчас посмотрел - ни для этого поля, ни для всей ТЧ в целом не создано такой процедуры...
12. spacecraft 10.07.23 11:44 Сейчас в теме
(10) не создано в конфигураторе на форме?
Программно тоже проверяли?
Добавить команду для проверки.
Сообщить(Элементы.ИмяНужногоЭлементаТаблицы.ПолучитьДействие("ПриИзменении"));
14. user1839716 10.07.23 11:53 Сейчас в теме
(12) Именно, не создано...Плюс просто пытался найти поиском по всему коду в модуле формы по фразе "ПриИзменении" - дня нужного мне поля ничего не нашел:(
Прикрепленные файлы:
15. spacecraft 10.07.23 12:00 Сейчас в теме
(14) действия могут быть установлены и программно.
16. user1839716 10.07.23 12:04 Сейчас в теме
(15) но если бы было так - почему эти действия не срабатывают, когда вручную вносятся все те же значения? Никаких ограничений, ошибок - ничего не происходит. Пользователь спокойно может добавить эту статью калькуляций вручную, записать элемент справочника - и все, все будет хорошо...
18. spacecraft 10.07.23 12:10 Сейчас в теме
(16) не видя кода и самой базы, трудно что-либо конкретное обсуждать. Как раз может быть из-за того, что при вводе пользователем, обработчик срабатывает и что-то дополнительное заполняет, что при программном заполнении не заполняется.
21. user1839716 10.07.23 12:27 Сейчас в теме
(18) да, прошу прощения, я немного не в то русло начал думать, эх. Попробую тогда поискать получше, есть ли такой момент в коде вообще. Спасибо за отклик в любом случае
17. user654641_yaga_m 12 10.07.23 12:09 Сейчас в теме
(1)ДД, а если использовать "обходной маневр" - заполнять строки не процедурой "ЗаполнитьЗначенияСвойств", а по-старинке - поэлементно. Или хотя бы "поверху" для статьи калькуляции! Интересно, что в этом случае заполняет (я имею ввиду Справочники.... НайтиПоИменованию)
25. user1839716 10.07.23 14:08 Сейчас в теме
(17) Спасибо за идею, вот на крайний случай как раз уже тоже думал подобный костыль использовать - просто значения по условию перезаписывать, а, оказалось, все действительно было очень просто, хоть и очень неочевидно
23. Swetlana 25 10.07.23 13:15 Сейчас в теме
(1) Вы не описали - как именно вы загружаете данные из файла
Увидела что вы выгружаете предварительно в ТЗ и в этой таблице все данные имеются. Ну а дальше как идет запись данных в ТЧ справочника?
26. user1839716 10.07.23 14:09 Сейчас в теме
(23) Там чуть выше был отрывок кода, где все это происходит, но это неважно, в любом случае я уже докопался до сути. Большое спасибо за отклик
20. usershmuser 10.07.23 12:25 Сейчас в теме
В файле Excel лишних пробелов нет (или в справочнике)? Все символы введены одной раскладкой клавиатуры?
При копировании из excel ячейки в 1с к тексту прилипает дополнительный символ
27. user1839716 10.07.23 14:11 Сейчас в теме
(20) Нет, дело было точно не в данных файла и не в их считывании, этот вариант еще сразу отсеялся после того, как я во время отладки смотрел, что попадает в таблицу значений из файла. Проблема была чуть дальше, и я наконец ее увидел. Благодарю вас за попытку разобраться в ситуации
Оставьте свое сообщение

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