Максимальная длина строкового реквизита 1С: Предприятия 8
1С 1С:Предприятие 8 формат числа реквизиты длина строки метаданные
Как узнать длину строкового реквизита, указанную в конфигураторе, на примере дополнения числа ведущими нулями.
Поводом для заметки послужила проблема импорта приходной накладной из файла Excel, где связь между номенклатурой осуществлялась по некоему "коду поставщика", представляющему собой заданное количество цифр (в данном случае 6). Оказалось, что при импорте ведущие нули отбрасываются и код форматируется в стандартный числовой формат, включая разделитель тысяч (например "12 345"). А в реквизите, разумеется, код хранится как положено - 012345, в итоге номенклатура не сопоставлялась.
Несмотря на то, что вроде как можно было бы в коде (программном) просто использовать известную нам длину (6), я решил все же сделать более универсально и эту самую длину получать из метаданных - дело в том, что ранее, например, использовался 5-тизначный код. Так что нет гарантий, что через некоторое время он не станет, например, 7-значным. Итак, для того, чтобы узнать максимальную длину реквизита КодПоставщика справочника Номенклатура необходимо воспользоваться такой достаточно громоздкой конструкцией:
КодПоставщикаРеквизит = Метаданные.Справочники.Номенклатура.Реквизиты.КодПоставщика; ДлинаКодаПоставщика = КодПоставщикаРеквизит.Тип.КвалификаторыСтроки.Длина;
Дальше остается переформатировать код поставщика, полученный из Excel:
КПExcel = Число(СокрЛП(Лист.Cells(НомерСтроки, НомерСтолбца).Value)); КодПоставщика = Формат(КПExcel, "ЧЦ=" + ДлинаКодаПоставщика + "; ЧВН=; ЧГ=0");
Форматная строка говорит нам о том, что длина у нас равна длине реквизита, будем использовать ведущие нули, а разделитель групп отсутствует. Переменная Лист - OLE-объект текущего листа Excel.
Вот такие немного вычурные и не вполне очевидные конструкции.
Категория: Программирование, веб | Опубликовано 12.01.2012 | Редакция от 29.01.2017
Похожие материалы
1С Управление торговлей 10.3. Ошибка при печати этикеток: V8 - не хватает памяти
Очень простое решение неочевидной проблемы с нехваткой памяти при печати этикеток. В моем случае - 1С: Предприятие 8.1, Управление торговлей 10.3, Windows 7 (или 8) x64, принтер этикеток Godex EZ-DT-2.
Проверка типа ссылки в запросах 1С: Предприятия 8
Очередная краткая заметка по не вполне очевидному оператору языка запросов 1С: Предприятия 8.
Особенности распределения Комплексной конфигурации 4.5 (для 1С 7.7)
В этой заметке предлагается способ избежать длительной первичной синхронизации Комплексной конфигурации после ее преобразования в распределенную (во всяком случае, это наблюдалось в релизе 7.70.459).
Позиционирование табличного поля в 1С: Предприятии 8
Рассматривается случай, когда после заполнения табличного поля нужно было выбрать определенную строку.
Таймер в 1С: Предприятии 8
Как выполнить какой-либо программный код спустя определенное время (разово), либо регулярно через определенные промежутки времени.