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

Сравнить два разных документа (табеля)

Автор Dimonmsk, 08 янв 2016, 15:00

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

Dimonmsk

Добрый день,
я новичек в деле программирования, но задача такова.
Я ежедневно заполняю табель раб.времени (свой формат, табель подразделения), раз в неделю получаю в Excel файле от ЦО офиса их табель (их формат, тебель офиса) и загружаю в 1С по идее данные фио, отработанные часы, смены и по дням должны у нас совпадать, но по халатности или лени одной из сторон, данные не вносяться и в итоге разнятся. И это очень осложняет рабочий процесс.
Может кто подскажет как сравнить эти два документа? сверять ручную по-фамильно, по-дням и часам очень сложно т.к. в день до 50 фио может быть... постоянно ошибаюсь.
Может в данные регистров сверять? или вывести их в отдельный документ???
Есть два регистра - 1й Учет смен (мой табель), 2й ТебельОфиса.

скрины прикладываю.

Заранее огромное спасибо!


Платформа не типовая
1С:Предприятие 8.3 (8.3.7.1776)

HumanVIL

Цитата: Dimonmsk от 08 янв 2016, 15:00
Может кто подскажет как сравнить эти два документа? сверять ручную по-фамильно, по-дням и часам очень сложно т.к. в день до 50 фио может быть... постоянно ошибаюсь.
Может в данные регистров сверять? или вывести их в отдельный документ???
Есть два регистра - 1й Учет смен (мой табель), 2й ТебельОфиса.

Ну в общем-то, при наличии регистров в большинстве случаев надо работать именно с ними.
И если их структура в целом похожа и в принципе подходит для сравнения - то вопросов особенных нет.

Dimonmsk

спасибо за ответ.

но как их сравнить ? если особенных вопросов нет...


Цитата: HumanVIL от 08 янв 2016, 15:26
Цитата: Dimonmsk от 08 янв 2016, 15:00
Может кто подскажет как сравнить эти два документа? сверять ручную по-фамильно, по-дням и часам очень сложно т.к. в день до 50 фио может быть... постоянно ошибаюсь.
Может в данные регистров сверять? или вывести их в отдельный документ???
Есть два регистра - 1й Учет смен (мой табель), 2й ТебельОфиса.

Ну в общем-то, при наличии регистров в большинстве случаев надо работать именно с ними.
И если их структура в целом похожа и в принципе подходит для сравнения - то вопросов особенных нет.

HumanVIL

Цитата: Dimonmsk от 08 янв 2016, 15:31

но как их сравнить ? если особенных вопросов нет...


Запрос сделать к регистрам. И проанализировать результат.
У ваших регистров, по идее, обязана быть ссылка на документ регистратор. То есть табель. В регистрах у вас вероятно есть измерения: Магазин, Сотрудник. От всего этого можно плясать...

Dimonmsk

Спасибо!

Да все это есть. Знать бы еще где этот запрос делать и как.
Буду мучиться и дальше, по старинке (




Цитата: HumanVIL от 08 янв 2016, 15:47
Цитата: Dimonmsk от 08 янв 2016, 15:31

но как их сравнить ? если особенных вопросов нет...


Запрос сделать к регистрам. И проанализировать результат.
У ваших регистров, по идее, обязана быть ссылка на документ регистратор. То есть табель. В регистрах у вас вероятно есть измерения: Магазин, Сотрудник. От всего этого можно плясать...

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

HumanVIL

Цитата: Dimonmsk от 08 янв 2016, 15:52
Спасибо!

Да все это есть. Знать бы еще где этот запрос делать и как.
Буду мучиться и дальше, по старинке (


Ну как где...) Делаете обработку. Добавляете пару реквизитов - МойТабель и ТабельОфиса. Их передаете в параметры запроса.
По старинке мучиться не обязательно.) Есть как минимум конструктор запроса, причем с обработкой результата. Правой кнопкой мыши в тексте модуля щелкните, увидите. Он почти работает за вас. Также в открытом доступе есть консоли запросов и консоли системы компоновки данных. Запускаются прямо в пользовательском режиме 1С и очень просветляют.

В принципе, вот результат. Рыба, примерно с вашими данными, показывает разницу в итоговом значении смен, в зависимости от магазина. Естественно, доработать можно как угодно, с отображением номеров строк документов  и т.д. Но это уже творческая работа.)



&НаСервере
Процедура ВыполнитьПроверкуНаСервере(МойТабель, ТабельОфиса)

Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Магазин,
| ВложенныйЗапрос.Сотрудник,
| ЕСТЬNULL(ТабельОфиса.Смены, 0) - ЕСТЬNULL(УчетСмен.Смены, 0) КАК Разница
|ИЗ
| (ВЫБРАТЬ
| УчетСмен.Магазин КАК Магазин,
| УчетСмен.Сотрудник КАК Сотрудник
| ИЗ
| РегистрНакопления.УчетСмен КАК УчетСмен
| ГДЕ
| УчетСмен.Регистратор = &МойТабель
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ
| ТабельОфиса.Магазин,
| ТабельОфиса.Сотрудник
| ИЗ
| РегистрНакопления.ТабельОфиса КАК ТабельОфиса
| ГДЕ
| ТабельОфиса.Регистратор = &ТабельОфиса) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетСмен КАК УчетСмен
| ПО ВложенныйЗапрос.Магазин = УчетСмен.Магазин
| И ВложенныйЗапрос.Сотрудник = УчетСмен.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТабельОфиса КАК ТабельОфиса
| ПО ВложенныйЗапрос.Магазин = ТабельОфиса.Магазин
| И ВложенныйЗапрос.Сотрудник = ТабельОфиса.Сотрудник
|ГДЕ
| ЕСТЬNULL(ТабельОфиса.Смены, 0) - ЕСТЬNULL(УчетСмен.Смены, 0) <> 0";

Запрос.УстановитьПараметр("МойТабель", МойТабель);
Запрос.УстановитьПараметр("ТабельОфиса", ТабельОфиса);

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Сообщить("" + ВыборкаДетальныеЗаписи.Магазин + ", " + ВыборкаДетальныеЗаписи.Сотрудник + ": " + ВыборкаДетальныеЗаписи.Разница);

КонецЦикла;


КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПроверку(Команда)

ВыполнитьПроверкуНаСервере(Объект.МойТабель, Объект.ТабельОфиса);

КонецПроцедуры

Dimonmsk

Спасибо!

ВСЕ ОТЛИЧНО!


Цитата: HumanVIL от 08 янв 2016, 16:43
Цитата: Dimonmsk от 08 янв 2016, 15:52
Спасибо!

Да все это есть. Знать бы еще где этот запрос делать и как.
Буду мучиться и дальше, по старинке (


Ну как где...) Делаете обработку. Добавляете пару реквизитов - МойТабель и ТабельОфиса. Их передаете в параметры запроса.
По старинке мучиться не обязательно.) Есть как минимум конструктор запроса, причем с обработкой результата. Правой кнопкой мыши в тексте модуля щелкните, увидите. Он почти работает за вас. Также в открытом доступе есть консоли запросов и консоли системы компоновки данных. Запускаются прямо в пользовательском режиме 1С и очень просветляют.

В принципе, вот результат. Рыба, примерно с вашими данными, показывает разницу в итоговом значении смен, в зависимости от магазина. Естественно, доработать можно как угодно, с отображением номеров строк документов  и т.д. Но это уже творческая работа.)



&НаСервере
Процедура ВыполнитьПроверкуНаСервере(МойТабель, ТабельОфиса)

Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Магазин,
| ВложенныйЗапрос.Сотрудник,
| ЕСТЬNULL(ТабельОфиса.Смены, 0) - ЕСТЬNULL(УчетСмен.Смены, 0) КАК Разница
|ИЗ
| (ВЫБРАТЬ
| УчетСмен.Магазин КАК Магазин,
| УчетСмен.Сотрудник КАК Сотрудник
| ИЗ
| РегистрНакопления.УчетСмен КАК УчетСмен
| ГДЕ
| УчетСмен.Регистратор = &МойТабель
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ
| ТабельОфиса.Магазин,
| ТабельОфиса.Сотрудник
| ИЗ
| РегистрНакопления.ТабельОфиса КАК ТабельОфиса
| ГДЕ
| ТабельОфиса.Регистратор = &ТабельОфиса) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетСмен КАК УчетСмен
| ПО ВложенныйЗапрос.Магазин = УчетСмен.Магазин
| И ВложенныйЗапрос.Сотрудник = УчетСмен.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТабельОфиса КАК ТабельОфиса
| ПО ВложенныйЗапрос.Магазин = ТабельОфиса.Магазин
| И ВложенныйЗапрос.Сотрудник = ТабельОфиса.Сотрудник
|ГДЕ
| ЕСТЬNULL(ТабельОфиса.Смены, 0) - ЕСТЬNULL(УчетСмен.Смены, 0) <> 0";

Запрос.УстановитьПараметр("МойТабель", МойТабель);
Запрос.УстановитьПараметр("ТабельОфиса", ТабельОфиса);

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Сообщить("" + ВыборкаДетальныеЗаписи.Магазин + ", " + ВыборкаДетальныеЗаписи.Сотрудник + ": " + ВыборкаДетальныеЗаписи.Разница);

КонецЦикла;


КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПроверку(Команда)

ВыполнитьПроверкуНаСервере(Объект.МойТабель, Объект.ТабельОфиса);

КонецПроцедуры

Добавлено: 08 янв 2016, 17:57


Кроме меня, это не кому не нужно.
Так что, нет, не судьба!)

Цитата: cska-fanat-kz от 08 янв 2016, 16:37
а позвать спеца по 1С не судьба?

Теги:

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

Рейтинг@Mail.ru

Поиск