Ребят, нужна помощь.
На форме две ТЗ Актуальные и Группа. Суть обработки- в актуальных -список сотрудников, в группе сотрудники в группе, начальник меняет список группы(реализовано перетаскиванием, то есть перемещает сотрудников из одной табл в другую и наоборот, тем самым формирует Новый список сотрудников Группы и при нажатии кнопки Сформировать создается Документ с новым списком Группы.
ТЗ заполняются они каждая своим запросом при открытии формы.
В документ должны попасть сотрудники из нового списка с галочкой в группе и сотрудники которых исключили из группы без галочки
Пример:
Старый список
иванов
петров
сидоров
Новый список
иванов
петров
козлов
Исключили
сидоров
В документ
иванов+
петров+
козлов+
сидоров-
В итоге у меня события:
1 &НаСервере
Процедура ПриОткрытииНаСервере() - здесь заполняются ТЗ с помощью запросов
2 &НаКлиенте
Процедура ПриОткрытии(Отказ)
3 &НаКлиенте
Процедура Сформировать(Команда)
4 &НаСервере
Функция СформироватьДокументНаСервере()
5 &НаКлиенте
Процедура СписокГруппыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
6 &НаКлиенте
Процедура СписокАктуальныхСотрудниковПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Не понимаю в каком событии поймать первоначальные данные, окончательный список и где их сравнить
На форме две ТЗ Актуальные и Группа. Суть обработки- в актуальных -список сотрудников, в группе сотрудники в группе, начальник меняет список группы(реализовано перетаскиванием, то есть перемещает сотрудников из одной табл в другую и наоборот, тем самым формирует Новый список сотрудников Группы и при нажатии кнопки Сформировать создается Документ с новым списком Группы.
ТЗ заполняются они каждая своим запросом при открытии формы.
В документ должны попасть сотрудники из нового списка с галочкой в группе и сотрудники которых исключили из группы без галочки
Пример:
Старый список
иванов
петров
сидоров
Новый список
иванов
петров
козлов
Исключили
сидоров
В документ
иванов+
петров+
козлов+
сидоров-
В итоге у меня события:
1 &НаСервере
Процедура ПриОткрытииНаСервере() - здесь заполняются ТЗ с помощью запросов
2 &НаКлиенте
Процедура ПриОткрытии(Отказ)
3 &НаКлиенте
Процедура Сформировать(Команда)
4 &НаСервере
Функция СформироватьДокументНаСервере()
5 &НаКлиенте
Процедура СписокГруппыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
6 &НаКлиенте
Процедура СписокАктуальныхСотрудниковПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Не понимаю в каком событии поймать первоначальные данные, окончательный список и где их сравнить
По теме из базы знаний
- Соединение в запросе, сравнение (В ИЕРАРХИИ)
- Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7
- Программные перечисления, ч.2: приемы кэширования при разработке
- Как запустить 1С:ERP 2 на тысячу пользователей и не написать ни одной страницы ТЗ?
- Конструктор сравнения таблиц значения, в том числе из внешней базы
Найденные решения
(1)
ТЗ_ВДокумент = ТЗ_НовыйСписок.Скопировать();
ПараметрыПоискаСтроки = Новый Структура;
Для Каждого Стр_СтарыйСписок из ТЗ_СтарыйСписок Цикл
ПараметрыПоискаСтроки.Вставить("Сотрудник",Стр_СтарыйСписок.Сотрудник);
МасСтрок = ТЗ_ВДокумент.НайтиСтроки(ПараметрыПоискаСтроки);
Если МасСтрок.Количество()>0 тогда
//Сотрудник есть
//отмечаем если нужно его как сотрудника найденного в обеих ТЗ
Иначе
// Сотрудник был удалён добавляем в нашу ТЗ
НовСтр = ТЗ_ВДокумент.Добавить();
//Заполняем как нам надо
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ТЗ_ВДокумент = ТЗ_НовыйСписок.Скопировать();
ПараметрыПоискаСтроки = Новый Структура;
Для Каждого Стр_СтарыйСписок из ТЗ_СтарыйСписок Цикл
ПараметрыПоискаСтроки.Вставить("Сотрудник",Стр_СтарыйСписок.Сотрудник);
МасСтрок = ТЗ_ВДокумент.НайтиСтроки(ПараметрыПоискаСтроки);
Если МасСтрок.Количество()>0 тогда
//Сотрудник есть
//отмечаем если нужно его как сотрудника найденного в обеих ТЗ
Иначе
// Сотрудник был удалён добавляем в нашу ТЗ
НовСтр = ТЗ_ВДокумент.Добавить();
//Заполняем как нам надо
КонецЕсли;
КонецЦикла;
Показать
ИМХО, не наглядно и запутанно это, как для пользователя так и для программиста. Почему нельзя переделать механизм обработки, чтобы в документ попадали сотрудники целиком и полностью из одного списка, (возможно из 3-го)?!
(8) для пользователя вообще все просто и наглядно, 3 табл лишняя это уж точно.
для программиста, да соглашусь не легко, ну для моего уровня знаний...
заморочка в том, что формируемый документ это регистратор в дальнейшем для Регистра сведений, поэтому исключенных сотрудников мне тоже нужно учитывать
для программиста, да соглашусь не легко, ну для моего уровня знаний...
заморочка в том, что формируемый документ это регистратор в дальнейшем для Регистра сведений, поэтому исключенных сотрудников мне тоже нужно учитывать
(14) Если есть доступ к ЗиУП 3.1 посмотрите как реализована работа со штатным расписанием. Это я к тому что не нужно непосредственно удалять строки из ТЧ "Группы" а использовать Условное оформление для показа изменений. Например добавить в ТЧ 2 реквизита типа булево "Добавлен" , "Удален" (но на форму их не выводить) при добавлении или удалении устанавливать один из реквизитов. и в зависимости от значения окрашивать строки в разные цвета (зеленый при добавлении , красный при удалении но саму строку не удалять из ТЧ). Тогда решается вопрос заполнения вашего документа и наглядности для пользователя.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот