[БП 3.0] Свертка БП 2.0 или БП 3.0 документами "Ввод начальных остатков" в БП 3.0 beta




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

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

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

<?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='\

99 Comments

  1. albert

    Спасибо, попробую.

    А не оставляли режим, чтобы в этой же базе документы ввода остатков сформировались?

    Reply
  2. Alex_E

    (1) albert, Штатная (тиовая) свёртка никуда не делась, это сделана внешней обработкой, или я как-то не так понял вопрос?

    Отличия от штатной этой аналогичны описанным в http://infostart.ru/public/118486/ :

    1. Штатная (типовая) делает не документы ввода остатков, а операции, например, по одному основному средству будет несколько операций (отдельно по 01 счету, отдельно по 02, отдельно по каждому регистру сведений), исправить что-то довольно таки хлопотно. Эта свёртка формирует документы Ввод остатков (ВНО), где исправлять ошибки гораздо удобнее;

    2. После Штатной свёртки много времени занимает удаление помеченных на удаление документов, причем после её завершения, с высокой долей вероятности, останется куча помеченных на удаление документов, на которые есть ссылки. С этими документами то же есть засада, если их оставить в таком виде — если нужно будет удалить что то из текущего периода время открытия окна удаления опять будет значительным. Решение есть, но это опять требует время… В этой ничего удалять не надо, документы аналитики переносятся, числяться проведёнными, но движений не делают (устанавливается ручная корректировка, или можно перенести Документами рассчетов с котрагентами, кроме счетов-фактур).

    3. Штатная свёртка оставляет справочники в том виде, в каком они есть на момент свёртки, в этой можно перенести все справочнике, можно по ссылкам

    ….

    это коротенько, подробнее в прошлой свёртке))))

    Reply
  3. albert

    (2)

    я не про то, прошлую обработку то я хорошо знаю)

    «Старая» обработка в той же ИБ формировала документы ВНО (сейчас же только режим переноса по ОЛЕ ?)

    Reply
  4. Alex_E

    (3) albert, Да, в исходной базе ничего не формируется — хлопотно очень в 2.0 и 3.0 выдумывать документы))))

    Reply
  5. kuza_87

    Спасибо за шикарную обработку. У меня такой вопрос: есть база на бухгалтерии 1.6. Мне нужно перенести из неё остатки на начало года+обороты. Вашей обработкой можно добиться этого результата или лучше сперва перенести данные в бух 2.0, а потом уже пользоваться вашей обработкой. С бухгалтерией 1.6 никогда особо не работал, моя карьера началась со 2-й версии, поэтому не знаю особо различий между ними.

    Reply
  6. Alex_E

    (5) kuza_87, Попробовать можно, весь вопрос в том, насколько в 1.6 различаются реквизиты справочников и документов… Времени много не займёт, но что получится не знаю)))

    Reply
  7. Borisych

    (1) albert, мною разработана свертка БП 3.0 созданием документов «Ввод остатков». Свернуто более десятка баз — как типовых, так и с жестоко переписанной конфигурацией.

    http://infostart.ru/public/379727/

    Reply
  8. Alex_E

    (7) Borisych, и чего, мне убрать публикацию или просто клиентов сманиваем? 🙂

    Reply
  9. Krez

    Первая проблема с которой столкнулся — некорректно обрабатываются остатки по иерархическим ОС.

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

    Reply
  10. Alex_E

    (9) Krez, Удивительное рядом — все справочники переносятся по одному алгоритму — если Родитель имеет Родителя, то переносятся они последовательно… Сразу не вспомню, может для переноса ОС из 2.0 использован другой алгоритм? Я посмотрю — отпишусь.

    Reply
  11. Alex_E

    (9) Krez, Вот кодпереноса стандартных реквизитов,одинаковый для всех справочников и документов:

    //Перенос стандартных реквизитов
    Для Каждого стрCOM Из РеквCOM.Метаданные().СтандартныеРеквизиты Цикл
    Если стрCOM.Name = «Ссылка» ИЛИ стрCOM.Name = «Предопределенный» ИЛИ стрCOM.Name = «ЭтоГруппа» ИЛИ стрCOM.Name = «ИмяПредопределенныхДанных» Тогда Продолжить КонецЕсли;
    Попытка
    Если ПримитивныйТип(РеквCOM[стрCOM.Name]) Тогда
    НовОбъект[стрCOM.Name] = РеквCOM[стрCOM.Name];
    ИначеЕсли Коннект.XMLСтрока(РеквCOM[стрCOM.Name]) <> _СтрокаXML Тогда //Владелец у договора тот же самый контагент, уже записан это было — который ещё не записан
    НовОбъект[стрCOM.Name] = _ПеренестиРеквизит(РеквCOM[стрCOM.Name]);
    Иначе
    НовОбъект[стрCOM.Name] = _Ссылка;//НовОбъект.Ссылка;НовОбъект.Ссылка;
    КонецЕсли;
    Исключение Сообщить(ОписаниеОшибки()) КонецПопытки;
    КонецЦикла;
    

    Показать

    Следом идет перенос просто рекизитов, затем табличных частей.

    Здесь сомнения вызывает условие

    ИЛИ стрCOM.Name = «ЭтоГруппа»

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

    Reply
  12. Krez

    (11) Уточню, я не переношу отдельно справочник ОС. Я создаю документы ВНО по разделу ОС

    Reply
  13. Alex_E

    (12) Krez, Это понятно, просто алгоритм переноса одинаков вне зависимости от того, переносится справочник, или переносятся остатки, или переносятся документы — всегда работает тот код, что привёл выше…

    Что отладчик говорит можете сказать?

    Reply
  14. Krez

    (13) по отладчику пока не смотрел, пока выяснил что не перенеслись ОС с пустой датой принятия к учету, оказавшиеся в одной группе.

    Reply
  15. Alex_E

    (14) Krez, Всяких разных особенностей в бухгалтерии очень много, чтобы отработать как можно больше вариантов нужны разные базы, придумать примеры тупо не возможно… В вашем случае всего скорее нужно смотреть запрос — там остатки БУ и регисров собираются на границу, включающую конец дня даты ввода остатков. Пустая дата меньше, потому наверное не попали…

    Reply
  16. DmitrySS

    При подключении к базе в обработке сразу ошибка:

    Сигнатура проблемы:

    Имя события проблемы: APPCRASH

    Имя приложения: 1cv8c.exe

    Версия приложения: 8.3.6.2449

    Отметка времени приложения: 565d1224

    Имя модуля с ошибкой: backbas.dll

    Версия модуля с ошибкой: 8.2.19.130

    Отметка времени модуля с ошибкой: 54ca1561

    Код исключения: c0000005

    Смещение исключения: 0015113b

    Версия ОС: 6.1.7601.2.1.0.256.48

    Код языка: 1049

    Дополнительные сведения 1: 0a9e

    Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789

    Дополнительные сведения 3: 0a9e

    Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

    Reply
  17. Alex_E

    (16) DmitrySS, Библиотека comcntr.dll зарегистрирована? Попробуйте от имени администратора выполнить команду: regsvr32 «<Пусть к папке платформы 1с>incomcntr.dll»

    Reply
  18. Alex_E

    (16) DmitrySS, а вообще гугл говорит много чего про эту ошибку, тут уже обсуждалось http://forum.infostart.ru/forum26/topic75336/ Проблема вроде как распространённая. у меня такого не наблюдалось ни разу, но ссылок гугления море, например http://nastroisam.ru/oshibka-appcrash/

    Ошибка в backbas.dll наводит на мысль…что её немного редатировали? 😉

    Reply
  19. mixperm

    Обработка очень нужна. В данный момент требуется перенести 41 и 45 счета. По 41 счету сойдет, а вот 45 пустой файл, хотя в отладке видно, что файл данными заполняется, но в итоге пусто

    Reply
  20. Alex_E

    (19) mixperm, О каком файле идёт речь? Здесь нет никаких файлов, идет перенос остатков в документы ВНО, никакие файлы не используются

    Reply
  21. mixperm

    (20) опечатка)) документ ВНО конечно

    Reply
  22. Alex_E

    (21) mixperm, Я уж испугался 🙂 45 счет сейчас не отрабатывает, только что посмотрел — там ТЧ ВНО «МПЗОтгруженные», я её не заполнял((( Надобности не было, функционал наращивается по мере необходимости (когда писал, 45 счет попадал с ТЧ «НоменклатураНаСкладе», что для 45 счета неправильно)… Мне бы базу с реальными остатками по 45 счету, или попробую просто так нарисовать…

    Reply
  23. mixperm

    (22) я с радостью дал бы базу для теста, но она просто огромна, загрузка dt только час занимает, замена конфидициальной информации займет нереально много времени. Буду очень признателен если добавите этот функционал. А еще открою секрет, если такую загрузку сделаете в ERP, то такой обработке цены не будет))) можете платную версию сделать даже. Просто окончательная задача у меня создать ВНО в ERP конфе. Пока приходится грузить в базу посредник.

    Reply
  24. Alex_E

    (23) mixperm, Страшные секреты про ERP — про это только шёпотом. А, если серьёзно, то гнаться сразу за двумя зайцами — стопудово не пойматьни одного, сейчас задача БП — её и решаю 🙂 Про 45, сейчас накидаю по быстрому — посмотрел — там кроме Контрагента, Номенклатуры, Партии вроде ничего не двигается (или есть какие то особые организации со специфической учётной политикой), зачем там огромная ТЧ отдельная непонятно, но сейчас нарисую…

    Reply
  25. mixperm

    (24) в 41 счете в с/ф не заполнен Вид ценности (не знаю как бухгалтерам надо)

    Reply
  26. Alex_E

    (25) mixperm, Для 41 логично «Товары»…

    Reply
  27. Alex_E

    (19) mixperm, Выложил новую версию, с разделом «Товары отгруженные» (45 счет)…

    Reply
  28. mixperm

    (27) отлично, сейчас тестировать буду

    Reply
  29. Alex_E

    (28) mixperm, Делал на тестовой, боевой такой нету, потому очень интересно, что получилось…

    Reply
  30. mixperm

    (29) Строка 6454 модуль объекта была ошибка, не находил имени колонки, сделал так :

    Попытка
    РеквCOM = стрCOM[КолонкаИмяCOM];
    Исключение
    Продолжить;
    КонецПопытки;

    В итоге загрузилось, без партий и с/ф((( Еще у меня в конфе режим совместимости с 8.3.5 зачем-то стоит п.э. пришлось везде заменить СтрНайти на просто Найти

    Как на счет партий и с/ф?

    Reply
  31. Alex_E

    (30) mixperm, На 45 счете какие счета-фактуры?

    на комиссию передём товары, НДС тут нет, нет и счетов фактур, партии , если есть партионный учет только должны были встать, как бы в запрсе все 3 субконто в остатках проверяются. Про ошибку, обойдённую попыткой — посмотреть бы тест, на какую колонку ругнулось…

    Вообще, конечно, отлаживать нужно на баевой базе, я не могу придумать более-менее вменяемую базу, потому как у всех свои тараканы в учете, о которых я частенько не догпадываюсь…

    Есть ещё вариант — могу попробовать на Вашей базе удалённо, через Ammyy Admin, если что — пишите в личку

    Reply
  32. mixperm

    (31) В бухгалтерии я не силен))))) Просто партии требует указать, их нет. Удаленно без вариантов, админы все закрыли.

    Reply
  33. Alex_E

    (32) mixperm, Можно картинку ОСВ по 45 счету по всем 3 субконто посмотреть? И почту хоть в личку напишите, чтобы не скачивать кучу промежуточных версий (я и выкладывать пока ничего не буду,Ю надо разобраться). Итак, нужно:

    1. Сообщение об ошибке в колонке

    2. Посмотреть оборотку, секретное в картинке можно затереть…мне хочется убедиться, что партии там таки есть.

    Reply
  34. Alex_E

    Да, новые версии выкладываю для последнего на дату публикации релизе, сейчас это 3.043.258. В нём реально в ТЧ нет колонки «Выручка», есть «УдалитьВыручка»…

    ИМХО, уж коли сворачивать базу, то имеет смысл делать это для актуального релиза (настроенную БП так же лучше обновить)… Вполне может быть, что в предыдущих релизах Партия была в обязательных для заполнения реквизитах, сейчас это не так, обязателен «ДокументРеализации», хотя зачем он там нужен для ОСНО непонятно наглухо — в движениях он не участвует (не смотрел, может при включеном партионном ученте он нужен, хотя партия — обычно это документ поступления?)

    Reply
  35. cyborg55

    Свернул 3.0.43.241. Вроде все нормально. Спасибо за обработку.

    Reply
  36. Alex_E

    Пожалуйста 🙂

    Reply
  37. mastakw

    Замечания:

    1. Файлы ВНО записываются со странным временем «00.00.00». Должно быть «23.59.59», как и выборка остатков.

    2. 70 й счет без аналитики

    Reply
  38. Alex_E

    (37) mastakw, Про время 23:59:59 непонятно, кому это должно? До даты ввода остатков никаких движений быть не должно — это точно. ВНО с временем 0 — непринципиально, хотя исправить несложно — документы создаются в модуле формы в одной процедуре — добавить в дате КонецДня не проблема. Повторю — ни на что время ВНО не повлияет)))))

    Про 70 — й да, в этой версии возможно и так, пишите в личку почту — пришлю последний вариант, там вроде уже есть аналитика, но, как уже писал, не каждый день сворачиваю, и не всегда есть возможность проверить обработку на реальных данных. Поэтому функционал развивается по мере появления рабочих баз для свёртки…

    Reply
  39. Alex_E

    Выложил новую версию, не могу гарантировать, что всех возможных вариантов ведения учёта там будет все прописано — нужно больше исходных баз, всего многообразия вариантов, я, при всём желании, не придумаю))))))))

    Reply
  40. Alex_E

    (37) mastakw, Специально посмотрел, какое время ВНО в ДЕМО базе:

    Reply
  41. Alex_E

    Выложил новую версию я учетом изменений в релизах БП 3.0.44.*. (Реализовано на БП 3.0.44.123 платформа 8.3.8.2054).

    Reply
  42. smirko

    Алексей, какая версия подходит для типовой БП КОРП 3.0.43.*?

    Reply
  43. Alex_E

    (42) smirko, 6.0.6.5 должна отработать, но не понимаю смысла делать свертку не на последнюю конфигурацию?

    Reply
  44. smirko

    (43) а с 44-ым релизом сейчас все косяки исправили? )))

    Reply
  45. Alex_E

    (44) smirko, А какие косяки для Вас критичны? Я практически всех перевел, пока фатального ничего не встретилось (не говорю, что там всё гладко, так и в 43 было не всё празднично, смысла ждать безкосяного релиза, ИМХО, нет, поскольку таковых в природе не бывает — работаем с тем, что есть, если находим косяки — пишем в 1с, или самостоятельно правим, когда то было по другому?)…

    Reply
  46. llg_44

    Доброго вечера. Скачала.

    На закладке ВНО не отобразились кнопки создания.

    Обработка версии 6.1 скачана. Она работоспособна?

    Проконсультируйте пожалуйста.

    Reply
  47. Alex_E

    (46) llg_44, Ещё нажимать не пробовапли, если экран не шибко большой — кнопки могу уйти в Ещё, или попробуйте расширить левое окно

    Reply
  48. llg_44

    Все хорошо и понятно. Автору респект.

    Я считаю эту разработку перспективной.

    На самом деле основной вопрос — НДС + распределенный НДС.

    Стандартная свертка вообще никаких вопросов не решает. Здесь же расшифровалось доступно. И недостатки ведения учета бухгалтером наглядны.

    Reply
  49. llg_44

    (47) спасибо Вам) все получилось.

    Reply
  50. Ioryk

    Спасибо!

    Замечательная работа.

    Но, возникла проблема, не выгружает Учётную политику.

    «Таблица не найдена….»

    Reply
  51. Alex_E

    (50) Ioryk, Я в курсе, в следующей версии выгружает. просто пока не выложил — есть проблемы с входящим НДС при раздельном учете по способам на 19, хотел доделать…

    Reply
  52. Alex_E

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

    Reply
  53. vasja_yar

    Скачал, попробовал, разочаровался. Можно хоть выкладывать законченные варианты. Сделайте хоть обычную сверку с документами ввода начальных остатков для начало, а потом уже совершенствуйте.

    Reply
  54. Alex_E

    (53)

    Скачал, попробовал, разочаровался…..

    — в заголовке beta, но кто ж на это смотрит?

    Про разачарование хотелось бы поподробней — выложил как раз для того, чтобы сделать правильно.

    Для этого нужны комментарии с ошибками — разачарование к ним отнести трудно, исправить — ещё трудней))))

    Reply
  55. vasja_yar

    (54)

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

    Для этого нужны комме

    ок, просто времени нет для подробных отчетов.

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

    Так же пароль от кластера нет поял ввода. У нас ля подключения надо вводить имя и пароль не только от ИБ но и от 1с кластера

    2. В комментариях к коду указаны что счета 02.01 не обрабатываются

    Эмоционально, так как просто не заработала у меня на БП 3.0

    Reply
  56. Alex_E

    О как…

    Попробую по пукнтам:

    хотелось бы без подключения к базе….

    круто, и что мне делать, если сама обработина задумана как перенос остатков в пустую базу из исходно, причём без разницы «двойки» или «тройк»

    а на текущей уже создавать ВНО,

    для 2.0 такой подход реализован в http://infostart.ru/public/118486/, для 3.0 делать такого не буду, ибо опыт такого подхода в 2.0 говорит, что создание новой базы и ввод остатков ней гораздо практичней …. может я не прав, но это моё ИМХО. моя придумка, и…ну короче — мои галоши — куды хочу — туды и ставлю!!!!

    Так же пароль от кластера нет поял ввода.

    — ну тут вообще непонятно, кто кого поял, но подключение к другой базе через COM описано не раз, потому и в чём разница между подключением к файловой базе или к серверной можно много чего почитать

    В комментариях к коду указаны что счета 02.01 не обрабатываются

    — ну в комментариях написано, что 02.01 не обрабатывается потому как остатки вводятся вместе с 01.01…так документ ВНО устроен, а что не так?

    Эмоционально, так как просто не заработала у меня на БП 3.0

    — пишите в личку — могу показать как и что через амми админ, а пока только эмоции, и ничего, как руководство к действию(((((

    Reply
  57. Borodach

    Добрый день.

    1С:Предприятие 8.3 (8.3.8.2197)

    Бухгалтерия предприятия, редакция 3.0 (3.0.46.16) (http://v8.1c.ru/buhv8/)

    1С запускаю от имени администратора

    но при запуске обработки появляется окно «Нарушение прав доступа»

    В чем может быть дело?!

    Reply
  58. Borodach

    Вот более подробно

    Ошибка загрузки документа.

    по причине:

    Ошибка подключения внешних метаданных

    Отсутствуют права на интерактивную загрузку внешних обработок

    по причине:

    Нарушение прав доступа!

    Reply
  59. Borodach

    Разобрался в версии БП 3.0.46.16 не достаточно вкл. роль «Администратор», надо еще роль «Право запуска внешних обработок».

    Reply
  60. Alex_E

    (59) Недавно появилось, в связи с появлением шифровальщика для 1С. Он как раз через внешние и запускается))))

    Reply
  61. makcbol1

    Бухгалтерия предприятия, редакция 3.0 (3.0.37.41) Алексей какую версию лучше использовать v6.0.6.5 или v6.2.2.4?

    Reply
  62. Alex_E

    Версии появляются по мере выхода обновлений 1с и расширению функционала обработки. Использовать лучше последнюю, но предыдущие оставил для того, чтобы на старых версиях БП можно было попробовать предыдущие версии обработки… Я всегда использую последнии, правда с обновлениями платформы и программы возможно, что что-то придётся править)))))))

    Reply
  63. sergeyshik

    Может подскажите как художник — художнику.

    У меня в источнике остатки висят на нескольких счетах , которые вливаются в один.

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

    ГДе будет покрасивее подписать, что если есть несколько соответствий, то возвращать массив счетов?

    Reply
  64. Alex_E

    (63) Если потребность «одноразовая», то в модуле есть процедура переноса счета — там можно написать соответствие прямо в коде. Но, я не пробовал, но если в таблице соответствия будет несколько строк со счетами разными счетами источника и одним счетом приемника, разве не отработает?

    Reply
  65. sergeyshik

    (64)нет, вроде не отрабатывает. сейчас более глубоко изучу вопрос. потребность не разовая. Результат пришлю в личку для последующей версии 🙂

    Reply
  66. Alex_E

    Буду только рад!

    Reply
  67. hibico

    Попробовал перенос 2.0 (2.0.66.16) —> 3.0 (3.0.47.28).

    Всё очень плохо 🙁

    Вкратце, не переносятся:

    Организация (в 3.0.47 отсутствуют ТерриториальныеУсловия, УчетнаяПолитикаОрганизации),

    Соответсвенно УчетнаяПолитикаОрганизации,

    План счетов (отсутствует ОбщегоНазначенияБПКлиентСервер.СтруктураПараметровУчета()),

    70 счет, Зарплатные документы и т. д.

    Буду пробовать с откатом на 3.0.44.

    Reply
  68. Alex_E

    реально Учетная ПолитикаОрганизации сейчас назыется УчетнаяПолитика

    Reply
  69. Alex_E

    выложил обновлённую версию

    Reply
  70. hibico

    (69)То, что номер версии прежний «СверткаИПереносБП_БП30_v6.2.2.4» — это нормально?

    Кстати на версии 3.0.44.204 были почти те же проблемы.

    Reply
  71. Alex_E

    Выложил новую версия 6.2.2.6. (кстати по неизменившемуся номеру — никак не привыкну к новому редактору публикаций)

    Reply
  72. makcbol1

    при запуске вылазит ошибка «Процедура или функция с указанным именем не определена (СтрНайти)» БП 3.0.37.41 платформа 8.3.8.2137

    Reply
  73. Alex_E

    Старый метод поддерживается для совместимости с 8.2 Найти (Find)

    Имя метода глобального контекста. СтрНайти (StrFind) используется без режима совместимости с 8.2

    Reply
  74. makcbol1

    (73) подскажи что надо сделать что бы запустилась ?

    Reply
  75. Alex_E

    (74) Или уберите совместимость в 8.2 (в типовой 3.0.37.41 совместимость с 8.3.8, если не ошибаюсь, поэтому не совсем понятно для чего включена совместимость с 8.2?). Или попробуйте заменить СтрНайти на просто Найти с соответствующими параметрами и обработкой возвращаемых значений.

    Отмечу в очередной раз — разработка идёт на последних релизах платформы и в типовой конфигурации. Предусматреть всяческие извращения все возможные варианты работы с БП не представляется возможным)))))

    В принципе вопрос уже задал — зачем совместимость с 8.2?

    Reply
  76. mrkop
    Reply
  77. Alex_E

    (76) Не совпадающие реквизиты пропускаются, но выдается сообщение. Остатки то по 01 и 02 счету перенеслись?

    Reply
  78. mrkop

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

    Reply
  79. Alex_E

    (78) Попытка провести что говорит? В принципе, могу посмотреть через амми админ — пишите в личку

    Reply
  80. mrkop

    (79) Ругается на «не задана система налогообложения.»

    Reply
  81. Alex_E

    (80) Установите вручную (есть перенос на закладке константы, но в 2.0 слишком мало настроек Учётной политике, потому можете перенести оттуда и руками добить нужное — в 3.0 настроек больше)

    Reply
  82. lepth

    Приветствую и спасибо за обработку!

    Не могу понять почему перечисления переносятся через Порядок? Например ставка ндс 18%, порядок 0, функция _ПеренестиРеквизит возвращает также 0 (т.к. примитивный тип), и значение в итоге не заполняется. Если убрать порядок и оставить ссылку, то все встает нормально.

    Reply
  83. Alex_E

    (82)

    Не могу понять почему перечисления переносятся через Порядок

    потому что в запросе через COM кроме порядка ничего не получишь….

    Reply
  84. lepth

    Странно, Ваша же функция ПеренестиРеквизит прекрасно разбирает com-ссылку перечисления. В то время как порядок совершенно не дает результата.

    Reply
  85. Alex_E

    (84) Ссылку прекрасно переносит, а вот из запроса только порядок)))) Не один час убил, когда писал — иного варианта просто нет….

    Reply
  86. lepth

    _ПолучитьСотрудника — нужно поправить таблицу для варианта БП 2.0 на СотрудникиОрганизаций. Не часто, конечно, ведется развернутый учет по работникам на 70, но все же..

    Reply
  87. Alex_E

    (86) Спасибо за ошибку, их ещё много найдётся , думается, не все делятся, почему-то((((

    Reply
  88. lepth

    а НМА, как я понял, пока в разработке?

    Reply
  89. Alex_E

    (88) Да, т.к. как-то пока не попадалась база, где они были, потому и не делала пока, как попадётся — так сразу

    Reply
  90. lepth

    Еще нашел неточность в «любимом» разделе 76.АВ, а именно в переносе счетов-фактур. Хоть в комментарии и указано, что счф переносим всегда, при выставленном флаге АналитикаДокументамиРасчетовСКонтрагентами лезет в процедуру преобразования и возвращает другой тип. Соответственно в итоговом поле СчетФактураДокумент находится Неопределено.

    Да, 76.АВ частенько не переносят и заполняют уже в приемнике по перенесенному 62.02, но все же 76.ав иногда требуется из-за номеров этих самых авансовых счф.

    Reply
  91. Alex_E

    (90) Надо исправлять — если в остатках есть 76.АВ со счетами фактурами, то, в нынешних условиях уже не важно, что там на 62.02 (если конечно не совсем запущенный случай, и эти счета-фактуры на аванс были в книге продаж декларации) — их нужно переносить обязательно. В этом случае документов расчетов с контрагентами должно быть основание счета-фактуры на аванс, а сам документ должне быть перенесен как есть. Тут вопрос, в исходной базу счет-фактура то был? А то, бывало 76.АВ есть, и хорошо ещё если контрагент там есть, могло быть вообще счет 76.АВ и рассчитанная сумма)))). Дайте мне Вашу базу — интересно поковыряться, заодно и НМА можно будет добавить…

    Reply
  92. Ioryk

    Замечательная обработка. Несколько раз использовал, всё устраивает, хотя ещё и осталась ручная работа.

    Такой вопрос возник, что бы скачать обновленную версию — нужно опять платить ?

    Или есть какой то механизм, для доступа к уже скаченным файлам ?

    Reply
  93. Alex_E

    (92) Насколько мне известно — нет. Сам постоянно скачиваю обновленные версии публикаций за мани — других вариантов не нашёл… Но тут вопрос скорее не ко мне, а к администрации сайта.

    Reply
  94. mrkop

    При формировании ВНО Капитал вложение Выходит ошибка «не найдена номенклатура»

    Расчет с покупателями вылетела ошибка и документ не проведенный

    Расчет по налогам и взносам вылетела ошибка и документ не проведенный

    Расчет с персоналом по оплате труд вылетела ошибка и документ не проведенный

    Reply
  95. Alex_E

    (94)Дайте базу…

    Reply
  96. mrkop

    (95) Вот Лог есть всех процедур которые делал. Делал скриншоты этих ошибок но что то не найду где они (((

    Reply
  97. Alex_E

    (96) А Вы в исходной базе ОСВ, к примеру, на дату свертки делать не пробовали, может там те же косяки, просто ВНО их не принимает, а в учете они есть?

    Reply
  98. slawa

    Для того чтоб не дублировались документы ВНО при перезакачке предлагаю немного подправить код функции модуля формы

    &НаСервере
    Функция СоздатьДокументВНО(РазделУчета, СчетУчета, Подразделение = «»)
    //вно = Документы.ВводНачальныхОстатков.СоздатьДокумент();
     //slawa Нач 20180706 00:52 (ID:)
    ЗапросВНО = Новый Запрос;
    ЗапросВНО.Текст =
    «ВЫБРАТЬ
    | ВНО.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ВводНачальныхОстатков КАК ВНО
    |ГДЕ
    | НЕ ВНО.ПометкаУдаления
    | И ВНО.Организация = &Организация
    | И ВНО.РазделУчета = &РазделУчета
    | И НАЧАЛОПЕРИОДА(ВНО.Дата, ДЕНЬ) = &НачалоДняДата
    | И ВЫРАЗИТЬ(ВНО.Комментарий КАК СТРОКА(100)) ПОДОБНО &Комментарий
    | И &Подразделение»;
    ЗапросВНО.УстановитьПараметр(«Организация», Объект.Организация);
    ЗапросВНО.УстановитьПараметр(«РазделУчета», РазделУчета);
    ЗапросВНО.УстановитьПараметр(«НачалоДняДата», НачалоДня(Объект.ДатаВводаНачальныхОстатков));
    ЗапросВНО.УстановитьПараметр(«Комментарий», «%» + СчетУчета + «%»);
    Если ЗначениеЗаполнено(Подразделение) Тогда
    ЗапросВНО.Текст = СтрЗаменить(ЗапросВНО.Текст, «И &Подразделение», «И ВНО.ПодразделениеОрганизации = &Подразделение»);
    ЗапросВНО.УстановитьПараметр(«Подразделение», Подразделение);
    Иначе
    ЗапросВНО.Текст = СтрЗаменить(ЗапросВНО.Текст, «И &Подразделение», «И ВНО.ПодразделениеОрганизации = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)»);
    КонецЕсли;
    выбЗапросВНО = ЗапросВНО.Выполнить().Выбрать();
    Если выбЗапросВНО.Следующий() Тогда
    вно = выбЗапросВНО.Ссылка.ПолучитьОбъект();
    Для каждого таб Из вно.Метаданные().ТабличныеЧасти Цикл
    вно[таб.Имя].Очистить();
    КонецЦикла;
    Иначе
    вно = Документы.ВводНачальныхОстатков.СоздатьДокумент();
    КонецЕсли;
    //slawa Кон
    
    вно.Дата = КонецДня(Объект.ДатаВводаНачальныхОстатков);
    вно.Организация = Объект.Организация;
    вно.РазделУчета = РазделУчета;
    вно.Комментарий = «#[» + СчетУчета + «]» + » Введен обработкой переноса (свертки) данных [» + ТекущаяДата() + «]»;
    вно.Ответственный = Пользователи.ТекущийПользователь();
    вно.ОтражатьПоСпециальнымРегистрам = Истина;
    вно.ОтражатьВНалоговомУчете = Истина;
    вно.ОтражатьВБухгалтерскомУчете = Истина;
    Если ЗначениеЗаполнено(Подразделение) Тогда
    вно.ПодразделениеОрганизации = Подразделение;
    КонецЕсли;
    Возврат вно;
    КонецФункции
    

    Показать

    Reply
  99. Alex_E

    (252) Спасибо за предложение, подобный вариант с поиском документов у меня был, но я от него отказался. Причина проста, в обработке могло быть указано количество строк в документе, и в результате ввода остатков могло образоваться некоторое количество документов…потом что-то изменили, и количество строк могло измениться, вообще их состав может поменяться, как и количество документов, в общем, сейчас документы просто остаются и их можно удалить перед вводом новых, а с поиском можно нарваться на «непредвиденные хвосты»…

    Ваш код очистит все ВНО по выбранному разделу, часть может оказаться пустой…в общем, почему бы нет? Но, я пока остановился на варианте без очистки — как минимум есть возможность сравнить результаты, а по номерам документов видно какие более «свежие» …если они провелись конечно.

    В общем, будет досуг, подумаю, может включу Ваш код в обработку, пока мне как-то привычней что-ли, в том виде, в котором есть сейчас.

    Ещё раз спасибо за предложение, возможно включу вы обработку…

    Reply

Leave a Comment

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