Сравнение ТЗ

1. 1c_2020 21.10.20 09:42 Сейчас в теме
Ребят, нужна помощь.
На форме две ТЗ Актуальные и Группа. Суть обработки- в актуальных -список сотрудников, в группе сотрудники в группе, начальник меняет список группы(реализовано перетаскиванием, то есть перемещает сотрудников из одной табл в другую и наоборот, тем самым формирует Новый список сотрудников Группы и при нажатии кнопки Сформировать создается Документ с новым списком Группы.
ТЗ заполняются они каждая своим запросом при открытии формы.
В документ должны попасть сотрудники из нового списка с галочкой в группе и сотрудники которых исключили из группы без галочки
Пример:
Старый список
иванов
петров
сидоров

Новый список
иванов
петров
козлов

Исключили
сидоров

В документ
иванов+
петров+
козлов+
сидоров-

В итоге у меня события:
1 &НаСервере
Процедура ПриОткрытииНаСервере() - здесь заполняются ТЗ с помощью запросов
2 &НаКлиенте
Процедура ПриОткрытии(Отказ)
3 &НаКлиенте
Процедура Сформировать(Команда)
4 &НаСервере
Функция СформироватьДокументНаСервере()
5 &НаКлиенте
Процедура СписокГруппыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
6 &НаКлиенте
Процедура СписокАктуальныхСотрудниковПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)

Не понимаю в каком событии поймать первоначальные данные, окончательный список и где их сравнить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
18. DanDy 51 21.10.20 12:42 Сейчас в теме +0.2 $m
(1)
ТЗ_ВДокумент = ТЗ_НовыйСписок.Скопировать();
ПараметрыПоискаСтроки = Новый Структура;
Для Каждого Стр_СтарыйСписок из ТЗ_СтарыйСписок Цикл
   ПараметрыПоискаСтроки.Вставить("Сотрудник",Стр_СтарыйСписок.Сотрудник);
   МасСтрок = ТЗ_ВДокумент.НайтиСтроки(ПараметрыПоискаСтроки);
   Если МасСтрок.Количество()>0 тогда
          //Сотрудник есть
          //отмечаем если нужно его как сотрудника найденного в обеих ТЗ
   Иначе
         // Сотрудник был удалён добавляем в нашу ТЗ
         НовСтр = ТЗ_ВДокумент.Добавить();
         //Заполняем как нам надо
   КонецЕсли; 
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 21.10.20 09:49 Сейчас в теме
(1)
ТЗ заполняются они каждая своим запросом при открытии формы.
Вот куда записывали, оттуда и читайте. В ПриСозданииНаСервере()
3. 1c_2020 21.10.20 09:55 Сейчас в теме
(2) не понимаю дальше то где работать?
список изменили... как быть дальше?
можно пример?
5. Mufan 1 21.10.20 09:59 Сейчас в теме
(3) создавай копии ТЗ и сравнивай их по внутреннему соединению после редактирования
6. 1c_2020 21.10.20 10:00 Сейчас в теме
(5)да, так и предполагала делать, основной вопрос где)
7. Mufan 1 21.10.20 10:02 Сейчас в теме
(6) Делаешь копию ТЗ после заполнения запросом. а для сравнения можно сделать кнопку.
4. 1c_2020 21.10.20 09:59 Сейчас в теме
(2) извините, не правильно прочла название события, сейчас пробовать буду
18. DanDy 51 21.10.20 12:42 Сейчас в теме +0.2 $m
(1)
ТЗ_ВДокумент = ТЗ_НовыйСписок.Скопировать();
ПараметрыПоискаСтроки = Новый Структура;
Для Каждого Стр_СтарыйСписок из ТЗ_СтарыйСписок Цикл
   ПараметрыПоискаСтроки.Вставить("Сотрудник",Стр_СтарыйСписок.Сотрудник);
   МасСтрок = ТЗ_ВДокумент.НайтиСтроки(ПараметрыПоискаСтроки);
   Если МасСтрок.Количество()>0 тогда
          //Сотрудник есть
          //отмечаем если нужно его как сотрудника найденного в обеих ТЗ
   Иначе
         // Сотрудник был удалён добавляем в нашу ТЗ
         НовСтр = ТЗ_ВДокумент.Добавить();
         //Заполняем как нам надо
   КонецЕсли; 
КонецЦикла;
Показать
8. hiduk 124 21.10.20 10:19 Сейчас в теме
ИМХО, не наглядно и запутанно это, как для пользователя так и для программиста. Почему нельзя переделать механизм обработки, чтобы в документ попадали сотрудники целиком и полностью из одного списка, (возможно из 3-го)?!
9. 1c_2020 21.10.20 10:40 Сейчас в теме
(8) для пользователя вообще все просто и наглядно, 3 табл лишняя это уж точно.
для программиста, да соглашусь не легко, ну для моего уровня знаний...
заморочка в том, что формируемый документ это регистратор в дальнейшем для Регистра сведений, поэтому исключенных сотрудников мне тоже нужно учитывать
13. hiduk 124 21.10.20 11:44 Сейчас в теме
(9)
для пользователя вообще все просто и наглядно

Из описания задачи этого не следует. Что должно попасть в итоговый документ? Данные из 2-х списков или из одного?
14. 1c_2020 21.10.20 12:00 Сейчас в теме
(13) может слишком сложно написала изначально .
в документ попадаю сотрудники из одной таблицы + те которых удалили из этой таблицы
15. hiduk 124 21.10.20 12:10 Сейчас в теме
(14)
Ну вот в этом и сложность. И для пользователя тоже.
Гораздо нагляднее и проще собирать данные, которые потом, куда-либо попадут в одной таблице/списке!
16. vadim1011985 99 21.10.20 12:36 Сейчас в теме
(14) Если есть доступ к ЗиУП 3.1 посмотрите как реализована работа со штатным расписанием. Это я к тому что не нужно непосредственно удалять строки из ТЧ "Группы" а использовать Условное оформление для показа изменений. Например добавить в ТЧ 2 реквизита типа булево "Добавлен" , "Удален" (но на форму их не выводить) при добавлении или удалении устанавливать один из реквизитов. и в зависимости от значения окрашивать строки в разные цвета (зеленый при добавлении , красный при удалении но саму строку не удалять из ТЧ). Тогда решается вопрос заполнения вашего документа и наглядности для пользователя.
17. 1c_2020 21.10.20 12:38 Сейчас в теме
(16) к сожалению нет ЗиУП, но подобная мысль была
10. bayce 45 21.10.20 10:55 Сейчас в теме
Можно в запрос таблицы и там обработать
11. bayce 45 21.10.20 10:56 Сейчас в теме
можно объединить и свернуть
12. hamsar 15 21.10.20 11:17 Сейчас в теме
Для отладки всего этого, нужно формировать список исключенных и список добавляемых в разных тз, не на форме.

Чтобы при перетаскивании таблица подготовленная для проведения уже была. Я бы не сравнивал, а сделал бы обработчик перетаскивания который бы генерировал эти таблицы
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот