|
|
|
Общий модуль | ☑ | ||
|---|---|---|---|---|
|
0
ДобрыйПутник
28.03.25
✎
12:19
|
Здравствуйте, подскажите, сделал процедуру в общем модуле по заполнению ТЧ товаров, вызываю ее с сервера и передаю в нее Объект.Товары, там заполняю, но выдает ошибку -
[ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Нельзя изменять поле, содержащее объект данных формы [ОшибкаИспользованияВстроенногоЯзыка] &НаКлиенте Процедура ITS_РДЗаполнитьОстаткамиСкладаПосле(Команда) Если ЗначениеЗаполнено(Объект.СкладОтправитель) Тогда Если Объект.Товары.Количество() > 0 Тогда Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект); ПоказатьВопрос(Оповещение, "Очистить табличную часть товары?", РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Да, "Вы уверены?"); Иначе ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары); КонецЕсли; Иначе ОбщегоНазначенияКлиент.СообщитьПользователю("Поле ""Склад-отправитель"" не заполненно",,"Объект.СкладОтправитель",,Истина); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Объект.Товары.Очистить(); ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары); КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Склад, ТЧ) СкладыСервер.ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ); КонецПроцедуры ОбщийМодуль - Процедура ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | ТоварыНаСкладахОстатки.Склад КАК Склад, | ТоварыНаСкладахОстатки.Серия КАК Серия, | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток, | ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток, | ТоварыНаСкладахОстатки.ВНаличииОстаток - ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК ФактОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки | |УПОРЯДОЧИТЬ ПО | Номенклатура"; Запрос.УстановитьПараметр("Склад", Склад); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если НЕ Выборка.Количество() = 0 Тогда Пока Выборка.Следующий() Цикл Если Выборка.ФактОстаток > 0 Тогда Строка = ТЧ.Добавить(); Строка.Номенклатура = Выборка.Номенклатура; Строка.КоличествоУпаковок = Выборка.ФактОстаток; Строка.Количество = Выборка.ФактОстаток; Строка.ТипНоменклатуры = Выборка.ТипНоменклатуры; Если НЕ Выборка.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда Строка.СтатусУказанияСерий = 10; Строка.Серия = Выборка.Серия; КонецЕсли; КонецЕсли; КонецЦикла; Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю("На складе " + Склад + " нету остатков",,,,Истина); КонецЕсли; КонецПроцедуры |
|||
|
1
Pprog151713
28.03.25
✎
12:25
|
ТЧ должно быть не данные формы ТЧ, а Объект тч.
|
|||
|
2
ДобрыйПутник
28.03.25
✎
12:29
|
(1) А я и передаю же объект.тч
|
|||
|
3
Fedor-1971
28.03.25
✎
12:43
|
(2) Ты передаёшь коллекцию формы, а не ТЧ
|
|||
|
4
Мультук
гуру
28.03.25
✎
12:51
|
(0)
&НаСервере
Процедура ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Склад, ТЧ)
тз = ТЧ.Выгрузить();
СкладыСервер.ЗаполнитьТЧОстаткамиТоваровСклада(Склад, тз);
тч.Загрузить(тз);
КонецПроцедуры
|
|||
|
5
Garykom
гуру
28.03.25
✎
13:07
|
еще есть РеквизитФормыВЗначение и ЗначениеВРеквизитФормы
|
|||
|
6
Мультук
гуру
28.03.25
✎
13:15
|
(5)
Которые имхо, в данном случае, совсем не нужны. |
|||
|
7
Garykom
гуру
28.03.25
✎
13:26
|
(6) не нужны но можно использовать, чтобы получить именно ТЧ объекта а не коллекцию формы
и передать ее в процедуру обработки в общем модуле ТекущийОбъект = РеквизитФормыВЗначение("Объект");
НужнаяТЧ = ТекущийОбъект.ИмяТЧ;
СкладыСервер.ЗаполнитьТЧОстаткамиТоваровСклада(Склад, НужнаяТЧ);
что лучше в конкретном случае хз |
|||
|
8
Мультук
гуру
28.03.25
✎
13:46
|
(7)
Вот зачем ты (я) наступил на мозоль в пятницу :-) Я теперь начал думать, а как же тогда в типовом коде вот эта хрень работает. А она работает: -- передаётся табличная часть -- она таки меняется (цены заполянются) -- правда новые строки не добавляются &НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер()
КолонкиПоЗначению = Новый Структура("Упаковка", Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка());
ДругиеИменаКолонок = Новый Структура("НоменклатураОприходование, ХарактеристикаОприходование", "Номенклатура", "Характеристика");
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("КолонкиПоЗначению", КолонкиПоЗначению);
ПараметрыЗаполнения.Вставить("ДругиеИменаКолонок", ДругиеИменаКолонок);
Возврат ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары, // Табличная часть
, // Выделенные строки (заполнять во всех строках)
ПараметрыЗаполнения);
КонецФункции |
|||
|
9
lubitelxml
28.03.25
✎
14:00
|
(7) я вот тоже привык на УФ именно так делать, а не как в (4) - но в данной ситуации действительно без разницы
|
|||
|
10
ДобрыйПутник
28.03.25
✎
14:58
|
Спасибо
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |