<?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='\
Обычно регистрирую цены поставщика, установив соответствующую галку в документе поступления. Затем по этим ценам заполняю Установку цен номенклатуры. В типовой это сделано.
Согласен, так и надо делать. Но речь тут идет не о поступление от поставщика, а об оприходовании собственных товаров на склад.
Написать эту обработку меня подтолкнул пользователь, который оприходовал довольно большое количество номенклатуры документом Оприходование товаров, а цены продажи можно назначить только по переоценке. забивать вручную еще документ Установка цен не представляется возможным. 🙁
Согласен. практически не нужная доработка .
Обработка нужная. Перенесла из бух 77 в комплексную остатки по товарам, они ессно только на бух.регистры попали, на остальные регистры — ручками. Сделала обработку, загнала все по складам на несколько доков оприходования ТМЗ, а цены — ручками — ну как-то неохота, а тут захожу лежит — прямо как по заказу. При переходе в начале года — многим нужно будет, так что (1) и (3) не путай те народ, если самим не надо.
(4) Это 8-ка, УТ.
Прим. «остатки по товарам, они ессно только на бух.регистры попали» — суровые у вас переносы. ИМХО, это неестественно.
(5)
Комплексная в моем комменте — это комплексная автоматизация (КА), у нас она называется УТП, УТ+БП, но без ЗУПа, как у вас. Ценообразование почти полностью идентично УТ, во всяком случае в этом документе.
И таки да, у нас «такие суровые переносы». Сначала в БП, оттуда в УТП. А у вас есть вменяемые переносы из Бух 77 или из БП, такие чтобы и регистры заполнялись, хотя бы по номенклатуре и контрагентам. Если что кинь ссылку в каком релизе КА они появились, очень интересуюсь.
Ой, а такую бы штучку для 7 версии (Бухгалерия)… но не для оприходования, а для поступления товара… Никто не встречал? 😳
По поводу нужности обработки для дотачивания данных после переносов:
Нашла ваши переносы из Бух77 и БП 8.1, посмотрела.
Остатки из бухгалтерии по номенклатуре переносятся в документ оприходование товаров (вид операции ВводНачальныхОстатков) по ЦЕНЕ:
Без заполнения колонки Цена, док не проведется. Вот понятие ваших разработчиков о данной ситуации с переносом номенклатуры в упр.учет.
А вот о том же у наших разработчиков (КЗ):
«Задача по переносу остатков товаров управленческого учета (в том числе и партий) по данным бухгалтерского у нас зарегистрирована и она не так проста, как кажется на первый взгляд. Необходимо учитывать множество параметров базы источника, а также базы приемника, чтобы остатки перенеслись наиболее корректно. Работы в направлении развития правил переноса данных ведутся»
Поэтому изгаляемся пока как можем. 😉
На мой взгляд — переносим номенклатуру по себестоимости, а в потом в УТ или КА (УТП, УПП) решаем, как ее превратить в закупочную, розничную и т.д., но на основании этих цен и перенесенных в документ УстановкаЦенНоменклатуры — как раз с помощью данной обработки.
[QUOTE=»larisab»]Комплексная в моем комменте — это комплексная автоматизация (КА), у нас она называется УТП, УТ+БП, но без ЗУПа, как у вас. Ценообразование почти полностью идентично УТ, во всяком случае в этом документе.
И таки да, у нас «такие суровые переносы». Сначала в БП, оттуда в УТП. А у вас есть вменяемые переносы из Бух 77 или из БП, такие чтобы и регистры заполнялись, хотя бы по номенклатуре и контрагентам. Если что кинь ссылку в каком релизе КА они появились, очень интересуюсь. [/IS-QUOTE]Я КА не юзаю. И каким боком данная наработка и КА? О каких регистрах идет речь. Я предпочитаю грузить только документы, правила пишу сам или выцарапываю из типовых.
Непонятно (с).
Итак, спасибо всем за комментарии. тут дело не в «хромание в предметной части»(7). При переносе остатков из 7.7 в КА все остатки заносятся в документ «оприходование товаров», при попытке проведения. выдается сообщение что необходимо выполнить переоценку.
Прекрасно понятно, что сначала должен быть введен документ Установки Цен, затем переоценка, а затем в оприходование заполняются цены.
Но при переносе с точностью наоборот.
2) При заведении новой базы, все остатки оператор быстро оприходовал на склад. Но документ при проведении начал ругаться, что надо выполнить переоценку. В оприходовании все цены ставились вручную как закупочные. на основании этой цены и этого документа нельзя рассчитать продажную цену. штатно придется заново вводить документ установка цен в котором и будет рассчитываться цена продажи.
Эту обработку пришлось написать потому что оператор уже успел весь склад оприходовать.
Советую начальные остатки вносить документом Поступление товаров и услуг.
Eugeneer > все верно говоришь, заполнение цен не по себестоимости, а по типу цен «закупочная». ❗
Спасибо, учтем! 🙂
(13) так там для 8, а я хочу для 7… или я не в теме?…
(11) (12)
КА, УПП, УТ — система ценообразования одна и та же, есть навороты в КА и УПП, но документ Установка цен одинаков во всех конфах.
Данная обработка, сделанная для УТ может применятся в КА, УПП, УТП для КЗ, возможно для Украины.
Речь идет о регистрах упр.учета, состав можно посмотреть в документе Оприходование товаров.
(12)
Сумма и количество взяты со бух.счета Товары, там как известно хранятся остатки по себестоимости.
ТАК понятнее?
Иногда приходится делать переносы остатков, при переходе на новую конфигурацию. 😉
Правила можно писать самому — очень похвально, но когда они уже есть, можно с ними и ознакомиться 🙂 (велосипеды и пр., ну ты понял))))
Прекрасно понятно, что сначала должен быть введен документ Установки Цен, затем переоценка, а затем в оприходование заполняются цены.
Но при переносе с точностью наоборот.
У меня такое ощущение, что речь о розничном складе. Какие могут быть переоценки на обычном оптовом складе?
(19) Честно говоря, не понял сути операции. Перенос делается из разных документов в один? Т.е. остатки берутся из одних доков/регистров, а цены из других? По любому формируем документы в базе-приемнике, а не прямо в регистры пишем. Так?
(19) У нас перенос вообще только бухоперации делает и все, далее приходится или обработкой в оприходование или из вашего переноса брать (я его только вчера ночью нашла на сайте).
Далее проводить на ценам себестоимости, но в регистр ЦеныНоменклатуры они не попадают, надо делать док УстановкаЦен, для этого и обработка эта нужна.
У вас в переносе есть правило УстановкаЦенНоменклатурыОстатки, но запрос там тоже к этому регистру, пока еще не разобралась, откуда же записи возьмутся в этом регистре на момент переноса )))
(20) Моха, речь идет о розничном складе.
(17) Вот тутhttp://infostart.ru/public/64572/
Большое спасибо всем проголосовавшим 💡
При запуске выдает
{Форма.Форма(5,2)}: Недостаточно фактических параметров (ЗаполнитьТабличнуюЧастьПоОприходованиюНаОсновании)
<<?>>ЗаполнитьТабличнуюЧастьПоОприходованиюНаОсновании(СсылкаНаОбъект, Объект, Истина);
Что бы это значило?
Спасибо за обработку!
Именно то, что мне надо сейчас было
Очень помогла и облегчила труд 😉
(25) 💡 Возможно, при подключении внешней обработки вы не указали табличную часть документа. Проверти: Сервис — Внешние печатные формы и обработки — Внешние обработки и заполнение табличных частей. Подгружаете обработку. Указываете документ и обязательно Табличную часть. Смотрите в прикрепленном фото. 🙂
При загрузке обработки происходит ее инициализация, если не указана таб. часть, куда будут выгружаться данные, то возникает ошибка.
(25)onguk Действительно, если просто открыть внешнюю обработку в 1С, то выскакивает ошибка. Форма обработки, использовалась, только для упрощения отладки внешней обработки.
Спасибо за замечание, перезалил файл с исправлением.
Через форму вы не получите желаемого результата, подключайте как внешнюю обработку и вызывайте ее из документа установки цен. Скрин ниже. ❗
Спасибо!
http://www.forum.mista.ru/topic.php?id=326150
Разобрался с Вашей помощью, обработка полезная.
Не понятно только почему разработчики не реализовали эту возможность в таком простом варианте, а оставили витиеватый вариант. Правой рукой левое ухо. ❓
Описано здесь
цитирую:
делаем поступление. жмем кнопочку над таб частью изменить. выбираем заполнить из док-а. выбираем наше оприходованние. выполнить. ок. записать.
делаем установку цен номенклатуры. выбираем нашу цену. жмем заполнить -> заполнить по поступлению. выбираем наше поступление. проводим.
метим поступление на удаление. удаляем.
Еще раз спасибо Инфостарту и Вам всем, господа программисты. 2 часа гадала, как это сделать, поискала здесь — 2 минуты и готово! +++
Доброе время суток обработку подгружаю ругается что данная обработка не предназначина для запуска в этой конфигурации. УТ (2.2.9.7) еси не трудно можете скинуть обнавленную обработку… Товароведы забили весь остаток в опреходования и перебивать не хотят… зарание спасибо
(31)
Обработка предназначена для версии платформы 8.1, если Вы используете платформу 8.2 откройте обработку в конфигураторе. Конфигуратор переконвертирует ее в формат 8.2. После этого снова подключите ее как внешнюю обработку.
Добрый день. Пробовал сделать все как указано на скрине ниже, но что-то не идет, не подскажите, в чем может быть проблема?
к 33 добавление: то есть, когда подключается обработка как внешняя в сервисе, то не открывается диалог выбора документов к которой надо подключить обработку.
к 33 при заполнении через другой диалог сервиса, обработка дает после загрузки диалог выбора документов, но при установке табличной части предлагает только товары и серийные номера?
(35) sadko11. выберите документ установка цен номенклатуры, а не документ Оприходование товаров(как у вас на картинке). и появится табличная часть «Таблица цен»
Спасибо, как раз нужно!
большое спасибо ты волшебник………я думал уже все веревку мылом мазать))))))) оприходовал 4000 позиций сам понимаешь)))))))
Charlzzzz,
Не за что. Рад что обработка оказалась полезной! 🙂
Обработка супер-полезна, ты-молодчина, не пойму только почему в базовом функционале этого нет.
У меня просьба, поправить для розницы 1.0.14.4, в ней нет расчётных типа цен. В Документе оприходование одно поле — цена, тип цены не устанавливается. Мне нужно, чтобы он брал эту цену из оприх-я и вносил её в колонку с названием типа цены закупочная.
Огромное спасибо за обработку, кучу времени сэкономил! 😀
Добрый вечер! Это как раз то, что нужно. Плюсую.
(43) Zasonya, Спасибо 🙂
Спасибо автору ставлю плюс
Я эту обработку взяла за основу использовала в конфигурации, спасибо, помогло.
спасибо!пригодилось
в 10.3 в этой обработке нет необходимости, но все равно пригодилась. Спасибо
как по мне — обработка для внедренцев. пользователю такая обработка в «обычной» жизни практически не пригодится. Не обиду автору все написал.
очень полезная обработка! Спасибо!
(14) Именно такая ситуация (из п.2) и у нас произошла.
За обработку спасибо.
(48) А почему в 10.3 нет необходимости?
Спасибо, пригодилось
Была взята за основу для создания обработки автоматического оприходования (создания документов). Спасибо!
Спасибо! Очень помогла после перехода с 7 на 8! 🙂
А где взять такую же только под 8.2?
(32) Спасибо понял…
Спасибо, обработка классная, но только почему то валюта при установке цен не заполнилась, но это мелочи….
СПАСИБО!!!!!!!!!!!!!! делал под 8,2 — спасло меня от ручной работы на 1500 позиций!!! Если в оприходывании стоит нормально Закупочная цена и валюта с курсом — все происходит на УРА!
На 8.2 нормально работает?
Так на 8.2 работает или не ??
обработка для 8.1 без проблем конвертируется под 8.2
да, всё отлично !!!
И доступно для нашей Тётки.
Спасибо