Как правильно прописать путь к справочнику номенклатура вес
Здравствуйте. У меня в коде есть такое выражение, СуммаОбъема = СуммаОбъема + Строка.Количество * Строка.Вес;, но в последнем Строка.Вес значение через отладчик, показывает 0, хотя в колонке вес указан как 1, я не знаю как подхватить именно нужное значение, поэтому подскажите пожалуйста, как напрямую из справочника подхватить данные, но только с идентификацией товара конечно, а то рандомно будет подтягивать без идентификации. Ссылка поля (колонки Вес) у меня такая, Объект.Товары.Номенклатура.ВесЧислитель
СуммаОбъема = СуммаОбъема + Строка.Количество * ЧТО НАПИСАТЬ ЗДЕСЬ ЧТОБЫ ДАННЫЕ ПОДТЯГИВАЛИСЬ НАПРЯМУЮ СО СПРАВОЧНИКА, ТОЛЬКО УКАЗАННОГО В СТРОКЕ ТОВАРА;
СуммаОбъема = СуммаОбъема + Строка.Количество * ЧТО НАПИСАТЬ ЗДЕСЬ ЧТОБЫ ДАННЫЕ ПОДТЯГИВАЛИСЬ НАПРЯМУЮ СО СПРАВОЧНИКА, ТОЛЬКО УКАЗАННОГО В СТРОКЕ ТОВАРА;
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
разберитесь со структурой таблицы чтобы не было в колонке вес указан 1 а в строке 0
и тогда пишите вместо ЧТО НАПИСАТЬ ЗДЕСЬ ЧТОБЫ ДАННЫЕ ПОДТЯГИВАЛИСЬ НАПРЯМУЮ СО СПРАВОЧНИКА, ТОЛЬКО УКАЗАННОГО В СТРОКЕ ТОВАРА
просто Строка.Вес
вам же должно быть виднее что значит Количество умножить на Вес
в таблице строки должны быть Номенклатура - Колво Номенклатуры строки - Вес Номенклатуры строки
и тогда пишите вместо ЧТО НАПИСАТЬ ЗДЕСЬ ЧТОБЫ ДАННЫЕ ПОДТЯГИВАЛИСЬ НАПРЯМУЮ СО СПРАВОЧНИКА, ТОЛЬКО УКАЗАННОГО В СТРОКЕ ТОВАРА
просто Строка.Вес
вам же должно быть виднее что значит Количество умножить на Вес
в таблице строки должны быть Номенклатура - Колво Номенклатуры строки - Вес Номенклатуры строки
(3)//VID(
Объем1 = 0;
Вес1 = 0;
Для Каждого Строка Из Объект.Товары Цикл
Объем1 = Объем1 + Строка.Количество * Объект.Товары.Номенклатура.ОбъемЧислитель;
Вес1 = Вес1 + Строка.Количество * Строка.Номентклатура.ВесЧислитель / Строка.Номентклатура.ВесЗнаменатель;
КонецЦикла;
ИтогоВес = Элементы.Товары.Итог("ИтогоВес");
ИтогоОбъемс = Элементы.Товары.Итог("ИтогоОбъем");
Объем1 = 0;
Вес1 = 0;
Для Каждого Строка Из Объект.Товары Цикл
Объем1 = Объем1 + Строка.Количество * Объект.Товары.Номенклатура.ОбъемЧислитель;
Вес1 = Вес1 + Строка.Количество * Строка.Номентклатура.ВесЧислитель / Строка.Номентклатура.ВесЗнаменатель;
КонецЦикла;
ИтогоВес = Элементы.Товары.Итог("ИтогоВес");
ИтогоОбъемс = Элементы.Товары.Итог("ИтогоОбъем");
(7) Что это вообще за код такой??
Обращение к коллекции без индекса, это должно ошибку выдавать
Наверное имелось ввиду
и да, так лучше не делать, если есть необходимость получить реквизит через точку, то для этого в типовых конфигурациях есть функция
Объект.Товары.Номенклатура.ОбъемЧислитель
Обращение к коллекции без индекса, это должно ошибку выдавать
Наверное имелось ввиду
Объем1 = Объем1 + Строка.Количество * Строка.Номенклатура.ОбъемЧислитель;
и да, так лучше не делать, если есть необходимость получить реквизит через точку, то для этого в типовых конфигурациях есть функция
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяРеквизита")
(10) А что здесь непонятно? Этот метод подходит для однократной операции, в вашем же случае нужно сначала получить все необходимые данные для расчета запросом (можно и в самом запросе все расчитать) и потом уже обходить полученную коллекцию, чтобы полностью избежать операций через точку в цикле
(11) Подскажите еще, создаю условное оформление на эти созданные колонки, а именно меняю фон при отсутствии значения, но ничего не происходит, почему. Объясните.
Само оформление стоит галочка на Цвет Фона - выбран красный цвет, в условии левое значение - Объект-Товары-Вес, вид сравнения Не заполнено - правое значение не заполняется (пробовал меньше или равно 0), оформляемые поля ТоварОбъем (пробовал полностью таблицу товары), обновляю конфигурацию, но ничего не меняется
Само оформление стоит галочка на Цвет Фона - выбран красный цвет, в условии левое значение - Объект-Товары-Вес, вид сравнения Не заполнено - правое значение не заполняется (пробовал меньше или равно 0), оформляемые поля ТоварОбъем (пробовал полностью таблицу товары), обновляю конфигурацию, но ничего не меняется
В ПриОткрытии нет ничего подомного, нашел эту процедуру, но как добавить, в эту процедуру мое условие
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
// Условное оформление обеспечения.
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление,"ДатаОтгрузки", "ДатаОтгрузки", "", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыДатаОтгрузки", "ДатаОтгрузки", "Товары", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыСклад", "Склад", "Товары", "СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Склад", "", "СкладОбязателен");
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовКлиентов.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьРучныеСкидкиВПродажах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
//
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма);
//
Ценообразование.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
//
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
//
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
//
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
//
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
//
Ценообразование.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);
//
НоменклатураСервер.УстановитьУсловноеОформлениеСодержания(ЭтаФорма);
//
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотной Тарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
//
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
//
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Приоритеты.Ссылка КАК Приоритет,
| Приоритеты.Цвет КАК Цвет
|ИЗ
| Справочник.Приоритеты КАК Приоритеты");
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Приоритет.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Выборка.Приоритет;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Выборка.Цвет.Получить());
КонецЦикла;
КонецЕсли;
//
НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "Товары");
//
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.Товары,
Элементы.ТоварыОтменено.Имя,
Элементы.ТоварыПричинаОтмены.Имя,
Элементы.ТоварыЦена.Имя,
Элементы.ТоварыСумма.Имя);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот