helpf.pro
Регистрация

v8.2 УП: Помогите разобраться новичку

Harry74
12.09.2014 23:56Прочитано: 5449

Объясню как смогу, что есть и что нужно. 

1с 8.3 УТ редакция 3.1, управляем. форма. Все перечисленное там по умолчанию уже создано . Есть Документ Заказ Клиента, Табличная Часть Товары, в ней есть реквизиты Номенклатура, Количество и т.д, есть элементы формы ТоварыНоменклатура, ТоварыКоличество и т.д. В поле ТЧ есть колонки Номенклатура, Количество и т.д. Но они просто колонки, НЕ колонки реквизитов ТЧ . Задача: 1. Добавить колонку Вес, чтоб в каждой строке отображался вес товара, если к примеру Ступица переднего колеса 1 шт весит 2 кг, а в документе их 5 шт, в колонке Вес должно быть 10 кг, и так далее по списку. 2. Внизу формы в отдельном поле вывести общий вес по документу ( с этим проблем думаю не будет)Надо дописать код в процедуры ПриОткрытии, ТоварыКоличествоУпаковокПриИзменении, ТоварыНоменклатураПриИзменении, думаю что смогу их завязать между собойВопрос : 1. Создавать реквизит Табличной части "Вес" и создать колонку реквизита "Вес", или достаточно просто создать колонку реквизита ?2. Данные по весу брать из Справочники Номенклатура Вес создавать запрос ? ( Я не создавал запрос потому что если создать реквизит ТЧ Вес и перетянуть его на форму, создастся элемент формы ТоварыВес, и если в палитре свойств указать путь к данным Объект.Товары.Номенклатура.Вес ( вместо автоматически подставляемых Объект.Товары.Вес), то при открытии формы в колонке вес будет отображаться вес единицы товара(он заполняется где то в общих модулях в сложных процедурах) Вот я и подумал что можно без запроса это использовать. Но наверное нельзя.). Хотя для опытного программиста здесь делов на 15 минут и пара строчек.Прошу не пинать сильно. Объяснил как смог, матчасть учу, но запутался просто. Ну а может я туповат))

Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
14.09.2014 04:54Ответ № 1

Создаешь в ТЧ колонку вес, далее в При Изменении номенклатуры надо прописать получение веса.

смотри как там получается единица измерения и делай по аналогии

Harry74
19.09.2014 13:25Ответ № 2

В общем наваял я вот что. Оно то работает, но я понимаю что это неправильно. Нельзя с клиента на клиент обращаться. Надо бы общую процедуру отправить на сервер, и вызывать ее с клиента. Но как только начинаю объединять, меняю Элементы на Объект, начинаются ошибки, Поле объекта на найдено (ТекущиеДанные), оно понятно что сервер не может знать Текущие Данные, не знаю как сделать, да по всякому уже пробовал. Может кто подскажет как все таки сделать по уму ?

&НаКлиенте Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)РассчитатьВес();///////////////////// тут дальше много кода не относящегося к весу//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////КонецПроцедуры

&НаКлиентеПроцедура ТоварыНоменклатураПриИзменении(Элемент)РассчитатьВес();///////////////////// тут дальше много кода не относящегося к весу//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////КонецПроцедуры

&НаКлиенте ////// если поменять на Сервер, то засада!!!Процедура РассчитатьВес()ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;Номенклатура = ТекущаяСтрока.Номенклатура;ТекущаяСтрока.Вес = ПолучитьВес(Номенклатура) * ТекущаяСтрока.Количество;Объект.ОбщийВесЗаказа = Объект.Товары.Итог("Вес"); /// с этим проблем нет, это общий вес в отдельное поле выводитсяКонецПроцедуры

&НаСервереФункция ПолучитьВес(Номенклатура) Вес = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура).Вес; Возврат ВесКонецФункции

DJ_Serega
19.09.2014 17:03Ответ № 3

Нужно на клиенте получать идентификатор строки, его передавать на сервер, там искать его в таблице и рассчитывать.

Harry74
19.09.2014 19:21Ответ № 4
  • &НаКлиенте
  • Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
  • ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
  • ИД = Элементы.Товары.ТекущаяСтрока; 
  • РассчитатьВес(ИД);
  • КонецПроцедуры
  • &НаСервере
  • Процедура РассчитатьВес(ИД)
  • ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИД);
  • Номенклатура = ТекущаяСтрока.Номенклатура;
  • ТекущаяСтрока.Вес = Номенклатура.Вес * ТекущаяСтрока.Количество;
  • Объект.ОбщийВесЗаказа = Объект.Товары.Итог("Вес");
  • КонецПроцедуры

Спасибо, вот так все работает !)

DJ_Serega
19.09.2014 21:26Ответ № 5

Прекрасно что работает ;)Тогда можно и закрыть тему ;)

Harry74
20.09.2014 12:22Ответ № 6
Вопрос закрыт!
dinoza
12.01.2017 16:28Ответ № 7
Вопрос закрыт!
dinoza
12.01.2017 16:30Ответ № 8

&НаКлиенте

Процедура КроликиВесПриИзменении(Элемент)

ДанныеТЧ = Элементы.ВзвешиваниеВес.ТекущиеДанные;

Если ДанныеТЧ.Вес <> 0 Тогда

ДанныеТЧ.Привес = ПолучитьПривес(Объект.Дата, ДанныеТЧ.Вес);

Иначе

ДанныеТЧ.Привес = 0;

КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста

Функция ПолучитьПривес(ДатаДокумента, Кролик, Вес)

Запрос = Новый Запрос();

Запрос.Текст = "ВЫБРАТЬ

|ВесКроликовСрезПоследних.Вес

|ИЗ

|РегистрСведений.ВесКроликов.СрезПоследних(&Дата, Кролик =Кролик) КАК ВесКроликовСрезПоследних";

Запрос.Параметры.Вставить("Дата", НачалоДня(ДатаДокумента));

Запрос.Параметры.Вставить("Кролик", Кролик);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Если Выборка.Следующий() Тогда

Привес = Вес - Выборка.Вес;

Возврат Привес;

КонецЕсли;

КонецФункции

Помогите пожалуйста получить привес

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.