<?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='\
Автозаполнение соответствий есть?
to e.kogan
да есть, при выборе видов документов подбираются соответствия по наименованию и типу, также при смете табличной части для реквизитов автоматически подбираются соответствия.
потом можно переназначить, но только из тех которые подходят по типу.
+ к 1: Как ВПФ подключается?
(2) Чтобы указать, на какой комментарий вы отвечаете — ставьте его номер в скобках
(3) его можно вкинуть в ВПФ,
но из меню в документах вызвать пока нельзя,
можно сделать критерий отбора например «Ввод на основании», и туда поместить вызов этой обработки, чтобы юзер мог из документа по кнопе «перейти» попасть в обработку.
Вроде красиво. Авансом +, попозже потестю.
Вот и ошибка. Если выбираешь «Приемник», а «Источник» не заполнен:
{Форма.Форма(12)}: Значение не является значением объектного типа (Имя)
МассивТипов.Добавить(Тип(«ДокументСсылка.»+Источник.Имя));
(6) Ошибку исправил. Через минуту выложу исправленный вариант.
Необходимо сделать «Поступление товаров и услуг» на основании «Расходный кассовый ордер».
1 . Как правильно сопоставить Контрагента + Договор
2. Как по выражению заполнить «Сделка»
(8) — если типы не совпадают, — тогда через выражение
в выражении надо написать «Результат = ОбъектИсточник.Контрагент;»
аналогично с остальными полями. Если вообще поля нет — тогда через выбор , но это уже надо программировать на встроенном языке.
(6) В Форме, стр.22 то же. Что поправили — непонятно, если вообще поправили.
(10)Теперь точно поправил. В прошлый раз файл на сайте почему-то не обновился.
Сейчас проверил — тот что надо. Спасибо.
Как раз искала что-нибудь подобное, ошибок пока не нашла, так что +
(11) Подскажите, а в Бухгалтерия предприятия, редакция 1.6 (1.6.24.3) будет работать ?
(13) не уверен в сохранении настроек , но обработка работать будет
Не знаю как в остальных конфах, но в УТ 10.3 есть замечательнаю кнопочка в любом из документов «Изменить». При нажатии кнопки на основании любого табличного документа можно создать любой другой. Например, на основании «Приходной» накладной сделать «Расходную». При этом все поддается корректировкам.
(15) не знаю как в УТ, но в тех конфах, с которыми мне приходилось работать такой возможности нет, кнопка «изменить» есть, но ввести на основании — нельзя, ну и групповой ввод на основании кнопочкой «изменить» не сделаешь.
Что имеется ввиду под груповым вводом? Это не оно: к примеру, есть несколько расходных документов и на их основании нужно сделать один приходный?
Если имелось ввиду что-то подобное — то оно через «Измненить» также элементарно делается. Если что-то другое, прошу — подскажите.
под групповым вводом имеется ввиду возможность ввода НОВЫХ документов группой, то есть несколько документов одного вида заполняются на основании другого вида. Заполняются все один к одному, по правилам , которые надо перед тем настроить. Кнопка «Изменить» в таб части ничего подобного не делает, это совсем другой функционал, по кнопке «изменить» можно изменить таб часть уже СУЩЕСТВУЮЩЕГО документа, добавить строки из другого документа, изменить цены и т.д.
Я бы как минимум заменил в процедуре АнализМетаданныхДокумента()
хотя бы на это
А то чтобы счет на основании реализации выписать приходится выражение для поля Контрагент вбивать.
(19) — спасибо, заменил 😀 (всего сразу не предвидишь)
Плохо, что не видно реквизитов источника.
Для написания формулы не удобно.
А так хорошо очень. +
Подскажите пожалуйста (Бухгалтерия 2.0), как на основании
документа «Поступление на расчетный счет»
ввести документ «Реализация товаров и услуг»
не получается заполнить табличную часть Закладки «Услуги», помогите пожалуйста какие алгоритмы вставить в ячейки Таблицы «Услуги»…очень нужно,
заранее спасибо.
Посмотри ОбработкаЗаполнения — там лиюо запросом, либо каждый реквизит в отдельности.
(23) Можете привести промер кода, который можно поместить в ячейку например для графы табличной части «Номенклатура»
(24) НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = Объект.Номенклатура;
Если же через обработку заполнения добавление всей номенклатуры из основания
Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
Можно через внешнюю обработку заполнения таб частей — принцип тот же(где-то на ис механизм описан, либо итс).
Единственно откуда ты номенклатуру собираешься брать из Поступление на расчетный счет, на основании документа расчетов?
А если нужно добавить определенный элемент из справочника «Номенклатура»? (если вводить на основании Поступления денег на расчетный счет — документ Реализация товаров и услуг, то в поступлении денег нет этих всех реквизитов, их надо самостоятельно подставить)
(26) какую хочешь такую и подставляешь — хоть даже таким дурацким методом
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(«здесь код номенклатуры»);
Просто я логику того, как у тебя должно работать не знаю, поэтому на вопрос какую номенклатуру подставлять я ответить не смогу, а ведь проблема только в этом.
Не получается, кто работал с этой обработкой, чего в ячейках указать чтобы табличная часть «Услуги» документа Реализация товаров и услуг» заполнилась…(((
(27) Мне нужно подставить номенклатуру предопределенную из справочника (она не будет браться естественно из Поступления денег на расчетный счет) из него надо подставить только сумму, а все остальные реквизиты нужно что бы подставились определенные (Определенная позиция номенклатуры, количество, сумма, счет, субконто)?
Спасибо! Очень удобная вещь!
Рекомендую отчет, действительно многофункционален и позволяет решать различные задачи. Для автоматизации и ускорения процесса ввода документов самое то.
Спасибо, очень полезно!
спасибо
полезно, особенно бухам
Спасибо, очень удобная обработка.
спасибо! отдали бухам)
табличная часть «Услуги» документа Реализация товаров и услуг» как заполнить?
(36) — это смотря на основании какого документа заполнять,
в обработке надо проставить соответствие полей,
для полей с одинаковым именем и типом — это сделается автоматически
вот спасибо
Отлично! Спасибо огромное! Экономия времени огромная!
Спасибо, очень удобная вещь, интересный подход к реализации, экономит кучу времени.
Спасибо, но ТЧ есть еще в справчниках.
(41) есть , но на основании справочников очень редко вводятся другие справочники или документы
Попробовал в типовой Бух-2.0 = кажется работает(после конвертации через конфигуратор)!
Спасибо!
Спасибо, будем пробовать с остальными обработками, надеюсь то что нужно!
а синхронизация товара только по коду?
у меня пишет что не соответствует обработка текущей версии программы…………..разобралась, открыла через конфигуратор
очень пригодилось бы.но жаль нет возможости протестировать в работе ((( нет «денЮжек»
(47)напишите мне в личку ваш емейл
а синхронизация товара идет только по коду?
(49) по внутреннему идентификатору :), нету здесь синхронизации,
обработка работает в одной ИБ ,
все значения присваиваются или вычисляются в результате выражений.
А из документа ручного ввода в документ начальных остатков можно данные перенести?
Проверил данную обработку в действии. После создания документа «Оприходование товара» и ввода на основании «Установка цен номенклатуры» выдает сообщение:
— Документ Установка цен номенклатуры был записан некорректно! Информация о ценах очищена.
Добавление типа цен «Розничная» в документ ничего не меняет, т.к. при нажатии кнопки «выполнить», создается новый документ. А когда ставишь «галочку» — «копировать номер», обработка не может изменить табличную часть документа и ругается просто, что номер документа «не уникальный»
Может кому еще актуально при создании новой базы…
Решил проблему следующим образом:
1. Создал документ «Оприходование товара» с розничной ценой
2. Создал пустой документ «Поступление» — кн. «изменить» — «добавить из документа» — выбрал «оприходование товара» — провел документ
3. Создал пустой документ «Установка цен номенклатуры» — «Заполнить по поступлению» — выбираем документ поступления» — ставим тип цены (кому какая нужна, а мне «Розничная»)
4. Удалил документ «Поступление» (чтоб не делать никаких доп. документов, типа корректировки)
5. Проверил в интерфейсе «Кассира» — все работает, цены есть, остатки товара тоже, что и требовалось для начала )))
(52) дело в том , что документ Установка цен номенклатуры «хитрый».
У него на самом деле есть 2 табличные части, которые связываются между собой.
То есть просто скопировать из оприходования этой обработкой не получиться.
НО таких «хитрых» документов очень мало, поэтому пользуйтесь на здоровье.
(53) Спасибо и вам за данную обработку, будем пробовать.
БП 2.0. Необходимо создать ПКО (вид операции: «Оплата от покупателя») на основании документов Реализация товаров и услуг. Обработка при создании приходников не заполняет поле «сумма взаиморасчетов». Помогите сопоставить поля. фактически сумма взаиморасчетов = сумма документа
Повторюсь: На основании док.ручного учета можно создать документ ввода начальных остатков в бух8?
Например после свертки базы.
спабо, уже пользуемся
Эта обработка позволяет делать массовый ввод на основании нескольких документов? Или только один док — на основании одного?
Как в обработке формулу писать?
Можете пример привести, по поиску номенклатуры из справочника.
Формула не срабатывает.
Добрый день, а как сделать так что-бы в счет-фактуре полученной автоматически заполнялось основание
написать запрос с нужными параметрами отбора.
(61) Tanis, а что нужно написать в форме ввода формулы ???
Вводишь же на основании. Пишешь в нужной графе результат = Источник.Ссылка;
Добавьте пожалуйста к документам ПТиУ и РТиУ таб.чась «Агентские услуги»
Спасибо!
Добрый день.
Сделала «СЧФ полученный» из «Поступления товаров, услуг», всё получилось, кроме Кода Вида Операций. Нужно, чтобы он в СЧФ был 04, а он упорно ставит 01
Подскажите, пожалуйста,какую надо написать формулу для Код Вида Операций?
Очень-очень надо 🙁
С уважением,
Ольга
(58) Tanis, На основании нескольких документов, создается так же несколько документов
Спасибо за обработку, очень помогла в трудную минуту
Очень полезное решение. конечно, универсальным назвать не получится, т.к. у каждого свои специфики, особенности, моменты. Но тем не менее, немного поддоработав и все вообще замечательно получается.
Обрабатывает группу документов (с отборами). +
Мне нужно сделать Отчет о розничных продажах на основании Отчета о производстве за смену на конкретную дату.. а в обработке выбираются все документы за весь период.. Как выбрать конкретный документ?
Спасибо большое автору, теперь можно платежки скопом делать !!!
А такую обработку, можно скачать, не бесплатно конечно — уважайте труд )
ПКО на основании РН Скопом
Программа работает в УТ11, у клиентов если заведены договора, то в них желательно условия оплаты выбрать как «договоры не используются, порядок расчетов по накладным». Используете так: вводите период, если надо, выбираете организацию и клиента нажимаете заполнить за период, далее в таблице убираете галки против накладных, которым не надо делать ввод на основании приходного кассового ордера и корректируете суммы «ФактОплата», затем ставите дату оплаты — на которую будут созданы ПКО и нажимаете «Выполнить ввод»

Надо бы такую для УФ. Есть умельцы?
Скачал, посмотрел в конфигураторе — вещь! А вот в толстом клиенте на БП 3.0 не работает — вообще нет блока «Универсальные механизмы» в общих модулях. Печалька! Бум ждать под УФ или как-нибудь допилю на досуге.
спасибо за обработку , очень пригодилась.и пригодится еще не раз
Добрый день
Подскажите, пожалуйста, а где хранятся настройки этой обработки (чтобы можно было сохранить в файл)
В Сохранённых настройках их нет 🙁
Ответьте же,
хоть кто-нибудь…
в регистре сведений «сохраненные настройки»
Спасибо!!!
да, но в файл-то оттуда как сохранить?!?
Помогите, пожалуйста ;(
штатными средствами 1с вы не сможете перебросить настройки.
Если базы одинаковые (структура и данные) — то можно запись из регистра перенести в другую базу обработками,
если разные -то сложно.
Да уж….
Всё равно — СПАСИБО за обработку. Сохраню настройки в картинках :), бо добрый человек прописал там формулы, а для простого юзера — повторить это на память — что-то из области фантастики.
для БП 3.0 не планируете сделать аналогичную обработку?
добрый день! Помогите,пожалуйста, заполнить соответствие при создании документа комплектация из документа инвентаризации, если можно
.Спасибо