Вход | Регистрация
 

Хеш табличного документа - разные для одинаковые докумета

Хеш табличного документа - разные для одинаковые докумета
Я
   RomaH
 
07.02.20 - 12:59
БСП
Общая форма "ПечатьДокументов"

При открытии
    ТабличныеДокументы = ТабличныеДокументыДляПечати();    

и считаю хеш для ТД

далее по кнопке "Печать"
делаю тоже самое

- хеш разный


&НаСервере
Функция ТабличныеДокументыДляПечати()
    ТабличныеДокументы = Новый СписокЗначений;
    
    Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл
        Если Элементы[НастройкаПечатнойФормы.ИмяРеквизита].Вывод = ИспользованиеВывода.Разрешить И НастройкаПечатнойФормы.Печатать Тогда
            ПечатнаяФорма = ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита];
            ТабличныйДокумент = Новый ТабличныйДокумент;
            ТабличныйДокумент.Вывести(ПечатнаяФорма);
            Если Ложь Тогда//Лобанов
            ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма, УправлениеПечатью.КопируемыеСвойстваТабличногоДокумента());
            Иначе
                УправлениеПечатьюПереопределяемый.СкопироватьТабличныйДокумент(ТабличныйДокумент,ПечатнаяФорма);
            КонецЕсли;//Лобанов
            
            ТабличныйДокумент.КоличествоЭкземпляров = НастройкаПечатнойФормы.Количество;
            ТабличныеДокументы.Добавить(ТабличныйДокумент, НастройкаПечатнойФормы.Представление);
        КонецЕсли;
    КонецЦикла;
    
    Возврат ТабличныеДокументы;
КонецФункции

т.е. табличный документ считывается с реквизита формы и записывается в Новый ТД - подозреваю что именно тут и порылась собака? у нового ТД всегда будет другой хэш?
   Ёпрст
 
1 - 07.02.20 - 13:02
(0)Да, тов. Лобанов.. объект же новый
   RomaH
 
2 - 07.02.20 - 13:04
(1) нихрена - проверил - два раза повторил алгоритм при открытии - хэш одинаковый

где-то что-то меняется между открытием и "печать"
   ДенисЧ
 
3 - 07.02.20 - 13:15
(2) Ну так сравни.... В чём проблема-то?
   RomaH
 
4 - 07.02.20 - 13:16
ха..
При открытии так:

Все на сервере
а при печати
ТабличныеДокументы = ТабличныеДокументыДляПечати();    - это на клиенте (получаю коллекцию с сервера)
потом коллекция передается на сервер 

и вот тут что-то ломается

если коллекцию не передавать, а снова получить на сервере - то все ок
   RomaH
 
5 - 07.02.20 - 13:17
т.е. вот так - хэш одинаковый

&НаСервере
Процедура ЗаписатьИзмененныеФормы(ИмяКомпьютера,ТекущийПользователь)
    
    ТабличныеДокументы = ТабличныеДокументыДляПечати();
    
    Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
        
        ИмяОбласти = ОбъектПечати.Представление;
        
        Для Каждого ЭлементСпискаТД Из ТабличныеДокументы Цикл
            
            ПечатнаяФорма = ЭлементСпискаТД.Значение;
            
            Область = ПечатнаяФорма.Области.Найти(ИмяОбласти);
            
            Если Область = Неопределено Тогда
                Продолжить;
            КонецЕсли;
            
            Запись = РегистрыСведений.ОтредактированныеПечатныеФормы.СоздатьМенеджерЗаписи();
            
            Запись.ОбъектПечати = ОбъектПечати.Значение;
            Запись.ИмяПечатнойФормы = ЭлементСпискаТД.Представление;
            
            Запись.Прочитать();
            
            Если Не Запись.Выбран() Тогда
                Продолжить;
            КонецЕсли;
            
            ПотокФайла = Новый ПотокВПамяти();
            ЭлементСпискаТД.Значение.Записать(ПотокФайла);
            ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
            
            ХЕШ = Новый ХешированиеДанных(ХешФункция.CRC32);
            ХЕШ.Добавить(ДвоичныеДанныеФайла);
            
            Если Запись.ХЭШИсходного = ХЕШ.ХешСумма Тогда
                Продолжить;
            КонецЕсли;
            
            Запись.ХЭШИзмененного = ХЕШ.ХешСумма;
            Запись.Компьютер = ИмяКомпьютера;
            Запись.Пользователь = ТекущийПользователь;
            
            Запись.ИзмененнаяФорма = Новый ХранилищеЗначения(ЭлементСпискаТД.Значение);
            
            Запись.Записать(Истина);
            
        КонецЦикла;
        
    КонецЦикла;
    
КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)
    
    ТабличныеДокументы = ТабличныеДокументыДляПечати();
    
    //Лобанов

    Если БылоРедактирование Тогда
        //ЗаписатьИзмененныеФормы(ТабличныеДокументы,ИмяКомпьютера(),ПользователиКлиентСервер.ТекущийПользователь());

        ЗаписатьИзмененныеФормы(ИмяКомпьютера(),ПользователиКлиентСервер.ТекущийПользователь());
    КонецЕсли;
   fisher
 
6 - 07.02.20 - 13:21
Попробуй хэшировать выгрузку табдока в HTML, скажем. В крайнем случае сможешь увидеть, чего там меняется.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.