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

Допустим, вам необходимо изменить элементы справочника Характеристика номенклатуры. Их очень много, вы их отбираете каким-нибудь запросом в консоли:

ВЫБРАТЬ
                ЦеныНоменклатурыСрезПоследних.Характеристика,
                ЦеныНоменклатурыСрезПоследних.Цена,
                ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК ЦенаКакСвойство
ИЗ
                РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Видцены) КАК ЦеныНоменклатурыСрезПоследних
                               ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
                               ПО ЦеныНоменклатурыСрезПоследних.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
                                               И (ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство)
ГДЕ
                ЦеныНоменклатурыСрезПоследних.Цена = (ВЫРАЗИТЬ(ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК ЧИСЛО(15, 2)))

 

И пишете обработку, которая по этому запросу поменяет значения реквизитов в этих элементах. Как обеспечить откат в случае ошибки обработки?

Очень просто. В консоли запросов вы (предварительно!) сохраняете таблицу результата в формате mxl:

Бакуп 1

И спокойно выполняете свою обработку изменив и перезаписав 100500 характеристик номенклатуры.

Внезапно вы выясняете что изменили неправильно. Что делать?

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

ТоСамоеСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Старая цена (хар.)",ложь);
                ТабДок = Новый ТабличныйДокумент;
                ТабДок.Прочитать("C:\ бакуп.mxl");
                Для  ш = 2 по 2354 цикл
                               Область = табдок.Область(ш,1,ш,1);
                               сообщить(область.Расшифровка);
                               сообщить(ТипЗнч(область.Расшифровка));//убеждаемся, что там действительно ссылки
                               Цена = Число(стрзаменить(табдок.Область(ш,2,ш,2).Текст," ",""));
                               Сообщить(Цена);
                               Об = Область.Расшифровка.ПолучитьОбъект();
                               Для каждого о из об.ДополнительныеРеквизиты Цикл
                                               Если о.Свойство = ТоСамоеСвойство Тогда
                                                               о.Значение = Число(Цена);
                                                               Прервать;
                                               КонецЕсли;
                               КонецЦикла;
                               Об.записать();
                Конеццикла;

 

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

Да хранит вас Нуралиев!

Примеры наших работ

ООО "ТОП СМАРТ" Производство электромонтажных работ

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

Функции:

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

ООО "СТК" Сибирская техническая компания

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

ООО "ЖБИ Сибири" 100% комплектация любого строительного объекта

Разработка блока запросов для учета КТУ персонала

ООО “Вселенная текстиля” Ивановский текстиль

  1. Переход на 1С: Комплексная автоматизация 2.4
  2. Переход с УТ 10 на УТ 11. С полным переносом разработок. Обучение, настройка учета.
  3. Разработка блоков для учета продажи и хранения товара на складах в 1с:УТ 11.

ООО "СВАРЩИЦА ЕКАТЕРИНА" Кофе с огоньком

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

ООО "СЕРВИССНАБ" Сырьевая компания

Внедрение подсистемы для учета молока в компании-посреднике между фермером и крупным заводом. Поступление молока производится с перерасчетом по учетному весу (для пересчета используются показатели жирности, плотности, белка). Для 1С:Бухгалтерии (тестирование на 3.0.135.22).

ООО "ВКУСНАЯ ЖИЗНЬ" Качественные мясопродукты для каждого

  1. Перенос данных учета из УПП в специализированные базы учета (ЗУП, БП, ЕРП).
  2. Настройка дальнейшей синхронизации.

ООО "КЛУБ 7 ВЕРШИН" Восхождения с супер-гидами

  1. Интеграция с сайтом - загрузка туров, контрагентов и оплат.
  2. Выгрузка оплат и комиссий на сайт.
  3. Отчеты расчетов с контрагентами, поставщиками, сводная ведомость в двух валютах.
  4. Перенос данных с тис 7.7.

ООО "1+1" Аутсорсинг для малого бизнеса

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

Напишите нам

Наши специалисты свяжутся с вами и ответят на все вопросы