Программное создание колонки и заполнение данными из регистра накопления
Необходимо в документе "Расходная накладная" написать команду, которая через нажатие на кнопку добавит колонку с указанием значения остатков по товару из регистра накопления.
При попытке заполнения колонки через запрос выводится ошибка:
Поле объекта не обнаружено (Остаток)
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(54)}: Объект.Товары.Остаток.Загрузить(РезультатЗапроса);
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(61)}: КомандаПересчитатьНаСервере();
При попытке заполнения колонки через запрос выводится ошибка:
Поле объекта не обнаружено (Остаток)
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(54)}: Объект.Товары.Остаток.Загрузить(РезультатЗапроса);
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(61)}: КомандаПересчитатьНаСервере();
&НаСервере
Процедура КомандаПересчитатьНаСервере()
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы("Остаток", Новый ОписаниеТипов("Число"),"Объект.Товары","Остаток",Ложь));
ИзменитьРеквизиты(МассивРеквизитов );
Эл = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), Элементы.Товары);
Эл.Вид = ВидПоляФормы.ПолеВвода;
Эл.ПутьКДанным = "Объект.Товары.Остаток";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ПоступлениеТоваров.Остатки КАК ПоступлениеТоваровОстатки";
РезультатЗапроса = Запрос.Выполнить();
Объект.Товары.Остаток.Загрузить(РезультатЗапроса);
КонецПроцедуры
&НаКлиенте
Процедура КомандаПересчитать(Команда)
КомандаПересчитатьНаСервере();
КонецПроцедуры
ПоказатьПрикрепленные файлы:
1Cv8.dt
По теме из базы знаний
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Перенос данных из КА 1.1 в ERP 2 (ЕРП 2)
- Тестер: частые вопросы
- Как сдать экзамен 1С:Специалист по платформе?
- Универсальный отчет для сравнения записей регистров накопления между базами по COM-соединению, для обычных форм
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) 1.
Так делать нельзя.
2. По какой номенклатуре остаток-не важно. К черту уточнения, загружаем все что есть. *сарказм*
3. Кнопка у вас одноразовая получится - при повторном нажатии будет ошибка. Перед созданием реквизита и колонки надо проверять, не создана ли она ранее.
Объект.Товары.Остаток.Загрузить(РезультатЗапроса);
Так делать нельзя.
2. По какой номенклатуре остаток-не важно. К черту уточнения, загружаем все что есть. *сарказм*
3. Кнопка у вас одноразовая получится - при повторном нажатии будет ошибка. Перед созданием реквизита и колонки надо проверять, не создана ли она ранее.
(3)Подход +- такой.
1 - перед созданием колонки/поля надо добавить проверку на наличие такого поля. Если уже есть, не создавать.
2 - в запрос добавить отбор по номенклатуре, которая есть в тч, и в выборку добавить номенклатуру.
3 - обойти выборку в цикле и заполнить в ТЧ колонку.
1 - перед созданием колонки/поля надо добавить проверку на наличие такого поля. Если уже есть, не создавать.
2 - в запрос добавить отбор по номенклатуре, которая есть в тч, и в выборку добавить номенклатуру.
3 - обойти выборку в цикле и заполнить в ТЧ колонку.
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день