Тюнинг Бух.7.7, УСН: Табельный учет




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2025-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

66 Comments

  1. Арчибальд

    Бета-версия. Замечания принимаются.

    Reply
  2. BorisBelov

    (1) Пожалуйста, несколько замечаний!

    1. Зачем смотреть КонецРассчитанногоПериодаБИ()? Где это используется в табеле?

    2. Сотрудники, не работавшие в месяце табеля, зачем-то попадают в таблицу.

    3. Интуитивно не понятно назначение предпоследнего ряда кнопок (а подсказка не появляются!).

    4. Что должна делать обработка при нажатии на кнопки <= и => в табличной части? Пишет для каких-то сотрудников во все дни «В» или ничего не пишет.

    5. Табель не открывается (при выборе рд_Период).

    В целом идея замечательная, многие главбухи будут использовать, как мне кажется. Но требуется доработка.

    Reply
  3. Арчибальд

    (2) Спасибо за замечания.

    1. Это остатки от Каминовчких алгоритмов. Уберу.

    2. Там есть проверка на глСотрудникЧислитсяРаботающим(КонДатаПериода), табель ему не заполняется. Чтобы вообще в таблицу не попадал — доделаю.

    3. Описание добавлю.

    4. Если табель заполнен, он сдвигается на один день вправо/влево. Добавлю в описание.

    5. При выборе периода открываются полько незаполненные календари.

    Reply
  4. kompas-dm

    (0) Конечно, плюс. Но много лет работаю с этим календарем

    Reply
  5. Арчибальд

    (4) Я знаком с этой работой, там мой плюсик присутствует. Но самому пришлось когда-то мучиться со сменными графиками работы. К тому же хотелось совсем не трогать конфигурацию.

    Reply
  6. Хряк

    а чё при открытии 3 разА выскакивает форма ZapM.ert

    если жмакнуть перезаполнить календарь на закл Справочный — она же выскакивает два разА

    жму ДобавитьВсех-добавляет

    жму ещё раз…опять добавляет и т.д.

    жму заполнить всех (или одного)

    л_Часов = ?(л_Часов < 3, 0, л_Часов);

    {D:1C_DB\_TUNESACC524EXTFORMSPRNFORMSТАБЕЛЬНЫЙУЧЕТ.ERT(1248)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)

    колонка Итог в табеле — расширь до 10 знаков, 120 отображается как 20

    по мне, так надо ZapM.ert сделать независимой, т.е. чтою ея отдельно можно было открывать.

    Reply
  7. BorisBelov

    (3) глСотрудникЧислитсяРаботающим(Сотр,ДатаЗнач) вообще-то не годится! Здесь проверяются только две даты: начало месяца и конец месяца. Если сотрудника приняли 2-го числа, он отработал до 25-го числа и уволился, то он РАБОТАЛ в месяце, но не работал ни в начале, ни в конце!

    Поправьте, пожалуйста, раскраску календаря: числа суббот и воскресений плохо читаются. В календаре от 1С мнемоника работы с календарем и раскраска мне кажутся более удачными.

    Reply
  8. lana_nco

    При скачивании получаю файл ZM1.zip размером 17,4 кБ. Распаковать не удается — неизвестный формат или ошибка в архиве. Помогите, пожалуйста.

    Reply
  9. Арчибальд

    (6) Замечания отработал, перезалил.

    (7) Насчет цветов — возможно, в дальнейшем сделаю выбор цветов раскраски. А какой календарь от 1С подразумевается?

    Насчет периода работы — да, я сделал сильно упрощенный вариант. Исходил я из того, что если зарплата считается в Бух 7.7., значит фирма маленькая, и добавить/удалить сотрудника в список — не прблема. Но буду над этим работать.

    (8) Пробуй еще. Сейчас новый вариант.

    Reply
  10. Хряк

    в ZapM.ert

    В ПриОткрытии исправить

    Если л_Спр.НайтиПоНаименованию(«л_Имя»,1) = 0 Тогда

    на

    Если л_Спр.НайтиПоНаименованию(л_Имя,1) = 0 Тогда

    прелагаю поле рд_код унести за форму

    слово месяц выкинуть ваще

    формулу текста м_Год+» года» заменить на ПериодСтр(НачалоМесяца,КонМесяца(НачалоМесяца))

    кнопки < > разместить по краям этого текста (т.е. месяца)

    и переименовать ZapM.ert в Календари.ert

    Reply
  11. Арчибальд

    (10) Яволь! Исполнено!

    Reply
  12. Хряк

    в ТабельныйУчет

    рд_ИмяГрафика 8 символов, может прибавить?

    фл разбить на страницы перенести влево под использовать график

    фл выводить шапку и подпись перенести правее фл разбить на стр.

    фл учит праздники и сдвигать график перенести правее списка графиков

    Ответственный перенести вниз, расположить под фл сдвигать график

    поле рд_Период унести за форму, на её место вставить текст с функцией

    Функция ЗаМесяц()

    Поз=Найти(рд_Период,»/»);

    Если Поз<>0 Тогда

    Стр=Сред(рд_Период,Поз+1);

    Поз=Найти(Стр,»/»);

    Год=Лев(Стр,Поз-1);

    Мес=Сред(Стр,Поз+1);

    КонецЕсли;

    сДата=»01.»+?(стрдлина(Мес)=1,»0″,»»)+Мес+».»+Год;

    Стр=ПериодСтр(НачМесяца(сДата),КонМесяца(сДата));

    Возврат Стр;

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

    + этот текст поместить в слой Кнопки

    При выборе из списка усл.обозначений Я ошибка

    л_ТабСотр = рд_Таблица.ПолучитьЗначение(л_Стр,»Должность»).РабочийТабель;

    {D:1C_DB\_TUNESACC524EXTFORMSPRNFORMSТАБЕЛИ.ERT(1372)}: Значение не представляет агрегатный объект (РабочийТабель)

    предлагаю закомментарить строку внизу модуля

    //м_Сокр.ДобавитьЗначение(«», «»);

    чтобы в списке сокращений не было пустой строки

    и в ПриОткрытии иправить

    м_Сокр.ДобавитьЗначение(л_Зн, рд_Таб.Описание);//л_Зн);

    тогда список вываливается не с обозначением, а с описанием

    Reply
  13. Арчибальд

    (12) Отработал все, кроме последних двух абзацев. Описание — слишком длинно. А пустышка нужна для дней, когда сотрудник был уволен или не был еще принят.

    Reply
  14. Хряк

    в исправленном

    Если л_Знач = «Я» Тогда

    л_Часов = 0; //надо бы л_Часов = 8;

    а про Описание — слишком длинно, это ты зря

    >А пустышка нужна для дней, когда сотрудник был уволен или не был еще принят — ну и зачем он в табеле?

    Reply
  15. Арчибальд

    (14)

    ну и зачем он в табеле?

    Приняли его с 10 числа. с 1 по 9 д.б. пустышки.

    Насчет 8 часов ты прав. При следующей перезаливке учту. Мне еще предстоит разобраться с этими «неполномесячными».

    Reply
  16. Арчибальд

    (7) Теперь работает с «неполномесячными» сотрудниками.

    Reply
  17. Хряк

    предложу еще в при открытии

    л_Параметры = Форма.Параметр;

    Если ТипЗначенияСтр(л_Параметры) <> «СписокЗначений» Тогда

    л_Параметры = СоздатьОбЪект(«СписокЗначений»);

    КонецЕсли;

    Родитель = л_Параметры.Получить(«Родитель»);

    Действия = л_Параметры.Получить(«Действия»);

    //добавить вот ето, и далее, чтоб вызывать из дока Начисление ЗП при нахождении обработок в прнформс

    Докум = л_Параметры.Получить(«Контекст»);

    Если ПустоеЗначение(Докум)=0 Тогда

    рДата=Докум.ДатаДок;

    Иначе

    рДата=ТекущаяДата();

    КонецЕсли;

    м_Год = ДатаГод(рДата);

    м_Мес = ДатаМесяц(рДата);

    ниже убрать

    // м_Год = ДатаГод(РабочаяДата());

    // м_НомерМесяца = ДатаМесяц(РабочаяДата());

    (переменная м_Мес в Табеле вместо м_НомерМесяца, в Календаре вместо рд_Код)

    Reply
  18. BorisBelov

    (9) Насчет выбора цветов — перебор! В календаре от 1С все проще. Картинку можно посмотреть в «ЗиК» или «Комплексной».

    Кнопками выбираются месяц или год календаря, автозаполнение календаря. На любой дате установили 0.00 часов — эта дата нерабочая, если для праздника задали 8.00 часов, то это уже не праздничный, а рабочий день (намекаю на удаление из Вашей картинки городушки по переносу праздничных дней!) Информация о месяце содержит название месяца, число рабочих дней, часов (зачем числа воскресений? Снова намекаю!)

    Вариант с «неполномесячными» сотрудниками;

    //*****************************************************************************

    // ИсключитьДниПоХарактеруРаботы()

    //

    // Параметры:

    // <ДатаДок> — дата месяца

    //

    // Описание:

    // Исключает дни в месяце пока не числится принятым на работу

    // в КолЧасов[31] =1 — отработал день, =0 — не работал

    //

    Процедура ИсключитьДниПоХарактеруРаботы()

    ХарактерРаботы=СоздатьОбъект(«Периодический»);

    ХарактерРаботы.ИспользоватьОбъект(«ХарактерРаботы»,Сотрудник);

    ТекДата=НачМесяца(ДатаДок);

    Для Сч=1 По ДатаЧисло(КонМесяца(ДатаДок)) Цикл

    КолЧасов[Сч]=1;

    ТекХарактерРаботы=ХарактерРаботы.ЗначениеНаДату(ТекДата);

    Если (ТекХарактерРаботы=Перечисление.ХарактерРаботы.ТрудовыеОтношенияПрекращены) или (ПустоеЗначение(ТекХарактерРаботы)=1) Тогда

    КолЧасов[Сч]=0;

    КонецЕсли;

    ТекДата=ТекДата+1;

    КонецЦикла;

    КонецПроцедуры //ИсключитьДниПоХарактеруРаботы

    Reply
  19. lana_nco
    lana_nco пишет:

    При скачивании получаю файл ZM1.zip размером 17,4 кБ. Распаковать не удается — неизвестный формат или ошибка в архиве. Помогите, пожалуйста.

    Попробовала ZM4. Результат — тот же: «Распаковать не удается — неизвестный формат или ошибка в архиве». Это МОЙ глюк?

    Reply
  20. Арчибальд

    (17) Для переноса табеля в документ планировалась отдельная кнопочка. Хотя, возможно, я остановлюсь не предложенном варианте.

    (18) С неполномесячными справился запросом к кадровым документам. Это гораздо экономнее, чем перебирать все дни у всех сотрудников.

    Мне категорически не нравятся календари от 1С, поскольку:

    1. Автозаполнение не учитывает праздников.

    2. Не видны (не выделены) предпраздничные дни. К тому же они, естественно, тоже не заполняются.

    3. Для пятидневки и шестидневки нужны отдельные табели.

    4. При переносе выходных нужно отслеживать количество часов вручную.

    Reply
  21. Арчибальд

    (19) Поподробнее в личку, пожалуйста. Разберемся.

    Reply
  22. BorisBelov

    (20) Можно смотреть кадровые документы, минус подхода в том, что часто бухгалтеры не вводят кадровый документ, а непосредственно правят реквизит в справочнике «Сотрудники». Перебор значений заполнит табель правильно! Потери времени субъективно не ощутимы в «малых» фирмах.

    1. Автозаполнение учитывает праздники (в стандартной 1С для этого есть галочка «учитывать праздники»). Конечно, праздники д.б. заданы! Вы также можете где то хранить праздничные дни и заполнять календарь с учетом праздничных дней.

    2. Предпраздничные дни можно и не выделять. Излишняя пестрота не есть хорошо! Смотрят реквизит всего рабочих дней/часов в месяце. Он правильный — далее, скорее всего, тоже все правильно. Праздников в России немного — править предпраздничные дни не трудно!

    3. Отдельный табель в стандартной 1С для сотруддников с разными рабочими календарями, конечно, не нужен. Там программа хранит в справочнике «Сотрудники» календарь сотрудника и заполняет табель с учетом этого календаря! Вам значитель труднее — календарь-то один! Либо расширять возможности обработки на разные календари, либо сказать: «Малые фирмы работают по пятидневке!»

    4. Заложенного смысла фразы не понял.

    Reply
  23. Арчибальд

    1. У меня праздники как раз хранятся. И при автозаполнении пользователь предупреждается о том, что надо бы выходной перенести. 1С этого не умеет.

    2. Реквизит Часов правильный — вероятно, далее правильно. Но для проверки надо на каждый день календаря встать и посмотреть. У меня сразу видно укороченные дни.

    3. У каждого сотрудника с особыми условиями труда, обычно, два календаря — рабочий и для исчисления доп. отпуска. Так что в 1С бех отдельного табеля не обойтись. У меня обойтись можно, т.к. субботы и воскресенья различаются. Т.е. написать обработку, которая по количеству календарных дней отпуска и количеству «шестидневных» дней доп. отпуска считает день выхода на работу — это я уже проходил.

    4. В феврале 2010 года выходной 20 был перенесен на 22. У меня автоматически для 20 числа установилось 7 рабочих часов. 1С этого не умеет.

    Ну, а касательно изменения характера работы не документами, а правкой периодических реквизитов — это вопрос воспитания пользователей. У нас кадровую информацию не могут править ни бухгалтеры, ни зарплатчики.

    Reply
  24. BorisBelov

    (23) Задача программиста не воспитывать бухгалтера, а написать код, который будет работать правильно. Бухгалтер записал правильную информацию о сотруднике доступными методами (он не обязан вводить приказы). Отчет же ваш соберет данные неправильно.

    В таблице табеля пусто. жму «Заполнить одного» (она активна!), получаю

    рд_Таблица.УстановитьЗначение(л_Стр + 1, i, «»);

    {C:DOCUMENTS AND SETTINGSALL USERSДОКУМЕНТЫИЗ ИНФОСТАРТАКАЛЕНДАРЬ В V77ТАБЕЛЬНЫЙУЧЕТ.ERT(1258)}: Номер за пределами значения!

    Либо сделать неактивныи кнопки этого ряда, либо не допустить ошибку, третьего не дано! Кстати, подсказок по кнопкам так не появилось!

    У меня в таблице 1 сотрудник. Зашел на закладку «Справочный», перезаполнил КАЛЕНДАРЬ, вернулся на закладку «Общий» и получаю не нужную мне инициативу заполнения таблицы табеля всеми сотрудниками. Я этого не просил! Кстати расцветка Сб и Вс в календаре практически не отличается от расцветки в первой версии обработки, т.е.очень плохо читается.

    1С в календарях принципиально очень мало автоматизируют, какой будет перенос, на то укажут в документах Думы или Правительства,посему и «не умеет». Это в защиту 1С.

    Reply
  25. Арчибальд

    (24) Сегодня бухгалтер не обязан вводить приказы, завтра скажем, что он не обязан вводить требования-накладные, послезавтра еще… И быстренько вернемся к первой версии 1С бухгалтерии, когда вводились только проводки. Нет уж, логика (правило) эксплуатации 1С обязывает пользователя применять для отражения хозяйственных операций специально разработанные документы — если они, конечно, имеются.

    По второму абзацу не сразу смог восстановить ситуацию. Но нашел и исправил. Скоро перезалью.

    При заполнении таблицы хоть одним, хоть несколькими.

    Третий абзац — аналогично.

    Reply
  26. BorisBelov

    (25) Вы не правы! Демагогия не лучший аргумент. Базу свернули, документы удалили. ЭТО ШТАТНАЯ СИТУАЦИЯ. В реквизитах сотрудников все правильно. Приказов нет, Ваш отчет не найдет документов и что нафантазирует? Кстати, обрати внимание, как поступает 1С при начислении ЗП, что она смотрит, приказы или параметры? Ну зачем ты упрямишься…

    Reply
  27. Арчибальд

    (26) Отнюдь не хочу спорить не по делу. Но! Утверждение

    Базу свернули, документы удалили. ЭТО ШТАТНАЯ СИТУАЦИЯ.

    противоречит

    В реквизитах сотрудников все правильно.

    При удалении кадровых документов очищаются строки истории, установленные этими докуметами. Откуда же взяться правильным реквизитам?

    Кадровыми документами типовой Бух 7.7. устанавливаются более 15 периодических реквизитов сотрудника, влияющих на зарплату. Пардон, не верю, что кто-то их правильно пропишет вручную.

    А моя обработка — надстройка для типовой, и если типовая предполагает изменение состояния сотрудника именно кадровыми документами, я тоже имею право (и даже обязанность) на такое предположение.

    Насчет посмотреть как делает ЗиК — нет уж, пардон. Четверть публикаций на Инфостарте посвящено глюкам этой «конфы» — вполне достаточное основание, чтобы считать решения 1С в этой области, мягко говоря, некомпетентными.

    Reply
  28. BorisBelov

    Извините, Арчибальд, но Вы опять не прав. Не все периодические реквизиты справочников очищаются при удалении документов, записавших эти реквизиты (подробнее, см.описание языка). Характер работы к таким не относится! Удаление приказа о приеме не очищает реквизит. Сотрудник ПРИНЯТ!

    Мое предложение посмотреть, как 1С определяет принят сотрудник на работу или нет, относится к бухгалтерской конфигурации (для нее разрабатывается отчет?). См. модуль проведения…

    Реквизиты, влияющие на начисление налогов на ЗП и списание в расходы, будьте уверены, бухгалтер заполнит только правильно, иначе цепочка ошибок дотянется до налоговой инспекции, ФСС и других проверяющих органов … Не в интересах бухгалтера это допустить!

    Предлагаю закрыть обсуждение по этому эпизоду.

    У меня дополнительные предложения по развитию Вашего проекта. Неплохо бы дать возможность пользователю выбирать имеющиеся табели (введенные и сохраняемые Вами), например, из списка.

    Reply
  29. Арчибальд

    (28) Картинку с реквизитами прилагаю.

    Функция глСотрудникЧислитсяРаботающим(Сотр, ДатаЗнач) проверяет начало месяца и конец месяца. Внутрь месяца не смотрит.

    Функция глДатаПриема(Сотрудник) ищет в истории первую запись, когда характер работы стал непустым «рабочим», т.е. для картинки это будет 27.04.2011. Для марта при этом сотрудник будет числится работающим (согласно глСотрудникЧислитсяРаботающим), а все предыдущие месяцы — нет.

    Какой модуль проведения имеется в виду?

    По предложению выбора табеля — имееется в виду уже заполненный табель? Сейчас заполненные табели хранятся по одному в месяце — думаете, стОит хранить несколько?

    Reply
  30. BorisBelov

    (29) Мне кажется нельзя лишать возможности посмотреть сохраненный табель. Альтернатива — искать бумажную форму в папках в шкафах…

    Ну а ввобще-то, лучше создать новый документ «Табель…», он хранится в журнале. Обновлению конфигурации это не помеха.

    Reply
  31. Арчибальд

    (30) При добавлении сотрудника в список ищется его строка в сохраненном табеле, и если найден — строка заполняется из табеля. Нажав кнопку «ЗаполнитьВсех» мы как будто бы открываем (виртуальный) документ «Табель».

    Reply
  32. Хряк

    -кн удал. подразд. не имеет имеет идентификатора рд_УдПодр

    -если в табл есть строки, то при выборе закл Справ, нажать кн перезаполнить-слои накладываются

    -хотелось бы из табеля открыть календарь

    Reply
  33. Арчибальд

    1. Исправил

    2. Исправил

    3. Не понял

    Reply
  34. Хряк

    перепутал

    если у сотра нет оклада, при создании НачислениеЗП получаем бесконечный цикл (ну, хоть сообщить об этом)



    и каждый раз создается новый документ.

    табель открыт через открыть форму, табель пустой, при закрытии спрашивает Созать док?

    из бантиков

    если есть галка исп.график и галка учитывать праздники, появляется флаг сдвигать график

    если снять галку исп.график, флаг сдигать не пропадает

    Reply
  35. Арчибальд

    (34) ОК, исправился.

    Но бантики проигнорировал 😀

    Reply
  36. yelena-ppm

    Добрый день! Не вижу стоимости этого блага для буха 🙂

    Reply
  37. Ish_2

    (36) Арчибальд — джентльмен. Денег не берет. Так-то !

    Reply
  38. Altair777

    (36) у этого блага нет стоимости, оно бесценно! 🙂

    Reply
  39. Арчибальд

    (36) А сколько заплАтите?

    (37) Не берут денег гусары, а не джентльмены.

    Reply
  40. yelena-ppm

    Могу предложить либо «Большое бухгалтерско-человеческое спасибо», либо добрый совет при случае 🙂 Ваши предложения?

    К сожалению, меня пока ваше чудо не спасет, т.к. конфа не БУ, а УСН 🙁 жалко…

    Reply
  41. Hellgga

    (40) Если его очень хорошо попросить…;), он, может быть, и для УСН сделает?

    И это было бы здорово!

    Попросим?

    Reply
  42. Арчибальд

    (40) Для спасиб есть специально отведенное место. А на УСН тоже работает, кстати.

    Reply
  43. Hellgga

    (42)И всё-таки: С-П-А-С-И-Б-О! 🙂

    Reply
  44. kibicova

    Добрый день. При открытии календаря возникает такая ошибка:

    л_Спр = СоздатьОбъект(«Справочник.ПрочиеОбъектыУчета»);

    {E:БАЗЫ1SBUKREXTFORMSКАЛЕНДАРЬ.ERT(439)}: Неудачная попытка создания объекта (Справочник.ПрочиеОбъектыУчета)

    что это значит, подскажите пожалуйста.

    а при открытии табеля

    л_Календарь = СоздатьОбъект(«Справочник.ПрочиеОбъектыУчета»);

    {E:БАЗЫ1SBUKREXTFORMSТАБЕЛЬНЫЙУЧЕТ.ERT(999)}: Неудачная попытка создания объекта (Справочник.ПрочиеОбъектыУчета)

    СПАСИБО.

    Reply
  45. Арчибальд

    (44) Это значит, что в вашей конфигурации такого справочника нет. То есть это явно не Бухгалтерия и не УСН.

    Reply
  46. Arthy

    не сохраняются табеля

    при открытии снова все приходится вводить

    Reply
  47. Арчибальд

    (46) Заполненные табели сохраняются по кнопке «Сохранить ДБФ»

    А еще надо глянуть на (31) пост

    Reply
  48. antoninayuf80

    Очень полезная обработка. Только ей теперь и пользуюсь. Огроменное главбуховское спасибо автору!!!

    Reply
  49. kcenyapet

    А мне идея конешно порадовала, но только она подходит когда немного сотрудников и все просто (8час. раб. день у всех, 5 дневная неделя ), непонятно что делать с отпусками и сотрудниками которые работают не полный рабочий день.

    Reply
  50. Арчибальд

    (49) Делать тог же самое, что в любой зарплатной программе. Забивать в табель отклонения от нормы (для отпусков). А для полуставочников утверждать рабочий график. Он может быть любым.

    Reply
  51. ula1c

    Спасибо, думаю буду пользоватья, если станет удобнее. Как бухгалтеру хотелось бы иметь такие возможности:

    1. При выборе условных обозначений отработанного и неотработанного времени(сокращения) автоматически проставлялась данное обозначение от даты изменения до конца месяца.

    2. После заполнения из сохраненного файла появляются сотрудники (договорники), которых быть не должно в табеле, я их удаляла в сохраненном варианте. Возможно это и правильно, если необходимо кого-то добавить, но желательно иметь кнопочку «Удалить пустые строки»

    3. При печати табномер не помещается.

    4. Можно было бы задать и номер табеля и дату составления и сохранять номер в имени ДБФ файла.

    5. В распечатке выходные хотелось бы видеть другим цветом — серым например.

    Кроме того, у нас в колонке невки по причинам дни(часы) указывается неявки в рабочие дни. Например сотрудник в отпуске «ОТ» ему ставится все 28 календарных дней, а в неявках за минусом выходных, он же не должен был являтся в выходные дни.

    Reply
  52. Арчибальд

    (51) Думаю, предложенные «фишки» улучшили бы юзабельность. Но вносить их я все же не буду. Дело в том, что финишная отладка весьма затруднительна для меня — у меня просто нет ни бухгалтерии, ни УСН. Эта разработка некоммерческая, мне просто захотелось сделать календарь, не влезая в типовую конфигурацию, сопровождать/развивать функционал не планировал изначально.

    Reply
  53. ula1c

    (52) Прийдется самой, но и за этот вариант спасибо.

    Reply
  54. Hellgga

    Добрый день.

    Табельный номер напрягает править (помнить, что надо раздвигать колонки при печати) всё время.

    Reply
  55. Кошки рулят

    Чушь какая-то.

    Я так понимаю, автор скоммуниздил это у Камина, но вместо того чтобы создать в конфигурации нормальные документы и справочники лепит какие-то внешние обработки и сохранение в ДБФ…

    Человек изобретает какой-то свинтопрульный аппарат.

    Все эти календари, табели и намного больше уже давно было сделано http://opvklar.narod.ru

    И без всякого плагиата и без всякого ущерба типовой конфигурации …

    Чем человек занимается? непонятно …

    Reply
  56. Арчибальд

    (55)

    Я так понимаю, автор скоммуниздил это у Камина

    «Понимаю» означает «недавно грамоте обучился»? Поскольку в тексте публикации явно присутствует

    За основу взяты Каминовские алгоритмы. У них, правда, специальные справочники есть…

    вместо того чтобы создать в конфигурации нормальные документы и справочники

    Конфигурасты рулят…

    По ссылке.

    И без всякого плагиата

    Но мне почему-то справочник доп реквизитов сотрудников очень уж знакомым показался

    и без всякого ущерба типовой конфигурации

    То-то там регистр НДФЛ не работает…

    Reply
  57. Кошки рулят
    Арчибальд пишет:

    За основу взяты Каминовские алгоритмы.

    Там не алгоритмы испльзованы, а кусок конфиурации стырен.

    Арчибальд пишет:

    Но мне почему-то справочник доп реквизитов сотрудников очень уж знакомым показался

    Креститься надо когда кажется, что у тебя стырили справочник.

    Арчибальд пишет:

    То-то там регистр НДФЛ не работает…

    Там регистра НДФЛ нет вообще. Поэтому он и не работает.

    Ты бы книжки какие почитал бы чтоли ??? …

    Демонстрируешь полную некомпетентность во всех обсуждаемых вопросах …

    Reply
  58. k2978

    Ой, ребята. Есои кому то, не нравится. Завидуйте, тихо.

    Reply
  59. nora

    Здравсьвуйте! Очень хотелось бы получить эту обработку. Если Вас не затруднит, прошу сбросить ее на эл.почту: kleponosova@mail.ru. Заранее благодарна.

    Reply
  60. nora

    Обработку скачала. Как ее запустить?

    Reply
  61. Арчибальд

    (61) nora, распаковать архив, например, в ExtForms (главное, в ОДНУ папку) и запускать с помощью меню Файл-Открыть.

    Reply
  62. nora

    Архив распаковала. Пишет ошибку:

    л_ДБФ.PODR = рд_Таблица.ПолучитьЗначение(л_Стр,»Подразделение»).Код;

    {EXTFORMSТАБЕЛЬНЫЙУЧЕТ.ERT(1651)}: Поле агрегатного объекта не обнаружено (Код)

    Reply
  63. Арчибальд

    (63) nora, возможны варианты:

    1. Конфигурация — не Бухгалтерия.

    2. Сотрудник не находится ни в каком подразделении.

    Reply
  64. ulas

    Очень интересно будет скачать. Сейчас, намбеу баллы — главное, что без изменения конфигурации

    Reply
  65. miramak

    Надо посмотреть ее в работе, насколько она полезна.

    Reply
  66. Leanna

    Спасибо, пригодилось

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *