Пятница, 29.03.2024. 15:09 | RSS
 Приветствуем Вас, Гость! Регистрация | Вход с параметрами
Меню сайта
Категории каталога
Обзоры оборудования [44]
Обзоры различного оборудования, побывавшего в руках автора сайта: ноутбуки, винчестеры, мониторы, материнские платы, видеокарты и др.
Тестирование [7]
Отчасти перекликается с обзорами оборудования, однако здесь сделан упор именно на тестирование в каких-либо бенчмарках
Практика апгрейда [9]
Статьи, посвященные вопросам апгрейда компьютера. Примеры конфигураций, оценка стоимости
Решение проблем [5]
Рассматриваются различные мелкие и не очень проблемы и их возможные варианты решения
Обзоры софта [6]
Обзоры программного обеспечения: антивирусы, браузеры, утилиты и др.
Игры [37]
Обзоры игр, советы по прохождению
Программирование, 1С [13]
Освещаются вопросы по программированию, в немалой степени - на платформе 1С: Предприятия
Цифровое фото, видео [5]
Выделенный раздел, посвященным цифровым фотоаппаратам и видеокамерам
Вход на сайт
Параллельные проекты
Друзья сайта
Статистика

Околокомпьютерный сайт Дмитрия Косолапова
Главная » Статьи » Программирование, 1С

Максимальная длина строкового реквизита 1С: Предприятия 8

Как узнать длину строкового реквизита, указанную в конфигураторе, на примере дополнения числа ведущими нулями.

Поводом для заметки послужила проблема импорта приходной накладной из файла Excel, где связь между номенклатурой осуществлялась по некоему "коду поставщика", представляющий собой заданное количество цифр (в данном случае 6). Оказалось, что при импорте ведущие нули отбрасываются и код форматируется в стандартный числовой формат, включая разделитель тысяч (например "12 345"). А в реквизите, разумеется, код хранится как положено - 012345, в итоге номенклатура не сопоставлялась.

Несмотря на то, что вроде как можно было бы в коде (программном) просто использовать известную нам длину (6), я решил все же сделать более универсально и эту самую длину получать из метаданных - дело в том, что ранее, например, использовался 5-тизначный код. Так что нет гарантий, что через некоторое время он не станет, например, 7-значным. Итак, для того, чтобы узнать максимальную длину реквизита КодПоставщика справочника Номенклатура необходимо воспользоваться такой достаточно громоздкой конструкцией:

Code
ДлинаКодаПоставщика = Метаданные.Справочники.Номенклатура.Реквизиты.КодПоставщика.Тип.КвалификаторыСтроки.Длина;

Дальше остается переформатировать код поставщика, полученный из Excel:

Code
КодПоставщика = Формат(Число(СокрЛП(Лист.Cells(НомерСтроки, НомерСтолбца).Value)), "ЧЦ=" + ДлинаКодаПоставщика + "; ЧВН=; ЧГ=0");

Форматная строка говорит нам о том, что длина у нас равна длине реквизита, будем использовать ведущие нули, а разделитель групп отсутствует. Переменная Лист - OLE-объект текущего листа Excel.

Вот такие немного вычурные и не вполне очевидные конструкции.

Категория: Программирование, 1С | Добавил: Vetkhy (12.01.2012) | Автор: Дмитрий Косолапов | Просмотров: 5939

Метки: формат числа, реквизиты, 1С: Предприятие 8, , длина строки, Метаданные

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Сайт управляется системой uCozДмитрий Косолапов © 2007-2024