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

почему перезаписывается полностью табличная часть? как исправить?

Автор Yamuna, 27 авг 2019, 12:06

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

Yamuna

добрый день! помогите разобраться из формы документа из табличной части выбирается документ и надо чтоб строка заполнилась данными документа, это я сделал через выборку, и потом загружаю в таб часть, это получилось , но когда добавляю еще один документ , еще одну строку , то она перезаписывает старую ,как это исправить? в управляемом приложении..
&НаСервере
Процедура ОбработкаНаСервере(Ссылка)


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИТС_ВходящаяЗаявка.ДатаНачала КАК ДатаНачала,
| ИТС_ВходящаяЗаявка.ДатаЗавершения КАК ДатаЗавершения,
| ИТС_ВходящаяЗаявка.ВидПодписки КАК ВидПодписки,
| ИТС_ВходящаяЗаявка.Контрагент КАК Контрагент,
| ИТС_ВходящаяЗаявка.Ссылка КАК Заявка,
| ИТС_Подписки.СостояниеЗаявки КАК СостояниеЗаявки
|ИЗ
| Документ.ИТС_ВходящаяЗаявка КАК ИТС_ВходящаяЗаявка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТС_Подписки КАК ИТС_Подписки
| ПО ИТС_Подписки.Регистратор = ИТС_ВходящаяЗаявка.Ссылка
| И ИТС_Подписки.Заявка = ИТС_ВходящаяЗаявка.Ссылка
|ГДЕ
| ИТС_ВходящаяЗаявка.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Результат = Запрос.Выполнить().Выгрузить();
     Объект.Подписки.Загрузить(Результат);
КонецПроцедуры // ОбработкаНаСервере(ВыбранноеЗначение)()



&НаКлиенте
Процедура ПодпискиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФорму("Документ.ИТС_ВходящаяЗаявка.Форма.ФормаВыбора1",,Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПодпискиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Отбор= Новый Структура( "Заявка",ВыбранноеЗначение );
Строка = Объект.Подписки.НайтиСтроки(Отбор);
Если  Строка.количество() > 0 Тогда
ИТС_ОбщегоНазначения.СообщитьОбОшибке("Добавление выбором не выполнено.
         |Выбранная заявка уже присутствует в табличной части");
Возврат;
КонецЕсли;
ОбработкаНаСервере(ВыбранноеЗначение);
КонецПроцедуры

DmitriyF

Цитата: Yamuna от 27 авг 2019, 12:06
добрый день! помогите разобраться из формы документа из табличной части выбирается документ и надо чтоб строка заполнилась данными документа, это я сделал через выборку, и потом загружаю в таб часть, это получилось , но когда добавляю еще один документ , еще одну строку , то она перезаписывает старую ,как это исправить? в управляемом приложении..
&НаСервере
Процедура ОбработкаНаСервере(Ссылка)


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИТС_ВходящаяЗаявка.ДатаНачала КАК ДатаНачала,
| ИТС_ВходящаяЗаявка.ДатаЗавершения КАК ДатаЗавершения,
| ИТС_ВходящаяЗаявка.ВидПодписки КАК ВидПодписки,
| ИТС_ВходящаяЗаявка.Контрагент КАК Контрагент,
| ИТС_ВходящаяЗаявка.Ссылка КАК Заявка,
| ИТС_Подписки.СостояниеЗаявки КАК СостояниеЗаявки
|ИЗ
| Документ.ИТС_ВходящаяЗаявка КАК ИТС_ВходящаяЗаявка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТС_Подписки КАК ИТС_Подписки
| ПО ИТС_Подписки.Регистратор = ИТС_ВходящаяЗаявка.Ссылка
| И ИТС_Подписки.Заявка = ИТС_ВходящаяЗаявка.Ссылка
|ГДЕ
| ИТС_ВходящаяЗаявка.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Результат = Запрос.Выполнить().Выгрузить();
     Объект.Подписки.Загрузить(Результат);
КонецПроцедуры // ОбработкаНаСервере(ВыбранноеЗначение)()



&НаКлиенте
Процедура ПодпискиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФорму("Документ.ИТС_ВходящаяЗаявка.Форма.ФормаВыбора1",,Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПодпискиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Отбор= Новый Структура( "Заявка",ВыбранноеЗначение );
Строка = Объект.Подписки.НайтиСтроки(Отбор);
Если  Строка.количество() > 0 Тогда
ИТС_ОбщегоНазначения.СообщитьОбОшибке("Добавление выбором не выполнено.
         |Выбранная заявка уже присутствует в табличной части");
Возврат;
КонецЕсли;
ОбработкаНаСервере(ВыбранноеЗначение);
КонецПроцедуры

Сделайте обход по циклу например и вставляйте конкретные данные в конкретные столбцы.
Или выгрузите ТЧ в ТЗ, удалите строку и вставь свои данные, добавив новую строку ТЗ, а потом всю ТЗ Загрузи в ТЧ.

Yamuna

Цитата: DmitriyF от 27 авг 2019, 12:57
Цитата: Yamuna от 27 авг 2019, 12:06
добрый день! помогите разобраться из формы документа из табличной части выбирается документ и надо чтоб строка заполнилась данными документа, это я сделал через выборку, и потом загружаю в таб часть, это получилось , но когда добавляю еще один документ , еще одну строку , то она перезаписывает старую ,как это исправить? в управляемом приложении..
&НаСервере
Процедура ОбработкаНаСервере(Ссылка)


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИТС_ВходящаяЗаявка.ДатаНачала КАК ДатаНачала,
| ИТС_ВходящаяЗаявка.ДатаЗавершения КАК ДатаЗавершения,
| ИТС_ВходящаяЗаявка.ВидПодписки КАК ВидПодписки,
| ИТС_ВходящаяЗаявка.Контрагент КАК Контрагент,
| ИТС_ВходящаяЗаявка.Ссылка КАК Заявка,
| ИТС_Подписки.СостояниеЗаявки КАК СостояниеЗаявки
|ИЗ
| Документ.ИТС_ВходящаяЗаявка КАК ИТС_ВходящаяЗаявка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТС_Подписки КАК ИТС_Подписки
| ПО ИТС_Подписки.Регистратор = ИТС_ВходящаяЗаявка.Ссылка
| И ИТС_Подписки.Заявка = ИТС_ВходящаяЗаявка.Ссылка
|ГДЕ
| ИТС_ВходящаяЗаявка.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Результат = Запрос.Выполнить().Выгрузить();
     Объект.Подписки.Загрузить(Результат);
КонецПроцедуры // ОбработкаНаСервере(ВыбранноеЗначение)()



&НаКлиенте
Процедура ПодпискиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФорму("Документ.ИТС_ВходящаяЗаявка.Форма.ФормаВыбора1",,Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПодпискиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Отбор= Новый Структура( "Заявка",ВыбранноеЗначение );
Строка = Объект.Подписки.НайтиСтроки(Отбор);
Если  Строка.количество() > 0 Тогда
ИТС_ОбщегоНазначения.СообщитьОбОшибке("Добавление выбором не выполнено.
         |Выбранная заявка уже присутствует в табличной части");
Возврат;
КонецЕсли;
ОбработкаНаСервере(ВыбранноеЗначение);
КонецПроцедуры

Сделайте обход по циклу например и вставляйте конкретные данные в конкретные столбцы.
Или выгрузите ТЧ в ТЗ, удалите строку и вставь свои данные, добавив новую строку ТЗ, а потом всю ТЗ Загрузи в ТЧ.

подскажите как сделать обход по циклу в моем случае?

LexaK

Цитироватьто она перезаписывает старую ,как это исправить? в управляемом приложении..
в вашем первом коде всего одну строчку заменить, вот эту
Объект.Подписки.Загрузить(Результат);
на эту
ЗаполнитьЗначенияСвойств(Объект.Подписки.Добавить(),Результат[0]);
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 27 авг 2019, 15:09
Цитироватьто она перезаписывает старую ,как это исправить? в управляемом приложении..
в вашем первом коде всего одну строчку заменить, вот эту
Объект.Подписки.Загрузить(Результат);
на эту
ЗаполнитьЗначенияСвойств(Объект.Подписки.Добавить(),Результат[0]);
LexaK Спасибо заработало! единственно почему она две строчки добавляет? одну пустую а другую как надо, в чем может причина быть?

LexaK

э-э-э, тогда немного по другому надо сделать
примечание, по вашей схеме считаем что последняя строка новая и пустая, тогда так
это
ЗаполнитьЗначенияСвойств(Объект.Подписки.Добавить(),Результат[0]);
заменяем на это
ЗаполнитьЗначенияСвойств(Объект.Подписки[Объект.Подписки.Количество()-1],Результат[0]);
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 27 авг 2019, 17:39
э-э-э, тогда немного по другому надо сделать
примечание, по вашей схеме считаем что последняя строка новая и пустая, тогда так
это
ЗаполнитьЗначенияСвойств(Объект.Подписки.Добавить(),Результат[0]);
заменяем на это
ЗаполнитьЗначенияСвойств(Объект.Подписки[Объект.Подписки.Количество()-1],Результат[0]);

Да круто! теперь все работает как надо!!

Теги:

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

Рейтинг@Mail.ru

Поиск