Cannot insert duplicate key. Кто виноват и что делать

Публикация № 1010017 25.02.19

Задачи пользователя - Корректировка данных

SQLServer ошибка исправление тестирование CANNOT INSERT DUPLICATE KEY

Ошибка "CANNOT INSERT DUPLICATE KEY" в базах 1С и связанная с ней "магия".

О чем речь

Одним прекрасным днем, приходя на работу, Вы обнаруживаете странные ошибки в системе "Cannot insert duplicate key row in object 'dbo.<имя таблицы>' with unique index '<имя индекса>'". Ошибки могут появляться и на русском языке, если установлена соответствующая локализация: "Не удается вставить повторяющуюся строку в объект "dbo.<имя таблицы>" с уникальным индексом "<имя индекса>".

Появление ошибки может происходить при различных действиях, но единственное что их объединяет - это попытка изменения данных в базе данных (ну? а как иначе, ошибка то на уровне СУБД). Причем характерно это как для файлового режима работы, так и для клиент-серверных баз. В рамках статьи мы будет делать упор на работу через SQL Server, но все актуально и для PostgreSQL.

Чаще всего подобные ошибки появляются при следующих действия:

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

Обычно в таких случаях администраторы или разработчики запускают стандартный инструмент "Тестирование и исправление", пересчитывают итоги и др. Но давайте разберемся почему так происходит и что стоит делать в тех или иных случаях.

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

Суть проблемы

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

Кластерный индекс документа

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

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

 
 Уникальность уникальных идентификаторов

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

 
 Какие индексы у таблиц бывают

Далее разберем несколько примеров таких случаев и возможные решения.

Не могу создать документ

Иногда встречаются интеграции между системами, которые создают элементы в базе приемнике с такими же GUID'ами, как и в источнике. Это очень удобно, синхронизация по уникальным идентификаторам (ссылкам) самая надежная и простая. Но в этом случае есть бомба замедленного действия - что если в один прекрасный день уникальные идентификаторы для одного и того же объекта метаданных совпадут в разных базах?А если не уникальный?

Конечно, Вы будете говорить что это маловероятно, что нет смысла думать об этом. Ну совпадет и ладно. Просто пересоздадим объект и все, зато код работает хорошо и выглядит просто. Самое плохое тут в том, что ошибка может появится в самый неподходящий момент, например, в закрытие месяца. Окажется что из-за совпадения идентификатора не создался документ партии и все полетело к %I$#@(^. Интеграция ошибку не показала, а просто ее пропустила, никто не заметил и месяц уже закрыли. Все.

В типовых конфигурациях синхронизация объектов тоже выполняется по уникальным идентификаторам (ссылка), но через промежуточный объект - регистр сведений "СоответствияОбъектовИнформационныхБаз", который решает описанную выше проблему. Регистр хранит соответствие объектов в разных системах и уже становится не важно, что идентификаторы между ними могут совпасть. Обмен все это решит, а соответствие запишется в эту таблицу. Хотя и тут бывают сложности, но это уже другая история.

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

	GUID = Новый УникальныйИдентификатор();
	
	НовЭлемент = Документы.ТестовыйДокумент.СоздатьДокумент();
	СсылкаНовогоЭлемента = Документы.ТестовыйДокумент.ПолучитьСсылку(GUID);
	НовЭлемент.УстановитьСсылкуНового(СсылкаНовогоЭлемента);
	НовЭлемент.Дата = ТекущаяДата();
	НовЭлемент.Записать();
	
	НовЭлемент = Документы.ТестовыйДокумент.СоздатьДокумент();
	СсылкаНовогоЭлемента = Документы.ТестовыйДокумент.ПолучитьСсылку(GUID);
	НовЭлемент.УстановитьСсылкуНового(СсылкаНовогоЭлемента);
	НовЭлемент.Дата = ТекущаяДата();
	// При попытке записи объекта с тем же идентификатором
	// получим ошибку
	НовЭлемент.Записать();

Ошибка, например, может быть такой. Все зависит от названия таблиц для метаданных.

Ошибка вставки повторяющегося значенияВ этом случае решением будет - делать соответствие объектов между обмениваемыми системами и не идти по правилу "один GUID для элемента во всех базах".

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

Проблема при записи регистров

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

Простой пример

Есть независимый непериодический регистр сведений "ДанныеДоговоровКонтрагентов" с такой структурой.

Пример регистра сведений

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

Ошибка при записи в регистр сведений

То есть платформа контролирует уникальность самостоятельно, в отличии от записи объектов (документов, справочников и т.д.) с одинаковой ссылкой. Это можно определить просто взглянув на сообщение об ошибке, там нет никаких признаков, что исключение появилось на уровне СУБД. Но рано радоваться, возьмем сложный пример - регистр бухгалтерии.

Что же с данными моими стало

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

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

  • Нужно изменить записи бухгалтерского регистра в прошлом периоде
  • Нужно дозагрузить данные в текущий или прошлый период
  • Нет никакой предыстории, просто при вводе новой операции вот такая ошибка :).

Прежде чем говорить о решении отметим, что регистр состоит из следующих таблиц.

Метаданные Назначение Имя таблицы SQL
РегистрБухгалтерии.Хозрасчетный Основная _AccRg786
РегистрБухгалтерии.Хозрасчетный ИтогиПоСчетам _AccRgAT0800
РегистрБухгалтерии.Хозрасчетный ИтогиПоСчетамССубконто1 _AccRgAT1819
РегистрБухгалтерии.Хозрасчетный ИтогиПоСчетамССубконто2 _AccRgAT2820
РегистрБухгалтерии.Хозрасчетный ИтогиПоСчетамССубконто3 _AccRgAT3821
РегистрБухгалтерии.Хозрасчетный ИтогиМеждуСчетами _AccRgCT822
РегистрБухгалтерии.Хозрасчетный ЗначенияСубконто _AccRgED823
РегистрБухгалтерии.Хозрасчетный НастройкиХраненияИтоговРегистраБухгалтерии _AccRgOpt825

Ошибка вставки не уникального значения была на таблице "_AccRgAT1819", а эта таблица итогов по счетам с субконто 1. Пока это ничего не дает, рассмотрим варианты решения.

 
 ВНИМАНИЕ! Для отчаянных администраторов и разработчиков!

Вариант №1: Просто отключи итоги

Поистине, самый простой вариант, даже инструкцию можно не писать. Шаги простые:

  1. Полностью отключаем итоги по регистру (вот некоторая информация на ИТС).
  2. Перепроводим / создаем / удаляем нужный документ.
  3. Включаем итоги обратно.

Вот и все!

Для ускорения пересчета итогов можно очистить таблицы (не для файловых баз) с помощью операции "TRUNCATE TABLE <ИмяТаблицы>, тогда платформа не будет долго удалять старые записи итогов, а сразу перейдет к расчету новых. Не забудьте перед этим сделать бэкап! В нашем случае, удаление предыдущих итогов будет таким:

-- ИтогиПоСчетам
TRUNCATE TABLE _AccRgAT0800;
-- ИтогиПоСчетамССубконто1
TRUNCATE TABLE _AccRgAT1819;
-- ИтогиПоСчетамССубконто2
TRUNCATE TABLE _AccRgAT2820;
-- ИтогиПоСчетамССубконто3
TRUNCATE TABLE _AccRgAT3821;
-- ИтогиМеждуСчетами
TRUNCATE TABLE _AccRgCT822;

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

  1. На больших базах пересчет итогов может занимать сутки, двое и даже больше. Иногда это не "лезет" ни в какие технологические окна для обслуживания и пересчет выполнить просто невозможно.
  2. Пересчет итогов может исправить некоторые старые, устоявшиеся ошибки. Все знают правило - если ошибка в данных не исправляется длительное время, то она превращается в особенность :). То есть пересчет может привести к повреждению старой отчетности и непредвиденным последствиям в поведении различных алгоритмов.

Применять его или нет - решать Вам, но если есть риск нестабильной работы системы после этого, то я бы не стал. Если же за "качеством" итогов Вы следите и пересчет для Вас обычное дело, то почему бы и нет? Дальше уже рассмотрим хардкорные варианты.

Вариант №2: Удаление дублей записей

Можно попытаться найти дубли записей и что-то с ними сделать. В нашем случае для поиска дублей записей в таблице "_AccRgAT1819" можно воспользоваться таким скриптом:

SELECT 
    COUNT(*) [RowCount],
	-- Список измерений, которые содержатся в основном кластером индексе
    [_Fld774],
	[_AccountRRef],
	[_Period],
	[_Fld787RRef],
	[_Value1_TYPE],
	[_Value1_RTRef],
	[_Value1_RRRef],
	[_Fld788RRef],
	[_Fld789RRef],
	-- Разделитель записей в режиме разделения итогов
	[_Splitter]
FROM [dbo].[_AccRgAT1819]
GROUP BY
	-- Список измерений, которые содержатся в основном кластером индексе
	[_Fld774],
	[_AccountRRef],
	[_Period],
	[_Fld787RRef],
	[_Value1_TYPE],
	[_Value1_RTRef],
	[_Value1_RRRef],
	[_Fld788RRef],
	[_Fld789RRef],
	-- Разделитель записей в режиме разделения итогов
	[_Splitter]
HAVING COUNT(*) > 1

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

SELECT 
    COUNT(*) [RowCount],
	-- Список измерений, которые содержатся в основном кластером индексе
    'Список измерений. Можно посмотреть в основном кластерном индексе' AS [Измерения]
FROM [dbo].[_AccRgAT1819]
GROUP BY
	-- Список измерений, которые содержатся в основном кластером индексе
	'Список измерений. Можно посмотреть в основном кластерном индексе'
HAVING COUNT(*) > 1

После того как дубли записей будут найдены можно выполнить одно из следующих действий над ними:

  1. Удалить из базы, если они действительно не нужны. Стоит учесть, что нужно будет удалить не только из одной таблицы, но и из всех связанных таблиц регистра (таблиц итогов несколько, нужно это понимать).
  2. Исправить данные как нужно с учетом также нескольких таблиц итогов.
  3. "Схлопнуть" данные по измерениям (полям кластерного индекса), тем самым убрав дубли.

Готовых скриптов тут не будет, т.к. каждый случай требует своего подхода. Самое главное, чтобы все действия выполнял человек, компетентный в SQL-синтаксисе запросов. Сразу скажу, что в нашем примере дублей строк не было, то есть этот способ нам не подходит. Опыт показывает, что обычно дубли строк в таблице отсутствуют. 

Зато этим подходом можно найти случаи, когда дублей по полям индекса нет, но есть много дублей без учета поля-разделителя "_Splitter", который используется при включенном разделении итогов. Платформа 1С иногда может вставить в таблицу итогов повторяющуюся запись с таким же значением разделителя. Ниже расскажу о возможных причинах такого поведения и как это обходить.

Вариант №3: Отключаем уникальность индекса

Это 100% рабочий вариант, но только в качестве временного решения. Просто берем о перестраиваем индекс с отключением уникальности.

Отключение уникальности индекса

После этого никаких проблем не будет при записи проблемного документа. Почему это временное решение?

  1. При реструктуризации платформа восстановит уникальность индекса, что приведет к той же ошибке, которую мы пытались обойти.
  2. Индекс будет работать менее эффективно после отключения уникальности.
  3. Если не разобраться почему появляются дубли записей в итогах, то можно столкнуться с еще более интересными последствиями в будущем.

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

Вариант №4: Ручная корректировка данных

Самый хардкорный способ, доступный только постигшим дзен платформы 1С и принципы ее работы. Заключается в следующем - пишем SQL-запросы для ручной корректировки данных как в таблице движений и таблице субконто, так и в таблицах итогов.

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

Примеров к нему нет смысла давать. Кому нужно, тот сам поймет и выстрадает :).

А что все таки было

В нашем случае могли бы помочь 1, 2 и 4 способ, но что же все таки было? Почему создавались дубли записей? И почему дублей не было до попытки записать проблемный документ?

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

Счет Период Вид субконто Тип субконто Значение субконто Остаток Оборот Дт Оборот Кт Оборот 
<ссылка> 01.12.4014 0:00 NULL NULL NULL 0.00 1000 0.00 1000
<ссылка> 01.12.4014 0:00 NULL NULL NULL 0.00 -1000 0.00 -1000
<ссылка> 01.01.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.01.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00
<ссылка> 01.02.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.02.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00
<ссылка> 01.03.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.03.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00
<ссылка> 01.04.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.04.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00
<ссылка> 01.05.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.05.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00
<ссылка> 01.06.4015 0:00 NULL NULL NULL 1000 0.00 0.00 0.00
<ссылка> 01.06.4015 0:00 NULL NULL NULL -1000 0.00 0.00 0.00

При редактировании документа из него удалялась запись из табличной части, что приводило к удалению соответствующей записи и в регистре бухгалтерии. Документ из прошлого периода, 2014 года, поэтому при изменении платформа не удаляет записи из таблицы итого, а сторнирует их!

Но вот ошибка - запись сторно выполняется полностью с той же аналитикой, что и основная запись, что и приводит к исключению неуникальной записи в индексе. Одинаковое даже значение разделителя данных. Поэтому мы и не видели до этого дубли записей в таблице, их просто еще не было.

Но почему в одних случаях  изменение данных прошлых периодов проходит без ошибки, а в других мы наступаем на грабли и разбиваем себе лицо? И тут тоже все просто! Виновата некорректная аналитика по субконто. У счета в проводке должна стоять аналитика по 1 субконто. В таблице выше заметно, что тип, вид и значение субконто - все NULL! При подготовке данных для записи в таблицы регистра, платформа выполняет различные запросы, в которых можно заметить такие соединения как:

-- Примеры соединения двух таблиц, где 
--  Т1 - временная таблица с подготовленными данными
--  Т2 - таблица итогов "_AccRgAT1819"
T1._Value1_TYPE = T2._Value1_TYPE AND T1._Value1_RTRef = T2._Value1_RTRef

Но т.к. значение у этих полей NULL, то запрос возвращает не те данные, что ожидается, т.к. сравниваются значения NULL. SQL Server использует трехзначную логику, при сравнении значения с NULL всегда будет NULL. В этом случае один из запросов не обновляет текущие записи в таблице итогов как положено, т.к. просто не видит их. Пример запроса, в котором выполняется обновление существующих записей итогов, Вы можете увидеть под спойлером. Там же комментариями выделено проблемное место, из-за которого этот запрос не отрабатывает как нужно - не обновляет существующую запись итогов.

 
 Проблемный запрос обновления итогов

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

 
 Запрос, который вызывает исключение при вставке записи

Но, поскольку запись итогов все же уже есть в таблице, то происходит ошибка "Cannot insert duplicate key".

 
 NULL не равно NULL

Вот такие дела. Мы рассмотрели не самый простой пример с ошибкой дублирования записи в таблице. Бывают ошибки проще Теперь ты знаешьна других таблицах и объектах метаданных. Хотя и бывают ситуации еще сложнее, когда ошибка воспроизводится спонтанно, на разных документах. Основные причины ошибки те же самые, просто "интересных" данных в регистре уже намного больше.

Не загружается DT'шник базы

Иногда подобная ошибка встречается при переводе базы из файлового варианта в клиент-серверный через загрузку-выгрузку DT-файла.

На практике относительно мало работал с файловыми базами, но решать проблему удавалось двумя способами:

  1. Удалением или редактированием битых записей перед выгрузкой в DT. Это можно сделать через режим 1С:Предприятие, если проблема в основных таблицах. Или можно воспользоваться утилитой Tool1CD.
  2. В момент загрузки DT на SQL Server сделать триггер при создании и отключить ему уникальность с помощью скрипта. Далее уже анализировать проблему.

Иногда может помочь штатное тестирование и исправление, но этот инструмент не является панацеей от всех болезней. А иногда он может и навредить, используйте с умом!

Способы не универсальные, нужно смотреть по ситуации.

Что имеем в итоге

Какой сделать вывод? Проблемы вставки не уникальной записи - это не баг СУБД! Основные причины таких ошибок:

  1. Некорректные данные в таблицах, появившееся либо в результате некорректной работы программного кода, либо из-за ошибок платформы 1С, либо при изменении учета "на лету", когда, например, изменяют состав субконто.
  2. Ошибки в коде прикладных решений.
  3. Плохое обслуживание итогов в регистрах, отсутствие проактивной сверки данных, при которой такие проблемы решались бы оперативней.

К счастью, все подобные вопросы можно решить и в абсолютном большинстве случаев без жертв.

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

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

Другие ссылки

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lunjio 65 25.02.19 06:28 Сейчас в теме
Не мешало бы ещё вариант, пересоздание индексов добавить, все таки имеет место быть и такое.
YPermitin; +1 Ответить
3. пользователь 25.02.19 12:07
(1) а можете привести конкретный кейс, когда пересоздание индекса помогло? На моей практике вообще никогда не давпло результат.
5. lunjio 65 25.02.19 13:20 Сейчас в теме
(3) Конечно )) К примеру свертываешь большую базу, удаление приходится делать напрямую, если индексы не пересоздать, ошибки при вставке, описанные вами.
6. пользователь 25.02.19 13:49
(5) не исключаю, конечно, что это могло бы помочь, но как?

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

Возможно Вы имеете ввиду не перестроение, что-то другое? Файловая или клиент-серверная база?

Может под перестроением понимается запуск утилиты тестировпния и исправления?
7. lunjio 65 25.02.19 14:17 Сейчас в теме
(6) Нет, понимаю пересоздание индексов через скульное обслуживание, либо да, через тестирование исправление, хотя там по-моему реорганизует, т.е фрагментирует а не создает ,верно ?
В общем ситуация следующая, удалил из таблицы все документы, с движениями и т.п, изредка возникает ошибка описанная вами, при попытке перенести в эту базу документ удаленный раннее, т.е индекс не удалился при удалении строки, из разряда фантастики конечно, но имело место.
YPermitin; +1 Ответить
8. пользователь 25.02.19 15:25
(7) действительно, фантастика.

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

Если сможете как-то на демоданных сделать, то цены этой базе не будет.
2. vano-ekt 122 25.02.19 11:55 Сейчас в теме
сегодня есть, что плюсануть на ИС)
kuzyara; YPermitin; +2 Ответить
4. пользователь 25.02.19 12:08
9. acanta 26.02.19 14:22 Сейчас в теме
Документ из прошлого периода, 2014 года, поэтому при изменении платформа не удаляет записи из таблицы итого, а сторнирует их!

По какому принципу платформа отличает прошлый период от текущего?
Например при рассчитанных итогах на 2020 год закрывать периоды с перепроведением документов начиная с 2014 в бухгалтерии - записи будут сторнироваться или удаляться и пересоздаваться заново?
Исходя из этого, насколько часто имеет смысл пересчитывать итоги?
10. пользователь 26.02.19 15:05
(9) главное следить, чтобы NULL не появлялось в аналитике проводок там, где не следует.

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

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

По поводу старого периода - если есть записи итогов в следующих датах, то период прошлый.
11. nytlenc 10.06.19 05:06 Сейчас в теме
Платформа 1С автоматически создает множество индексов в зависимости от типа метаданного. Подробнее об индексах можно прочитать на ИТС, там есть подробная информация.


Метаданного???? о_О Вы серьёзно?
Кстати вы в курсе, что ваша статья - это прямое нарушение лицензионного соглашения 1С? (п. 64)
Прикрепленные файлы:
12. пользователь 10.06.19 06:40
(11) что Вы хотите всем этим сказать и какого ответа ожидаете? :)
13. nytlenc 10.06.19 06:54 Сейчас в теме
(12) Юрий, ничего злонамеренного :) Просто. Знаете ли Вы, что это нарушение лицензии (скорее всего знаете) и думаю стоит об этом упомянуть в статье (хотя может и есть, каюсь мог проглядеть).
И второе конечно, что режет глаз, слово "Метаданного", к сожалению такого слова нет, Метаданные всегда пишутся и произносятся во множественном числе, даже если идет речь о какой-то одной сущности конфигурации. То есть правильно будет писать:

Платформа 1С автоматически создает множество индексов в зависимости от типа метаданного метаданных. Подробнее об индексах можно прочитать на ИТС, там есть подробная информация.


Ваша статья довольно обширная и интересная. Но когда встречаешь подобные моменты за которые "цепляется глаз", доверие к источнику слегка падает.
Спасибо :)

Или как вариант так :

Платформа 1С автоматически создает множество индексов в зависимости от типа метаданных объекта конфигурации. Подробнее об индексах можно прочитать на ИТС, там есть подробная информация.
14. пользователь 10.06.19 07:07
(13) Пусть статья остаенется как есть для истории.

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

Удачного вам дня и хорошего настроения! Держитесь там! :)
15. nytlenc 10.06.19 08:48 Сейчас в теме
(14) )))))) Статья отличная бесспорно. Спасибо. И Вам хорошего дня.
16. пользователь 10.06.19 12:16
17. nytlenc 10.06.19 12:39 Сейчас в теме
(16) Пусть останется как есть для истории. (шучу... кнопки спутал спросонья, прошу прощения) :)
18. пользователь 10.06.19 15:46
(17) никого не хотел обидеть...

I am sorry!
19. nvv1970 25.02.20 09:18 Сейчас в теме
Отвечая на вопрос "что делать" - я бы для начала собрал статистику.
Моя статистика по неуникальности на "объектах" говорит, что ошибка возникает только на совместимостях до 8.3. При чем это не только справочники, документы, но и служебные таблицы типа Files.
Впервые массово столкнувшись на автоблокировках с такой ошибкой я проанализировал трассу в скуле. Платформа выполняет select по id, а потом или insert или update. Вроде нет проблем. Однако изменение данных в транзакции, а проверка - вне. На лицо логическая ошибка установки блокировок. При отсутствии id две сессии попытаются выполнить insert. Т.е. я думал, что все дело в параллельности. На партнерке поднимал тему.
Однако, наблюдались на старых УПП такие ошибки в совместимости 8.2.13 на упрблокировках, да еще и в однопользовательском режиме. При чем картина была примерно такая: пишем объект в режиме загрузки из xml, получаем ошибку уникальности, а повтор записи проходит без проблем. Ошибка частая. Платформа может быть в т.ч. свежей. Например, на 8.3.15 ошибка все еще присутствует.
А вот при повышении совместимости до 8.3 ошибки не встречал. Трудно сказать что повлияло. Раньше бы я подумал, что rcsi. Однако при однопользовательских ошибках больше похоже на ошибки платформы в старых совместимостях.

А какая у вас статистика появления подобных ошибок, камрады?
20. Cyberhawk 131 03.03.20 17:32 Сейчас в теме
1.Полностью отключаем итоги по регистру (вот некоторая информация на ИТС).
2. Перепроводим / создаем / удаляем нужный документ.
Документ в 99% типовых не проведется, ибо при отключенных итогах запросы, использующие обращение к виртуальным таблицам регистра, выпадут в ошибку исполнения.
YPermitin; +1 Ответить
21. Cyberhawk 131 03.03.20 17:37 Сейчас в теме
Сразу скажу, что в нашем примере дублей строк не было, то есть этот способ нам не подходит. Опыт показывает, что обычно дубли строк в таблице отсутствуют
Так а откуда взяться дублям? Ошибка-то возникает при попытке вставки дублирующейся записи в таблицу СУБД и не завершается. Как тут поможет чистка каких-то дублей и при тут они вообще?
YPermitin; +1 Ответить
22. пользователь 03.03.20 17:50
(21) Так в статье же есть информация по обоим вопросам.
23. Cyberhawk 131 03.03.20 18:00 Сейчас в теме
(22) В статье ты позиционируешь вариант №2 как, мол, "Удали дубли из БД".
Этим дублям в БД неоткуда взяться, если не отключать неуникальность индекса в СУБД. Т.е. на момент ошибки (на момент попытки вставки дубля) никаких дублей в СУБД быть не может. Поэтому этот "вариант №2" никак не помогает решить проблему.
Этот "вариант №2" может быть применим только если до этого воспользовались вариантом №3 (сами отключили уникальность и тем самым допустили вставку дубля), поэтому позиционировать "вариант №2" как независимый способ лечения некорректно.
24. пользователь 03.03.20 18:13
(23) мне кажется, что есть какое-то недопонимание.
25. пользователь 03.03.20 18:18
(23) я бы описал все что в статье другими словами, но сейчас просто сил нет :)

Про удаление дублей имеется ввиду исключить записи, которые появляются при вставке данных платформой. Ситуаций там очень много, которые я видел.

Почти всегда причиной были кривые данные. Даже есть общая версия отчета для проверки регистра, чтобы такие ситуации избегать. Недавно публиковал.

Ну и да, с индексом уникальным конечно не может быть записей дублей.

Извините, если отвечаю не о том) вторник как понедельник:)))
26. Cyberhawk 131 03.03.20 18:32 Сейчас в теме
(25)
Про удаление дублей имеется ввиду исключить записи, которые появляются при вставке данных платформой
Вроде в описании варианта №2 довольно четко предлагается (скриптом-запросом к СУБД) найти и достать записи-дубли из БД. И далее по тексту моего предыдущего комментария.
27. пользователь 03.03.20 18:39
(26) из своей практики SQL-скриптом я не удалял дубли как таковые, а скорее находил потенциальные проблемы. В варианте 2 явно сделан запрос для поиска дублей, но смысла в нем на практике мало. Нужно отталкиваться от ошибки. Например, известно, что ошибка на такой-то записи, т.к. в тексте ошибки обычно пишется из-за каких значений произошел дубль.

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

Был случай, когда таким способом нашел в таблице итогов 3 записи за разные периоды (месяцы), которые мешали записать проводку в текущем периоде. Я посчитал сколько таких записей за все время (сгруппировал без учета периода). Т.к. изменять документ в прошлом периоде было нельзя (бизнес не согласовал изменение данных и пересчет итогов, т.к. это могло повлиять на отчетность), пришлось "скальпелем" при помощи SQL-запросов исправить некоторые данные в таблице итогов.

Но это экстрим конечно. Нужно четко понимать, что и для чего.
В статье я поэтому написал: "Готовых скриптов тут не будет, т.к. каждый случай требует своего подхода.".

Как-то так. Никого не хотел запутать. А у вас тоже какая-то ошибка возникла с дублями?
28. Cyberhawk 131 03.03.20 18:42 Сейчас в теме
(27) Не особо понял, как описание варианта №4 и практики его применения относится к моему исходному комментарию, относящемуся - напомню - к варианту №2.
29. пользователь 03.03.20 18:43
(28) 2 вариант для поиска причин проблем. 4 для исправления.
31. Cyberhawk 131 03.03.20 18:46 Сейчас в теме
(29)
2 вариант для поиска причин проблем
Как поиск дублей записей может помогать выйти на причину, если в БД никаких дублей быть не может? Идем на второй круг.
32. пользователь 03.03.20 18:47
(31) :D это уже смешно.

Вернитесь к материалу позже.
30. пользователь 03.03.20 18:44
(28) Откланяюсь :) Пора и другими делами заниматься :)
Оставьте свое сообщение

См. также

Особенности работы с COM-соединением

Обмен между базами 1C Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Бесплатно (free)

О чём и зачем данная статья? Казалось бы, что написано об этом соединении очень много, да и технология устаревшая... И мне так раньше казалось! Однако, столкнувшись с необходимостью на двух проектах подряд работать с этой технологией, стало понятно, что описание трудных ситуаций или отсутствует, или есть только на форумах, что крайне неудобно! Поэтому особенности работы с COM соберу в одном месте, чтоб не искать в будущем.

22.02.2023    3862    biimmap    71    

57

Добавление своего нового объекта в синхронизацию данными через универсальный формат Enterprise Data

Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

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

27.01.2023    1907    alexey_kurdyukov    5    

41

Ни в ЗУП ногой!? А мне нравится! Часть 4. Главное - правильный перенос данных!

Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтобы начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статьей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

30.05.2022    5055    biimmap    26    

54

Переход с УПП на ERP с сохранением документов. Фантастика или реальность?

Внедрение ИТ-системы Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бесплатно (free)

В последнее время задача перехода с УПП становится все более актуальной. Причина – ожидаемое снятие УПП с поддержки и более продвинутые возможности последних версий конфигураций 1С. О том, какие методики переноса данных из УПП в ERP можно применить, и как в автоматическом режиме убедиться, что все перенеслось корректно, на конференции Infostart Event 2021 Moscow Premiere рассказал Сергей Сорокин.

28.04.2022    3086    primat    2    

23

Выполнение синхронизации (обмен) по событию 1С (двусторонний обмен)

Обмен между базами 1C Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление нашей фирмой 1.6 Бесплатно (free)

Выполнить синхронизацию(обмен) с другой базой 1С по событию в 1С (проведение документа). Запустить синхронизацию из другой базы 1С.

16.11.2021    4226    Swamt    0    

20

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Что делать, когда обмены между разными базами данных портят вам жизнь…

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Если при обмене между базами данных наблюдаются следующие симптомы: • Процедуры обмена занимают неприемлемо много времени. • Процессы обмена периодически вылетают «по ошибке» и их приходится запускать заново. • Поиск ошибок обмена превращается в ужасающий квест. То, скорее всего вы используете конфигурацию «Конвертация данных». А если при этом вам надоело получать сообщения службы поддержки о новых ошибках и вы бережете свои нервы, то данная статья написана прямо для вас. Чуть ниже я расскажу вам, как навсегда забыть проблемы, связанные со словом "обмен".

10.09.2021    3182    director04    9    

20

Описание формата 1С JDTO (JSON data transfer object)

Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

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

16.07.2021    10658    zhichkin    32    

94

Добавление нового документа в формат обмена EnterpriseData (отправка)

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Для меня встала задача добавить новый документ, созданный в расширении, в формат обмена EnterpriseData, между БП - УНФ. Изначальный поиск решения не дал результата. Методом проб и ошибок у меня сформировалось свое решение, которым спешу поделиться, чтобы систематизировать информацию в текст и услышать плюсы, минусы подхода. Все доработки осуществляются в расширении, в котором и был создан новый документ.

21.04.2021    5364    con-men    7    

54

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    18808    Nikola23    40    

79

R.I.P. РИБ

Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    13275    1c-intelligence    133    

69

Перенос данных из ЗУП 2.5 в ЗУП 3.1

Зарплата Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Бесплатно (free)

Довольно часто сталкиваюсь с тем, что у коллег возникает вопрос, как правильно выполнить перенос данных из ЗУП 2.5 в ЗУП 3.1. (Неужели еще кто-то до сих пор работает в ЗУП 2.5? Да, и очень много людей)

25.01.2021    17154    VAAngelov    83    

64

Объединение баз ЗУП

Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

Есть база ЗУП 3.1, в которой ведется одна организация, все данные из нее нужно перенести в общий ЗУП, обе базы типовые. Используем для переноса КД 2.0.

10.01.2021    5417    roger83    5    

22

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

Лайфхаки конвертации данных 2.1 (часть 2)

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

14.09.2020    29564    Shining_ninja    19    

115

Ошибка формата потока данных, частный случай

Корректировка данных Платформа 1С v8.3 Бесплатно (free)

Вариант решения ошибки формата потока данных при попытке открытия конфигурации в конфигураторе.

11.07.2020    3797    Zhilyakovdr    8    

22

Восстановление узла РИБ по магазинам на примере 1С:Розница 2.3.4

Обмен между базами 1C Платформа 1С v8.3 1С:Розница Россия Бесплатно (free)

После очередного обновления узла РИБ столкнулся с ошибкой, РИБ перестал работать. Начитался много статей про восстановление РИБа, ни одна толково не помогла. Поэтому не мытьем, так катанием сам разобрался, как же быстро восстановить РИБ, чтобы он заработал.

15.06.2020    15737    maxon    15    

21

Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    8858    Drivingblind    10    

69

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Конвертация данных 2.1. Методика переноса остатков

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Бесплатно (free)

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

12.06.2020    21116    aximo    23    

93

Лайфхаки конвертации данных 2.1

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Россия Бесплатно (free)

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

07.06.2020    24780    Shining_ninja    13    

145

Как мы РИБ на веб-сервисы переводили

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Решение проблем обмена РИБ с 10+ баз с помощью веб-сервисов и базы обмена.

13.05.2020    6923    RSConsulting    22    

29

Механизм XDTO

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.05.2020    8366    totchaz    4    

55

Интеграция БИТ:СКУД с типовой конфигурацией

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Интеграция БИТ:СКУД с типовой конфигурацией, обновление БИТ:СКУД в составе конфигурации и отдельно. Обновление системы защиты.

26.04.2020    7650    RPGrigorev    0    

109

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Ошибка формата потока. Частный случай при обновлении

Корректировка данных Платформа 1С v8.3 1С:Управление производственным предприятием Бесплатно (free)

При обновлении конфигурации столкнулся с ошибкой формата потока. Нашел вполне экономное решение по времени для решение этой проблемы.

25.04.2020    9506    Gasilin    8    

22

Проверка регистраторов при обновлении конфигурации

Корректировка данных Платформа 1С v8.3 Бесплатно (free)

При обновлении конфигурации состав движений документов может быть изменен. Если в них были сделаны движения по своим регистрам, то их нужно восстановить. Если забыть это сделать - данные будут утеряны.

23.04.2020    4000    ipoloskov    13    

20

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

Обмен между базами 1C БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    8751    partizand    7    

48

Конвертация данных 2. Использование исходящих и входящих данных. Свойство "Получить из входящих данных"

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

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

17.02.2020    42027    Drivingblind    37    

121

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Бесшовная интеграция через обмен по правилам - миссия выполнима

Обмен между базами 1C Платформа 1С v8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Бесплатно (free)

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    9147    e-9    8    

36

Зависает полнотекстовый поиск! Что было? Что я сделал?

Корректировка данных Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Всем привет. После непредвиденного выключения компьютера, глюк системы, в одной из моих баз произошел глюк, а именно, в части поиска. Я спокойно вхожу в программу, могу все делать, но как только я начинаю пользоваться поиском, программа зависает и не отвисает, ну или нужно очень долго ждать (я этого не делал). Сначала я подумал, что глючит индексация поиска, и хотел ее перенумеровать, но зайти в настройки индексации полнотекстового поиска у меня тоже не вышло, глючит при попытке проникновения в настройки, я попробовал отключить полнотекстовый поиск, программа заработала без глюков, но при использовании поиска не выполняла свою функцию.

10.01.2020    10604    VID1234    14    

21

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

31.12.2019    11280    ids79    17    

47

Заметки по Конвертации данных 3.0

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Написал небольшие заметки по конвертации данных 3.0.

18.11.2019    27706    John_d    20    

184

Обсудим планы обмена. Способы регистрации объектов к обмену

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В этой статье я предлагаю обсудить такой объект конфигурации, как "план обмена", а точнее, методы регистрации в нем. Да и вообще, посмотрим, как можно зарегистрировать объекты к обмену.

16.11.2019    72065    aximo    47    

86

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Решение для клиент-серверной архитектуры на базе POSTGRE SQL при возникновении ошибки "Нарушена целостность структуры конфигурации"

Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При динамическом обновлении возможно нарушении структуры конфигурации. Об этом можно узнать по характерному сообщению: "Нарушена целостность структуры конфигурации", после чего предлагается перезапуск или завершение. Решение описано для клиент-серверной конфигурации на PostgreSQL

07.11.2019    9530    leaguener    6    

25

И снова "Конфигурация узла распределенной ИБ не соответствует ожидаемой"

Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

Конфигурация узла распределенной ИБ не соответствует ожидаемой. Приведен очередной способ устранения этой ошибки, возникший не в результате сбоев в работе оборудования или при обмене, а в результате обновления платформы 1С.

05.11.2019    7937    Kobra_RU    11    

23

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Очень часто бухгалтеры ругаются, когда уже отраженные документы в бухгалтерском учета меняются сотрудниками.

04.10.2019    8771    handscenter    12    

28