<?php // Полная загрузка сервисных книжек, создан 2024-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='\
Кто же поставит плюс?
Исправь GUI на GUID в описании, ну или UUIN как написано в хелпе самой 1С.
У меня своя такая самописанная 🙂 только функционал чуть шире.
Можно по каждой позиции номенклатуры получить расшифровку движений. Отчет выводится типа как акт сверки где построчно документы из УТ и БП. Можно тут же увидеть откуда взялись разницы в учете. Документы в расшифровке можно открывать, при этом документы из БП тянутся по OLE и выводятся в форму где две ТЧ одна с реквизитами другая с данными ТЧ.
Вообщем твоя обработка найдет своего пользователя, ну и развивать есть куда 😉
2- Исправил. Когда писал, сам внутренне чувствовал, что как-то по другому это звучит. Спасибо за идею — допишу в обработку движения товара. Это вещь полезная.
Мы выгружаем номенклатуру по коду, а уже потом обмениваемся УТ — БП без выгрузки номенклатуры (обмен номенклатуры по коду).
Загрузил обратотку в УТ и вышла следующая ошибка:
{ВнешняяОбработка.СверкаТорговляБухгалтерия(80)}: Поле объекта не обнаружено (Наименование)
СтрТз.Номенклатура=НРег(СокрЛП(Выборка.Товар.Наименование));
Выбирал поиск и по данным обмена и по наименованию.
У всей номенклатуры есть наименования, в чем может быть проблемма?
4-Обработка с открытым кодом, поэтому можно посмотреть отладчиком и настроить под особенности Вашей программы.
По сути вопроса. Ошибка возникает в момент выборки в бухгалтерии.
Выборка происходит по тем счетам где склады «находятся» на субконто3. Это все номенклатурные счета: 07,08.04,10,21,41,43. Причем Номенклатура у них на субконто 1.
Предположения ошибки:
1.существуют движения на каких-то счетах с пустыми значениями номенклатуры.
2.Возможно у Вас есть остатки на счетах например забалансовый счет 004, где расположение субконто другое (там Субконто1 — это партия) это и приводит к ошибке.
Можно либо поправить обработку — такие счета обрабатывать иначе или пришлите кусок своей базы «с ошибкой»- сам поправлю обработку под вас и вышлю.
5 — У нас есть остатки по 004.
Также:
— Мы выгружаем номенклатуру через прочий обмен по коду справочника (не UUIN) — в УТ и БП коды номенклатуры UUIN не совпадают, но совпадают коды справочника номенклатура.
— Название номенклаты у нас совпадает по некоторым позициям, но у них разные артикулы в УТ, коды справочника и полное наименование — так проще сверять позиции в БП (по коду).
— Насколько я понял если поиск в обработке выбрать По данным обмена, то она должна искать по коду справочника, как это у нас настроено в обмене.
— Можно было бы исключить счет 004 (для быстрого решения вопроса), т.к. обороты там не большие и все равно для них правил еще нет.
Спасибо за оперативность на первый вопрос, поставил плюс.
Сами доработать пока не можем, буду ждать ответ.
6- Спасибо. Я напишу для Вас исключения в обработке забалансовых счетов и пришлю. Есть ли еще счета с остатками, где расположение номенклатуры иное чем: Субконто1-Номенклатура,Субконто2-Партии,Субконто3-Склады? Их нужно тоже исключить.
При обменах для поиска нового объекта используются поля указанные в правилах обмена. Для номенклатуры в типовых обменах — это название, родитель и флаг группы.
Когда объект найден дальнейшая привязка осуществляется по внутреннему коду. Эта связка хранится в регистре сведений в обоих базах(УТ,БП). Отчет используется для поиска «По данным обмена» именно этот регистр.
Кстати оригинальная обработка, работает еще дополнительно по артикулам. У нас артикулы уникальны — поэтому связка по ним нормально работает. Для инфостарта я убрал поиск по артикулам — так как он обычно мало применяется.
Артикул у нас хранится в УТ в своем «родном» поле, а БП в поле Комментарий.
7- Остатки есть еще на 001 счете — арендованные автомобили (1- к/а, 2-осн.ср-ва).
— Если речь идет о Регистре сведений Соответствие объектов для обмена, то у нас в нем номенклатыры нет, т.к. мы её выгружаем отдельно Прочим обменом с БП 1.6 по кодам справочника, а в настройках обмена стоит соответсвие по коду справочника. У нас раньше была связка УТ и Бух.7.7 по коду и в БП сделали также, т.к. прочитали, что бывают косяки с дублированием номенклатуры УТ — БП не стали испытывать судьбу и сделали как раньше — коды справочника одинаковые. Проще было реализовать, т.к. остатки были и в УТ и в БП.
— Артикул (каталожный номер) у нас хранится в доп.поле, созданном в БП — ID называется (подгружаем артикул через табличный документ из УТ по коду справочника). Но артикул указан не у всех позиций, например: услуги, материалы, ОС — не указан, товары — указан. В этом наверно м.б. проблемма, но мы уже давно хотели для всей номенклатуры ввести артикулы. Сегодня натолкнулся на ссылку настройка при редактировании номенклатуры в УТ — в ней можно поставить крыжик на уникальность артикулов — у Вас уникальные? А то постоянно сталкиваемся с дублями.
8 — Да именно этот регистр.
У нас артикулы уникальные.
Видимо для вашего случая удобнее поиск при сравнении вести по кода. Он наверное у вас уникальный в рамках всего справочника? Если так, посмотрю и наверное добавлю для вас поиск по нему. Если завтра успею, сделаю обработку. На какой адрес прислать?
7- p.s. Для инфо: Номенклатура еще участвует в забалансовых счетах в БП: ГТД, МЦ.04.
гтд и мц не страшно. Они не обрабатываются, потому что у них нет складов.
Адрес в личку отправил.
(9) Код у справочника номенклатура уникальный (по умолчанию).
13-отправил обработку на адрес
у меня выходит та же ошибка (4), есть остатки на 004 сч., нельзя ли доработанную обработку получить?
(15) давай адрес пришлю. А вообще чуть подождите получите без этой ошибки. Посмотрел внимательно на свой запрос понял, что в одно месте он совсем невеселый. У нас этот «номер проходил» — не было других остатков. А вот при массовом тестированию вылезло недоразумение.
Еще не провериила, но ставлю + авансом, т.к. очень трудоемнкий процесс проверять остатки по распечаткам. Надеюсь, что обработка будет работать
(15) исправил. Отчет учитывает остатки товаров на всех счетах бухгалтерии: как балансовых так и забалансовых.
(17)-Спасибо.
Спасибо, работает, буду смотреть.
при нажатии кнопки «Сформировать» выскакивает данная ошибка:{ВнешняяОбработка.СверкаТорговляБухгалтерия(197)}: Ошибка при вызове метода контекста (Выполнить): {(9, 26)}: Поле не найдено «ЗакупкиОбороты.НДСОборот»
ЕСТЬNULL(ЗакупкиОбороты.<<?>>НДСОборот, 0) КАК НДСЗакуп
РезЗапроса=Запрос.Выполнить();
по причине:
{(9, 26)}: Поле не найдено «ЗакупкиОбороты.НДСОборот»
ЕСТЬNULL(ЗакупкиОбороты.<<?>>НДСОборот, 0) КАК НДСЗакуп
Конфа УТ 10.2.6.4 1.6.17.4-БП
(21) По ошибке похоже, что возникает из-за старого релиза УТ. Там скорее всего нет этого поля. Если нужно, пришли конфигурацию(cf), поправлю под эту старую и вышлю. Укажи почту куда отправить.
хорошо вышлю, на какое мыло?
Почту написал в личное. А обновить свой УТ не хотите?
Да у нас в этой конфе столько донаписано, что дороже выйдет обновить. Там много добавлено, что уже есть в новой конфе, так что пока придется работать на этой
Понимаю. Тогда присылай.
Последнее обновление от 09.11.2009 учитывает остатки на балансовых и забалансовых счетах бухгалтерии.
а строчки в таблице и должны задваиваться, если в УТ и БУХ у одного товара разные коды? Поиск ставлю по данным обмена. Конфы обе самые последние. Сначала ошибка лезла из-за остатка на 004 счете, я ее сама поправила, теперь вот по каждому товару,который есть в обеих конфах с разными кодами вылазиет 2 строки:(
aspirator23 13.01.2010 16:07:47
Последнее обновление от 09.11.2009 учитывает остатки на балансовых и забалансовых счетах бухгалтерии. — — — — — НЕ УЧИТЫВАЕТ! 👿 👿 👿 ❗ ❗ ❗ ❗ ❗
Поиск может выполняться:
— по данным обмена, если обе базы синхронизированы(между УТ и БП организован штатный обмен)
-по наименованию
-по коду
Имена могут задваиваться если это разные объекты(названия одинаковые а карточки разные). Второй возможный вариант задвоения — есть дубли в регистре Соответствие объектов обмена. Хотя этот регистр заполняет программа, но пользователь непреднамеренно очень просто может создать такие ситуации. Регистр нужно проверить и выровнять.
Попробуйте поиск сделать по наименованиям. Тогда товары свернутся по наименованиям.
Базы синхронизированы, попробую почистить регистр «Соответствие объектов для обмена», обменов с УТ настроено несколько, проверю по данным обмена тогда. А по наименованию действительно свернулись.
Поиск может выполняться:
— по данным обмена, если обе базы синхронизированы(между УТ и БП организован штатный обмен)
-по наименованию
-по коду
Имена могут задваиваться если это разные объекты(названия одинаковые а карточки разные). В вашем случае это скорее всего так (разные коды -одинаковые названия). Второй возможный вариант задвоения — есть дубли в регистре Соответствие объектов обмена. Хотя этот регистр заполняет программа, но пользователь непреднамеренно очень просто может создать такие ситуации. Регистр нужно проверить и выровнять.
Попробуйте поиск сделать по наименованиям. Тогда товары свернутся по наименованиям.
Катя с регистром аккуратнее: по нему настроены обмены.
Я знаю, там просто остатки от старого обмена остались. Почистила, задвоенность ушла. А еще можно такой вопросик, можно ли добавить вывод иерархии в этот отчет? Чтобы прямо дерево групп, как в типовых отчетах 8-ки. Я не прошу сделать, просто интересно, есть ли такая возможность. Очень большое количество номенклатуры (2000 позиций), тяжело ориентироваться в отчете. Если в принципе возможно, то очень буду благодарна за небольшую консультацию, как это сделать. Так сказать, куда смотреть. Заранее большое спасибо!
(34) Иерархию сделать несложно. В понедельник планирую второй подобный отчет выложить. Там сверка контрагентов, но механизмы все те самые, за исключением только того что вывод на табличный документ. В нем как раз иерархия и применяется. Код довольно простой так что можете применить в этом отчете — в нашей организации иерархии товаров практически нет, поэтому такой просьбы пока не поступало.
Если склады в УТ и БП не совпадают (в УТ в табличной части указываются) обработка правильно будет работать? А то не выдает ничего — или все идет, или …?
(36) По складам накладывается фильтр. В торговле с этим проблем нет, а вот в бухгалтерии происходит поиск по имени склада. Если склад не находится, выводится сообщение:» В бухгалтерии не найден склад «такой-то». Остатки по нему не будут сформированы!»
Т.е. остатки по такому складу из бухгалтерии в отчет не попадут.
А что с подобным отчетом (это я про иерархию)? Обещал же в понедельник выложить 😉
(38) Катя, каюсь обещал. Сам отчет написан, но пока его тестирую на своей базе. У пользователей возникли некоторые разумные просьбы по усовершенствованию. Обкатаю их и потом положу сюда.
Как то мало 15 символов для имени пользователя в настройках…… ❗
(40) Добавлю. Сколько будет не мало?
(38) Добавил
однозначно +
а с УТ — БП 2.0 будет работать?
(43) В «связке» с БП 2.0 работает.
спасиба, очень нужный отчет, а то сижу и крыжу , аж в глазах темно
обработку цеплять в 1С БУХ или 1С УТ ?
и куда во внешние обработки или во внешние отчеты?
настройки какие-нить нужно делать?
прошу прощения за вопросы, но отчет нужен, правда, вот уточняю сразу как и что
(45) Обработку подключаешь в УТ во внешние обработки. Запускаешь ее. Нажимаешь кнопку Склады/Настройки подключения. Указываешь склады по которым нужно анализировать остатки. Открываешь там-же закладку Подключение. Тут все просто-
указываешь базу бухгалтерии с которой нужно сравнить остатки:
-формат базы
-путь или сервер с именем базы
-пользователь или Windows авторизация
Включаешь сохранение настроек, чтобы каждый раз их не набирать. Для начала, больше ничего не нужно — нажимаешь сформировать — получаешь отчет.
Если нажать справку там тоже я это все кратно описал.
На картинках(скриншотах) к описанию обработке тоже можно посмотреть пример этих настроек.
(46)
обработку подключила в УТ, запустила, выбрала склад — это все просто
а вот базу бухгалтерии указала , но что-то не получается.
как я это делаю:
1. посмотрела путь , который виден в окошке при запуске 1С бухг
2. в обработке нашла папку по тому пути
но!!!
путь указан до папки точно не помню, типа
Server1Cdataopt\r
а когда я при выборе базы в обработке щелкаю по папке opt, то она раскрывается и в енй еще куча файлов.
я пробовала выбрать все по очереди
но обработка пишет, что неправильно выбрана база
касательно пользователя
можно для данной обработки придумать нового? или уже существующего на сервере?
прошу отнестись с пониманием, что я никакой не программист и не сисадмин, а очень нужна эта обработка, но если я сама ее не прицеплю, то никто мне ее не прицепит
Подскажите , если вас не очень затруднит, что я не так делаю в каком шаге ? И мож быть что-нить я должна узнать у сисадмина типа имени пользователя или как настроена выгрузка из УТ в БП ?
Да, у нас есть типа сисадмин, но я знаю, что он мне не помогает совсем, потому сама ищу обрабоки вот на ИНФОСТАРТЕ. Обычно все они добавляются одинаково, это я умею. А вот когда нужно объединять конфигурации или как в этой путь настраивать, то вот не получилось. Мне только первый раз понять как это делать, я запомню.
(46) Если база в файловом формате, то нужно найти папку где она хранится. Найти там файл 1Cv8.1CD и щелкнуть по нему. В строку с База данных подставится путь к каталогу с этим файлом например:
\ServerBasesBuh81Buh_Vimpel где Buh_Vimpel и есть та база где лежит файл 1Cv8.1CD
Пользователя нужно указать того, который есть в этой бухгалтерской базе и указать его пароль. Можно использовать существующего пользователя. Этот Пользователь должен быть рабочим т.е. с помощью него можно войти в базу бухгалтерии. Он должен иметь либо полные права, либо «Дополнительное право внешнего соединения».
(48) спасибо, скопировала вашу инструкуию, завтра на работе попробую
А у меня данные в колонках по БП не выходят. 😥 Пустые колонки. В чем может быть дело? я в 8 новичок. Посмотрела в отладчике — в запросе выборка нулевая получается. С чем это может быть связано?
(50) Посмотри, склады по имени между торговлей и бухгалтерией совпадают?
Если типовая бухгалтерия, то других причин не должно быть. Если нетиповая, то нужно посмотреть чтобы на счетах товарных остатков(41,10….) субконто были в таком порядке:
Номенклатура, Партии, Склады.
Ну и конечно дата отчета. Существуют ли остатки в бухгалтерии на дату формирования отчета?
Склады совпадают и по коду и по наименованию. А субконто всего 2 — номенклатура и склады. На дату отчета сформирован документ «Инвентаризация».
(52) «А субконто всего 2 — номенклатура и склады» — именно «здесь собака порылась».
попробуй:
61 и 66 строки в модуле обработки закомментировать.
71 строку записать так:
» | РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &МассивВидовСубконто, Субконто2 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки »
Флаг Партии анализировать не включай.
75 строку выбросить — запятую в 74 строке не забудь удалить.
Извини, если не заработает. К сожалению пишу с листа — не на чем проверить.
Выдает: {ВнешняяОбработка.СверкаТорговляБухгалтерия(84)}: Ошибка при вызове метода контекста (Выполнить): Произошла исключительная ситуация: {(7, 42)}: Не задано значение параметра «ДатаОтчета»
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&ДатаОтчета, , &МассивВидовСубконто, Субконто3 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
Выборка=Запрос.Выполнить().Выбрать();
по причине:
Произошла исключительная ситуация: {(7, 42)}: Не задано значение параметра «ДатаОтчета»
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&ДатаОтчета, , &МассивВидовСубконто, Субконто3 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
(54) Скорее всего эту строку удалил или закомментировал: Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета); Восстанови ее.
Нужно закомментировать
61 строку
МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии);
66 строку
| ХозрасчетныйОстатки.Субконто2.Дата КАК ДатаДок,
75 и запятую из 74 строки
,
| ХозрасчетныйОстатки.Субконто2.Дата
Если не получится, можешь прислать свою бухгалтерию посмотрю и настрою отчет для тебя.
Теперь пишет: Не удалось подключиться к базе данных бухгалтерии
Хотя настройки выставляю те же. что и раньше
(56) подключение мы не трогали. Запрос, который мы правим, происходит после подключения. Это даже разные процедуры. Закрой — открой программу.
Я понимаю, что подключение это совсем другое дело. Значит с эти разобрались, теперь подключение хромает. Ладно, посижу подумаю. Хотя вроде путь и пользователя верные указываю.
(58) последняя строчка в 55 комментарии в силе.
(58) Бухгалтерия на платформе 8.1?
Да, бухгалтерия на платформе 8.1.
Последнюю строчку в комментарии 55 сделала в силе и вот выдал:
{ВнешняяОбработка.СверкаТорговляБухгалтерия(84)}: Ошибка при вызове метода контекста (Выполнить): Произошла исключительная ситуация: {(7, 42)}: Не задано значение параметра «ДатаОтчета»
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&ДатаОтчета, , &МассивВидовСубконто, Субконто3 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
Выборка=Запрос.Выполнить().Выбрать();
по причине:
Произошла исключительная ситуация: {(7, 42)}: Не задано значение параметра «ДатаОтчета»
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&ДатаОтчета, , &
(62) В (59) Я имел ввиду вот эту «Если не получится, можешь прислать свою бухгалтерию посмотрю и настрою отчет для тебя». 😀
Эта ошибка
Произошла исключительная ситуация: {(7, 42)}: Не задано значение параметра «ДатаОтчета»
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&ДатаОтчета, , &
явно указывает что нет этой строки перед выполнением запроса:
Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета);
Попробуй так:
МассивВидовСубконто=БдБух.NewObject(«Массив»); МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); //МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии); МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
Запрос=БдБух.NewObject(«Запрос»);
Запрос.Текст=»ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Товар,
| СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,
| СУММА(ХозрасчетныйОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &МассивВидовСубконто, Субконто2 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто1″;
Запрос.УстановитьПараметр(«МассивВидовСубконто»,МассивВидовСубконто);
Запрос.УстановитьПараметр(«МассивБухСкладов»,МассивБухСкладов);
Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета);
Базу выслать не могу. А строчка : Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета);
присутствует. А ошибка выскакивает все равно.
Попробуй так (59-79 строки):
МассивВидовСубконто=БдБух.NewObject(«Массив»); МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура); //МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии); МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
Запрос=БдБух.NewObject(«Запрос»);
Запрос.Текст=»ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Товар,
| СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,
| СУММА(ХозрасчетныйОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &МассивВидовСубконто, Субконто2 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто1″;
Запрос.УстановитьПараметр(«МассивВидовСубконто»,МассивВидовСубконто);
Запрос.УстановитьПараметр(«МассивБухСкладов»,МассивБухСкладов);
Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета);
Я понимаю, что вслепую сложно. Но я сама попробую поразбираться. С нуля не могу пока такой отчет написать так хоть в готовом поразбираюсь как работает. Спасибо за помощь. 🙂
Люба, не расстраивайся. Отчет не сложный, очень похож на 77. Пятница, конец недели. Утром, на свежую голову он скорее всего «сдастся».
Спасибо!!! 😉
Получилось!
Строку: Запрос.УстановитьПараметр(«ДатаОтчета»,ДатаОтчета);
вставила после Запрос=БдБух.NewObject(«Запрос»);
(70) Мы за тебя болели.
Громадное спасибо от бедного бухгалтера.!!!! :{}
(72) Спасибо
Спасибо за открытый код.
Небольшое изменение — и прекрасно работает с 8.2
Вот только при ближайшем рассмотрении выяснилось, что очень странно работает…
К примеру сумму из БП не берет, а из УТ — берет
и чтодосадно: Если отрицательный остаток возникает в УТ, то обнуляет его, что приводит к неверному балансу между складами.
К примеру было товара А 1 штука на складе. Пролади его 2 штуки, и в УТ и в БП показываются отрицательные остатки на складе. Обработка выдает 0 для УТ и -1 в БП.
Потом поступило 2 единицы тогоже товара. УТ и БП выдают отстаток 1, а обработка выдает — в УТ 2, в БП 1 и индицирует несуществующее несоотвествие.
Это что, последствие того, что я на 8.2 работать пытаюсь (УТ 8.1.12.95, БП 1.6.26.3) или оно у всех так?
Почему не работает? См. (74) — тьам изменение в одной строчке надо сделать.
Правда по стоимости не сравнивает, но по количеству вполне работает.
Я пользую в 8.2 с 2010-го года
Если посильнее поменять, то наверное и по стоимости будет сравнивать, но мне достаточно и так.
Ниже файлик с обработкой
(85) MikleVV,
спасибо, сама обработка открылась в торговле, прописал путь к базе бух, выбрал склад. Пытаюсь сформировать отчет. а мне выдает ошибку:
{ВнешняяОбработка.СверкаТорговляБухгалтерия.МодульОбъекта(19)}: (COMОбъект)
V82=Новый COMОбъект(«V82.ComConnector»);
по причине:
Класс не зарегистрирован
УТ 10.3 (10.3.13.2), БУХ 2.0 (2.0.34.7)
Может кто подскажет в чем проблема может быть?? ;(
(86) Эта ошибка возникает когда происходит подключение к бухгалтерии.
Выложено две обработки: одна для платформы 8.1, вторая для 8.2.
1.Бухгалтерия на какой платформе? Скорее всего 8.2, если нет, тогда возьми обработку для 8.1.
2. Если бухгалтерия на 8.2, тогда на компьютере где запускаешь обработку сделай следующее:
-Для Windows XP(32-разряда). В левом углу Пуск-Выполнить. В поле вставь такую строку:
C:WindowsSystem32
egsvr32.exe «C:Program Files1cv828.2.15.301incomcntr.dll»
8.2.15.301 — укажи ту платформу которая у вас используется
-Для Windows 7(32-разряда)
C:WindowsSystem32
egsvr32.exe «C:Program Files1cv828.2.15.301incomcntr.dll»
8.2.15.301 — укажи ту платформу которая у вас используется
-Для Windows 7(64-разряда)
C:WindowsSystem32
egsvr32.exe «C:Program Files (x86)1cv828.2.15.301incomcntr.dll»
8.2.15.301 — укажи ту платформу которая у вас используется
Когда вставишь строку, выполни ее. Произойдет регистрация библиотеки с сообщением.
Для Windows 7 — это может не сработать. Напиши, пришлю специальный батник.
(87)
большое спасибо, зарегистрировал. Но теперь другая напасть, вроде и путь к базе бухгалтерии выбрал правильный, и пользователя для входа указал, но как только нажимаю кнопку «сформировать», пишет что «Не удалось подключиться к базе данных бухгалтерии» 🙁 путь проверял, и перепрописывал по всякому, да и пользователя тоже, но все равно не подключается;(
(87)
Скачал обработку под 8.2 (не без трудностей — ктож знал что она только через «посмотреть и скачть все файлы» работает 🙂
Так не идет 🙁
Та, чуть перелделанная мной что я поместил (86) идет прекрасно, а Ваша нет 🙁 При нажатии на «Сформировать» пишет «Недопустимая строка с указанием класса» чем все и заказнчивается 🙁
1С 8.2.15.279
УТ 10.3.17.4
БП 2.0.34.7
(89) что в 87 пробовал?
(90) — в 87 написано: «Выложено две обработки: одна для платформы 8.1, вторая для 8.2»
Вот вторую для 8.2 и пробовал 🙁
(92) Регистрацию comcntr пробовал? Операционная система какая?
(92) Проверил — работает. На всякий случай обновил обработку.
(88) Тут проще, проверь внимательно настройки подключения:
Логин,
пароль,
тип авторизации,
путь к базе, если файловая,
настройки для клиент-серверной, если не файловая.
(93) — регистьрацию не пробовал — не видел необходимости — ведь предыдущая версия успешно работает.
Рперационка Windows XP(32-разряда).
Зарегистрировал — поведение не изменилось
Файл СверкаУТиБП_82.epf
Ошибка: «Недопустимая строка с указанием класса»
Подробно:
{ВнешняяОбработка.СверкаТорговляБухгалтерия.МодульОбъекта(19)}: Ошибка при вызове конструктора (COMОбъект)
V81=Новый COMОбъект(«V81.ComConnector»);
по причине:
Недопустимая строка с указанием класса
(в общем дейсвительно, ну при чем тут V81 ???)
Скорее всего вами был помещен не тот файл.
Попытаюсь скачать вновь выложенную обработку. ТОлько тут трудности: требует денюжек.
Пойду глде-нибудь ахинею в форуме напишу чтоб дала скачать…
(95)
конечно я попроверял и путь, и логин и пароль…и руками прописывал, и с использованием CTrl+C что б не ошибиться 🙁 но все равно почему то ругается: «Не удалось подключиться к базе данных бухгалтерии». Даже и не знаю, что делать:( Подскажите плиз, не может быть это связано например с тем, что УТ платформа 8.2.11.235 конфигурация (10.3.13.2), а БУХ платформа 8.2.14.537 конфигурация (2.0.34.7) ???
(100) разные платформы — обычно сообщение о классе сообщение.
Логин, пароль, путь бухгалтерии вводишь?
(100) Наверняка насчет твоих платформ не скажу. Но сам сталкивался с такой проблемой. Если на компьютере стоит две платформы, то Com-соединение срабатывает только то которое зарегистрировано последним. Попробуй на том компьютере где платформу бухгалтерию(8.2.14) устанавливали последней.
(100) длина логина и пароля ограничена + необходимо использовать «V82.ComConnector» а не «V81.ComConnector», который написан, поэтому и не получается скорее всего. Я вбил в ручную в коде в итоге. Еще были ошибки преобазования к числу из за кривого заполнения пользователями данных, поставил «попытки» и на исключение возвращаю суммы нулевые. А так полезная обработка=)
Скачал. УТ 10.3 (10.3.23.3), БП 8.2 (2.0.53.10). Торговля файловая, бухгалтерия на SQL 2008.
При открытии в БП указываю параметры складов/баз для подключения, нажимаю «Сформировать» и получаю ошибку:
{ВнешняяОбработка.СверкаТорговляБухгалтерия.МодульОбъекта(60)}: Поле объекта не обнаружено (ВидыСубконтоХозрасчетные)
МассивВидовСубконто.Добавить(БдБух.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
При открытии в УТ, после нажатия кнопки формирования через пару секунд получаю пустое поле. Пробовал с различными параметрами отбора — безрезультатно.
(145) Motor24, ошибка в том, что запускаешь в Бухгалтерии. Запускать нужно в УТ.
(146)
Поэтому и попробовал в БП. В УТ выходит белое поле. Может быть из-за того, что УТ файловая, а БП на скуле?
UP. Приношу извинения — косяк крылся в самих базах, а именно — в разных складах. Указал в отборах нужные, обработка заработала. Спасибо!
Добрый день!
В описании указано, что работает с БП 3.0, при подключении из УТ 10.3 выдает ошибку:
{ВнешняяОбработка.СверкаТорговляБухгалтерия.МодульОбъекта(19)}: Ошибка при вызове конструктора (COMОбъект)
V82=Новый COMОбъект(«V82.ComConnector»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
comcntr.dll зарегистрирована
(154) Jaivan, подключение заработало?
(157)
подключение работает но не отрабатывается запрос (по крайнем мере создается ком объект, со стороны БП подключение тоже вижу):
Показать
проверял через консоль запросов в БП 3.0:
{ВнешняяОбработка.КонсольЗапросов_836.МодульОбъекта(55)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(7, 2)}: Ошибка обработки представления «РегистрБухгалтерии.Хозрасчетный.Остатки:Поле не найдено (Субконто3)»
<<?>>РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, , &МассивВидовСубконто, Субконто3 В (&МассивБухСкладов)) КАК ХозрасчетныйОстатки
(160) Jaivan, похоже учет по складам не ведется. Посмотри комментарии 55-66 и 106-120.
Там описаны такие ситуации и как их можно решить.
Добрый день! Из за отсутствия учета в БП товаров по партиям и складам изменил запрос:
Показать
также пытаюсь сделать отбор по 41.10 счету (Товары на складах):
получаю ошибку:
Выборка=Запрос.Выполнить().Выбрать();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.8.2054): {(6, 55)}: Неверные параметры «РегистрБухгалтерии.Хозрасчетный.Остатки, 1»
РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, <<?>>&СчетУчета, &МассивВидовСубконто) КАК ХозрасчетныйОстатки
в обработке вижу закомментированный код:
т.е. значение также пробовали передавать, получилось? возможно не вижу очевидную ошибку…
(162) Jaivan, счета — это заготовки, на случай, если потребуется. Но они не потребовались… 🙂