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

Заполнение табличной части из другой формы

Автор vladimir15921, 20 апр 2023, 08:25

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

sali

ничё та ты конечно , спустя 2 года нашел свою тему и написал по тому же вопросу. сначала сделал, а потом задался "а как это работает???")))

voliga

sali, Это не я создавал тему )))))) Наткнулся просто на подобное..

И не решил еще ) ума пока не приложу как доделать )))

 тут он из своей формы передает в вашу что вам надо. это - номенклатура и цена
/3. Для формы подбора делаете процедуру закрытия &НаКлиенте Процедура ЗакрытьФорму()

Это понятно, но как передать все строки табличного документа

&НаКлиенте
Процедура ЗакрытьФорму()   
   Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл
      Значение_01 = СокрЛП(ТабДок.Область("R" + Строка(НомерСтроки)+ "C1").Текст);
      Значение_02 = СокрЛП(ТабДок.Область("R" + Строка(НомерСтроки)+ "C2").Текст);
      КонецЦикла;
        ПараметрЗакрытия = ????????
      ???????????????????????????
      Закрыть(ПараметрЗакрытия);

В Массив переводить? а потом Закрыть(Массив)

antoneus


sali

Цитата: voliga от 15 апр 2025, 11:33Это не я создавал тему
да , сорян. потом заметил на v ОРИЕНТИРОВАЛСЯ

Afinogen

voliga,
либо на сервере выгрузить во временное хранилище таблдицу значений а потом при закрытии передавать уникальный идентификатор помещения в хранилище

типа так
&НаКлиенте
Процедура ЗакрытьФорму()

УИДТЗВХранилище = ПоместитьВоВременноеХранилищеНаСервере();

КонецПроцедуры

&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере()

Возврат ПоместитьВоВременноеХранилище(Ваша ТЗ,Новый УникальныйИдентификатор);

КонецФункции

voliga

Afinogen,
Модуль Обработки
&НаКлиенте
Процедура ПреобразоватьВТЗ(Команда)
   ПреобразоватьВТЗНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПреобразоватьВТЗНаСервере()
   
   ТабЗначений = ПреобразоватьТабличныйДокументВТаблицуЗначений(ЭтаФорма.ТабДок);
   
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(ТабДок)   
   
   ПоследняяСтрока = ТабДок.ВысотаТаблицы;
   ПоследняяКолонка = ТабДок.ШиринаТаблицы;
   ОбластьЯчеек = ТабДок.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
   ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
   ПостроительОтчета = Новый ПостроительОтчета;   
   ПостроительОтчета.ИсточникДанных = ИсточникДанных;
   ПостроительОтчета.Выполнить();
   ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
   
   Возврат ТабЗначений;
   
КонецФункции


&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере()

Возврат ПоместитьВоВременноеХранилище(ТабЗначений,Новый УникальныйИдентификатор);

КонецФункции

&НаКлиенте
Процедура ЗакрытьФорму(Команда)   
ПреобразоватьВТЗНаСервере();
УИДТЗВХранилище = ПоместитьВоВременноеХранилищеНаСервере();
Закрыть(УИДТЗВХранилище);
КонецПроцедуры

Модуль Формы
&НаКлиенте
Процедура ОткрытьФормуВвода(Команда)
      ОписаниеОп = Новый ОписаниеОповещения("ПослеЗакрытияФормыПодбора",ЭтаФорма,Неопределено);
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
    ОткрытьФорму("Обработка.ВставкаКнигаЗатрат.Форма.Форма", ПараметрыФормы,ЭтаФорма,,,,ОписаниеОп,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
   
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияформыПодбора(Результат,ДопПараметры = Неопределено) Экспорт
   
   Таблица = ПолучитьИзВременногоХранилища(Результат);

В  результат передается Адрес временного хранилища, пробую получить из временного хранилища,в отладке - Таблица Тип Неопределенно.
Как получить ТЗ и записать его в табличную часть?

antoneus

Не существует таблицы значений на клиенте, или передавать в параметр закрытия массив структур, как я уже предлагал, или получать ТЗ из ВХ на сервере и на сервере же заполнять.
Массив структур оптимальнее, на мой взгляд, так как при использовании таблицы значений надо будет сходить на сервер, чтобы ее заполнить и положить в ВХ, потом после закрытия формы в вызывающей форме получить адрес в ВХ, опять сходить на сервер, получить ТЗ и заполнить ТЧ. Используя массив структур, можно обойтись одним клиентом.

voliga

antoneus,

Нигде не могу найти как данные табличного документа преобразовать в массив структур
Везде только табличную часть или ТЗ. А вот как области табличного документа нигде нет.
Подскажите?

sali


Максим75

voliga, создаете структуру и массив.
каждую строку табличного документа загоняете в эту структуру.
саму структуру загоняете в элемент массива.
все это делаете в цикле по выборке строк из табличной части.
у структуры ключ- это наименование реквизита табличной части, значение - само значение данного реквизита.

все это кино возвращаете в команде Закрыть.
а уже в той форме, в которой Вы вызывали, разбираете вернувшийся массив, каждый элемент массива - это структура, вот структуру и разбираете по ключу и пишите значение в нужный реквизит табличной части документа.

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

Рейтинг@Mail.ru

Поиск