Добрый день коллеги. Помогите начинающему разработчику.
Задача: Поправить обработку заполняющую табличную часть документа. Обработка загружает из Excel файла сотрудников и суммы премий, нужно добавить выгрузку подразделений.
Проблема Обработать типовыми методами объекта справочник - "Найти по..." не получится т.к наименования подразделений в Excel и 1С совпадают лишь условно, но добавлен управленческий код который достается запросом и присутствует в Excel.
Вопрос как правильно обработать эти ТЗ.
Задача: Поправить обработку заполняющую табличную часть документа. Обработка загружает из Excel файла сотрудников и суммы премий, нужно добавить выгрузку подразделений.
Проблема Обработать типовыми методами объекта справочник - "Найти по..." не получится т.к наименования подразделений в Excel и 1С совпадают лишь условно, но добавлен управленческий код который достается запросом и присутствует в Excel.
Вопрос как правильно обработать эти ТЗ.
Для НомСтрока = НачальнаяСтрока по МакСтрок цикл
СтрТЗ = ТЗ.Добавить();
Для НомСтолбец = 1 по МакСтолб цикл
Данные = Страница.Cells(НомСтрока,НомСтолбец).Value;
СтрТЗ[НомСтолбец-1] = Данные;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Подразделения.Ссылка КАК Подразделение,
| ЗначенияСвойствОбъектов.Значение КАК КодПодразделения
|ИЗ
| Справочник.Подразделения КАК Подразделения
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО Подразделения.Ссылка = ЗначенияСвойствОбъектов.Объект
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Наименование = ""Код подразделения""";
РезультатЗапроса = Запрос.Выполнить();
ТЗПодразделения = РезультатЗапроса.Выгрузить();
//
Для Каждого СтрокаТЧ Из ТЗ Цикл
Если ЗначениеЗаполнено(СокрЛП(СтрокаТЧ.Столбец_2)) Тогда
Сотрудник = "";
ПодразделениеСопоставлениеСвязи = "???????";
Сотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Строка(СтрокаТЧ.Столбец_2)));
//Пока ТЗПодразделения.Следующий() Цикл
//ПодразделениеСопоставлениеСвязи = Справочники.Подразделения.НайтиПоНаименованию(Сред(СТрока(СтрокаТЧ.Столбец_3),5,20));
Если ЗначениеЗаполнено(Сотрудник) Тогда
НоваяСтрока = Объект.Начисления.Добавить();
НоваяСтрока.ФизЛицо = Сотрудник;
НоваяСтрока.Подразделение = ПодразделениеСопоставлениеСвязи;
НоваяСтрока.Показатель1 = СтрокаТЧ.Столбец_9;
НоваяСтрока.ВидРасчета = ВидРасчета;
НоваяСтрока.ДатаДействия = ДатаНачала;
НоваяСтрока.ДатаДействияКонец = ДатаОкончания;
Иначе
НоваяСтрока = Объект.Начисления.Добавить();
НоваяСтрока.Показатель1 = СтрокаТЧ.Столбец_9;
НоваяСтрока.Подразделение = ПодразделениеСопоставлениеСвязи;
НоваяСтрока.ВидРасчета = ВидРасчета;
НоваяСтрока.ДатаДействия = ДатаНачала;
НоваяСтрока.ДатаДействияКонец = ДатаОкончания;
Сообщить("Не найден: строка " + Строка + ", сотрудник:" + СокрЛП(Строка(СтрокаТЧ.Столбец_2) + ", подразделение" + Строка(СтрокаТЧ.Столбец_3) + ", сумма: " + Строка(СтрокаТЧ.Столбец_9)));
КонецЕсли;
Строка = Строка + 1;
КонецЕсли;
КонецЦикла
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот