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

разъединение данных из ТЗ

Автор Nosferatu112, 30 мая 2023, 12:23

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

Nosferatu112

Всем привет, такой вопрос в функции ниже 2 таблицы в таб0 то что было в ТЧ заказа в таб1 то что стало в ТЧ заказа далее они сравниваются и измененные строки попадают в третью ТЗ и те что было и те что стало
Как сделать так что бы в функция отбора только измененных строк осталась но при этом данные попадали в разные ТЗ

Функция РазницаТаблицЗначений(Таблица0, Таблица1, Измерения = "") Экспорт
   
ВсеКолонки = "";

Для Каждого Колонка Из Таблица0.Колонки Цикл
ВсеКолонки = ВсеКолонки + ", " + Колонка.Имя
КонецЦикла;

ВсеКолонки = Сред(ВсеКолонки, 2);

Таблица = Таблица1.Скопировать();   

Таблица.Колонки.Добавить("_Знак_", Новый ОписаниеТипов("Число"));

Таблица.ЗаполнитьЗначения(1, "_Знак_");

Для Каждого Строка Из Таблица0 Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Строка);
КонецЦикла;

Таблица.Колонки.Добавить("_Счет_");
Таблица.ЗаполнитьЗначения(1, "_Счет_");

Таблица.Свернуть(ВсеКолонки, "_Знак_, _Счет_");

Ответ = Таблица.Скопировать(Новый Структура("_Счет_", 1), ВсеКолонки + ", _Знак_");

Если Не ПустаяСтрока(Измерения) Тогда
Ответ.Сортировать(Измерения);
КонецЕсли;

Возврат Ответ;
   
КонецФункции

LexaK

Nosferatu112, по вашему коду, исходные строчки это те где _Знак_ = 1

сделайте отбор по этому условию, полученные строки скопируйте/перенесите куда надо.
(честно говоря, какая-то путаница возникает, из вашего описания и желаемого результата)
если помогло нажмите: Спасибо!

Nosferatu112

LexaK, Я пытался отбор по знаку сделать, там как раз где 1 в одну таблицу где 2 в другую но я возможно не правильно пишу потому что у меня вместо только строк которые были изменены отбираються все строки из изночальной таблицы я поэтому и полез на форму не понимаю как раскидать записи по разным ТЗ

LexaK

Nosferatu112, вроде так можно сделать
лкТаблица1 = Ответ.Скопировать(Новый Структура("_Знак_", 1)); //исходные строчки
лкТаблица2 = Ответ.Скопировать(Новый Структура("_Счет_", 2)); //исходные строчки которые НЕ были изменены
лкТаблица3 = Ответ.Скопировать(Новый Структура("_Знак_,_Счет_",0,1)); //только новые или измененные строчки

по Знаку где 2 это исходные строчки у вас дублируются!
если помогло нажмите: Спасибо!

Nosferatu112

ОтветСтало = Ответ.Скопировать(Новый Структура(" _Знак_", 1), ВсеКолонки);
ОтветБыло = Ответ.Скопировать(Новый Структура("_Знак_", 0), ВсеКолонки);

Вот так получилось спасибо за ответы

Теги:

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

Рейтинг@Mail.ru

Поиск