Случилась необходимость сравнить конфигурацию поставщика и основную конфигурацию на предмет внесенных ранее изменений.
Все как обычно, говорю конфигуратору "Сравнить, объединить" и в окне вижу все объекты! И в каждом (справочнике, документе, регистре, плане счетов и проч.) различаются значения "режим отображения"
отчет о сравнении выглядит примерно так:
- ***Справочник.Валюты.Форма.ФормаВыбора
- ***Реквизиты
- ***Реквизит - Список
- ***Динамический список
- Группировка
- Идентификатор пользовательской настройки
Различаются значения
- Режим отображения
Различаются значения
< Быстрый доступ
> Обычный
ясен пень, вмешались внутренние силы 1С, а не шаловливые ручки )
можно ли как-то игнорировать эти не изменения, чтобы получить реальные изменения конфигурации?
(1) Воспользуйтесь встроенной процедурой сравнения конфигураций
Для вызова данного режима выберите пункт "Конфигурация - Сравнить конфигурации".
В диалоге выберите файлы с конфигурациями и нажмите кнопку "ОК".
В данном режиме можно сравнить любые две конфигурации:
основная конфигурация;
конфигурация базы данных;
конфигурация хранилища (с выбором версии);
конфигурация поставки (с выбором версии);
конфигурация, хранящаяся в файле.
(2) CaptainMorgan, спасибо! пробовал, все тоже самое (
я использовал режим "конфигурация" - "поддержка" - "настройка поддержки" - "сравнить, объединить"
имхо, тоже самое, что "сравнить конфигурации" когда первая - конфигурация поставщика, а вторая - основная конфигурация
едва ли поможет что-то стандартное, я не знаю почему так произошло, но действительно:
в конфигурации поставщика "режим отображения" ("режим редактирования") для "группировки" установлен "Обычный",
а в основной конфигурации это свойство имеет значение "Быстрый доступ"
как оно так и зачем не известно, а я хочу выяснить какие изменения были сделаны (что где ковырнули-добавили-удалили) в основной конфигурации по сравнению с конфигурацией поставщика. понятно, что сравнение уже не поможет, а другие варианты есть? или можно ли как-нибудь программно для всех реквизитов конфигурации прописать значение?
(3) Конфигурация - Сравнить конфигураци позволяет сравнить любые конфигурации.
Возможно конфигурация поставщика в вашей базе как-то изменилась.
Правда я даже не могу придумать способ её изменения. Но предположим.
Надо взять с партнерского ИТС полную инсталляцию вашей конфигурации.
Установить её в новую базу.
Выгрузить в файл CF и сравнить этот файл с вашей конфигурацией поставщика.
Если вдруг окажется, что отличия есть, то скажу как поступить дальше...
(4) CaptainMorgan, это я уже сделал, у меня есть поставка от 1С,
чтобы не быть голословным и обозначить термины
конфигурация поставщика УНФ 1.4.7.42
основная конфигурация УНФ 1.4.7.42 потомок конфигурации поставщика с изменениями
конфигурация 1С - новая конфигурация УНФ 1.4.7.42
задача - определить какие были сделаны изменения, т.к. никто и никогда не документировал внесенные изменения
что сделал
1. "конфигурация" - "поддержка" - "настройка поддержки" - "сравнить, объединить" в надежде увидеть только измененные объекты, но увидел все, т.к. в отчете о сравнении любого объекта конфигурации, который имеет реквизит список с типом динамический список различается режим отображения. попробую изобразить:
***- Объект изменен
-->- Объект присутствует только в основной конфигурации
<--- Объект присутствует только в конфигурации поставщика
^- Порядок объекта изменен
- ***Справочник.Валюты.Форма.ФормаВыбора
- ***Реквизиты
- ***Реквизит - Список
- ***Динамический список
- Группировка
- Идентификатор пользовательской настройки
Различаются значения
- Режим отображения
Различаются значения
< Быстрый доступ
> Обычный
Показать
2. "Конфигурация - Сравнить конфигурации". Первая - конфигурация поставщика, вторая - основная. результат тот же.
3. Создал конфигурацию 1С, выгрузил СF и сравнил этот файл с основной конфигурацией - результат тот же.
4. Посмотрел, что в конфигурации 1С и что в основной. Действительно, в основной конфигурации изменен реквизит режим отображения у группировки динамического списка. в основной указан "Быстрый доступ",
а в конфигурации 1С - "Обычный"
и повторюсь (
как оно так и зачем случилось не известно.
как теперь можно выяснить какие изменения были сделаны (что где ковырнули-добавили-удалили) в основной конфигурации по сравнению с конфигурацией поставщика?
понятно, что сравнение уже не поможет.
другие варианты есть?
можно ли как-нибудь программно для всех реквизитов конфигурации прописать значение?
у вас есть чистая конфигурация, если ее снять с поддержки, и сделать сравнение конфигурации поставщика и основной конфигурации - там не будет такой беды?
снял с поддержки все объекты конфигурации 1С, это действо никак не повлияло на реквизит режим отображения у группировки динамического списка и реквизит "Включать в пользовательские настройки"
что то я не понял, так далось получить модифицированную чистую конфигурацию поставщика способом описанным в (10)?
в (11) написано как-то не однозначно
с одной стороны "воспроизвел, есть такая беда"
с другой - "снял с поддержки все объекты конфигурации 1С, это действо никак не повлияло..."
Если создать пустую базу с помощью конфигурации поставки и после этого снять ее с поддержки (или даже просто включив возможность изменения), обнаруживаются ли после этого описанные изначально различия при сравнении основной конфигурации базы и конфигурацией поставщика?
Если обнаруживаются и основная конфигурация тестовой базы была модифицирована платформой (а я подозреваю что это именно так), то по идее ее и следует в дальнейшем сравнить с основной конфигурацией вашей рабочей базы.
создал чистую конфигурацию от 1С УНФ 1.4.7.42, снял с поддержки, сравнил со свой (основной) конфигурацией УНФ 1.4.7.42, различия остались.
с другой - "снял с поддержки все объекты конфигурации 1С, это действо никак не повлияло..."
снятие с поддержки не повлияло на значения реквизитов, они остались такими же как и были до снятия, что было ожидаемо.
Если создать пустую базу с помощью конфигурации поставки и после этого снять ее с поддержки (или даже просто включив возможность изменения), обнаруживаются ли после этого описанные изначально различия при сравнении основной конфигурации базы и конфигурацией поставщика?
да
если я правильно понял, то
создать пустую базу с помощью конфигурации поставки
- получаем конфигурацию 1С, в конфигурации 1С изначально реквизит "Режим редактирования" = "Обычный", после снятия с поддержки он не изменяется, по прежнему реквизит "Режим редактирования" = "Обычный". При сравнении основной конфигурации с конфигурацией 1С, есть различия во всех объектах конфигурации.
Если обнаруживаются и основная конфигурация тестовой базы была модифицирована платформой (а я подозреваю что это именно так), то по идее ее и следует в дальнейшем сравнить с основной конфигурацией вашей рабочей базы.
а вот тут не понял, тестовая база эта какая из трех? конфигурация 1С, основная конфигурация или конфигурация поставщика? если конфигурация 1С, то как бы заставить платформу так же модифицировать основную конфигурацию?
(31) beard1, что ты называешь конфигурацией 1С?? Есть: конфигурация поставщика, основная конфигурация и конфигурация БД. С последней все ясно, она будет приведена к состоянию основной конфы при сохранении. С конфигурацией поставщика тоже, вроде, вопросов нет. Она не изменяется и существует до тех пор, пока основная конфигурация на поддержке. Выходит, что при включении возможности изменения основной конфы у нее меняется некое свойство. Так?
Если при выгрузке конфигурации в файлы найдено место где хранится значение свойства "режим редактирования", то может быть выгрузить в файлы конфигурацию созданную из конфигурации поставщика, полностью находящуюся на поддержке, и сравнить их с файлами полученными при выгрузке основной конфигурации твоей базы, той в которой включена возможность изменения и значение свойства "режим редактирования" по неясным причинам изменилось. Если различие будет только в указанном в (15) идентификаторе, то собственно взять его из "оригинальных" файлов, а затем загрузить конфу рабочей базы из модифицированных файлов и посмотреть на результат.
(32) kasper076,
что как называю в этой теме см. (5), я понимаю что есть конфигурация поставщика и основная конфигурация, про конфигурацию БД тут не говорю, т.к. она не участвует в вопросе.
про файлы - именно так я и нашел различия )
различия в присутствии двух элементов:
если "режим редактирования" = "обычный", то первая строка присутствует в файле, если "Быстрый доступ", то этого элемента нет в файле.
вторая строка описывает свойство "Включать в пользовательские настройки", если флаг не установлен, то и строки нет в файле.
я эти строки добавил ручками, загрузил конфигурацию из файлов, проверил, что в подопытном объекте конфигурации свойства поменялись, но в режиме Предприятия не заработало, думаю из-за идентификатора.
(33) beard1, так получается по мимо значения свойства "режим редактирования", слетает еще и значение свойства "Включать в пользовательские настройки".
А пробовал поискать в файлах выгрузки конфы поставщика этот идентификатор? Может он еще гдет встречается. Судя по примеру из (5) это ИД настройки. Возможно по недосмотру при изменении режима поддержки конфы настройки генерируются заново и им присваиваются значения по умолчанию, которые отличны от значений в конфе поставщика. При этом где-то сохраняется ссылка на ИД оригинальной настройки. При начале работы объект пытается получить настройку по оригинальному ИД, естественно не находит нужную настройку и подставляет значения по умолчанию, которые отличны от типовых.
да, слетает два реквизита, см. картинки в (4)
искал этот ИД по всем файлам конфигурации 1С, он идентичен во всех формах в реквизитах группировки, но тут то и затык, в основной конфе у меня нет значения этого ИД, и соответственно, не получается правильно прописать эти строки во все файлы основной конфигурации...
хотя... может попробовать ручками выставить флаг в одной форме, выгрузить файлы, посмотреть какой ИД сгенерится и его всем прописать...
(35) beard1, так я к тому и веду. Нужно в оригинальных файлах найти все вхождения оригинального ИД, а затем новый ИД в файлах рабочей базы повтыкать на те же места. Вдруг количество вхождений огригинального ИД в оригинальных файлах будет больше, чем количество вхождений нового ИД в файлах рабочей конфы. А ИД, скорее всего можно самому генерить.
об этом я с самого начала ) попробую чуть позже, меня ИД смутил, не поняло сразу как получить его значение, а теоретически можно сгенерить произвольный УИД и повтыкать его в правильные места.
(37) beard1, Не подскажите, помогло ли Вам это?
У меня такая же ситуация, с двумя базами УТ 11 и БП, может быть что-то с платформой? При предыдущем обновлении на другой платформе такого не было.
(39), я сделал проще
1.Основная конфигурация снята с поддержки.
2. Объединяем основную конфигурацию и конфигурацию постащика из cf-файла (при объединении не ставим на поддержку пока не поправим косяки).
3. Для таких капризных случаев, которые вы описали, при объединении формы меняем режим объединения с "Взять из файла" на "Объединить с приоритетом файла".
В 99% случаев это решает проблему.
(38) Lumis, вдогонку, если конфигурации на поддержке, то ничего не делайте, т.к. теперь посматриваю и замечал, что такое случается от релиза к релизу, а потом может само встать на места.
Такое бывает при некорректном обновлении конфигурации, у Вас скорее всего номер релиза не правильно определяется. Попробуйте сравнить с cf файлом нужного релиза.
едва ли платформа поможет, различаются значения реквизита метаданных у конфигурации 1С и основной конфигурации. вопрос как всем объектам конфигурации прописать нужное значение
выгрузил конфигурацию в файлы, нашел то место, где прописаны эти свойства, прописал ручками в файл, загрузил конфигурацию из файлов взад, но что-то не взлетело...
там есть элемент в схеме формы, который описывает настройку группировки списка "Включать в пользовательские настройки"
(15) beard1, а почему был выбран такой путь? Интерактивно нельзя это свойство поменять у объекта? Кста, объект у которого это свойство отличается от конфы поставщика доступен для изменения??
никакой путь еще не выбран )
интерактивно, конечно, можно, но как то слишком много "мышкожатий" получается )))
естественно, я уже попробовал, изменил значения свойств у пары объектов, помогло, но это же практически все объекты конфигурации, практически во всех формах есть реквизит "список"
отсюда и вопрос можно ли как то программно прописать значение реквизита или свойства (как удобно) для объекта конфигурации.
знаю как найти нужный объект метаданных, знаю реквизиты, значения которых нужно изменить, не знаю как записать.
(44) как не странно нашел решение!
В файле можно заметить что различий нет, а на деле показывает.
Итог реквизит формат:
1. выделяю
2. вырезаю
3. вставляю
Повторяю с каждым таким реквизитом. После этого объединение ничего не выдает на различия))
46.
user598350_grimax
23.11.18 15:48 Сейчас в теме
Если изменить режим совместимости на "не использовать" меняется порядок стандартных команд динамических списков форм и все формы соответственно тоже при сравнении будут различаться! (
Некропост, ОН ЖИВ!
Столкнулся с этой проблемой. Спасибо за решение от beard1. Правда у меня после этого другие ошибки вылезли, но бОльшую часть решил объединением с чистой конфигурацией.
829 первоначальных ошибок платформы - это все упоминания тега dcsset:itemsViewMode, а в измененной конфигурации потерты они все из типовых объектов с динамическими списками. 829 - завышенная цифра, так как эти теги встречались еще в схемах СКД, но там ошибок при сравнении не было, всё соответствовало типовой. И сколько то еще не хватало dcsset:itemsUserSettingID. Этот случай не относится к ошибкам программиста, потому что никакие режимы совместимости не трогались, вообще свойства конфигурации не смотрел даже - писал только формы(дорисовывал и перерисовывал обычные в УФ) и модули. После добавления этих тегов и загрузки в конфигурацию возникло около 100-150 ошибок мелких ошибок, исправляемых галками и объединением.
Условия: Платформа 8.3.13. 1926, x86, Клиент-Серверный режим. Бухгалтерия для Казахстана 2.0 обновляя до 3.0 (на тестовой базе, дописываю изменения с обычных форм на управляемые), первое время всё нормально, но спустя пару дней при сравнении изменений между типовой 2.0 и старой изм конф и типовой 3.0 с новой вижу огромное количество отличий, также как у топикстартера. Под спойлером простейший код для вноса этих данных. Сравнивается выгруженная в файлы типовая конфигурация и выгруженная измененная. Прежде чем пытаться вносить эти изменения следует убедиться что у вас абс та же проблема + делать только с пониманием что, где и как. Обязательны все возможные копии (базы, конфигурации, и даже выгруженной конфигурации в файлы)
Скрытый текст
Процедура КнопкаВыполнитьНажатие(Кнопка)
КаталогТиповой = "E:\Distr\3.0.33.4"; КаталогИзм = "E:\Distr\3.0.33.4.007";
мЧтение = Новый ЧтениеXML; ПостроительDOM = Новый ПостроительDOM; ЗаписьХМЛ = Новый ЗаписьXML; ЗаписьДОМ = Новый ЗаписьDOM();
ФайлыТиповой = НайтиФайлы(КаталогТиповой, "*.xml", Истина);
ФайлыИзм = НайтиФайлы(КаталогИзм, "*.xml", Истина);
мСоотвФайлов = Новый Соответствие;
Для каждого мФайл Из ФайлыТиповой Цикл
ОбработкаПрерыванияПользователя();
мСоотвФайлов.Вставить(Сред(мФайл.ПолноеИмя, СтрДлина(КаталогТиповой) + 2), Новый Структура("Типовой", мФайл))
КонецЦикла;
Для каждого мФайл Из ФайлыИзм Цикл
ОбработкаПрерыванияПользователя();
ОтнПуть = Сред(мФайл.ПолноеИмя, СтрДлина(КаталогИзм) + 2);
Если мСоотвФайлов.Получить(ОтнПуть) <> Неопределено Тогда
мСоотвФайлов.Получить(ОтнПуть).Вставить("Изм", мФайл)
//иначе //незачем
// //мСоотвФайлов.Вставить(ОтнПуть, Новый Структура("Изм", мФайл));
// //Сообщить("Не найден в типовой: " + ОтнПуть);
КонецЕсли;
КонецЦикла;
СЗ_Файлы = Новый СписокЗначений;
Для каждого КлючЗначение Из мСоотвФайлов Цикл
СЗ_Файлы.Добавить(КлючЗначение.Значение, КлючЗначение.Ключ);
КонецЦикла;
СЗ_Файлы.СортироватьПоПредставлению(); мСоотвФайлов = Неопределено;
КолИзмФайлов = 0;
Для каждого ЭлСписка Из СЗ_Файлы Цикл
ОбработкаПрерыванияПользователя();
Состояние(Лев(ЭлСписка.Представление, 16 + Найти(ЭлСписка.Представление, "\") - 1));
ПарыФайлов = ЭлСписка.Значение;
Если ПарыФайлов.Количество() < 2 Тогда
//Сообщить("Не найдена пара: " + КлючЗначение.Ключ); //тут могут выводиться новые объекты
Продолжить
КонецЕсли;
мЧтение.ОткрытьФайл(ПарыФайлов.Типовой.ПолноеИмя,,,"UTF-8");
Типовой = ПостроительDOM.Прочитать(мЧтение);
Если Типовой.ПервыйДочерний.ИмяУзла = "DataCompositionSchema" Тогда
Продолжить //схемы СКД пока пропускаем, там сложность с определением местонахождения узла
Конецесли;
мЧтение.ОткрытьФайл(ПарыФайлов.Изм.ПолноеИмя,,,"UTF-8");
ИЗМ = ПостроительDOM.Прочитать(мЧтение);
мЧтение.Закрыть();
ИзменитьДокумент = Ложь;
мСоотвЭлементов = Новый Соответствие;
Для каждого УзелТиповой Из Типовой.ПолучитьЭлементыПоИмени("dcsset:itemsViewMode") Цикл
мСоотвЭлементов.Вставить(УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел.ПолучитьАтрибут("name"),
Новый Структура("Узел1Типовой, ЭлементФормыТиповой", УзелТиповой, УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел))
КонецЦикла;
Для каждого УзелТиповой Из Типовой.ПолучитьЭлементыПоИмени("dcsset:itemsUserSettingID") Цикл
Если мСоотвЭлементов.Получить(УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел.ПолучитьАтрибут("name")) = Неопределено Тогда
мСоотвЭлементов.Вставить(УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел.ПолучитьАтрибут("name"),
Новый Структура("Узел2Типовой, ЭлементФормыТиповой", УзелТиповой, УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел))
иначе
мСоотвЭлементов.Получить(УзелТиповой.РодительскийУзел.РодительскийУзел.РодительскийУзел.ПолучитьАтрибут("name")).Вставить(
"Узел2Типовой", УзелТиповой)
КонецЕсли
КонецЦикла;
ДокументИзменен = Ложь;
Для каждого ЭлементФормы Из ИЗМ.ПолучитьЭлементыПоИмени("Attribute") Цикл
СтрПараметров = мСоотвЭлементов.Получить(ЭлементФормы.ПолучитьАтрибут("name"));
Если СтрПараметров <> Неопределено Тогда
СтрПараметров.Вставить("ЭлементФормыИзм", ЭлементФормы);
СтрПараметров.Вставить("ListSettings", ЭлементФормы.ПолучитьЭлементыПоИмени("ListSettings")[0]);
//ЭлементФормы.ПолучитьЭлементыПоИмени("ListSettings").Количество() <> 1
мУзлыИзм = ЭлементФормы.ПолучитьЭлементыПоИмени("dcsset:itemsViewMode");
Если мУзлыИзм.Количество() > 0 Тогда СтрПараметров.Вставить("Узел1Изм", мУзлыИзм[0]) КонецЕсли;
мУзлыИзм = ЭлементФормы.ПолучитьЭлементыПоИмени("dcsset:itemsUserSettingID");
Если мУзлыИзм.Количество() > 0 Тогда СтрПараметров.Вставить("Узел2Изм", мУзлыИзм[0]) КонецЕсли;
Если СтрПараметров.Свойство("Узел1Типовой") и (не СтрПараметров.Свойство("Узел1Изм") или СтрПараметров.Узел1Типовой.ТекстовоеСодержимое <> СтрПараметров.Узел1Изм.ТекстовоеСодержимое) Тогда
СтрПараметров.ListSettings.ДобавитьДочерний(СтрПараметров.Узел1Типовой.КлонироватьУзел(Истина));
ДокументИзменен = Истина;
КонецЕсли;
Если СтрПараметров.Свойство("Узел2Типовой") и (не СтрПараметров.Свойство("Узел2Изм") или СтрПараметров.Узел2Типовой.ТекстовоеСодержимое <> СтрПараметров.Узел2Изм.ТекстовоеСодержимое) Тогда
СтрПараметров.ListSettings.ДобавитьДочерний(СтрПараметров.Узел2Типовой.КлонироватьУзел(Истина));
ДокументИзменен = Истина;
КонецЕсли;
КонецЕсли;
Если ДокументИзменен Тогда
КолИзмФайлов = КолИзмФайлов + 1;
Сообщить(ПарыФайлов.Изм.ПолноеИмя);
ЗаписьХМЛ.ОткрытьФайл(ПарыФайлов.Изм.ПолноеИмя);
ЗаписьДОМ.Записать(ИЗМ, ЗаписьХМЛ);
ЗаписьХМЛ.Закрыть();
КонецЕсли;
КонецЦикла;
КонецЦикла;
Сообщить("КолИзмФайлов = " + Строка(КолИзмФайлов))
КонецПроцедуры
Показать
Что еще пошло не так после исправления xml файлов форм: слетело соответствие многих картинок конфигурации, 2 шрифта в формах, галки включать в справочную информацию, несколько объектов со сбитыми HTML-макетами справочной информации, правка текста макета не помогает. Решено было отслеживанием списка таких объектов и объединением этих объектов с типовой. Почти все объекты исправились. Остальное ручками.
p.s. Наша Типовая выгруженная в файлы и загружаемая обратно дает ошибку "Колонки не могут быть добавлены к резвизиту" - не моя опечатка, скопировано из 1С.