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

Вообще не знаю, куда копать, это очень странно. Возможно, все очень просто по факту, но я, аки слепой котенок, не вижу этого. Буду очень признателен за помощь...
---
Что происходит внутри

```1c
    ПриВводеНовойСтрокиСпецификации()
```

?
Что происходит в "ПередЗаписью" элемента справочника?
---
Видимо, у меня уже совсем мозги поплыли от этой работы, но после перезагрузки сервера я решил еще раз попробовать отследить каждый шаг цикла и как происходит заполнение в нем - оказалось, что дело действительно в том, что дальше происходит внутри процедуры "ПриВводеНовойСтрокиСпецификации". Там внутри идет одна проверка, которая, как оказалось, в коде более старой базы просто скипается, и именно из-за нее все дальше рушится
В общем, спасибо всем большое за отклик, правда! По наводкам в итоге удалось дойти до сути.
---
после заполнения из файла, вручную можно указать нужную вам статью калькуляции?
---
Да, можно. Проблема в том, что эта статья калькуляции используется в очень многих РС, и пользователей не устраивает, что раньше такой проблемы не было, а теперь им надо где-то руками это дозаполнять...Вот я и пытаюсь выяснить, в чем вообще ошибка
---
боюсь, что на ваши вопросы ответит только отладка процесса загрузки данных из файла.
Предполагаю, выполняется постобработка строки ТЧ после заполнения из файла и СК "Полуфабрикаты" по какой-то, известной только методологам 1С, просто не может быть использована.
---
Так вот этим я и занимался...Вот этот простой кусок кода, где происходит вся магия - просто используется функция "ЗаполнитьЗначенияСвойств": вот именно на этом этапе происходит стыковка данных из создаваемой ТЗ на основе Excel-файла и ТЧ РС - как тут можно что-то еще глубже отследить..? Я бы и с радостью даже, но как...

```1c
    ЗагруженныеДанные = ПолучитьИзВременногоХранилища(АдресЗагруженныхДанных); //ТаблицаЗначений

    ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;

    ТабличнаяЧасть = Объект[ИмяТЧ];// ТабличнаяЧасть
    ТабличнаяЧасть.Очистить();

    Для Каждого Строка Из ЗагруженныеДанные Цикл

    НоваяСтрока = ТабличнаяЧасть.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);

    НоваяСтрока.ЭтапРедактированиеПредставление = Строка.Этап;
    НоваяСтрока.ЭтапРедактирование = Строка.Этап;

    //++ НЕ УТКА
    НоваяСтрока.ОперацияРедактированиеПредставление = Строка.Операция;
    НоваяСтрока.ОперацияРедактирование = Строка.Операция;
    //-- НЕ УТКА

    НоваяСтрока.ЭлементПроизводственногоПроцессаПредставление = ПредставлениеЭлементаПроизводтвенногоПроцесса(НоваяСтрока);

    ПриВводеНовойСтрокиСпецификации(ЭтотОбъект, ИмяТЧ, НоваяСтрока);

    КонецЦикла;
```
---
Что происходит внутри

```1c
    ПриВводеНовойСтрокиСпецификации()
```

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

```1c
    Процедура ЗаполнитьСтатьюКалькуляцииПоУмолчанию(ДанныеСтроки)

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

    ДанныеСтроки.СтатьяКалькуляции = ПредопределенноеЗначение("Справочник.СтатьиКалькуляции.ПолуфабрикатыПроизводимыеВПроцессе");

    Иначе

    ДанныеСтроки.СтатьяКалькуляции = ПредопределенноеЗначение("Справочник.СтатьиКалькуляции.ПустаяСсылка");

    КонецЕсли;

    КонецПроцедуры
```
---
только в случае полуфабрикатов это поле остается пустым...то есть, если какое-то программное ограничение и есть, то, мне кажется, оно должно быть где-то этого момента или вообще вне кода загрузки файла, разве нет?

Значит нужно подняться чуть выше и разобраться как именно формируется ТЗ "ЗагруженныеДанные" и почему в ней СК пустое, хотя в файле данные есть.
---
я же говорю, в саму ТЗ "ЗагруженныеДанные" все статьи калькуляции попадают, тут проблем нет - все, как и в файле. А вот при выгрузке этих полученных данных в ТЧ РС возникает этот самый нюанс, что одна из статей не заносится туда
---
хорошо. Если попробовать добавить в ТЗ "ЗагруженныеДанные" колонку "СпособПолученияМатериала" и заполнить ее значениями "ПроизводитсяНаЭтапе"/"ПроизвестиПоСпецификации" или в настройках загрузки данных задать значение жестко, проблема с СК "Полуфабрикаты" решится?
---
строка заполняется, и только в случае полуфабрикатов это поле остается пустым...
еще можно проверить на соответствие типов.
---
Видимо, у меня уже совсем мозги поплыли от этой работы, но после перезагрузки сервера я решил еще раз попробовать отследить каждый шаг цикла и как происходит заполнение в нем - оказалось, что дело действительно в том, что дальше происходит внутри процедуры "ПриВводеНовойСтрокиСпецификации". Там внутри идет одна проверка, которая, как оказалось, в коде более старой базы просто скипается, и именно из-за нее все дальше рушится
В общем, спасибо всем большое за отклик, правда! По наводкам в итоге удалось дойти до сути.
---
Спасибо за наводку в любом случае, эх. Возможно, дело действительно в каких-то ограничениях в совсем других местах кода, не связанных непосредственно с загрузкой данных из файла, однако, что странно - вручную-то эта статья калькуляции может быть использована, никаких ошибок при заполнении вручную, при записи не возникает
---
вручную-то эта статья калькуляции может быть использована, никаких ошибок при заполнении вручную, при записи не возникает
Посмотреть, что в обработчике ПриИзменении для этого поля таблицы. Возможно заполняются служебные поля, которые в коде не заполнены.
---
Идея хорошая, но я сейчас посмотрел - ни для этого поля, ни для всей ТЧ в целом не создано такой процедуры...
---
не создано в конфигураторе на форме?
Программно тоже проверяли?
Добавить команду для проверки.

```1c
    Сообщить(Элементы.ИмяНужногоЭлементаТаблицы.ПолучитьДействие("ПриИзменении"));
```
---
Именно, не создано...Плюс просто пытался найти поиском по всему коду в модуле формы по фразе "ПриИзменении" - дня нужного мне поля ничего не нашел:(
---
действия могут быть установлены и программно.
---
но если бы было так - почему эти действия не срабатывают, когда вручную вносятся все те же значения? Никаких ограничений, ошибок - ничего не происходит. Пользователь спокойно может добавить эту статью калькуляций вручную, записать элемент справочника - и все, все будет хорошо...
---
не видя кода и самой базы, трудно что-либо конкретное обсуждать. Как раз может быть из-за того, что при вводе пользователем, обработчик срабатывает и что-то дополнительное заполняет, что при программном заполнении не заполняется.
---
да, прошу прощения, я немного не в то русло начал думать, эх. Попробую тогда поискать получше, есть ли такой момент в коде вообще. Спасибо за отклик в любом случае
---
ДД, а если использовать "обходной маневр" - заполнять строки не процедурой "ЗаполнитьЗначенияСвойств", а по-старинке - поэлементно. Или хотя бы "поверху" для статьи калькуляции! Интересно, что в этом случае заполняет (я имею ввиду Справочники.... НайтиПоИменованию)
---
Спасибо за идею, вот на крайний случай как раз уже тоже думал подобный костыль использовать - просто значения по условию перезаписывать, а, оказалось, все действительно было очень просто, хоть и очень неочевидно
---
Вы не описали - как именно вы загружаете данные из файла
Увидела что вы выгружаете предварительно в ТЗ и в этой таблице все данные имеются. Ну а дальше как идет запись данных в ТЧ справочника?
---
Там чуть выше был отрывок кода, где все это происходит, но это неважно, в любом случае я уже докопался до сути. Большое спасибо за отклик
---
В файле Excel лишних пробелов нет (или в справочнике)? Все символы введены одной раскладкой клавиатуры?
При копировании из excel ячейки в 1с к тексту прилипает дополнительный символ
---
Нет, дело было точно не в данных файла и не в их считывании, этот вариант еще сразу отсеялся после того, как я во время отладки смотрел, что попадает в таблицу значений из файла. Проблема была чуть дальше, и я наконец ее увидел. Благодарю вас за попытку разобраться в ситуации