|
Общий модуль ДобрыйПутник, obs191, U4Me2, takefive, Дмитрий, Dmitrii, Garykom, Pprog151713, Kongo2019, 1Сергей, dyevgeniy, Prog_man, RomanYS, Мультук, who respawn, RVN, mishaPH, yurikmellon2, Gun47, Волшебник, lubitelxml, Пеленг, Михаил Козлов, Stepashkin, Konst1k, privetik, Homer, Fregat, butterbean, maxab72, sikuda, dchumak, Олдж, GreenDay1986, kir-g, Kudji, vicof, AntiBuh, vbus, DiMel_77, 2S, AlexKimp, alexela, frmdtf1, ads55, Жан Пердежон, Irbis, Vstur, Fedor-1971, bolder, PLUT, Джордж1, Доминошник, zenik, Умный Слоненок, okmail, Hawk_1c, , Krendel, Amra, PuhUfa
| ☑ | ||
---|---|---|---|---|
0
ДобрыйПутник
naïve
28.03.25
✎
12:19
|
Здравствуйте, подскажите, сделал процедуру в общем модуле по заполнению ТЧ товаров, вызываю ее с сервера и передаю в нее Объект.Товары, там заполняю, но выдает ошибку -
[ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Нельзя изменять поле, содержащее объект данных формы [ОшибкаИспользованияВстроенногоЯзыка] &НаКлиенте Процедура ITS_РДЗаполнитьОстаткамиСкладаПосле(Команда) Если ЗначениеЗаполнено(Объект.СкладОтправитель) Тогда Если Объект.Товары.Количество() > 0 Тогда Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект); ПоказатьВопрос(Оповещение, "Очистить табличную часть товары?", РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Да, "Вы уверены?"); Иначе ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары); КонецЕсли; Иначе ОбщегоНазначенияКлиент.СообщитьПользователю("Поле ""Склад-отправитель"" не заполненно",,"Объект.СкладОтправитель",,Истина); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Объект.Товары.Очистить(); ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Объект.СкладОтправитель, Объект.Товары); КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗаполнитьТабЧастьТоварыОстаткамиПоСкладу(Склад, ТЧ) СкладыСервер.ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ); КонецПроцедуры ОбщийМодуль - Процедура ЗаполнитьТЧОстаткамиТоваровСклада(Склад, ТЧ) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | ТоварыНаСкладахОстатки.Склад КАК Склад, | ТоварыНаСкладахОстатки.Серия КАК Серия, | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток, | ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток, | ТоварыНаСкладахОстатки.ВНаличииОстаток - ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК ФактОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки | |УПОРЯДОЧИТЬ ПО | Номенклатура"; Запрос.УстановитьПараметр("Склад", Склад); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если НЕ Выборка.Количество() = 0 Тогда Пока Выборка.Следующий() Цикл Если Выборка.ФактОстаток > 0 Тогда Строка = ТЧ.Добавить(); Строка.Номенклатура = Выборка.Номенклатура; Строка.КоличествоУпаковок = Выборка.ФактОстаток; Строка.Количество = Выборка.ФактОстаток; Строка.ТипНоменклатуры = Выборка.ТипНоменклатуры; Если НЕ Выборка.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда Строка.СтатусУказанияСерий = 10; Строка.Серия = Выборка.Серия; КонецЕсли; КонецЕсли; КонецЦикла; Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю("На складе " + Склад + " нету остатков",,,,Истина); КонецЕсли; КонецПроцедуры |
|||
1
Pprog151713
28.03.25
✎
12:25
|
ТЧ должно быть не данные формы ТЧ, а Объект тч.
|
|||
2
ДобрыйПутник
naïve
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
ДобрыйПутник
naïve
28.03.25
✎
14:58
|
Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |