Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2021, 18:05

Авто-заполнение полей строк табличной части на сервере в 1С

Автор Gigi Spoke, 30 мар 2017, 20:17

0 Пользователей и 1 гость просматривают эту тему.

Gigi Spoke

Привет всем!
В 1С конфигураторе начал недавно....
Поэтому понятное дело, что вопрос возник не от сильно глубокого знания ...
Просто рыл по форумам .. и все равно не нашел то, что нужно. Не смотря на то, что нужно не сильно оригинальное действие.
Дело в чем?
Внизу код того, как данные выгрузить из сервера.
В этом худо-бедно вроде чуть разобрался.
Но мне нужно, что бы после выгрузки, данные опять загружались на сервер, но все это после сложных расчетов между полями, где значения цифр.
Это удается сделать в режиме: «Сообщить()», но никак не получается полученные расчетные данные вбить в соответствующие поля указанного столбца на сервере. И потом тут же отобразить на клиенте в табличной части документа.
Хочу отметить... не добавить новые строки, что уже знаю, как сделать, а просто заполнить имеющиеся поля, новыми цифрами, после их выгрузки.
В данном случае поле для заполнения это ДокТест1.ЦыфраРасчета в табличной части.
И взят простой пример расчета .. ну допустим Строка. ЦыфраРасчета = Строка. Цыфр1+ Строка. Цыфр2;

&НаКлиенте
Процедура РасходПриемМинусОтпуск(Команда)
Тест_АвтозаполнениеПолей ();
КонецПроцедуры

&НаСервере
Процедура Тест_АвтозаполнениеПолей()
//------------------------------------------------------------
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|ДокТест1.НомерСтроки,
|ДокТест1.Объект,
|ДокТест1.Цыфр1,
|ДокТест1.Цыфр2,
|ДокТест1.ЦыфраРасчета,
|ИЗ
|Документ.ДокТест1.ТаблЧасть1 КАК ДокТест1";
//------------------------------------------------------------
Список = Запрос.Выполнить().Выгрузить();
//------------------------------------------------------------
Для Каждого Строка из Список Цикл
Строка. ЦыфраРасчета = Строка. Цыфр1+ Строка. Цыфр2;
Сообщить(Строка. ЦыфраРасчета)

//ТУТ НЕ ЗНАЮ КАК ПОЛУЧЕННОЕ ЗНАЧЕНИЕ: Строка. ЦыфраРасчета ВБИТЬ НА СЕРВЕР. ИЛИ ЧТО БЫ ОНО ЛЕГЛО В ТАБЛИЧНУЮ ЧАСТЬ НА КЛИЕНТЕ


КонецЦикла;
//------------------------------------------------------------
КонецПроцедуры



Буду очень признателен за помощь!

LexaK

для вашего примера
когда вы обрабатываете какой-то объект, тем более на сервере, то все данные этого объекта у вас уже есть
НЕ НАДО сначала "получать" данные с севера, обрабатывать, а потом "помещать" на сервер (такой подход для других задач)
поэтому вам просто надо обработать ТЧ вашего документа,
вот пример

&НаСервере
Процедура Тест_АвтозаполнениеПолей()
    Для каждого лкСтр Из Объект.ТаблЧасть1 Цикл
        лкСтр.ЦыфраРасчета= лкСтр.Цыфр1 + лкСтр.Цыфр2;
    КонецЦикла;
КонецПроцедуры


Вот весь код для вашей задачи!
при этом такой код можно и даже НУЖНО выполнять на клиенте!!!

ответ Понравился? (в смысле пригодился?)

Gigi Spoke


&НаСервере
Процедура Тест_АвтозаполнениеПолей()
    Для каждого лкСтр Из Объект.ТаблЧасть1 Цикл
        лкСтр.ЦыфраРасчета= лкСтр.Цыфр1 + лкСтр.Цыфр2;
    КонецЦикла;
КонецПроцедуры


Отлично!
Огромное вам спасибо!
Самое смешное то, что как получается изначально не верный путь выбрал, но позже сам тоже догадался, что незачем трогать сервер, тогда как можно работать с данными на клиенте. Даже хотел видоизменить написанное, но на сайте почему то не нашел кнопку редактировать.
Ну и ладно!
Т.е. как получается все арифметические расчеты имеющихся данных можно делать на клиенте и потом по циклу вбивать все это в нужные поля. Что у меня тоже не получалось... и поэтому заглянув сюда, и посмотрев на скинутую помощь, увидел все тоже самое до чего сам додумался, только у меня в цикле вместо: Объект.ТаблЧасть1 стояло Элементы.ТаблЧасть1. Вот в чем была ошибся написанного мной. Короче......  Знаний и хорошего понимания явно не хватает.
Просто программировал в Excel. И чем пользовался в там, тоже самое хочу сделать и в 1С.
В данном случае цель в том, что бы сделать расчет по принципу найденных значений. Т.е. суммировать по алгоритму. В Excel для этого есть очень удобная встроенная функция СУММАЕСЛИ или СУММЕСЛИМН. Я просто то же самое хочу сделать с табличной частью документа.
Поэтому, дополнительный вопрос. Если модератор не обессудить, что чуть отхожу от указанной темы.
Есть ли в 1С аналогичная встроенная функция, на подобие той, которая в Эксель: СУММЕСЛИМН?
Если конечно сильно не ухожу от темы. Ибо это опять авто-ввод данных.
:):)
Итак признателен, но буду признателен уже вдвойне!




LexaK

ЦитироватьСУММЕСЛИМН
такой функции нет!

Но вы очень легко можете написать любую нужную вам функцию!
а еще в 1С, в конфигураторе есть Синтаксис помощник (СП)
вызывается кнопками Ctrl + Shit + F1

почитайте его, там про все функции какие есть в 1С написано.
ответ Понравился? (в смысле пригодился?)

Gigi Spoke

Все правильно... так и думал.
В принципе я уже сделал то, что было сказано вами. И даже писать функцию не понадобилось. А просто взял и воспользовался простым алгоритмом. И при этом, один цикл для расчета индивидуально для одного поля вложил в цикл общий для таблицы. И все получилось.
Так что, вопрос решен! Правда, не без помощи более грамотных специалистов. Имею ввиду, взятый изначально не правильный путь.

Еще раз признателен за помощь!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск