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='\
Related Posts
- Восстановление последовательности документов при закрытии месяца в Бухгалтерия 3.0 не завершается
- Заполнение табличных частей
- Формирование сводных актов выполненных работ
- Ввод поступления в переработку на основании передачи сырья (между организациями)
- Конспект по установке сервера 1С на linux
- Получение имени компьютера и его IP локально и в терминале
68 Comments
Bylka
Прекрасная работа
искал что то подобное…
Reply ↓
OrsoBear
Будет ли что-то подобное под управляемое приложение?
Reply ↓
CaSH_2004
(30)Сомневаюсь, т.к. конфы на чисто управляемых приложениях насколько я знаю только УТ 11, все остальные имеют оба варианта использования, и поэтому данную обработку можно запускать в обычном режиме, что гораздо удобнее. Вообще я противник чисто управляемых форм без обычных, т.к. это резко уменьшает возможность использованя в них подобных обработок написанных кучей людей с кучей возможностями.
Reply ↓
OrsoBear
(31)
Я по большому счету работаю с самописными конфигурациями.
И есть парочка которые сделаны только на УП.
Дело даже не в том, что Вы против, вот только приоритеты скорее всего иначе нужно расставить.
Такие обработки нужны, чтобы иногда что-то в базе поправить.
А не базы нужны, чтобы именно такими обработками пользоваться.
Все равно, спасибо за ответ.
Reply ↓
CaSH_2004
(32)Хммм, позволю не согласиться, т.к. обработка это инструмент. Юникс платформы потому и не преобрели популярность как Виндовс, т.к. как раз не хватает таких инструментов, и чтобы их создать нужно куча времени и сил.
А зачем создавать когда уже и так все есть? Вот и тут, зачем делать управляемое приложение без возможности использовать обычных обработок? Тут получается самоурезание собственных возможностей, и я этого не понимаю, т.к. если я найду универсальныю обработку на обычных формах, я ее запущу на любой обычной конфе, а что делать если это УП? Все переписывать?
Возможно я не в курсе про какиет-то преимущества УП в которых не предусмотрено использование обычных форм, подскажите это так.
Reply ↓
OrsoBear
(33)
Сервера у нас именно на Юниксе.
Базы на управляемых приложениях через веб интерфейс.
Типовые конфигурации никак не подошли, потому писали свои.
Урезаний возможностей особо не испытываю, разве что COM-объекты
под тонким клиентом на не виндовом сервере никак не хотят работать.
Но и этому обход придумали.
У нас флуд получается.
Давайте каждый останется при своем мнении…
Reply ↓
CaSH_2004
(34)Это все замечательно, но поверь таких как вы единицы, опыт позволяет мне это уверенно утверждать, т.к. я обслуживаю множество мелких клиентов, и повеь у них даже Виндовс не все сисадмины могут настроить.
Насчет флуда не уверен, т.к. каждый делиться своим опытом, но в данном случае приводить в пример одну собственную фирму с Unix+WEB то это как утверждать что если ты имееш машину Мерседес X-6 то значит и и всем другим ничего не мешает иметь такую же. Однако большинство фирм выбирают дешевые и простые решения, им до твоих вариантов как до Луны.
Я не настаиваю на своем мнении, просто ели с твоим вариантом проехаться и предложить людям, то 99% тут же откажуться, вот и все. Так что рынок рассудит нас что более популярно. У нас лично Unix встречиш в единичных конторах, кстати наличие сервера на Unix не говорит еще что он распостранен, вот если бы и рабочие станции на нем были, тогда другой разговор.
Reply ↓
OrsoBear
(35)
Хорошо, обозначу позицию по другому.
Вы преследуете цель создать решение, которое подходит как можно большему количеству
распространенных конфигураций. Будет больше скачиваний и идей по доработке.
Я преследую цель сэкономить время на написание подобной обработки.
Эта на текущий момент мне не подошла.
Ответ на свой вопрос я услышал.
Спасибо.
Reply ↓
Valerich
у меня обнаружился такой глюк, который подпортил впечатление. Выбираю виды объектов, определяю отбор, жму кнопку «Отобрать» и получаю свой список объектов, которые соответствуют фильтру. Но почему-то в таблице выбранных объектов нет колонки с галочками, которые можно было ставить и убирать вручную. В стандартных такое присутствует. Т.е. если фильтр невозможно наложить так, чтобы выбрались только нужные объекты, накладываем фильтр так, чтобы точно получить требуемые объекты + то, что не нужно, руками снимаем галки с объектов, которые не надо обрабатывать и далее обрабатываем уже только выбранные галками.
Еще из пожеланий пользователей:
работаем с одним видом документов. Данные обрабатываем мелкими кусочками каждый раз меняя фильтр. При этом в списке отобранных объектов каждый раз настраиваем какие колонки дополнительные нам бы хотелось видеть. Можно ли сделать так, чтобы набор отображаемых колонок обработка пыталась сохранить (если колонки есть в выборке)? Т.е. я меняю фильтр, нажимаю «Отобрать» и не настраиваю заново отображаемые колонки, а обработка проверяет какие колонки были, какие колонки возможны, добавляет обязательные с точки зрения логики, убирает те, которых уже нет.
Reply ↓
xavi
При попытке выбора задачи «Изменить реквизит» появляется ошибка:
{Форма.ФормаВыбораРеквизита.Форма(26)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока)
ЭлементыФормы.ДеревоРеквизитов.ТекущаяСтрока = ДеревоРеквизитов.Строки.Найти(ТекущееЗначение);
по причине:
Отсутствует ключ строки
Документ «Ввод начальных остатков», таб. часть «Данные по остаткам НДС»
Reply ↓
isn
Идея создания такой обработки, по возможности универсальной, посещала умы, думаю всех, практикующих программистов 1С. И чем лучше программист тем востребованнее она. Обязательно надо оценить — проверить данную обработку.
Reply ↓
isn
Скачал, посмотрел. Симпатично. Есть пожелания: в «Произвольном коде» напиши пример кода по типу 1совского как в обработке УниверсальныеПодборИОбработкаОбъектов например (как в 1С ):
Объект.Наименование = «Новое наименование»;
Сообщить(Объект.Ссылка);
Хотя мне больше импонирует выше указанная обработка от 1С УниверсальныеПодборИОбработкаОбъектов, нравится тем что я могу создать свой код в своей форме (в конфигураторе) минус, созданный код в «произвольной алгоритме» не сохраняется.
Но у тебя более расширенный инструментарий для работы, справки не хватает и пример кода или двух: само писанного и через конструктор. простенького чего нибудь. Думаю было бы очень интересным чтобы написанные варианты произвольного кода, появлялись в списке задач. Естественно чтобы сохранялись варианты само писанного кода, пусть хоть в текстовый файл, чтобы на другом компе из файла загрузить, а на текущем компьютере, сохранённые значения отображались, как я писал выше, в задачах. Кстати сохранение через файл вообще очень просто организовать. для сохранения значений тоже — два ТЗ в одном список с названиями кода, в другом сам код. первый попадает в задачи.
Ну приблизительно. надеюсь мои комменты будут чем то полезным
Reply ↓
isn
ты обработку на других компьютерах используешь?
Reply ↓
CaSH_2004
(48) Да особо такой проблемы и не возникает
Если надо я PowerExplorer юзаю, или просто свою обработку «Выполнение произвольного кода» как встроенную в ГОСиД так и просто внешнюю.
Скажем так — у меня построена работа таким образом что все часто повторяющиеся действия я написал обработки универсальные которые явно лучше справяться с задачей чем писать в Предприятии без отладчика, другие действия редко встречаються и они либо очень простые и можно обработать как я указал уже, либо очень сложные и все равно нужен отодчик, поэтому не имеет смысла дорабатывать ГОСиД.
Вот из-за этого я и не вижу смысла ее дорабатывать, т.к. там работы не на пол часа, но если у тебя есть возможность корректно дописать этот функционал, то я с удовольствием включу в очередной релиз, и укажу тебя как разработчика данного функционала.
Это лучше чем постоянно вносить свои изменения в мою обработку, а я ее постоянно меняю, сейчас на подходе новый релиз, убиты ошибки с пометками и немного удобства добавлено
Reply ↓
Incedo@yandex.ru
При попытке осуществить отбор в справочнике ДоговорыКонтрагентов (УТ 10.3) по свойствам выдает ошибку:
{Форма.Форма.Форма(1223)}: Ошибка при вызове метода контекста (Выполнить)
ТаблицаДанныхОбъекта = ПостроительКопия.ПолучитьЗапрос().Выполнить().Выгрузить();
по причине:
{(48, 30)}: Не задано значение параметра «С_6»
И (Таблица_С_6.Свойство = <<?>>&С_6)
Reply ↓
Incedo@yandex.ru
Разобрался сам. Была переименована конфигурация. Спасибо за разработку.
Reply ↓
isn
Спасибо автору за разработку. Использую в работе очень давно. Есть пожелание по развитию обработки. Было бы здорово, иметь возможность делать отбор по свойству: заполненное, незаполненное, значение и т.д.
Reply ↓
CaSH_2004
(52) Работа со свойствами и категориями (отбор и изменение) были реализованы в типовой обработке самой 1С и естественно есть и здесь — включается в настройках. Странно что используя обработку давно вы не изучили ее функционал и не прочитали справку (в том числе и мои описания) особенно когда чего-то нехватает — почитайте может много нового/полезного найдете 🙂
Reply ↓
isn
Прошу прощения за вопрос. «Ступил слегка». При включении отбора по свойствам и категориям, отбора по «заполнено /незаполнено» увы нет ни в обработке 1С ни в Вашей обработке.
Reply ↓
nurislam
Автору огромное спасибо.Очень хорошая обработка и главное вовремя.
Reply ↓
AlexO
(0) так в чем отличие от типовых? А то кроме «спасибо, помогла!» от авторов, не знакомых с типовыми обработками, больше никакой структурированой информации нет.
Можно четко в описании — что делает, чем отличается, и вообще, зачем была создана? Было тяжело носить две обработки для двух конфигураций?
Reply ↓
AlexO
И протом, нет такого ни термина, ни сокращения — ГОСиД.
ГОС — давно «зарезервировано» Осиповым. У вас — «Глобальная… и документов»? Максимум — есть сокращение ГО, групповая обработка. Название употребляют все. Госид»ом не называет никто, кроме вас ))
Тем более — давно уже, как сами пишите, обрабатываются не только справочники и документы.
И цель, цель «замены» типовым? Всего лишь «…когда нужно было ОПЯТЬ вносить одинаковые изменения в две обработки»?
Reply ↓
CaSH_2004
(58)Вот ведь пристал, что тебе не нравится то? Хочеш штрафануть за использование сокращения ГОСиД — ну проще так называть чем 5 слов писать, чего непонятного? Или тебя все по фамилии имени отчеству величают? Зачем тогда сократил ник до «AlexO»? Называйся по полному как то так: «гуманоид с 3-й планеты Солнечной системы по имени Земля, Иванов Иван Иванович»
Цель как раз и была сделать инструмент всеядным чтобы не путатся где что изменено, т.к. реально напрягает, я с ним работаю по несколько раз в день на куче баз
Reply ↓
CaSH_2004
(63)
Весьма оторванный от России город.
Да ты что, а я и не знал. А откуда у тебя рассчет России идет? От Москвы или от Владивостока?
А ты же не из Москвы! Наверно центр России — твой дом? И Краснодару не повезло что это очень далеко от тебя.
Кстати, Краснодар — это наполовину Москва (из Сочи), наполовину — Украина.
Спасибо — просвятил, а то живя тут это сложно заметить, то ли дело оттуда откуда-то. Я заметил что ты националист и не можеш не указать кто тут есть кто по твоему мнению.
Reply ↓
xaimix
ГОСиД Универсал (1.88/ 06.03.2013 / CaSH)
Бухгалтерия Предприятия 2.0.45.6
1С:Предприятие 8.2 (8.2.18.61)
При попытке отбора по документам выдает следующую ошибку:
{Форма.Форма.Форма(1284)}: Ошибка при вызове метода контекста (Выполнить)
ТаблицаДанныхОбъекта = ПостроительКопия.ПолучитьЗапрос().Выполнить().Выгрузить();
по причине:
{(21, 30)}: Не задано значение параметра «С_1»
И (Таблица_С_1.Свойство = <<?>>&С_1)
В других база она работает исправно. Так же нормально обрабатывает справочники и пр.
С чем это может быть связано?
Reply ↓
xaimix
Здраствуйте, внезапно перестала работать ваша обработка, скорее всего проблема в базе нашей, хотя никаких изменений в конфигурацию не было. Подскажите куда копать.
{Форма.Форма.Форма(1284)}: Ошибка при вызове метода контекста (Выполнить)
ТаблицаДанныхОбъекта = ПостроительКопия.ПолучитьЗапрос().Выполнить().Выгрузить();
по причине:
{(46, 30)}: Не задано значение параметра «С_1»
И (Таблица_С_1.Свойство = <<?>>&С_1)
Reply ↓
CaSH_2004
(66)Ну без указания что вы указываете за параметры при выполнении достаточно сложно сказать. Из того что «Таблица_С_1.Свойство» следует что вы используете свойства при отборе, судя по «Таблица_С_1» — следует что свойство 1-е в выборке Планов видов характеристик «Свойства объектов». Проверьте так ли это.
А вообще параметр там добавляется одновременно со значением, вот:
ПостроительЗапроса.Параметры.Вставить(«С_»+Формат(Счетчик,»ЧГ=0»), Выборка.ссылка);
Т.е. он не может быть пустым, если только не битая ссылка — проверьте этот вариант.
Больше ничего подсказать не могу из-за недостатка информации.
Reply ↓
CaSH_2004
Leave a Comment Отменить ответ
(0) Молодец — хорошо описал аналоги.
Уже за один этот анализ можно плюсовать.
(1) Поддерживаю
Уже за один этот анализ можно плюсовать.
А идея засунуть все в одну «крос-платформенную» значит не вдохновила?
(3) Если получится, будет совсем замечательно.
На скриншоте — после галочки «запись реквизитов в режиме загрузки — текст «Только для изменения раеквизитов» 😀
Под 1С 8.1 тоже самое есть?
Не поставил ни плюса ни минуса. На дисках ИТС есть как минимум 2 «крос-платформенные» обработки документов справочников «УниверсальныеПодборИОбработкаОбъектов.epf», «ПоискИЗаменаЗначений.epf» данный вид обработок существует еще с версии 7.7.
DrAku1a,
Спасибо за глазастость — поправлю
echo77,
На 8.1 нет и не планируется, т.к. ИМХО и так полно платформ = должно быть какое-то однообразие, иначе всю жизнь будем переделывать одно под другое т.к. кто-то нехочет переходить, «неможет» не принимается 😉 т.к.=»слабо хотели»
Kapitan69,
Вот молодец! Какое похвальное наблюдение — ты это скажи 1С-разработчикам, они повидимому запутались, а я тут вроде пытаюсь распутать хоть что-то. Но замечание в целом дельное.
Кусок выдернул, а универсальное решение не заметил:
http://infostart.ru/public/84912/
отбирать только те метаданные, где есть реквизит нужного типа, включая ВНУ, ВБУ,ВУУ
У нас БухгалтерияКОРП. Стоит поменять в процедуре ИнициализацияЗапроса()
строку
//Макет = ПолучитьМакет(«ПредопределенныеРеквизиты_»+ИмяКонфигурации); //$*CaSH
на что-нибудь типа:
Если Найти(ИмяКонфигурации,»Бухгалтерия») Тогда
Макет = ПолучитьМакет(«ПредопределенныеРеквизиты_БухгалтерияПредприятия»);
Иначе
Макет = ПолучитьМакет(«ПредопределенныеРеквизиты_»+ИмяКонфигурации); //$*CaSH
КонецЕсли;
elsiv,
Да, уже такая просьба была и она скоро будет реализована. Как только закончится вакханалия со сдачей отчетности 😮 Пока кому не терпится меняем сами.
Ну вот вроде все реализовал, теперь жду отзывов
К вопросу о универсальности для любой конфигурации
Платформа 1С:Предприятие 8.2 (8.2.14.519)
Конфигурация Бухгалтерия государственного учреждения, редакция 1.0 (1.0.4.3)
После запуска обработки и выбора справочника(документа)
Сообщение
{Форма.Форма.Форма(646)}: Поле объекта не обнаружено (НазначениеСвойства)
Если Не Выборка.НазначениеСвойства.ТипЗначения = Неопределено Тогда
(13)Постарался поправить, просьба отписаться если пройдет проверку, т.к. собираю информацию в каких конфигурациях работает.
К сообщению 14
К вопросу о универсальности для любой конфигурации
Платформа 1С:Предприятие 8.2 (8.2.14.519)
Конфигурация Бухгалтерия государственного учреждения, редакция 1.0 (1.0.4.3)
После запуска обработки и выбора справочника(документа)
Сообщение
{Форма.Форма.Форма(646)}: Поле объекта не обнаружено (НазначениеСвойства)
Если Не Выборка.НазначениеСвойства.ТипЗначения = Неопределено Тогда
****************************************************************************
ВОПРОС РЕШЕН ВАШИМИ ИСПРАВЛЕНИЯМИ СПАСИБО !!!
****************************************************************************
В дополнение к сообщению 13
Платформа 1С:Предприятие 8.2 (8.2.14.519)
Конфигурация КАМИН:Расчет заработной платы для бюджетных учреждений. Версия 3.5 (3.5.16.1)
После запуска обработки
{Форма.Форма.Форма(147,9)}: Переменная не определена (УниверсальныеМеханизмы)
Если <<?>>УниверсальныеМеханизмы.НапечататьДокументПоУмолчанию(Объект, , НаПринтер, Истина) Тогда
{Форма.Форма.Форма(151,9)}: Переменная не определена (УниверсальныеМеханизмы)
Если <<?>>УниверсальныеМеханизмы.НапечататьДокументПоУмолчанию(Объект, , НаПринтер) Тогда
(15)Исправил, подробности см.в описании изменений, жду проверки. Не подумал-бы что КАМИН решит делать все по своему в отличии от типовых.
на сообщ 16
ВОПРОС РЕШЕН ВАШИМ ИСПРАВЛЕНИЕМ !!! СПАСИБО !!!
НО ВОТ КОНФА БГУ ЭТО ЧИСТО ИЗДЕЛИЕ ОТ 1С
(17)значит ее разрабатывали вопреки стандартам выработанным при разработке других конфигураций, к сожалению даже код в одной конфе 1С часто пишут разные функции разные разработчики (ИМХО, сужу по коду)
Пользуюсь этой обработкой, все отлично работает, кроме такого момента: при выборе документа Операция (бухгалтерская) никак не возможно задать отбор (и изменение) по КИФ. не подскажете решение проблемы?
(19)Если узнаю больше информации то подскажу. В какой конфе используете? Что такое КИФ? ЕВываливаются ли какие-то ошибки, если да то их дословный текст. Проверил изменение в БП 2.0 — документ Операция (бухгалтерский и налоговый учет) фильтруется и изменяется
Воинская часть 2.0. КИФ в 8.2 — это то же самое, что КВД в 8.1 (мы ставим 1 для бюджета, 2 — для внебюджета). Ошибок нет, потому что просто в списке реквизитов для отбора (и изменения) этого КИФ вообще нет.
(21)Если нет ошибок, сложно сказать. Не КИФ не КВД мне не говорят ничего, я в бюджетной сфере не работаю.
Удалил более 400 управляющих тэгов в разметке публикации.
Остались ещё лишние тэги, но на отображение они не влияют.
Отличная и полезная обработка.
Небольшое замечание: установка пометки удаления для справочников при включенном «режиме загрузки» вызывает ошибку в строке 1779 (для версии 1.52 от 09.09.11):
Объект.Проведен = Ложь;
(24)Устранил
спасибо
большое
+ автору. Отличный инструмент. Тестировал пока что на Бухгалтерия 2.0, все идет. Попробую на других (14), будут глюки напишу.
( ↓