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