| 0
    
        ДобрыйПутник   naïve 28.03.25✎ 12:19 | 
        Здравствуйте, подскажите, сделал процедуру в общем модуле по заполнению ТЧ товаров, вызываю ее с сервера и передаю в нее Объект.Товары, там заполняю, но выдает ошибку -
 [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
 по причине:
 Нельзя изменять поле, содержащее объект данных формы
 [ОшибкаИспользованияВстроенногоЯзыка]
 
 
 
 &НаКлиенте
 Процедура ITS_РДЗаполнитьОстаткамиСкладаПосле(Команда)
 Если ЗначениеЗаполнено(Объект.СкладОтправитель) Тогда
 Если Объект.Товары.Количество() > 0 Тогда
 Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",
 ЭтотОбъект);
 ПоказатьВопрос(Оповещение, "Очистить табличную часть товары?", РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Да, "Вы уверены?");
 Иначе
 ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары);
 КонецЕсли;
 Иначе
 ОбщегоНазначенияКлиент.СообщитьПользователю("Поле ""Склад-отправитель"" не заполненно",,"Объект.СкладОтправитель",,Истина);
 КонецЕсли;
 КонецПроцедуры
 
 &НаКлиенте
 Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
 Если Результат = КодВозвратаДиалога.Да Тогда
 Объект.Товары.Очистить();
 ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары);
 КонецЕсли;
 КонецПроцедуры
 
 &НаСервере
 Процедура ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Склад, ТЧ)
 СкладыСервер.ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ);
 КонецПроцедуры
 
 
 ОбщийМодуль -
 
 Процедура ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ) Экспорт
 Запрос = Новый Запрос;
 Запрос.Текст = "ВЫБРАТЬ
 |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
 |    ТоварыНаСкладахОстатки.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
 |    ТоварыНаСкладахОстатки.Склад КАК Склад,
 |    ТоварыНаСкладахОстатки.Серия КАК Серия,
 |    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
 |    ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток,
 |    ТоварыНаСкладахОстатки.ВНаличииОстаток - ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК ФактОстаток
 |ИЗ
 |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
 |
 |УПОРЯДОЧИТЬ ПО
 |    Номенклатура";
 
 Запрос.УстановитьПараметр("Склад", Склад);
 Результат = Запрос.Выполнить();
 Выборка = Результат.Выбрать();
 Если НЕ Выборка.Количество() = 0 Тогда
 Пока Выборка.Следующий() Цикл
 Если Выборка.ФактОстаток > 0 Тогда
 Строка = ТЧ.Добавить();
 Строка.Номенклатура = Выборка.Номенклатура;
 Строка.КоличествоУпаковок = Выборка.ФактОстаток;
 Строка.Количество = Выборка.ФактОстаток;
 Строка.ТипНоменклатуры = Выборка.ТипНоменклатуры;
 Если НЕ Выборка.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
 Строка.СтатусУказанияСерий = 10;
 Строка.Серия = Выборка.Серия;
 КонецЕсли;
 КонецЕсли;
 КонецЦикла;
 Иначе
 ОбщегоНазначенияКлиентСервер.СообщитьПользователю("На складе " + Склад + " нету остатков",,,,Истина);
 КонецЕсли;
 КонецПроцедуры
 |  | 
    
        | 8
    
        Мультук   гуру 28.03.25✎ 13:46 | 
        (7) 
 Вот зачем ты (я) наступил на мозоль в пятницу :-)
 Я теперь начал думать, а как же тогда в типовом коде вот эта хрень работает. А она работает:
 -- передаётся табличная часть
 -- она таки меняется (цены заполянются)
 -- правда новые строки не добавляются
 &НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер()
	
	КолонкиПоЗначению = Новый Структура("Упаковка", Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка());
	ДругиеИменаКолонок = Новый Структура("НоменклатураОприходование, ХарактеристикаОприходование", "Номенклатура", "Характеристика");
	
	ПараметрыЗаполнения = Новый Структура;
	ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
	ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
	ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
	ПараметрыЗаполнения.Вставить("КолонкиПоЗначению", КолонкиПоЗначению);
	ПараметрыЗаполнения.Вставить("ДругиеИменаКолонок", ДругиеИменаКолонок);
	
	Возврат ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
		Объект.Товары, // Табличная часть
		 , // Выделенные строки (заполнять во всех строках)
		ПараметрыЗаполнения);
КонецФункции |  |