Имя: Пароль:
1C
1С v8
Не получаются значения из временного хранилища
0 ks-815
 
24.05.16
13:09
Добрый день всем!
Я не очень в УФ, подскажите, пожалуйста такую задачу как решить:

Есть документ с ТЧ Товары. ОНИ хотят, чтобы при изменении количества какого-либо товара все изменения записывались и потом в отчёт выводились сколько раз и на какое количество менялся товар.

Я подумала,что можно при открытии формы документа запоминать во временное хранилище ТЧ товары, а его адрес - в реквизит формы. А потом при перепроведении сравнивать старую и новую ТЧ.

Процедура ПриОткрытии(Отказ)
    АдресСтарТЧ = ЗапомнитьТЧ();
КонецПроцедуры

&НаСервере
Функция ЗапомнитьТЧ()
ПоместитьВоВременноеХранилище(Объект.СтроительнаяСпецификация.Выгрузить(,"СтроительнаяНоменклатура,Количество"), Новый УникальныйИдентификатор());
Возврат УникальныйИдентификатор;
КонецФункции


&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    Адрес = Строка(АдресСтарТЧ);
    ТЗ = ПолучитьИзВременногоХранилища(Адрес);
КонецПроцедуры

Вообщем выходит ошибка:
Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    ТЗ = ПолучитьИзВременногоХранилища(Адрес);
по причине:Ошибка получения значения из временного хранилища
1 ks-815
 
24.05.16
13:14
Я уже думала от безысходности создать реквизит объекта и в него записывать старую ТЧ. Но как-то не хочется такое делать.
2 LordCMEPTb
 
24.05.16
13:14

&НаСервере
Функция ЗапомнитьТЧ()
ПоместитьВоВременноеХранилище(Объект.СтроительнаяСпецификация.Выгрузить(,"СтроительнаяНоменклатура,Количество"), Новый УникальныйИдентификатор());
Возврат УникальныйИдентификатор;
КонецФункции

Ну поместилось во временное хранилище значение на долгое хранение (минут 20), ну вернула функция уникальный идентификатор формы. По этому идентификатору значение не достать. Тут скорее надо возвращать полученный адрес:

&НаСервере
Функция ЗапомнитьТЧ()
АдресВХранилище = ПоместитьВоВременноеХранилище(Объект.СтроительнаяСпецификация.Выгрузить(,"СтроительнаяНоменклатура,Количество"), УникальныйИдентификатор);
Возврат АдресВХранилище;
КонецФункции
3 Cyberhawk
 
24.05.16
13:15
Что-то "потом в отчёт" и "при перепроведении сравнивать" не вяжется...
4 Лефмихалыч
 
24.05.16
13:15
(0) так надо при изменении количества записывать или при записи документа?
5 Serg_1960
 
24.05.16
13:18
Эпитафия на могиле программиста: "Они хотели." :)

(0) Включите версионирование документа (если оно есть в Вашей конфигурации).
6 ks-815
 
24.05.16
13:18
(4) при записи документа записывать, если количество менялось. ну это я в регистр буду записывать. мне сначала надо сравнить таблицы,чтоб понять, менялось или нет.
7 Новиков
 
24.05.16
13:20
Из справки:
ПоместитьВоВременноеХранилище  - Возвращаемое значение:
Тип: Строка.
Адрес во временном хранилище.

У мадмуазели:
Возврат УникальныйИдентификатор;

???
8 Serg_1960
 
24.05.16
13:20
+(5) И свой отчет (или внешнюю печатную форму документа) по регистру ВерсииОбъектов.
9 singlych
 
24.05.16
13:22
ТЧ в состоянии на момент открытия формы можно получить по ссылке в модуле документа в ПередЗаписью и передать в обработку проведения через ДополнительныеСвойства.
10 ks-815
 
24.05.16
13:42
Попробую в модуль объекта написать:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если НЕ ЭтоНовый() Тогда
// сравню Ссылку и ЭтотОбъект
...
11 FIXXXL
 
24.05.16
13:42
(6) сравни передЗаписью в ДокОбъект и в ДокСсылка
12 sitex
 
naïve
24.05.16
13:48
(6) Через год будете писать как почистить самолично созданный регистр версионирования , а того что база распухнет.
13 ks-815
 
24.05.16
13:56
(12) дак версионирование будет больше съедать места, чем мой маленький регистрик. Еще вдруг и затормозит всё из-за него..
14 sitex
 
naïve
24.05.16
14:00
(13) Смотря как "ОНИ" вашу тему потом разовьют и попросят по натыкать это куда попало, и этот маленький регистрик разовьется в большой - проходили уже, и не раз. Хотелки начинаются с малого.
15 Лефмихалыч
 
24.05.16
14:37
(6) в передЗаписью прочитай запросом табличную часть из БД и сравни с той, что в ЭтотОбъект.ТвояТабличнаяЧасть. Это можно даже одним запросом.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший