База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить данные из отчета в `Документ.ПодтверждениеНулевойСтавкиНДС` при на
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
13 мая 2026 в 13:17 #37124
привет , помоги подправить код , мне необходимо что бы при кнопки заполнения данные загружались из отчета Документ.ПодтверждениеНулевойСтавкиНДС , а сам код: Процедура Заполнить(Команда)
Если ЭтотОбъект[«ОТЧ»].ПривестиЗначение(_ОтчетГод) < 2010 Или ЭтотОбъект[«ОТЧ»].ПривестиЗначение(_ОтчетГод) > 2099 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(«Некорректно указан год», , «_ОтчетГод»);
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(_Период) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(«Не указан период», , «_Период»);
Возврат;
КонецЕсли;Доступность = Ложь;
РезультатВыполнения = ЗаполнитьАвтоНаСервере();
Если НЕ РезультатВыполнения.ЗаданиеВыполнено Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения(«ЗаполнитьАвтоЗавершениеПослеЗаполнения», ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр(«ru = ‘Выполняется заполнение по данным информационной базы'»);
ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполнения, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли; -
13 мая 2026 в 13:17 #37125
Привет! Чтобы при нажатии кнопки «Заполнить» данные загружались из документа
Документ.ПодтверждениеНулевойСтавкиНДС, нужно в процедуреЗаполнитьвызвать серверную процедуру, которая сделает выборку данных из этого документа и вернёт результат.Ниже пример, как можно подправить твой код с учётом загрузки данных из документа:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576// Процедура на клиентеПроцедура Заполнить(Команда)// Проверка годаЕсли ЭтотОбъект["ОТЧ"].ПривестиЗначение(_ОтчетГод) < 2010 Или ЭтотОбъект["ОТЧ"].ПривестиЗначение(_ОтчетГод) > 2099 ТогдаОбщегоНазначенияКлиент.СообщитьПользователю("Некорректно указан год", , "_ОтчетГод");Возврат;КонецЕсли;// Проверка периодаЕсли Не ЗначениеЗаполнено(_Период) ТогдаОбщегоНазначенияКлиент.СообщитьПользователю("Не указан период", , "_Период");Возврат;КонецЕсли;// Запуск серверной процедуры заполненияРезультатВыполнения = ЭтотОбъект.ЗаполнитьДаннымиИзДокумента(_ОтчетГод, _Период);Если НЕ РезультатВыполнения.ЗаданиеВыполнено ТогдаОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаполнитьАвтоЗавершениеПослеЗаполнения", ЭтотОбъект);ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется заполнение по данным информационной базы'");ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполнения, ОповещениеОЗавершении, ПараметрыОжидания);КонецЕсли;КонецПроцедуры// Серверная процедура, которая делает выборку из документаФункция ЗаполнитьДаннымиИзДокумента(Год, Период) ЭкспортРезультат = Новый Структура;Попытка// Пример запроса по документу ПодтверждениеНулевойСтавкиНДСЗапрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| ПодтверждениеНДС.Ссылка КАК Документ,| ПодтверждениеНДС.Дата КАК Дата,| ПодтверждениеНДС.Ответственный КАК Ответственный,| ПодтверждениеНДС.Сумма КАК Сумма|ИЗ| Документ.ПодтверждениеНулевойСтавкиНДС КАК ПодтверждениеНДС|ГДЕ| ГОД(ПодтверждениеНДС.Дата) = &Год| И ПодтверждениеНДС.Дата МЕЖДУ &ДатаНач И &ДатаКонец|УПОРЯДОЧИТЬ ПО| ПодтверждениеНДС.Дата Убыв;Запрос.УстановитьПараметр("Год", Год);Запрос.УстановитьПараметр("ДатаНач", НачалоДня(Период));Запрос.УстановитьПараметр("ДатаКонец", КонецДня(Период));РезультатЗапроса = Запрос.Выполнить();// Здесь нужно обработать результат и заполнить нужные реквизиты формы или объекта// Например, заполнить табличную часть или реквизиты// Ниже пример заполнения табличной части (если есть)Если РезультатЗапроса.Пустой() ТогдаВозврат Новый РезультатДлительнойОперации(Истина);КонецЕсли;ТаблицаДанных = РезультатЗапроса.Выгрузить();// Пример заполнения табличной части объекта (если есть)ЭтотОбъект.ТабличнаяЧасть.Очистить();Для Каждого Строка Из ТаблицаДанных ЦиклНоваяСтрока = ЭтотОбъект.ТабличнаяЧасть.Добавить();НоваяСтрока.Документ = Строка.Документ;НоваяСтрока.Дата = Строка.Дата;НоваяСтрока.Ответственный = Строка.Ответственный;НоваяСтрока.Сумма = Строка.Сумма;КонецЦикла;ЭтотОбъект.Записать();Возврат Новый РезультатДлительнойОперации(Истина);ИсключениеВозврат Новый РезультатДлительнойОперации(Ложь, ОписаниеОшибки());КонецПопытки;КонецФункции—
### Ключевые моменты:
— В клиентской процедуре
Заполнитьвызывается серверная функцияЗаполнитьДаннымиИзДокумента, куда передаются параметры года и периода.
— В серверной функции делается запрос по документуПодтверждениеНулевойСтавкиНДСс фильтрацией по дате.
— Результат запроса выгружается в таблицу значений и используется для заполнения нужных реквизитов или табличных частей.
— В конце объект сохраняется.
— Обработка ошибок и возврат результата для длительной операции.—
Если у тебя нет табличной части, или структура другая — подкорректируй заполнение данных под свои реквизиты.
Если нужна помощь с конкретной структурой данных — пришли описание, помогу подстроить.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.