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


По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Загрузка чеков из ФНС в документы 1С:БП, УНФ, ERP, КА и УТ
- Универсальная отладка внешней обработки заполнения (типовые механизмы, без внешних файлов, расширений или вызова внешних файлов)
Найденные решения
Колонка "Назначение" условным оформлением формы форматируется в зависимости от служебной колонки "ТипНоменклатуры". Вы неверно заполняете таблицу формы, т.к. берете для ее заполнения данные не из самой формы, а из базы данных. Загвоздка в том, что в базе данных хранятся не все колонки, что есть на форме. У таблицы формы есть ряд дополнительных, в т.ч. и служебных (невидимых) колонок, влияющих на взаимодействие пользователя с таблицей. Это те самые красные колонки, что можно найти в дереве реквизитов формы у таблицы товаров. Перезаполнив таблицу простой загрузкой из результата запроса Вы потеряли значения колонки "ТипНоменклатуры", отсюда и проблемы оформления "Назначения".
Я бы рекомендовал Вам иной подход для заполнения служебной информации в заказе
Я бы рекомендовал Вам иной подход для заполнения служебной информации в заказе
&НаСервере
Процедура ЗаполнитьСостоянияНазначений()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(Товары.Назначение КАК Справочник.Назначения) КАК Назначение
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ПРЕДСТАВЛЕНИЕ(ЗаказНаПеремещениеТовары.ВариантОбеспечения) КАК РеквизитКолонкаСостоянияНазначений
|ИЗ
| втЗаказПоставщику КАК втЗаказПоставщику
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение.Товары КАК ЗаказНаПеремещениеТовары
| ПО втЗаказПоставщику.Назначение.Заказ = ЗаказНаПеремещениеТовары.Ссылка
| И втЗаказПоставщику.Номенклатура = ЗаказНаПеремещениеТовары.Номенклатура
| И втЗаказПоставщику.Количество = ЗаказНаПеремещениеТовары.Количество";
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить());
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для каждого СтрокаРезультата Из РезультатЗапроса Цикл
СтрокаТовара = Объект.Товары[СтрокаРезультата.НомерСтроки - 1];
ЗаполнитьЗначенияСвойств(СтрокаТовара, СтрокаРезультата);
КонецЦикла;
КонецПроцедуры
Показать
(2) Большущее спасибо за подсказку про служебные колонки на форме и их влияние на отображение табличной части, честно - не знал, сказывается недостаток теоретической подготовки. С предложенным Вами способом не получилось, поэтому просто добавил к таблице значений колонку и заполнил нужным значением.
РезультатЗапроса.Колонки.Добавить("ТипНоменклатуры",Новый ОписаниеТипов("ПеречислениеСсылка.ТипыНоменклатуры"));
РезультатЗапроса.ЗаполнитьЗначения(Перечисления.ТипыНоменклатуры.Товар,"ТипНоменклатуры");
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Колонка "Назначение" условным оформлением формы форматируется в зависимости от служебной колонки "ТипНоменклатуры". Вы неверно заполняете таблицу формы, т.к. берете для ее заполнения данные не из самой формы, а из базы данных. Загвоздка в том, что в базе данных хранятся не все колонки, что есть на форме. У таблицы формы есть ряд дополнительных, в т.ч. и служебных (невидимых) колонок, влияющих на взаимодействие пользователя с таблицей. Это те самые красные колонки, что можно найти в дереве реквизитов формы у таблицы товаров. Перезаполнив таблицу простой загрузкой из результата запроса Вы потеряли значения колонки "ТипНоменклатуры", отсюда и проблемы оформления "Назначения".
Я бы рекомендовал Вам иной подход для заполнения служебной информации в заказе
Я бы рекомендовал Вам иной подход для заполнения служебной информации в заказе
&НаСервере
Процедура ЗаполнитьСостоянияНазначений()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(Товары.Назначение КАК Справочник.Назначения) КАК Назначение
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ПРЕДСТАВЛЕНИЕ(ЗаказНаПеремещениеТовары.ВариантОбеспечения) КАК РеквизитКолонкаСостоянияНазначений
|ИЗ
| втЗаказПоставщику КАК втЗаказПоставщику
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение.Товары КАК ЗаказНаПеремещениеТовары
| ПО втЗаказПоставщику.Назначение.Заказ = ЗаказНаПеремещениеТовары.Ссылка
| И втЗаказПоставщику.Номенклатура = ЗаказНаПеремещениеТовары.Номенклатура
| И втЗаказПоставщику.Количество = ЗаказНаПеремещениеТовары.Количество";
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить());
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для каждого СтрокаРезультата Из РезультатЗапроса Цикл
СтрокаТовара = Объект.Товары[СтрокаРезультата.НомерСтроки - 1];
ЗаполнитьЗначенияСвойств(СтрокаТовара, СтрокаРезультата);
КонецЦикла;
КонецПроцедуры
Показать
(2) Большущее спасибо за подсказку про служебные колонки на форме и их влияние на отображение табличной части, честно - не знал, сказывается недостаток теоретической подготовки. С предложенным Вами способом не получилось, поэтому просто добавил к таблице значений колонку и заполнил нужным значением.
РезультатЗапроса.Колонки.Добавить("ТипНоменклатуры",Новый ОписаниеТипов("ПеречислениеСсылка.ТипыНоменклатуры"));
РезультатЗапроса.ЗаполнитьЗначения(Перечисления.ТипыНоменклатуры.Товар,"ТипНоменклатуры");
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот