Обработка регистров сведений




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

86 Comments

  1. MRAK

    плюсану авансом… позже гляну… делал как-то такую, тока без построителя… хотя по мне, лучше сюда СКД замутить…

    Reply
  2. Valerich

    (1) если обоснуете чем СКД для отбора круче построителя, замучу СКД 🙂

    Reply
  3. I_G_O_R

    можно вот такие отборы делать:

    Reply
  4. artbear

    (3+) Точнее, можно делать даже группы отборов с условиями И, ИЛИ и т.д.

    Reply
  5. poZZitive

    Абалденная вещь. Лучшая из найденных (бесплатных)

    Reply
  6. dosen

    Спасибо, ибо ………………………….. (почему сам не сделал, каждый добавит или придумает ) 😀

    Reply
  7. pri_hod

    Исправь ошибку

    ИначеЕсли ДействиеУдалить = 1 Тогда //Нужно «2»

    // выполнение алгоритма

    За обработку +

    Reply
  8. Leoway

    Спасибо огромное

    Reply
  9. erderugina

    Благодарю. Обработка помогла.

    Reply
  10. Алексей-29

    Обработка отличная. Давно искал такую. 🙂

    Reply
  11. Valerich

    (7) а почему нужно 2? где ошибается и на чем?

    (5), (6), (7), (8), (9), (10). Вам всем спасибо за время , которое Вы потратили, чтобы выразить свое мнение.

    Ваше мнение всегда очень важно для меня.

    Reply
  12. pri_hod

    ну не логично же

    Если ДействиеУдалить = 0 Тогда

    // удаление записей

    ОбработаноЗаписей = 0;

    УдалитьЗаписи(ТаблицаРезультат, ОбработаноЗаписей);

    Предупреждение(«Обработано » + ОбработаноЗаписей + » зап.», 15);

    ИначеЕсли ДействиеУдалить = 1 Тогда

    //Изменение записей

    ОбработаноЗаписей = 0;

    ИзменитьЗаписи(ТаблицаРезультат, Реквизиты, ОбработаноЗаписей);

    Предупреждение(«Обработано » + ОбработаноЗаписей + » зап.», 15);

    ВыполнитьОтбор(); // заново считаем набор

    ИначеЕсли ДействиеУдалить = 1 Тогда

    // выполнение алгоритма

    ТекстАлгоритма = ЭлементыФормы.ТекстПроизвольногоАлгоритма.ПолучитьВыделенныйТекст();

    Если СтрДлина(ТекстАлгоритма) = 0 Тогда

    ТекстАлгоритма = ЭлементыФормы.ТекстПроизвольногоАлгоритма.ПолучитьТекст();

    КонецЕсли;

    ОбработаноЗаписей = 0;

    ВыполнитьАлгоритм(ТаблицаРезультат, ТекстАлгоритма, ОбработаноЗаписей);

    Предупреждение(«Обработано » + ОбработаноЗаписей + » зап.», 15);

    ВыполнитьОтбор(); // заново считаем набор

    КонецЕсли;

    Reply
  13. Збянтэжаны Саўка

    (11) Как правильно замечено в (7) и (12) Вариант:

    ИначеЕсли ДействиеУдалить = 1 Тогда

    повторяется дважды, т.е. 3-й вариант (ДействиеУдалить = 2) не сработает, нужно исправить

    Очень ценю Ваши статьи и обработки, потому считаю данную ошибку мелкой опиской!

    Reply
  14. Valerich

    (7), (12), (13)

    Проверил, действительно опечатка вышла. Спасибо, коллеги.

    Исправил, прикрутил фантик.

    Пользуйтесь на здоровье

    Reply
  15. artbear

    (0) Ошибка в обработке исключений при попытке записи неверных данных в регистр сведений

    Вместо

        Исключение
    Сообщить(«Строка таблицы » + СтрокаТаблицы.НомерСтроки + «: ошибка изменения записи » + ОписаниеОшибки());
    КонецПопытки;
    

    Правильно писать

    Исключение
    Сообщить(«Строка таблицы » + СтрокаТаблицы.Владелец().Индекс(СтрокаТаблицы) + «: ошибка изменения записи » + ОписаниеОшибки());
    КонецПопытки;
    

    Иначе будет исключение и обработка остановится 🙁

    Reply
  16. artbear

    (15) + Ну и вообще СтрокаТаблица.НомерСтроки там еще встречается, также нужно устранить.

    Reply
  17. seandr

    Все не доходили руки сделать подобное.. но сейчас с успехом использую эту обработку. Спасибо огромное…

    Reply
  18. Valerich

    (15), (16) там же вроде как «СтрокаТаблицы» — это строка таблицы значений… или я чего-то неправильно помню ?

    Reply
  19. dmd

    Прекрасно работает. Очень пригодилась +100500

    Reply
  20. Maranet

    Спасибо, очень пригодилась…

    Reply
  21. vik77

    Спасибо, обработка очень выручила.

    Reply
  22. gusteleva

    Обработка замечательная, автору респект!

    Reply
  23. UJF

    Обработка реально очень полезная. Однозначно +

    Reply
  24. redgoll

    Большое спасибо. Очень помогло. Конечно, можно и самому было регистры обработать…но на программирование время бы ушло, а так быстро и хорошо. Не раз еще выручит.

    Reply
  25. nataon

    Спасибо, + автору

    Reply
  26. mdzen

    Пытаюсь выполнить код:

    (Регистр сведений Штрихкоды — штрихкоду надо установить ед.измерения как у владельца базовая)

    Объект.ЕдиницаИзмерения = Объект.Владелец.БазоваяЕдиницаИзмерения;

    Объект.Записать(Истина);

    что-то не взлетает…

    Reply
  27. Valerich

    (26) Не знаю какая у вас конфигурация, но, возможно, идет несовпадение типов данных. Например, «ОКЕИ» и «Единицы измерения». Проверьте.

    Reply
  28. mdzen

    Точно, несовпадение типов…

    4 утра — туплю однако ….

    Reply
  29. kuza_87

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

    Reply
  30. Adoms

    Большое спасибо!!! ооочень пригодилась!!!

    Reply
  31. irishka77

    Спасибо.Использовала для приведения в порядок штатного расписания

    Reply
  32. olsy

    Классная обработка! Давно искал, спасибо Поручику за наводку!

    Reply
  33. CaSH_2004

    Все замечательно! Но странно что не видно сколько записей то найдено. Это что никому не интересно сколько он чего грохнет или заменит? Или все выводят в список и смотрят что же там внизу за цифра 🙂 Я конечно понимаю что бесплатное, но сам то как угадываеш то?

    И вот еще интересно можно ли ее так универсально сделать чтобы например отобрать те записи у которых Измерение/Ресурс имеет указанный тип, например «Справочник.ДоговораКонтрагентов»? А то ведь и такие замутки встречаются, именно они создают сложность.

    Если у кого идеи есть — выкладывайте, может кто и доработает.

    Reply
  34. ManyakRus

    работает отлично 🙂

    сделал ширину колонок не более 25

    Reply
  35. _n26__

    Спасибо большое!

    Reply
  36. sanches

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

    Reply
  37. Valerich

    (36) а что Вы понимаете под пробелами в регистре сведений ?

    Reply
  38. sanches

    (37) Конфигурация 1С Аптека.

    В ней есть регистр сведений Штрихкоды, в нем есть измерение Штрихкод типа ПланВидовХарактеристик.

    В самом плане видов характеристик хранятся строковые значения длиной 200 символов.

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

    «4607012390615       «

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

    Reply
  39. Valerich

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

    Теоретически эта обработка может помочь: Отобрать записи РС, где реквизит ПВХ реквизита штрихкод содержит пробел. Далее с помощью выполнения произвольного кода можно получить объект ПВХ, обрезать пробелы и записать его обратно.

    Reply
  40. sanches

    (39) Спасибо

    Reply
  41. ProkopyukIN

    старовата однако. надо бы уже модифицировать под 8.2, 8.3 и управляемое приложение

    Reply
  42. webresurs

    Подскажите пож… а можно устранить ошибку вашей обработкой в счетах?

    Ошибка в прошлых годах :»Выполните повторно регламентную операцию «Закрытие счетов 20, 23, 25, 26″ за тот месяц, в котором образовалось отрицательное сальдо»

    Reply
  43. Valerich

    (42) тут дело не в счетах и не в регистрах сведений, а в проводках. Если у вас образовалось отрицательное сальдо на затратных счетах, то, либо как-то скорректировать вручную, либо перезакрывать соответствующий месяц с возможной пересдачей отчетности, если такое пеерзакрытие повлияет на финансовые результаты.

    Reply
  44. RTesla

    Хорошая обработка.

    Reply
  45. Ольга_tmp

    Спасибо, отлично сработало для коррекции штрихкодов в УТ10

    Reply
  46. vanya201

    Поменяйте в коде (стр 310) Если НЕ СтрокаТаблицы.ПомМетка Тогда

    на Если НЕ СтрокаТаблицы.Пометка Тогда

    Reply
  47. ZyMik

    Не работает.

    21.10.2015 22:09:56

    Ошибка создания источника доступных настроек компоновки данных

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

    Система проектирования прикладных решений, редакция 1.1 (1.1.10.4)

    Reply
  48. Valerich

    (46) Уточните, пожалуйста, в какой версии обработки такой код и в каком модуле (формы, объекта).

    Reply
  49. Valerich

    (47) попробуйте запустить в толстом клиенте. Кажется такая ошибка случается в тонком

    Reply
  50. bsa1968

    Все просто и понятно. Спасибо за работу!

    Версия для «управляемого приложения» работает только в «толстом клиенте»?

    Reply
  51. Valerich

    (50) в толстом клиенте работает как было задумано. А в тонком наблюдаются какие-то необъяснимые спецэффекты — в отборе нельзя выбрать свойства измерений/ресурсов/реквизитов, если они являются ссылками на объекты; при смене регистра сведений вообще бывают ошибки инициализации СКД. Видимо у меня не хватает каких-то знаний и навыков для борьбы с этими багами.

    Reply
  52. Sergspectr

    Большое спасибо.

    Reply
  53. White_and_Fluffy

    На УФ не читает регистр «ПрисоединенныеФайлы»

    Reply
  54. Valerich

    (53) Исправил ошибку, обработку перезалил. Спасибо за Ваше сообщение

    Reply
  55. dj_serega

    Все комменты не читал.

    1. На скринах нашел «ЭтаФорма». В 8.3 без режима совмести «ЭтаФорма» уже «ЭтотОбъект».

    2. Как обстоят дела с модальностью и асинхронностью?

    Reply
  56. Valerich

    (55)

    1. В 8.3 в управляемых формах не «ЭтотОбъект», а «Объект». А вот при выполнении на серере доступ к данным формы идет чере «ЭтаФорма». Вроде как все работает.

    2. Модальных окон нет. Асинхронности тоже (во всяком случае пока).

    Reply
  57. dj_serega

    (56) 1.

    Конфликт имен свойств

    Нельзя использовать имена переменных, совпадающие с новыми свойствами, которые появились в «1С:Предприятии 8.3»:

    Новое свойство ЭтотОбъект в управляемых формах и общих модулях.

    Новые свойства в управляемых формах:

    АвтоНавигационнаяСсылка,

    НавигационнаяСсылка,

    ВертикальнаяПрокрутка,

    ОписаниеОповещенияОЗакрытии,

    ПараметрыВыбора.

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

    Что переименовано _____________Старое наименование _____Новое наименование

    Свойство управляемой формы ____ ЭтаФорма (ThisForm) ______ ЭтотОбъект (ThisObject)

    источник

    Reply
  58. Valerich

    (57) а я и не объявляю эти переменные, просто подсказка как можно добраться до реквизитов формы. Если используется другая версия платформы, где произошла замена, следует пользоваться новыми свойствами формы и объекта

    Reply
  59. dj_serega

    Неизвестная ошибка. В ЖР пусто…

    Reply
  60. Valerich

    (59) Попробуйте работать в толстом клиенте. В тонком клиенте многие операции с метаданными недоступны. Из-за этого и появляются такие странные ошибки.

    Reply
  61. dimaz666

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

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

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

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

    Ошибки:

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

    Ошибка создания источника доступных настроек компоновки данных

    Воспроизводится при удалении записей.

    Reply
  62. Valerich

    (61) Уточните, пожалуйста в какой момент времени происходит ошибка: в момент после нажатия на кнопку «Выполнить чтение данных регистра» или при удалении после нажатия на кнопку «Выполнить удаление»?

    Если работаете в стандартной конфигурации, то прошу так же уточнить конфигурацию, релиз, имя регистра и настройки отбора. Может быть мне удастся смоделировать ситуацию. До сих пор с такой ошибкой сталкивался только в тонком клиенте, но Вы указали, что режим запуска «Толстый клиент».

    Reply
  63. Si-ned

    Хорошая и полезная обработка. +1

    Reply
  64. gull22

    (62)

    Аналогичная ситуация. Происходит при нажатии кнопки «Выполнить удаление».

    Удалял записи РС Аналитика учета НДС

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

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

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

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

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

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

    Ошибки:

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

    11.07.2016 9:28:16

    Ошибка создания источника доступных настроек компоновки данных

    Reply
  65. Valerich

    (64) Это очень странно. При нажатии на кнопку «Выполнить удаление» начинается работа с таблицей данных на форме и регистром сведений. Компоновщик настроек при этом никак не используется.

    Обратите внимание, что 29.04.2016 я разместил обновление обработки, которая корректно работает в тонком клиенте. Если Вы скачивали обработку ранее, попробуйте скачать обновленную

    У меня ошибка никак не воспроизводится. Но где-то проскальзывало сообщение, что подобная ошибка возможна на некоторых релизах платформы. Чаще проявляется, если установлена низкая скорость соединения.

    Reply
  66. andt

    Спасибо! Обработка помогла, но нужно поправить:

    {Форма.ФормаУправляемая.Форма(316)}: Поле объекта не обнаружено (Помметка)

    Если НЕ СтрокаТаблицы.Помметка Тогда

    Reply
  67. izidakg

    нужно было в регистре РезультатыОбменаДанными убить запись с пустой ссылкой, там их было 3 шт

    не вышло — в обработке УФ написано ЭтотОбъект, а нужно было Объект (удалял в Рознице 2.0)

    а потом выяснилось что отобранные объекты удаляются по одному и сначала прочитать, потом удалить — а прочитать вызывает ошибку — более 1 записи по ключевым полям

    так что удаление не удалось, редактирование невозможно по тем же причинам

    пришлось свою обработку использовать, там также ЭтотОбъект править пришлось, она всетаки была изначально для КА, УТ — все что на 8.2 с УФ

    но вот процедура по удалению справилась:

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

    Показать

    Reply
  68. Valerich

    (66) Ошибку исправил, большое спасибо

    Reply
  69. Valerich

    (67) не очень понял что там с Объект или ЭтотОбъект: где и что надо исправлять

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

    Reply
  70. maikl007

    Спасибо за обработку, НУЖНАЯ ВЕЩЬ В ХОЗЯЙСТВЕ )

    Reply
  71. snegovik

    Есть в БП 3.0 регистр сведений «Ставки налога на имущество по отдельным основным средствам». На начало года в нем вводятся ОС с льготными ставками. Можно с помощью вашей обработки отобрать на начало прошлого года все элементы и скопировать (создать) новые с другой льготной ставкой на начало текущего года ?

    P.S. Попробовал изменить старые ставки — Выдает ошибку при попытке простого изменения на этом регистре — «Строка таблицы 1: Не смог идентифицировать запись». И так все остальные строки.

    Reply
  72. Valerich

    (71) Обнаружил ошибку определения того, что регистр периодический Ошибку исправил. Скачайте обработку заново и попробуйте.

    Но. Изменение реквизитов (период и ставка) может привести к тому, что у вас просто изменятся существующие записи. Попробуйте на одной.

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

    Reply
  73. snegovik

    Я извиняюсь, программировал сам очень давно на 7.7 и 8.2 — можно пример простейшего кода создания элемента регистра сведений для вашей обработки ?

    Reply
  74. snegovik

    Вроде разобрался. На всякий случай оставлю это здесь — вдруг кому то еще пригодится:

    Алгоритм по изменению ставки в справочнике по налогу на имущество
    Reply
  75. Valerich

    (74) Можно и короче:

    НоваяЗапись = РегистрыСведений.СтавкиНалогаНаИмуществоПоОтдельнымОсновнымСредствам.СоздатьМенеджерЗаписи();
    ЗаполнитьЗначениеСвойств( НоваяЗапись, ЗаписьРС );
    НоваяЗапись.Период = НачалоГода(ТекущаяДата());
    НоваяЗапись.Записать(Истина);
    Reply
  76. snegovik

    Странная ситуация — на другом компьютере на новой версии обработки вышла такая же ошибка «Строка таблицы 1: Не смог идентифицировать запись».

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

    Reply
  77. Valerich

    (76) Ситуация действительно странная. Воспроизвести не могу

    Reply
  78. snegovik

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

    Reply
  79. snegovik

    Понял в чем дело…. Если организация одна в базе, то реквизит «Организация» (и возможно какие-то другие) не заполняется.

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

    В обработке, видимо, проверяются все реквизиты при попытке изменении и если чего-то не хватает, то вылетает эта ошибка «Строка таблицы : Не смог идентифицировать запись».

    Reply
  80. Valerich

    (79) У меня немного устаревшая версия этой конфигурации. У измерения «Организация» стоит признак контроля заполненности.

    При этом действительно, если организация одна, то она в регистре не заполняется.

    Как они обходят это ограничение интересно… и зачем…?

    При этом, когда создаешь объект «МенеджерЗаписи», заполняешь значения измерений из выборки (помним, что организация пустая) и пытаемся прочитать запись, она не находится в регистре 🙁 МенеджерЗаписи.Выбран() = Ложь

    Как обходить пока не знаю. Только если через набор записей и его отборы….

    Reply
  81. German_Tagil

    Поставлю себе на заметку

    Reply
  82. Arguleon

    За обработку +, думаю понадобится

    Reply
  83. AKV77

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

    Reply
  84. WWWolfy

    <del>

    Reply
  85. WWWolfy

    согласен с «33»

    Действительно нужен фильтр по типу объекта.

    Потому что при попытке отфильтровать регистр по составному полю запрос валит сервер очень легко. Например в ERP только одних документов сотня типов, и в каждом куча элементов.

    Без отборов типа таких, составные поля вешают SQL сервер:

    ВЫРАЗИТЬ(ДанныеПоследнихОповещений.ИсточникОповещения КАК Документ.Заказ).ПометкаУдаления = ИСТИНА

    Reply
  86. WWWolfy

    (86)

    короче допилил — добавил строковое поле для доп. условий и в коде его учёл

    если кому надо — файл во вложении

    Reply

Leave a Comment

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