Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
11 Дек 2017, 20:36
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Загрузка данных в табель  (Прочитано 1950 раз)

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

Оффлайн Zeus_God

  • ***
  • Сообщений: 112
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2012-01-16
  • Сайт: 
  • Профессия: Программист 1С
Подскажите, пожалуйста, коллеги.
Делаю обработку в ЗУПе 2.5 для загрузки табелей из xls в 1С. Сейчас работа "зависла" с такой проблемой, что сверхурочные часы надо загружать вместе с явками (т.е. в одной ячейке должна быть и явка и сверхурочные. Например, "Я8 С2"). Ставил в документе точки остановки, но не могу вычислить, где именно происходит загрузка сверхурочных. Может кто сталкивался, подскажите, пожалуйста, или дайте направление в котором думать. Обработка рабочая, все остальные функции в порядке.


Онлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6555
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
А обработка типовая или вы свою какую-то пишете?

Вообще, если в экселе записано именно в таком формате: Я8 С2

То после получения значение и должно обрабатываться эта строка и вычисляться сколько там каких часов.


Оффлайн Zeus_God

  • ***
  • Сообщений: 112
  • РЕПУТАЦИЯ: 3
  • КПД: 3%
  • Регистрация: 2012-01-16
  • Сайт: 
  • Профессия: Программист 1С
Обработку пишу сам. Наверно, лучше скину скрин эксель файла и фрагмент кода =)
Процедура кЗагрузкаНажатие(Элемент)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Организации.Ссылка,
| Организации.Наименование
|ИЗ
| Справочник.Организации КАК Организации";
ОрганизацияЗапрос = Запрос.Выполнить().Выбрать();

мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();


// ------------------------------------ Заполнение строк ТЧ ОтработанноеВремя -------------------------------------------------

ДокТабель = Документы.ТабельУчетаРабочегоВремениОрганизации.СоздатьДокумент();
ДокТабель.Дата = ТекущаяДата();
ДокТабель.ДатаНачалаПериода = НачалоМесяца(ТекущаяДата());
ДокТабель.ДатаОкончанияПериода = КонецМесяца(ТекущаяДата());

Пока ОрганизацияЗапрос.Следующий() Цикл
ДокТабель.Организация = ОрганизацияЗапрос.Ссылка;
КонецЦикла;

ПодразделениеОрганизации = ДокТабель.ПодразделениеОрганизации;
ДокТабель.СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ПоДням;
ЗаполнениеДокументовПереопределяемый.ЗаполнитьШапкуДокумента(ДокТабель, глЗначениеПеременной("глТекущийПользователь"));

МассивПриставок = Новый Массив(4);
МассивПриставок[0] = "Первый";
МассивПриставок[1] = "Второй";
МассивПриставок[2] = "Третий";
МассивПриставок[3] = "Четвертый";

ДниСверхурочные = Новый Массив();
ТекСтр = 1;
НомерСтрокиПрверка = -100;

Для Сч = 1 По Мас.Количество()-1 Цикл

Если ТипЗнч(Мас[Сч][0]) <> Тип("СправочникСсылка.СотрудникиОрганизаций") ИЛИ Мас[Сч][0] = Справочники.СотрудникиОрганизаций.ПустаяСсылка() Тогда
Продолжить;
КонецЕсли;

СотрудникТД = Мас[Сч][0];
Если Сч <> НомерСтрокиПрверка Тогда
СтрокаРасшифровкиПоДням = ДокТабель.ОтработанноеВремя.Добавить();
КонецЕсли;
Сотрудник = ОпределениеЗанятости (ВидЗанятости[ТекСтр][0], СотрудникТД);
СотрудникНайден = Ложь;

// Поиск текущего сотрудника в файле (с текущим видом занятости)
Для СтрокаПроверка = Сч + 1 по Мас.Количество()-1 Цикл

СотрудникПроверка = Мас[СтрокаПроверка][0];
СотрудникСравн = Сотрудник;
Если СотрудникПроверка = Неопределено ИЛИ ВидЗанятости[СтрокаПроверка][0] = Неопределено Тогда
Прервать;
КонецЕсли;

Если (СотрудникСравн.Код = Сотрудник.Код) И (СотрудникСравн.ВидЗанятости = Сотрудник.ВидЗанятости) И (СтрокаПроверка-1 <> Сч) Тогда
НомерСтрокиПрверка = СтрокаПроверка-1;
СотрудникНайден = Истина;
Прервать;
КонецЕсли;
КонецЦикла;

ТекСтр = ТекСтр + 1;

СтрокаРасшифровкиПоДням.Сотрудник = Сотрудник;
Проверка = Ложь;
Проверка2 = Ложь;
ВсегоСверхурочных = 0;
Праздничных = 0;

Если Сч = НомерСтрокиПрверка Тогда
Продолжить; // Предотвращение повторной загрузки данных из строки, где есть данные сотрудника
Иначе
Для Сч1 = 1 по 31 Цикл

СтрокаТД = Сч + 2;
СтолбецТД = Сч1 + 2;
СтрокаСверхТД = НомерСтрокиПрверка + 2;
ВидВремени = "ПервыйВидВремени" + Строка(Сч1);
КоличествоЧасов = "ПервыйЧасов" + Строка(Сч1);

Если СотрудникНайден = Истина И Лев(СокрЛП(ЭлементыФормы.ТабельСравн.Область("R" + СтрокаСверхТД + "C" + СтолбецТД).Текст), 1) = "С" Тогда

СтрокаРасшифровкиПоДням[ВидВремени] = Строка(ЗаполнениеВремени(ВидВремени, СокрЛП(ЭлементыФормы.ТабельСравн.Область("R" + СтрокаТД + "C" + СтолбецТД).Текст)));
СтрокаРасшифровкиПоДням[КоличествоЧасов] = ЗаполнениеЧасов(КоличествоЧасов, ЭлементыФормы.ТабельСравн.Область("R" + СтрокаТД + "C" + СтолбецТД).Текст);

// Надо здесь настроить загрузку сверхурочных

Иначе

СтрокаРасшифровкиПоДням[ВидВремени] = ЗаполнениеВремени(ВидВремени, СокрЛП(ЭлементыФормы.ТабельСравн.Область("R" + СтрокаТД + "C" + СтолбецТД).Текст));
СтрокаРасшифровкиПоДням[КоличествоЧасов] = ЗаполнениеЧасов(КоличествоЧасов, ЭлементыФормы.ТабельСравн.Область("R" + СтрокаТД + "C" + СтолбецТД).Текст);

КонецЕсли;

КонецЦикла;
КонецЕсли;

СтрокаРасшифровкиПоДням.Физлицо = СтрокаРасшифровкиПоДням.Сотрудник.Физлицо;

КонецЦикла;


Попытка

ДокТабель.Записать(РежимЗаписиДокумента.Проведение);

Исключение

Сообщить("Не удалось провести документ!");
ДокТабель.Записать(РежимЗаписиДокумента.Запись);

КонецПопытки;

ЭлементыФормы.ИмяЗФайла.Значение = ДокТабель.Ссылка;

КонецПроцедуры
И, собственно, скрин эксель файла:


(http://hostingkartinok.com/show-image.php?id=936914f8a63056a2db15802719230126)
Добавлено: 19 Фев 2014, 08:05

Функции "ЗаполнениеВремени" и "ЗаполнениеЧасов" взял из конфигурации
Функция ЗаполнениеВремени (НазваниеЯчейкиВБазе, ВидВремени)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КлассификаторИспользованияРабочегоВремени.Ссылка,
| КлассификаторИспользованияРабочегоВремени.Наименование,
| КлассификаторИспользованияРабочегоВремени.БуквенныйКод КАК БукваВидаВремени,
| КлассификаторИспользованияРабочегоВремени.ПолноеНаименование,
| КлассификаторИспользованияРабочегоВремени.РабочееВремя
|ИЗ
| Справочник.КлассификаторИспользованияРабочегоВремени КАК КлассификаторИспользованияРабочегоВремени";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
Если Выборка.БукваВидаВремени = СокрЛП(Лев(ВидВремени, 2)) Тогда
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = Выборка.Ссылка;
Прервать;
КонецЕсли;
КонецЦикла;

Возврат СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе];

КонецФункции

Функция ЗаполнениеЧасов (НазваниеЯчейкиВБазе, ВидВремени)

Если Лев(Прав(ВидВремени, 2), 1) = "," ИЛИ Лев(Прав(ВидВремени, 2), 1) = "." Тогда
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = СокрЛП(Прав(ВидВремени, 4));
Иначе
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = СокрЛП(Прав(ВидВремени, 2));
КонецЕсли;

Возврат СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе];

КонецФункции
Добавлено: 19 Фев 2014, 15:06

Вопрос решен! Тему можно закрывать. MuI_I_Ika, спасибо, что не прошли мимо

Последний раз редактировалось: Zeus_God; 19 Фев 2014, 15:06. Причина: Объединение сообщений


Теги:
 

Перенос данных из 1с 82 БП (базовая) в 1с 82 БГУ (базовая)

Автор Владимир87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7425
Последний ответ 06 Дек 2014, 17:40
от дфтын
Поиск по бае данных,(полнотекстовый поиск)

Автор kot_ooРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3878
Последний ответ 19 Май 2014, 15:40
от kot_oo
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

Автор dollРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2108
Последний ответ 01 Янв 2017, 20:27
от Геннадий ОбьГЭС
"Задваивание" данных в отчете

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 7317
Последний ответ 15 Окт 2015, 11:21
от Mari_beginner
Куда сохраняются данные в режиме работы клиент при выгрузке данных обработкой "Универсальный обмен данными в формате XML"

Автор xDDРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 6944
Последний ответ 13 Ноя 2014, 08:23
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
164 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
36 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 350
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal