|
Хеш табличного документа - разные для одинаковые докумета | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
07.02.20
✎
12:59
|
БСП
Общая форма "ПечатьДокументов" При открытии ТабличныеДокументы = ТабличныеДокументыДляПечати(); и считаю хеш для ТД далее по кнопке "Печать" делаю тоже самое - хеш разный &НаСервере Функция ТабличныеДокументыДляПечати() ТабличныеДокументы = Новый СписокЗначений; Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл Если Элементы[НастройкаПечатнойФормы.ИмяРеквизита].Вывод = ИспользованиеВывода.Разрешить И НастройкаПечатнойФормы.Печатать Тогда ПечатнаяФорма = ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита]; ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.Вывести(ПечатнаяФорма); Если Ложь Тогда//Лобанов ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма, УправлениеПечатью.КопируемыеСвойстваТабличногоДокумента()); Иначе УправлениеПечатьюПереопределяемый.СкопироватьТабличныйДокумент(ТабличныйДокумент,ПечатнаяФорма); КонецЕсли;//Лобанов ТабличныйДокумент.КоличествоЭкземпляров = НастройкаПечатнойФормы.Количество; ТабличныеДокументы.Добавить(ТабличныйДокумент, НастройкаПечатнойФормы.Представление); КонецЕсли; КонецЦикла; Возврат ТабличныеДокументы; КонецФункции т.е. табличный документ считывается с реквизита формы и записывается в Новый ТД - подозреваю что именно тут и порылась собака? у нового ТД всегда будет другой хэш? |
|||
1
Ёпрст
07.02.20
✎
13:02
|
(0)Да, тов. Лобанов.. объект же новый
|
|||
2
RomaH
naïve
07.02.20
✎
13:04
|
(1) нихрена - проверил - два раза повторил алгоритм при открытии - хэш одинаковый
где-то что-то меняется между открытием и "печать" |
|||
3
ДенисЧ
07.02.20
✎
13:15
|
(2) Ну так сравни.... В чём проблема-то?
|
|||
4
RomaH
naïve
07.02.20
✎
13:16
|
ха..
При открытии так: Все на сервере а при печати ТабличныеДокументы = ТабличныеДокументыДляПечати(); - это на клиенте (получаю коллекцию с сервера) потом коллекция передается на сервер и вот тут что-то ломается если коллекцию не передавать, а снова получить на сервере - то все ок |
|||
5
RomaH
naïve
07.02.20
✎
13:17
|
т.е. вот так - хэш одинаковый
&НаСервере Процедура ЗаписатьИзмененныеФормы(ИмяКомпьютера,ТекущийПользователь) ТабличныеДокументы = ТабличныеДокументыДляПечати(); Для Каждого ОбъектПечати Из ОбъектыПечати Цикл ИмяОбласти = ОбъектПечати.Представление; Для Каждого ЭлементСпискаТД Из ТабличныеДокументы Цикл ПечатнаяФорма = ЭлементСпискаТД.Значение; Область = ПечатнаяФорма.Области.Найти(ИмяОбласти); Если Область = Неопределено Тогда Продолжить; КонецЕсли; Запись = РегистрыСведений.ОтредактированныеПечатныеФормы.СоздатьМенеджерЗаписи(); Запись.ОбъектПечати = ОбъектПечати.Значение; Запись.ИмяПечатнойФормы = ЭлементСпискаТД.Представление; Запись.Прочитать(); Если Не Запись.Выбран() Тогда Продолжить; КонецЕсли; ПотокФайла = Новый ПотокВПамяти(); ЭлементСпискаТД.Значение.Записать(ПотокФайла); ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные(); ХЕШ = Новый ХешированиеДанных(ХешФункция.CRC32); ХЕШ.Добавить(ДвоичныеДанныеФайла); Если Запись.ХЭШИсходного = ХЕШ.ХешСумма Тогда Продолжить; КонецЕсли; Запись.ХЭШИзмененного = ХЕШ.ХешСумма; Запись.Компьютер = ИмяКомпьютера; Запись.Пользователь = ТекущийПользователь; Запись.ИзмененнаяФорма = Новый ХранилищеЗначения(ЭлементСпискаТД.Значение); Запись.Записать(Истина); КонецЦикла; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Печать(Команда) ТабличныеДокументы = ТабличныеДокументыДляПечати(); //Лобанов Если БылоРедактирование Тогда //ЗаписатьИзмененныеФормы(ТабличныеДокументы,ИмяКомпьютера(),ПользователиКлиентСервер.ТекущийПользователь()); ЗаписатьИзмененныеФормы(ИмяКомпьютера(),ПользователиКлиентСервер.ТекущийПользователь()); КонецЕсли; |
|||
6
fisher
07.02.20
✎
13:21
|
Попробуй хэшировать выгрузку табдока в HTML, скажем. В крайнем случае сможешь увидеть, чего там меняется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |