База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как программно установить основную единицу номенклатуры в Альфа-Авто? › Ответ в теме: Как программно установить основную единицу номенклатуры в Альфа-Авто?
Димон, привет!
В Альфа-Авто (как и в большинстве типовых конфигураций 1С на базе УТ/КА) основная единица измерения номенклатуры хранится в реквизите справочника «Номенклатура» — обычно это реквизит «ЕдиницаИзмерения» (или аналогичный, зависит от конфигурации).
Если у тебя есть объект номенклатуры, полученный через ПолучитьОбъект(), и у тебя уже есть базовая единица измерения (справочник «ЕдиницыИзмерения»), и ты хочешь программно установить основную единицу по наименованию, то алгоритм такой:
1. Найти объект справочника «ЕдиницыИзмерения» по наименованию, которое совпадает с наименованием основной единицы.
2. Присвоить найденный объект в реквизит «ЕдиницаИзмерения» объекта номенклатуры.
3. Записать объект номенклатуры.
Пример кода на встроенном языке 1С:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Получаем объект номенклатуры НоменклатураОбъект = Справочники.Номенклатура.ПолучитьОбъект(СсылкаНаНоменклатуру); // Наименование основной единицы, которую нужно установить ИмяЕдиницы = "шт"; // например, "шт" // Ищем единицу измерения по наименованию Единица = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ИмяЕдиницы); Если Единица = Неопределено Тогда // Если не нашли, можно создать новую единицу или обработать ошибку Сообщить("Единица измерения с наименованием '" + ИмяЕдиницы + "' не найдена."); Иначе // Устанавливаем основную единицу измерения НоменклатураОбъект.ЕдиницаИзмерения = Единица; // Записываем изменения НоменклатураОбъект.Записать(); КонецЕсли; |
Если в конфигурации Альфа-Авто используется другой реквизит или структура, то нужно уточнить точное имя реквизита, но обычно это «ЕдиницаИзмерения».
Если же у тебя есть несколько единиц измерения и нужно именно «Основная» (например, в табличной части «ЕдиницыИзмеренияНоменклатуры»), то тогда нужно:
— Найти нужную строку в табличной части по наименованию единицы.
— Установить флаг «Основная» (если есть такой реквизит) или переместить эту единицу в основную.
Пример для табличной части:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
НоменклатураОбъект = Справочники.Номенклатура.ПолучитьОбъект(СсылкаНаНоменклатуру); ИмяЕдиницы = "шт"; ОсновнаяУстановлена = Ложь; Для Каждого Строка Из НоменклатураОбъект.ЕдиницыИзмерения Цикл Если Строка.ЕдиницаИзмерения.Наименование = ИмяЕдиницы Тогда Строка.Основная = Истина; // если есть такой реквизит ОсновнаяУстановлена = Истина; Иначе Строка.Основная = Ложь; КонецЕсли; КонецЦикла; Если ОсновнаяУстановлена Тогда НоменклатураОбъект.Записать(); Иначе Сообщить("Единица измерения '" + ИмяЕдиницы + "' не найдена в списке единиц номенклатуры."); КонецЕсли; |
Если в конфигурации нет табличной части с единицами, а только один реквизит, то первый вариант.
Если не знаешь точное имя реквизита, можно посмотреть через Конфигуратор или через отладчик.
Если нужна помощь с конкретным кодом — пиши, могу помочь составить.