Универсальный бухгалтерский отчет




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

    Супер!!! Пока всё нравится, огромнейшее спасибо и огромный плюс

    Reply
  2. bonv

    Добавил отчет «Карточка субконто»

    Reply
  3. bonv

    Добавил отчет «Анализ субконто».

    Reply
  4. bonv

    Добавил отчет «Обороты между субконто».

    Reply
  5. PowerBoy

    Ошибка при отборе номенклатуры (Бухгалтерия 1.6.14):

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет(1053)}: Тип не определен (СправочникСсылка.ЗначенияСвойствОбъектов)

    ИначеЕсли ТипЗнч(Элемент.Значение) = Тип(«СправочникСсылка.ЗначенияСвойствОбъектов») Тогда

    Reply
  6. PowerBoy

    + Если прервать отчет то в отборе вылазит — ###ОтборПоОрганизации###.

    Reply
  7. tomvlad

    Было бы неплохо еще и регистр «Налоговый» использовать…

    Reply
  8. Ish_2

    Спасибо автору.

    Публикация даёт представление о дальнейшем развитии системы бух.отчетов от фирмы 1с.

    Ожидал большего.

    Reply
  9. zaika

    (8)+1

    Reply
  10. German

    В УПП не работает.

    Вот примерно такие ошибки

    {ОбщийМодуль.ОбщегоНазначения(4685)}: Поле объекта не обнаружено (новнаяОрганизация)

    ЗначениеИзПараметраСеанса = ПараметрыСеанса[Сред(ИмяПараметра, 3)];

    {Форма.ОборотноСальдоваяВедомостьПоСчету(844)}: Ошибка при вызове конструктора (ИсточникДоступныхНастроекКомпоновкиДанных): Ошибка получения информации набора данных

    по причине:

    {Форма.ОборотноСальдоваяВедомостьПоСчету(844)}: Ошибка при вызове конструктора (ИсточникДоступныхНастроекКомпоновкиДанных): Ошибка получения информации набора данных

    по причине:

    Ошибка получения информации набора данных

    по причине:

    Ошибка в запросе набора данных

    по причине:

    {(26, 57)}: Поле не найдено «ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ПорядокПогашенияСтоимости»

    ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.<<?>>ПорядокПогашенияСтоимости КАК ПорядокПогашенияСтоимостиБУ

    Ну + давно нужно было эти отчеты на компановке сделать.

    Reply
  11. artbear

    За обработку плюс.

    БП 1.6.14

    В разных видах отчета при добавлении отбора выдается одна и та же ошибка 🙁

    Например, Анализ счета, в панели отбора нажимаю Добавить элемент, выдается ошибка

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет(1127)}: Поле объекта недоступно для записи (ЭтаФорма)

    Отказ = Истина;

    При просмотре кода становится видно, что ошибка вызова метода модуля «мОтборДобавитьЭлемент» из метода формы (строка №1030) «Процедура КоманднаяПанельОтборДобавитьЭлемент(Кнопка)

    мОтборДобавитьЭлемент(ЭтаФорма, ЭтаФорма); !!

    КонецПроцедуры»

    Исправить легко — мОтборДобавитьЭлемент(ЭтаФорма);

    Reply
  12. artbear

    (11+) И подобные ошибочные вызовы есть в нескольких формах — Карточка счета и т.д.

    Reply
  13. Andrekaa

    на упп не работает

    Reply
  14. Ish_2

    При выборе в главной ОСВ варианта оформления : Основной ,

    не выводится шапка таблицы.

    Список недочетов можно продолжить.

    Автор, несмотря на актуальность выложенного отчета,

    количество ошибок и недочетов — слишком велико.

    Reply
  15. bonv

    (5), (11) исправлено

    Reply
  16. bonv

    (10), (13) теперь работает и в УПП

    Reply
  17. bonv

    (14) это ошибка первоисточника. Исправил.

    Reply
  18. bonv

    (14) какие еще?

    Reply
  19. bonv

    (8), (9) можно поподробнее, что вы ожидали увидеть в этих отчетах?

    Reply
  20. Ish_2

    (18) В отчете Анализ Счета в группировках по счету при попытке добавления новой группировки (субконто) :

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет(1180)}: Поле объекта недоступно для записи (ЭтаФорма)

    Отказ = Истина;

    Reply
  21. artbear

    (0) Почему так долго происходит первоначальное открытие формы отчета?

    Reply
  22. Ish_2

    Я бы хотел увидеть в Универсальном отчете на СКД

    1. Запуска любого бух.отчета из другого.

    Например запустить для опредленного субконто из «ОСВ по счету» Анализ счета» или «Обороты счета».

    2. Возможность перепроведения документов из отчета

    Если интересно , скромно предложу http://infostart.ru/projects/3288/

    Также посмотрите http://infostart.ru/projects/5189/

    Reply
  23. Ish_2

    (21) Особенность СКД. Много места в опер.памяти.

    Reply
  24. artbear

    (0) Главбух жалуется:

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

    Получаем отчет «Отчет по проводкам», в котором есть все движения, а не только дебетовые.

    В штатных отчетах на БП 1.6.14 такого бага нету 🙁

    Reply
  25. bonv

    (24) работаю над исправлением

    Reply
  26. V_V_V

    В функции Модуля объекта мПолучитьПредставлениеПериодичности(Периодичность) исправь Периодичность = 6. Она там везде 6…

    Reply
  27. bonv

    (20), (24), (26) исправил

    Reply
  28. bonv

    (22)

    > 1. Запуска любого бух.отчета из другого.

    Возьму на заметку

    > 2. Возможность перепроведения документов из отчета

    Кажется, что для стандартных отчетов это лишнее.

    Reply
  29. Ish_2

    (28) Спросите у бухгалтеров . Они расскажут зачем это нужно :

    перепровести документы только по одной номенклатуре или контрагенту.

    Reply
  30. bonv

    (29) я считаю, что отчеты, тем более одни из самых часто используемых, не должны изменять данных.

    Reply
  31. Ish_2

    (30) Речь идёт о лишь о возможности для бухгалтера , находясь ,например, в отчете «Оброты счета» с режимом по документам перепровести документы-

    движения , составившие сальдо только по одному субконто.

    Reply
  32. bonv

    (31) я прекрасно понял о чем идет речь. Но все же, я считаю, что отчет должен только получать информацию, а не изменять. Ведь перепроведение может очень существенно изменить данные.

    Reply
  33. bonv

    Хотелось бы узнать, необходим ли подобный отчет по НУ?

    Reply
  34. kondrashka

    В УПП не работает НИ один отчет! . Уберите из заголовка или надо доделать

    Reply
  35. bonv

    (34) версия УПП? На что ругается? В УПП 1.2.24 работает, проверял.

    Reply
  36. kondrashka

    УПП 1.2.23.2

    1. Везде (ОСВ по счету, обороты счета и тд ) Поле не найдено «ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ПорядокПогашенияСтоимости»

    2. {ОбщийМодуль.ОбщегоНазначения(4696)}: Поле объекта не обнаружено (новнаяОрганизация)

    ЗначениеИзПараметраСеанса = ПараметрыСеанса[Сред(ИмяПараметра, 3)];

    Reply
  37. bonv

    (36) см. (16). Скачайте заново отчет.

    Reply
  38. kondrashka

    Действительно, видно я скачивала раннюю версию. Плюсую

    Reply
  39. bonv

    Теперь и в 1С:Бухгалтерия предприятия 8 для Украины работает

    Reply
  40. bonv

    Теперь и в 1С:Управление производственным предприятием для Украины работает

    Reply
  41. alfanika

    Большой плюс. Спасибо. Очень нужно.

    Reply
  42. alfanika

    Необходим подобный отчет по НУ. Очень нужен.

    Reply
  43. bonv

    Теперь и в 1С:Управление торговым предприятием для Украины работает

    Reply
  44. bonv

    (42) это уже второе пожелание, если наберется больше 5, то сделаю и по НУ

    Reply
  45. V_V_V

    Ну раз идет подсчет голосов, да еще гарантируется работа в УТП для Украины — и я подам заявку на отчет по НУ… :))

    Reply
  46. Valerich

    в модуле формы «ОборотноСальдоваяВедомость» в строке 753 (процедура «КоманднаяПанельДополнительныеПоляДобавитьЭлемент»)

    Измени

    мДополнительныеПоляДобавитьЭлемент(ЭтаФорма, ЭтаФорма);

    на

    мДополнительныеПоляДобавитьЭлемент(ЭтаФорма);

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

    Reply
  47. Valerich

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

    Reply
  48. Valerich

    в модуле формы «ОборотноСальдоваяВедомость» в процедуре «ГруппировкаПредставлениеНачалоВыбора» перед открытием формы «ФормаНастройкаПоСубконто» измени

    ФормаНастройкиСубконто.Открыть();

    на

    ФормаНастройкиСубконто.РежимВыбора = Истина;

    ФормаНастройкиСубконто.ОткрытьМодально();

    иначе возникает ошибка

    {ОбщаяФорма.ФормаНастройкаПоСубконто(27)}: Ошибка при вызове метода контекста (Закрыть): Операция не доступна для не открытой формы

    Закрыть();

    конфигурация БП 1.6.15

    по причине:

    Операция не доступна для не открытой формы

    Reply
  49. Valerich

    аналогично в процедуре «РазвернутоеСальдоПредставлениеНачалоВыбора»

    Reply
  50. Valerich

    ОСВ по счету. Пытаюсь составить отчет по счет 60.01. Хочу вывести контрагентов с иерархией — не получается. В разделе группировок невозможно изменить «Элементы» на что-то другое

    Reply
  51. Valerich

    там же в заголовке отчета рисует

    Отбор: ###ОтборПоОрганизации###. Не критично, но лучше бы его не было

    Reply
  52. Valerich

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

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет(1133)}: Поле объекта не обнаружено (ТаблицаОрганизаций)

    НайденныеСтроки = ФормаОтчета.ТаблицаОрганизаций.НайтиСтроки(ПараметрыОтбора);

    Reply
  53. Valerich

    сорри за опечатки: заголоком = заголовком, пенли = панели

    Reply
  54. Valerich

    в форме Оборты счета глобальная переменная модуля формы «ТаблицаОрганизаций» объявлена, но не инициализирована. Поэтому при попытке в настройках отбора «играться» с организациями возникает ошибка в том же месте (см. 52)

    Reply
  55. Valerich

    форма «АнализСчета», процедура «ГруппировкаКорПредставлениеНачалоВыбора» исправление как в комменте 48

    Reply
  56. Valerich

    там же ошибка с отбором, связанная с «ТаблицаОрганизаций» — переменна есть, но не инициализирована

    Reply
  57. Valerich

    то же самое «Карточка счета» (ТаблицаОрганизаций не инициализирована)

    Reply
  58. Valerich

    в остальных формах те же ошибки.

    В общем там, где есть вызовы

    ПолучитьОбщуюФорму(«ФормаНастройкаПоСубконто»

    исправить как в 48. Ну и что-то сделать с ТаблицаОрганизаций. Либо ее как-то заполнять, либо изменить что-то в процедуре «мОтборПриОкончанииРедактирования» модуля обработки

    Reply
  59. Valerich

    А вообще отчет замечательный и плюс я уже поставил 🙂

    Reply
  60. zag2art

    Нужно по НУ

    Reply
  61. PetrAK

    Замечательный отчет, добавь пожалуйста налоговый учет 🙂

    Reply
  62. rasswet

    {ОбщаяФорма.ФормаНастройкаПоСубконто(27)}: Ошибка при вызове метода контекста (Закрыть): Операция не доступна для не открытой формы

    Закрыть();

    по причине:

    Операция не доступна для не открытой формы

    пытался на 51м развернуть по субконтно. открывает, там два субконто. жму ок и ошибка.

    Reply
  63. bonv

    Исправил ошибки. Перед использованием надо запустить обработку ОчиститьНастройки или вручную пометить на удаление элементы справочника «Сохраненные настройки», соответствующие настройкам отчетов.

    Reply
  64. Valerich

    Нужно по НУ

    Reply
  65. bonv

    Буду заниматься отчетом для НУ

    Reply
  66. Valerich

    а в ОСВ можно сделать отбор по организациям?

    Reply
  67. bonv

    (66) что-то подобное я планирую реализовать

    Reply
  68. KapasMordorov

    1С перенесет эти отчеты из БП корп в просто БП.

    Ну, где-то к зиме. Хотя может и осенью успеет.

    Reply
  69. bonv

    откуда такая информация?

    Reply
  70. bonv

    Скорее всего из БП КОРП сделают БП.

    Reply
  71. Ish_2

    (71) Заслуга автора в адаптации отчетов для обычной Бухгалтерии БП.

    Заслуга также в ознакомлении широкой публики с будущей (?) версией системы бух.отчетов в типовых конфигурациях БП,УПП и т.д.

    Плагиат , по-моему , это всё-таки несколько другое.

    Насколько я понимаю , отчет также будет изменён для НУ.

    Reply
  72. mart-sha

    Часто просят Журнал-ордер (как в 7.7) — можно ли добавить ?

    Reply
  73. bonv

    (73) а чем Обороты счета не устраивает?

    Reply
  74. mart-sha

    Спасибо — оно..

    Reply
  75. ZNW

    В отчете Сводные проводки,

    при добавлении отбора: {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет(1116)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока): Отсутствует ключ строки

    ФормаОтчета.ЭлементыФормы.Отбор.ТекущаяСтрока = ЭлементОтбора;

    При этом по умолчанию формирует с отбором: Счет Равно «» И Валюта Равно «»

    И ничего, естественно, не показывает.

    Reply
  76. bonv

    (76) исправил

    Reply
  77. bonv

    (66) Добавил в ОСВ отборы по Организации, Валюте, Счет.

    Перед использованием надо очистить настройки по ОСВ (можно воспользоваться обработкой Очистка настроек)

    Reply
  78. Valerich

    спасибо

    Reply
  79. zzerro

    Вопрос. Почему при формировании отчета Анализ счета, при периодичности день, неделя, декада, сбивается сортировка по периоду?

    Reply
  80. zzerro

    (80+) Фактически получается что идет сортировка по Счету, КорСчету а уж потом по периоду

    Reply
  81. bonv

    (80) исправил

    Reply
  82. nika.vic

    + добавила 🙂

    Ожидала увидеть возможность в отчете, когда выбираю выводить Дополнительные Данные (например код товара) возможность указать также выводить их в той же колонке или выводить их в отдельной колонке. И еще нужна возможность выбора сор

    Reply
  83. nika.vic

    Сорри. Сортировка получилась. Не получилось только в отдельное поле доп. показатель вывести

    Reply
  84. bonv

    (84) пока такой возможности нет.

    Reply
  85. bonv

    (6), (51) исправил

    Reply
  86. Leoway

    Супер буду тестировать

    Reply
  87. octoberhammer

    см 101-й комментарий к

    http://infostart.ru/projects/5189/index.php?p=6&id=5189%2F%3Fp%3D6#comm

    Из Минусов по сравнению с конкурентной разработкой:

    а) нет возможности сформировать по нескольким организациям;

    б) нет возможности выбрать РБ

    в) нет возможности разворота по дополнительному балансовому измерению (вобще неизвестно — может и есть, но из-за б) — нельзя проверить)

    Reply
  88. octoberhammer

    И сразу же прошу прощения, в ОСВ по счету можно развернуть и по Организации и отобрать по нескольким организациям.. Тогда нужно

    а) возможность выбирать другой РБ (не стандартный Хозрасчетный)

    б) Отбирать по нескольким организациям и в ОСВ по всем счетам…

    Reply
  89. bonv

    а) что-то подобное я делаю

    б) по всех отчетах возможно использовать сложные отборы (в списке, в иерархии, ИЛИ, И, НЕ и т.п., т.е. все то что позволяет скд).

    Reply
  90. octoberhammer

    (91) б) точно, действительно можно.. просто на время куда-то пропала сама кнопка «настройка» в ОСВ…..

    Ну тогда только а) — выбор разных РБ, и возможность добавления в Группировки по балансовым измерениям (наряду с субконто) — при чем не только в ОСВ по счету, но в ОСВ по всем счетам

    Reply
  91. octoberhammer

    э… и в) В ОСВ по всем счетам группировку — только по указанным Субконто, а не по всем которые есть на счету…

    Reply
  92. bonv

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

    Reply
  93. LaninaNata

    пытаюсь запустить под типовой бухгалтерией 2.0 1с предприятие 8.2… пишет «{ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет.МодульОбъекта(7)}: Поле объекта недоступно для записи (Пользователи)

    Пользователи = Новый Массив;

    » переименовала переменную написала ПользователиМассив = Новый Массив все заработало. Почему так?

    Reply
  94. bonv

    (152) LaninaNata, в 2.0 появился общий модуль Пользователи, из-за этого и возникает конфликт с переменной.

    Reply
  95. LaninaNata

    (153) tuning1c, я так поняла что в 2.0 этот отчет уже и не актуален, там в типовой все практически тоже самое написано…

    Reply
  96. bonv

    (154) LaninaNata, это собственно и есть отчеты из 2.0, просто адаптированы для работы с другими конфигурациями.

    Reply
  97. Dethmond
    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет.МодульОбъекта(7)}: Поле объекта недоступно для записи (Пользователи)
    Пользователи = Новый Массив;
    

    В БП 2.0 работать не хочет. А так очень хорошая идея.

    Reply
  98. andronis1

    Бухгалтерия предприятия

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет.МодульОбъекта(7)}: Поле объекта недоступно для записи (Пользователи)

    Пользователи = Новый Массив;

    Reply
  99. vl88

    Бухгалтерия предприятия

    {ВнешнийОтчет.УниверсальныйБухгалтерскийОтчет.МодульОбъекта(7)}: Поле объекта недоступно для записи (Пользователи)

    Пользователи = Новый Массив;

    как подправить то?

    Reply

Leave a Comment

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