Ваше сообщение было успешно отправлено
Услуги частного программиста 1С удаленно по РФ и с выездом по Москве
Обработка для получения списка метаданных и типа данных во внутреннем представлении системы ЗначениеВСтрокуВнутр. Необходима для анализа сравнения типов данных при сравнении объектов. Так как номера таблиц типов в базе источнике и приемнике могут отличаться.
Полезна при анализе объектов во внтуреннем представлении объектов в системе

Обработка для поиска битых ссылок по метаданным базы
Механизм поиска объект не найден и создания объектов по битым ссылкам
В типовой обработке КонвертацияОбъектовИнформационныхБаз есть кусок код где определяется режим записи объекта.
Если в данном куске режим записи встает на
РежимЗаписи = РежимЗаписиДокумента.Проведение;
То данный объект попадает в таблицу отложенного проведения при этом отложенное проведение выполняется в той же транзакции, что и обмен данными
Поэтому нужно найти кусок кода в данной обработке и установить режим записи объекта только на записать. В таком случае документы не будут попадать в таблицу отложенного проведения, что значительно ускорит обмен.
Данный метод подходит, если у вас документы переносятся с проводками и проведенными.
Было:
Если ИмяТипаОбъекта = "Документ" Тогда
Если РежимЗаписи = "Проведение" Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
ИначеЕсли РежимЗаписи = "ОтменаПроведения" Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
ИначеЕсли РежимЗаписи = "Запись" Тогда
РежимЗаписи = РежимЗаписиДокумента.Запись;
Иначе
// Определим как записывать документ.
Если Объект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
// А документ вообще может проводиться или нет.
ДокументМожетПроводиться = (Объект.Метаданные().Проведение = РазрешитьПроведениеДокумента);
Если ДокументМожетПроводиться Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
Иначе
РежимЗаписи = РежимЗаписиДокумента.Запись;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Стало:
Если ИмяТипаОбъекта = "Документ" Тогда
Если РежимЗаписи = "Проведение" Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
ИначеЕсли РежимЗаписи = "ОтменаПроведения" Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
ИначеЕсли РежимЗаписи = "Запись" Тогда
РежимЗаписи = РежимЗаписиДокумента.Запись;
Иначе
// Определим как записывать документ.
Если Объект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
// А документ вообще может проводиться или нет.
ДокументМожетПроводиться = (Объект.Метаданные().Проведение = РазрешитьПроведениеДокумента);
Если ДокументМожетПроводиться Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
Иначе
РежимЗаписи = РежимЗаписиДокумента.Запись;
КонецЕсли;
КонецЕсли;
#Вставка
//
РежимЗаписи = РежимЗаписиДокумента.Запись;
//
#КонецВставки
КонецЕсли;
Обработка формирует таблицу по объектам из ргистра хозрасчетный по обротам с фильтром по времени и организации в следующем виде:

Данный отчет необходим для анализа количества объектов при переносе данных в другую систему
Синхронизация между базами 1С операция частая, для этого в системе предусмотрено много протоколов и возможностей. 
Обмен в 1с как правило выполняется между базами разных конфигураций. Так же обмен может выполняться между типовыми конфигурациями или между внешними системами и 1с.
Рассмотрим задачу, где необходимо выполнять обмен между 1с Бухгалтерия КОРП 3.0.135.22 и 1С Управление Холдингом 3.2.3.58
Необходимо при возникновении разниц между данными по оборотам регистра Хозрасчетный, ставить на регистрацию документы регистраторы и все данные из субконто, если по ним есть разница.
Обмен односторонний идет из Бухгалтерии в Управление Холдингом.
Для решения задачи пишем HTTP сервис на стороне УХ, к которому будет обращаться обработка из БУХ для получения данных по оборотам из УХ и сверки с оборотами БУХ

Задача со стороны Бухгалтерии подключиться к Управление Холдингу к HTTP сервису получить данные по оборотам с нужными отборами, сравнить их с оборотами Бухгалтерии и возникшую разницу поставить на регистрацию.
Для этого для Бухгалтерии будет написаны следующие обработки:
1. Обработка по подключению к Управление Холдингом и получения регистра соответствия "COM HTTP Соединение.epf"
2. Обработка для определения параметров требуемогог отбора и и получения данных в Бухгалтерию "HTTPВыборка.epf"
3. Обработка для пакетной выгрузки данных в Управление холдингом "Управляемая синхронизация.epf"
4. Коннектор который связывает все эти обработки и передачу данных между ними "Коннектор.epf"
Обработка "COM HTTP Соединение.epf" Рис. 1
Обработка "COM HTTP Соединение.epf" Рис. 2
Задача обработки проверять соединение и получать регистр соответствия базы применика в данном случае Управление Холдингом в кеш, это необходимо для объектов, которые в базе источнике и применике имеют разный гуид, для сопоставления при сверке
Обработка "HTTPВыборка.epf" Рис. 1
Обработка позволяет сверить полученные данные из базы приемника с базой запуска обработки по регистру Хозрасчетный, по отдельно взятым справочникам, регистрам сведений, а так же все объект не найден, и собрать массив расхождений, который необходимо выгрузить в базу применика.
Обработка "Управляемая синхронизация.epf"
Обработка позволяет ставить на регистрацию объекты пакетно, для оптимизирования нагрузки на обмен данными.
Обработка "Коннектор.epf"
Обработка необходима для связывания обработки получения данных и Управляемой синхронизации. Посредством обработки инициируется получение данных из обработки HTTPВыборка.epf и передача данных в обработку Управляемая синхронизация.epf
Данный программный комплекс полезен в случае переноса данных, переезда организации из одной базы в другую, так как позволяет выгружать данные пакетами и именно в том объеме, в котором есть расхождения.
Так же данный комплекс ползен при регулярных обменах в которых присутствует большой объем данных, позволяет сверить данные раз в период, а так же оптимально использовать канал для обмена, за счет пакетного обмена
При выгрузке проводок из одной базы в другую может возникать ситуация, где значения измерений и субконто, вместо Null принимают значение Неопределено или Пустое значение. Так же это может возникать при изменении настроек субконто, если произведена перенастройка субконто.
Также данное явление имеет место быть при программном изменении настроек видов субконто на счете и записи счета в режиме ОбменДанными.Загрузка = Истина (без этого режима все отрабатывается корректно).
Для того чтобы исключить появление таких записей, нужно добавить следующий код в Модуль объекта регистра Хозрасчетный ПередЗаписью или в расширение
&После("ПередЗаписью")
Процедура КС_ПередЗаписью(Отказ, РежимЗаписи)
сооНайденные = Новый Соответствие;
Для Каждого Запись Из ЭтотОбъект Цикл
Для Каждого ДтКт Из СтрРазделить("Дт,Кт", ",", Ложь) Цикл
Счет = Запись["Счет" + ДтКт];
Субконто = Запись["Субконто"+ДтКт];
Если Не ЗначениеЗаполнено(Счет) Тогда
Продолжить;
КонецЕсли;
Если Счет.Валютный Тогда
Если Запись["Валюта" + ДтКт] = Null Тогда
Запись["Валюта" + ДтКт] = Справочники.Валюты.ПустаяСсылка();
КонецЕсли;
Иначе
Если Запись["Валюта" + ДтКт] <> Null Тогда
Запись["Валюта" + ДтКт] = Null;
КонецЕсли;
КонецЕсли;
Если Счет.УчетПоПодразделениям Тогда
Если Запись["Подразделение" + ДтКт] = Null Тогда
Запись["Подразделение" + ДтКт] = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
КонецЕсли;
Иначе
Если Запись["Подразделение" + ДтКт] <> Null Тогда
Запись["Подразделение" + ДтКт] = Null;
КонецЕсли;
КонецЕсли;
СоответсвиеТекущихСубконто = Новый Соответствие;
Для Каждого ВидСубконто ИЗ Счет.ВидыСубконто Цикл
СоответсвиеТекущихСубконто.Вставить(ВидСубконто.ВидСубконто,Субконто[ВидСубконто.ВидСубконто]);
КонецЦикла;
Для Каждого ВидСубконто ИЗ Счет.ВидыСубконто Цикл
Субконто.Вставить(ВидСубконто.ВидСубконто,ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение());
Если СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]<>Неопределено Тогда
Субконто.Вставить(ВидСубконто.ВидСубконто,СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
В связи с последними событиями и сбоями в ноябре 2022 г. 1С рекмонедовало оперативно сменить платформу, те кто не готов был сменить платформу могли столкнуться с полным отказом работы программы. Эмпирическим путем было выявлено, платформа 8.3.22.1704 глючная при работе и запуске больших процессов падает система, то же самое происходит на платформе 8.3.21.1622. Стабильная платформа, на которой 1с работает стабильно - 8.3.21.1624
Задача:
Необходимо выгрузить все данные по организации из Управление Холдингом 3.1.17.24 в Бухгалтерия предприятием МСФО 3.1.17.23, и настроить обмен между БУХ и УХ
1. Определить количество метаданных, к выгрузке из УХ в БУХ для получения списка обработка находится здесь
2. Определить тип выгрузки объекта, полностью весь справочник или по ссылке
3. Определить количество объектов по каждому методанному отдельно, шапка таблицы:
| Тип | Вид | Примечание | Исключить | НетДанных | Успех | РеквОрг | УХ_Всего | УХ | БП | Дельта |
4. Проверить на соответствие типовые правила обмена данными, если типовых нет то написать с нуля
4.1. Объекты выгружать по гуид - все
4.2. Документы выгружать вместе с проводками
4.3. В обработке конвертации объектов, выключить отложенныую запись справочников и документов, тут можно почитать как ускорить обмен в два раза
4.4. В процессе выполнения задачи, обязательно следить за соответствием версии БУХ, при обновлении УХ
4.5. Выгружать и сверять нужно не только по оборотам регистра Хозрасчетный, есть документы не имеющие проводок
4.6. В процессе выгрузки данных по счетам возникают пустые значения и нулл - добавить в код соответствующее исправление в обработку перед записью в регистр хозрасчетный, тут можно почитать как убрать пустые значения, когда должно быть null
4.7. Выполнить поиск Объект не найден через "Тестирование и исправление", выгрузить объекты. Выгрузить все объект не найден через вспомогалтельную обработку
5. Произвести выгрузку данных. При большом объеме данных, данные выгружать помесячно
5.1. Сверку данных выполнять обработкой отчетом Детальная ведомость.epf
5.2. Разницу отлавливать обработкой которая по HTTP или COM видит разницу между базами (Коннектор.epf, COMСоединение.epf, COMВыборка.epf) подробнее про обработки можно почитать здесь и догружать разницу
6. Настроить постоянный обмен, по сценарию между УХ и БУХ
6.1. Контрольная сверка данных между базами
7. После заключительной сверки, создать правила для постоянного обмена из БУХ в УХ
7.1 Правила для обмена делаются из правил УХ-БУХ источник меняется с примеником
7.2. Сопоставить регистры соответствия между УХ и БУХ
7.3. Настроить постоянный обмен между БУХ и УХ
7.4. Обратный обмен должен быть не только по ГУИДу, а по полям поиска для справочников, которые создаются в БУХ и в УХ тоже
Обработки для решения поставленной задачи находятся здесь