Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)




Принцип обмена данными из 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. ben_art

    Зачем же плодить одно и тоже , хоть бы кто сделал возможность сохранения и восстановления настроек настроек ?

    Reply
  2. ben_art

    Хотя то что получает ссылку на документ сама . уже хорошо. Но придётся допиливать.

    Reply
  3. qwinter

    (2) ben_art, так оно там и так есть? или нужно конкретно, что бы в базе сохранялись настройки?

    Reply
  4. ben_art

    (3) Уже разобрался прошу прощения за первый коммент , меня смутила запись о не возможности сохранения настроек , а она оказывается есть и в список и в файл )

    Reply
  5. Yashazz

    Баян. Автор, как насчёт загрузки картинок, работы с объединёнными ячейками, формулами, иерархией строк? Как насчёт скрытых разным образом строк?

    Reply
  6. qwinter

    (5) Yashazz, может вам еще ключи от квартиры где деньги лежат?

    Reply
  7. hzhz

    После загрузки сохраненных настроек, поля ВИД ДОКУМЕНТА и ТАБЛИЧНАЯ ЧАСТЬ не устанавливаются из настроек.(у себя исправил)

    Reply
  8. qwinter

    (7) hzhz, исправил, спасибо за замечание)

    Reply
  9. marinasnsd

    Уважаемый qwinter!

    Можно ли с помощью вашей обработки формировать номенклатуру с характеристиками с определенными свойствами (все свойства характеристики номенклатуры задаются в соответствующих полях файла загрузки)?

    Reply
  10. qwinter

    (9) marinasnsd, с помощью этой обработки настроить загрузку номенклатуры сразу с характеристиками, можно только зная программирование 1С (так как например в УТ11 характеристики это отдельный справочник).

    Reply
  11. ben_art

    Подскажите пожалуйста как восстанавливать параметры при открытии формы ?

    Reply
  12. qwinter

    (11) ben_art, не совсем понял, что вы именно хотите?

    Reply
  13. ben_art

    Ну в 8.2 на обычных формах , настройки сохранялись с возможностью восстанавливать их при открытии формы. чтоб не нажимать кнопку «восстановить настройки» а они сами востанавливались

    Reply
  14. qwinter

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

    Reply
  15. ben_art

    да с этим понятно , я знаю что сохранение и восстановление происходит только в форме на клиенте (не как в 8.2) , вот и спрашиваю может есть способы вызывать команду восстановления без нажатия кнопки. (

    Reply
  16. qwinter

    (15) ben_art, чтобы была кнопка восстанавливать автоматически или нет? Можно сделать реквизит, и при открытии присваивать его свойству формы.

    Reply
  17. qwinter

    (9) marinasnsd, а вот теперь можно)))

    Reply
  18. qwinter

    (15) ben_art, добавил и такую возможность)))

    Reply
  19. ben_art

    Ого , спасибо огроменное )

    Reply
  20. ben_art

    только теперь ещё и ссылку на объект сохраняет , а надо чтоб был тот из которого вызвана

    Reply
  21. qwinter

    (20) ben_art, посмотрю.

    Reply
  22. qwinter
    Reply
  23. ben_art

    (22) Спасибо заработало )))

    Reply
  24. onyx

    В модуле формы (Строка 894) ошибка:

    Если ОбъектНайден  Тогда
    

    Reply
  25. qwinter

    (24) onyx, я так понял, это по поводу обновления данных найденных элементов справочников? Это поведение стандартной типовой загрузки, а не ошибка, она не обновляет данные. Как показали вы, ни в коем случае нельзя делать. Это нарушит логику загрузок всего остального, кроме справочников.

    Если вы хотите обновлять данные справочников, то надо чуть выше после:

    Если РежимЗагрузки = 0 Тогда
    
    ЗагружаемыйОбъект = Неопределено;
    Если Не Запрос = Неопределено Тогда
    СтрокаОшибок = «»;
    Для каждого СтрокаПоиска Из СтрокиПоиска Цикл
    
    ЗначениеРеквизита = Неопределено;
    
    ТекущаяСтрока.Свойство(СтрокаПоиска.ИмяРеквизита,ЗначениеРеквизита);
    Если ПустаяСтрока(ЗначениеРеквизита) Тогда
    СтрокаОшибок = ?(ПустаяСтрока(СтрокаОшибок),»»,СтрокаОшибок + «, «) + СтрокаПоиска.ПредставлениеРеквизита;
    Иначе
    Запрос.УстановитьПараметр(СтрокаПоиска.ИмяРеквизита,ТекущаяСтрока[СтрокаПоиска.ИмяРеквизита]);
    КонецЕсли;
    
    КонецЦикла;
    
    Если Не ПустаяСтрока(СтрокаОшибок) Тогда
    Сообщить(«Строка » + НомерТекущейСтроки + » не может быть записана.Не указано значение ключевых реквизитов: » + СтрокаОшибок,СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;
    
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    ЗагружаемыйОбъект = Выборка.Ссылка.ПолучитьОбъект();
    КонецЕсли;
    
    КонецЕсли;
    
    ОбъектНайден = Не ЗагружаемыйОбъект = Неопределено;
    Если Не ОбъектНайден Тогда
    Если НеСоздаватьНовыхЭлементов Тогда
    Продолжить;
    Иначе
    ЗагружаемыйОбъект = Справочники[МетаданныеИсточника.Имя].СоздатьЭлемент();
    КонецЕсли;
    
    КонецЕсли;

    Показать

    добавить:

       Если ОбъектНайден и ЗамещатьСуществующиеЗаписи Тогда
    ОбъектНайден = Ложь;
    КонецЕсли;
    

    То же самое сделать в процедуре: ЗагрузитьПодчиненныеСправочники

    И воспользоваться соответствующей настройкой

    Reply
  26. NE_ZNAIY

    qwinter (Павел) могли бы вы дать ваши контактные данные (почта) для связи?

    мой kidus@yandex.ru

    Reply
  27. BlackStar

    Отличная обработка! Спасибо!

    Reply
  28. RakovskiyK

    Отличная обработка! Спасибо, большое.

    Не смотря на то, что я использовал ее в самописной конфигурации и пришлось чуть-чуть допилить — работает идеально. Позволила сэкономить действительно много времени на ввод первичной информации.

    Автору респект и плюс в карму!

    Reply
  29. qwinter

    (28) RakovskiyK, а что если не секрет допиливали? Она вроде должна и так работать в самописных конфигурациях.

    Reply
  30. xten

    Подскажите, пожалуйста, возможно ли с помощью Вашей обработки выгрузить данные из таблицы Excel (6-10 столбцов )в документ Взаимозачеты задолженности в УТ 11. Позволяет ли Ваша обработка непосредственно после загрузки в табличную часть обработки данных из excel выбрать нужный документ и загрузить туда предварительно отображенные данные ? Спасибо.

    Reply
  31. qwinter

    (30) xten, Вы немного сумбурно построили вопрос, и я немного его не понимаю. Вам требуется после открытия документа эксель и получения дынных выбрать друго отличный от первоначального документ? Обработка работает по принципу, Вы выбираете документ (принадобности табличную часть или движение по регистру) и настраиваете загрузку, потом открываете документ эксель, и затем загружаете данные.

    Reply
  32. xten

    Извиняюсь, возможно некоректно вопрос поставил, два дня только с УТ 11 работаю )) Значит, как я понимаю, органичений по конкретному типу документов нет? Загружаить из ексель можно в табличную часть любого документа?

    Reply
  33. qwinter

    (32) xten, Вы все поняли правильно, нет никаких ограничений, можно загружать в любую табличную часть, любого документа или справочника.

    Reply
  34. xten

    Супер, ОГРОМНОЕ СПАСИБО ВАМ !!! )))

    Reply
  35. wolverine87

    Отличная обработка! Спасибо!

    Reply
  36. luic

    Отлично, Молодцы!!!

    Reply
  37. Гость

    У меня версия:

    1С:Предприятие 8.2 (8.2.17.153)

    Управление торговлей, редакция 10.3.13.2 (10.3.13.2.2)

    При открытие файла ЗагрузкаДанныхИзТабличногоДокумента_Q(Управляемые формы).epf

    выдает ошибку:

    {ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента_УФ.МодульОбъекта(40,21)}: Переменная не определена (СтроковыеФункцииКлиентСервер)

    ВызватьИсключение <<?>>СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

    Подскажите, что не так.

    Reply
  38. qwinter

    (37) Гость, замените:

    ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ЭлементОписаниеКоманды.Представление);

    на

    Выполнить(«ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ЭлементОписаниеКоманды.Представление);»);

    И

    ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока,
    КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));

    на

    Выполнить(» ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока,
    | КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));»);
    Reply
  39. yaguarrr

    При загрузке в ПТУ (либо регистр сведений Штрихкоды НМКЛ), поиск по характеристикам общим для вида номенклатуры не идет по наименованию для вида номенклатуры. А так обработка очень хорошая, съэкономила достаточно личного времени

    Reply
  40. qwinter

    (39) yaguarrr, немного подправил обработку. Теперь такую настройку можно сделать, вот таким образом:

    Устанавливаете режим загрузки: Загрузка в регистр сведений. Затем добавляете справочник: Виды номенклатуры, настраиваете загрузку их. Затем добавляете справочник: Характеристики номенклатуры, и в нем в поле владелец ставите устанавливать по настройке Вид номенклатуры и настраиваете поиск по требуемым элементам. А затем в настройке загрузки в регистр в поле характеристики ставите устанавливать по настройке Характеристики номенклатуры.

    Reply
  41. yaguarrr

    (40)

    Все взлетело — и для регистра сведений и для документа ПТУ, полет нормальный. Благодарю за сверхоперативность.

    Неплохо бы добавить данный пример в описание обработки, не каждый сам с первого раза сделает

    Reply
  42. dvsidelnikov

    Автор выручай 😉

    Зарплата и кадры бюджетного учреждения, редакция 1.0 (1.0.51.1)

    При открытии говорит:

    {ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента_УФ.МодульОбъекта(40,21)}: Переменная не определена (СтроковыеФункцииКлиентСервер)

    ВызватьИсключение <<?>>СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

    Reply
  43. dvsidelnikov

    Люди добрые, подскажите, а как бы заставить обработку не вставлять строку в табличную часть документа, если не было найдено значение в справочнике 1С по коду для одного из полей текущей строки табличного документа

    Допустим: бежит обработка по табличному документу, считывает значение артикула из табличного документа, пытается найти номенклатуру в 1С по данному артикулу, не находит и как следствие не создаёт строку в вводе остатков, плавно переходя к обработке следующей строки табличного документа.

    Reply
  44. qwinter

    (42) dvsidelnikov, чуть выше уже было описано, как исправить. Запихните код в оператор Выполнить.

    Reply
  45. qwinter

    (43) dvsidelnikov, в событии «После добавления строки»:

    Если не ЗначениеЗаполнено(ТекущиеДанные.РеквизитСтроки) Тогда
    Объект.ТЗ.Удалить(ТекущиеДанные);
    КонецЕсли;
    Reply
  46. zzzhen

    Здравствуйте!

    При нажатии «Загрузить»

    Конфигурация «Розница», платформа 8.3

    Сообщение — «Использование модальных окон в данном режиме запрещено»

    что делать?

    спасибо

    Reply
  47. qwinter

    (46) zzzhen,

    Всю процедуру «КомандаЗагрузить» заменить на:

    &НаКлиенте
    Процедура КомандаЗагрузить(Команда)
    
    СтруктураТекстВопроса = ПолучитьТекстВопросаИсточника();
    КоличествоЭлементов = ТаблицаПодготовленныхДанных.Количество();
    
    Если НЕ ПустаяСтрока(СтруктураТекстВопроса.Ошибка) Тогда
    
    ТекстПредупреждения = СтруктураТекстВопроса.Ошибка;
    
    Если ВерсияПлатформы83 Тогда
    Выполнить(»
    | ПоказатьПредупреждение(, ТекстПредупреждения);
    |»);
    Иначе
    Предупреждение(ТекстПредупреждения);
    КонецЕсли;
    
    Иначе
    
    нПараметры = Новый Структура;
    ТекстВопроса = «Загрузить «+КоличествоЭлементов  + СтруктураТекстВопроса.ТекстВопроса;
    Если ВерсияПлатформы83 Тогда
    Выполнить(»
    | ОписаниеОповещения = Новый ОписаниеОповещения(«»ВопросНачатьЗагрузкуДанных»», ЭтотОбъект, нПараметры);
    | ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60);
    |»);
    Иначе
    ОтветНаВопрос = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
    ВопросНачатьЗагрузкуДанных(ОтветНаВопрос, нПараметры);
    КонецЕсли;
    
    КонецЕсли;
    
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ВопросНачатьЗагрузкуДанных(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
    ОчиститьСообщения();
    ЗагрузитьДанныеСервер();
    
    Если ВыполняетсяЗаполнениеТЧОбъекта Тогда
    ПараметрыКоманды = Новый Структура(«ДополнительнаяОбработкаСсылка, ОбъектыНазначения, СопровождающийТекст»);
    ПараметрыКоманды.ДополнительнаяОбработкаСсылка = ОбъектСсылка;
    ПараметрыКоманды.СопровождающийТекст = «»;
    
    Состояние(ПараметрыКоманды.СопровождающийТекст);
    
    РезультатВыполнения = ВыполнитьКомандуНапрямую(ИдентификаторКоманды, ПараметрыКоманды);
    ЗагрузитьРезультат(РезультатВыполнения);
    КонецЕсли;
    
    КонецЕсли;
    
    КонецПроцедуры

    Показать

    Reply
  48. MarkTven

    в УТ для Украины редакция 3

    не работает регистрация обработки в базе:

    {Форма.Форма.Форма(4652)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

    Выполнить(»

    по причине:

    {(2,95)}: Переменная не определена (ЭтотОбъект)

    ОписаниеОповещения = Новый ОписаниеОповещения(«ЗарегистрироватьвИБПослеПомещенияВХранилище», <<?>>ЭтотОбъект);

    Reply
  49. dvsidelnikov

    Люди добрые, а загрузка в табличную часть справочника имеет место быть? что-то я не нашёл.

    Reply
  50. qwinter

    (49) dvsidelnikov, в режиме «Поточная загрузка».

    Reply
  51. an.azarova

    Работало, после обновления сломалась 🙁

    Reply
  52. qwinter

    (51) an.azarova, здравсвуйте. Какую ошибку пишет? Какая конфигурация?

    Reply
  53. an.azarova

    {Форма.Форма.Форма(473)}: Значение не является значением объектного типа (Свойство)

    СостояниеВыполнения.Свойство(«ТекущаяВерсия», ВосстановленнаяТекущаяВерсия);

    УНФ 1,5,20

    Reply
  54. qwinter

    (53) an.azarova, у меня не воспроизводится. Что именно произошло когда перестало работать? У Вас, что то произошло с сохраненными настройками.

    Как вариант замените:

     ВосстановленнаяТекущаяВерсия = Неопределено;
    СостояниеВыполнения.Свойство(«ТекущаяВерсия», ВосстановленнаяТекущаяВерсия);

    на:

     Если ТипЗнч(СостояниеВыполнения) <> Тип(«Структура») Тогда
    Возврат;
    КонецЕсли;
    
    ВосстановленнаяТекущаяВерсия = Неопределено;
    СостояниеВыполнения.Свойство(«ТекущаяВерсия», ВосстановленнаяТекущаяВерсия);
    Reply
  55. an.azarova

    Спасибо помогло

    Reply
  56. plus1s_a

    Скачал. Попробую на ERP 2.0 при подготовке НСИ базы.

    Reply
  57. BodunOff

    Павел, прошу прощения за вопрос дилетанта, не могу разобраться с настройкой. Задача такая, есть дополнительные реквизиты вида номенклатуры «Для характеристик» (например, Размер и Цвет) со списком значений. Имеется ли возможность данной обработкой произвести сопоставление при загрузке характеристик с уже имеющимися в списке значением? Пробую пакетную загрузку характеристик, выбираю ТЧ Дополнительные реквизиты и получаю ошибку на выходе:

    {Форма.Форма.Форма(2162)}: Поле объекта не обнаружено (Дополнительные значения)

    Буду очень признателен за помощь!

    P.S. Сорри за такое отображение кода, не могу понять что это, оригинал вот:

    {Форма.Форма.Форма(2162)}: Поле объекта не обнаружено (Дополнительные значения)

    Reply
  58. qwinter

    (57) BodunOff, а какая конфигурация? Ошибка происходит сразу после выбора ТЧ? Я попробовал в УТ 11.1 у меня все грузится.

    Принцип работы Вами выбран правильно. Выбираете поточную загрузку справочника, добавляете табличную часть. Не забывайте по возможности ограничивать типы получаемых значений, например в УТ11 в реквизит Значение в табличной части «дополнительные реквизиты» имеет очень много типов, лучше ограничить его до одного нужного.

    Reply
  59. BodunOff

    Конфигурация УТ 11.1.9.56. Ошибка происходит на этапе проверки внесенных данных. Выбираю следующие значения, см. скрины.

    Reply
  60. BodunOff
    …например в УТ11 в реквизит Значение в табличной части «дополнительные реквизиты» имеет очень много типов, лучше ограничить его до одного нужного…

    Так и выбираю один тип «Дополнительное значение» чтобы оно к табличной части пробилось

    Reply
  61. qwinter

    (60) BodunOff, это ошибка в функции: «ПолучитьВозможныеЗначения»:

    замените:

        Если ЭтоСправочник  И ТипЗнч(Справочники[Строка(МетаданныеТипа)].ПустаяСсылка()[ИскатьПо]) = Тип(«Число») Тогда
    Попытка
    Представление = Число(Представление);
    Исключение
    //ОписаниеОшибки()
    КонецПопытки;
    КонецЕсли;
    

    на

        Если ЭтоСправочник  Тогда
    Если ТипЗнч(Справочники[Строка(МетаданныеТипа.Имя)].ПустаяСсылка()[ИскатьПо]) = Тип(«Число») Тогда
    Попытка
    Представление = Число(Представление);
    Исключение
    //ОписаниеОшибки()
    КонецПопытки;
    КонецЕсли;
    КонецЕсли;
    

    Показать

    или скачайте обновленный файл.

    Reply
  62. qwinter

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

    Reply
  63. BodunOff

    Спасибо огромное! Всё получилось как надо!!! Если бы можно было поставить ещё пару звёзд они все были бы ваши, я искал эту обработку с момента перехода на управляемые формы)))

    Reply
  64. Гость

    БГУ 8.2

    обработка не запускается

    Reply
  65. qwinter

    (64) Гость, откройте БГУ в режиме «управляемое приложение».

    Reply
  66. Гость

    (65) Спасибо открылась , но теперь при загрузке таблицы данных дает ошибку (в прикрепл.файле) БГУ 8.2.18.96 Конфигурация 1.0.25.9

    Reply
  67. qwinter

    (66) Гость, ошибку исправил, скачайте обновленную обработку, или в модуле формы:

       Если ЭтоДокумент Тогда
    ТекстЗапроса =
    «Выбрать Первые 1
    |Объект.Ссылка КАК Ссылка
    |Из Документ.»+МетаданныеИсточника.Имя+» КАК Документ
    |Где»;
    

    заменить на:

       Если ЭтоДокумент Тогда
    ТекстЗапроса =
    «Выбрать Первые 1
    |Объект.Ссылка КАК Ссылка
    |Из Документ.»+МетаданныеИсточника.Имя+» КАК Объект
    |Где»;
    
    Reply
  68. BodunOff

    Павел, возникла проблема загрузки характеристик номенклатуры (с доп. реквизитами) в одну из баз УТ 11. Не могу ни объяснить толком ни отловить самостоятельно ошибку. По-возможности напишите мне в скайп pavel.bodunov в любое удобное для Вас время для настройки на возмездной основе.

    Reply
  69. NOVOPRO
    Reply
  70. qwinter
    Ну выполнил нижеуказанную процедуру, как до этого не работало так и сейчас не работает:

    не работает что?

    Reply
  71. rez222

    Добрый день,

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

    Управление торговлей, редакция 11.1 (11.1.9.44)

    пытаюсь загрузить реквизиты как дополнительные значения. Во вложении настройки.

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

    {Форма.Форма.Форма(1570)}: Значение не является значением объектного типа (Ссылка)

    Возврат ЗагружаемыйОбъект.Ссылка;

    Не могу понять — это я что-то делаю неверно?

    Спасибо.

    Reply
  72. qwinter

    (71) rez222, ошибка на последней версии воспроизводится?

    Reply
  73. rez222

    Разобрался. Дело было в используемой версии обработки.

    Павел, спасибо!

    Возник другой вопрос —

    возможно ли настроить загрузку начальных остатков по контрагентам в табличную часть по типу расчетного документа — договор, счет, реализация и т.п.с подстановкой в «номер» ссылки на документ соответсвующего типа?

    Reply
  74. qwinter

    (73) rez222, честно говоря не понял вопроса. Опишите подробнее.

    Reply
  75. isteroid

    Обработка позволяет считать данные и произвести настройки, но при попытке загрузки данных в базу выдает ошибку:

    {(2,78)} Переменная не определена (ЭтотОбъект)

    помогите — бухгалтера плачут, говорят, что ждать не могут

    Reply
  76. qwinter

    (75) isteroid, какая у вас конфигурация? Какая версия конфигурации? И какая версия платформы?

    Reply
  77. ValeriVP

    Не получается загрузить данные 🙁

    Ругается еще на этапе проверки заполнения

    Задача — установить для номенклатуры единицы измерения.

    ут10

    Таблица:

    Артикул Единица_Наименование

    Единицы — подчинены номенклатуре, созданы

    Искать — по наименованию и владельцу (<Создаваемый объект>?), который задан артикулом. Настройка такая есть, но она не работает :(((

    Пока выход видимо использовать «Вычислять», но как-то это не кошерно.

    Reply
  78. qwinter

    (75) isteroid, исправил.

    (77) Rebelx, добавил в обработку функционал для подобных загрузок данных.

    Reply
  79. Litvin2015

    как восстанавливать старые данные при открытии новой формы?

    Reply
  80. qwinter

    (79) Litvin2015, какие старые данные?

    Reply
  81. intersoft_1c

    Как с помощью обработки создавать новые элементы справочника. Я создаю заказ поставщику. Данные в табличное поле документа все заполняются. Надо чтобы если нет номенклатуры, то номенклатура сама создавалась.

    Reply
  82. qwinter

    (81) intersoft_1c, после настройки основной таблицы добавляете настройку загрузки номенклатуры кнопкой «Добавить справочник», а в настройке табличной части документа у номенклатуры ставите режим «Устанавливать» и в значение по умолчанию выбираете настройку загрузки «1: Номенклатура».

    Reply
  83. intersoft_1c

    (82)

    А как надо настраивать справочник Номенклатуру, чтобы он искал по артикулу, если не нашел, то создать номенклатуру.

    Reply
  84. qwinter

    (83) intersoft_1c, устанавливаете в настройке номенклатуры реквизиту «Артикул» настройку что он «Поле поиска»

    Reply
  85. intersoft_1c

    П(84) Поставил галочку, что он поле поиска, Режим загрузки установил Искать, указал колонку поиска. Номенклатура не ищется а в поле артикул в таблице данных в таблице 1.Номенклатура выходит просто Артикул, а в таблице Настройка Номенклатура вообще пустая

    Reply
  86. qwinter

    (85) intersoft_1c, загрузку данных непосредственно делали? При получении таблицы данных так и должно быть.

    Reply
  87. intersoft_1c

    (86) Все получилось,Спасибо. Еще вопрос. Можно сделать так, чтобы поиск по артикулу происходило только в одной группе.

    Reply
  88. qwinter

    (87) intersoft_1c, реквизиту «Родитель» поставьте, что оно является полем поиска и режим устанавливать, и выберете требуемую группу. При не нахождении номенклатуры, новые будут создавать в этой же папке.

    Reply
  89. intersoft_1c

    (88) Если так сделать, то он перестает искать по артикулу, сразу создает всю номенклатуру в этой папке.

    Reply
  90. qwinter

    (89) intersoft_1c, а вы при этом случайно с реквизита артику поле поиска не сняли?

    Reply
  91. intersoft_1c

    (90) Нет не снимал. Такая задача уже не стоит, поиск сказали нужен по всей номенклатуре. Обработка хорошая, но только нет описания по настройке.

    Reply
  92. qwinter

    (91) intersoft_1c, сейчас даже на добавление в нее нового функционала времени особенно нет, так что описание на данный момент точно не в приоритете. Может кто то из пользователей захочет сделать такое доброе дело, думаю было бы востребовано. Можно даже сделать отдельную статью.

    Reply
  93. alisaguzel

    Прошу помощи!!! Я ни чего не могу поделать с загрузкой бух. проводок… ВидСубконто проставила. Но все равно не получается. Может делаю настройки неверно? Счета учета встают на место, сумма отображается корректно, но субконто пустое. Маюсь уже вторую неделю. Результат ноль. Буду очень признательна за помощь.

    Reply
  94. qwinter

    (93) alisaguzel, ограничьте искомые типы (колонка «Описание типов») оставьте там только справочник номенклатуры. Режим загрузки «Искать». Если не получится то прикрепите саму настройку и пример файла.

    Reply
  95. oxana1

    здравствуйте!

    скачала обработку, пытаюсь разобраться

    пытаюсь сохранить настройку — выдает ошибку «Поле объекта не обнаружено (Текущая версия)»

    до этого каким-то волшебным образом сохранила настройку и поставила галку Открывать, и выдавало ошибку, как в (54), заменила в коде обработки — саму обработку открывает… но дальше сохранить настройки все равно не дает…

    Reply
  96. qwinter

    (338) oxana1, добавьте у формы реквизит: «ТекущаяВерсия», тип Строка(10). А так же в процедуре «ВосстановитьНастройкиИзСостоянияВыполнения» замените

    ТЗ = РеквизитФормыВЗначение(СтрокаНастроек.КлючСтраницыНастроек);
    ВосстановитьЗначенияНастроекИзТаблицыРеквизитов(ТЗ, ВосстановленнаяТаблицаЗагружаемыхРеквизитов);
    ЗначениеВРеквизитФормы(ТЗ, СтрокаНастроек.КлючСтраницыНастроек)

    на

    ТЗ = РеквизитФормыВЗначение(СтрокаНастроек.КлючСтраницыНастроек.КлючСтраницы);
    ВосстановитьЗначенияНастроекИзТаблицыРеквизитов(ТЗ, ВосстановленнаяТаблицаЗагружаемыхРеквизитов);
    ЗначениеВРеквизитФормы(ТЗ, СтрокаНастроек.КлючСтраницыНастроек.КлючСтраницы)
    Reply
  97. oxana1

    (339) попробую, спасибо!

    пока сложно, хоть и с типовой обработкой с ИТС знакома и грузила ею

    Reply
  98. andt

    Спасибо! Обработка уже не раз помогла.

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

    Настройка для загрузки в «Движения документа» в «Операцию» :

    Платформа: 1С:Предприятие 8.3 (8.3.6.2100)

    Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.43.123)

    Режим: Файловый (без сжатия)

    Приложение: Тонкий клиент

    Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)

    Вариант интерфейса: Такси

    Ошибки:

    ———————————————————————————

    16.03.2016 16:24:13

    {(1)}: Значение не является значением объектного типа (Метаданные)

    Для каждого Движение Из СсылкаДокумента.Метаданные().Движения Цикл Если Движение.Имя = «Хозрасчетный» Тогда МетаданныеОбъекта = Движение КонецЕсли КонецЦикла;

    Reply
  99. vat-74

    (370) Такое бывает, если ссылка пустая.

    Reply

Leave a Comment

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