|
v7: Работа с периодическими реквизитами | ☑ | ||
---|---|---|---|---|
0
BORG
15.08.11
✎
13:45
|
Подскажите плз как решить проблему которая возникла при работе с период. реквизитом справочника или может это какие то баги самой 1с:
Задача была следующая: Есть справочник товаров, в нем есть периодический реквизит "СрМесПрод", в который надо записать данные по среднемесячной продаже товара, наличию на складе товара и реализации этого товара за каждый месяц из 12 предыдущих. Данные выбираются из регистров. Записывать данные решили так: на 1 число месяца - записывается значение средн.мес. продаж, на 2 число -наличие на складе, на 3 число - реализация. Так вот после того как данные были выбраны и помещены в таблицу делаем обычный цикл в котором записываем данные по товару в период реквизит, изначально происходит удаление всех записей в период реквизите, и потом по месячно заново записываем, так вот проблема в том что по некоторым товарам запись в периодически реквизит происходит а по некоторым когда потом смотришь значения период реквизита там пусто, хотя по отладчике видно что значения установлены и после это элемент справочника записан. Вот код участка где данные из таблицы записываются в период реквизит: я понимаю что очень много всего написал и мало кому хочется в этом разбираться но если вдруг кто откликнется и поможет то буду очень признателен, ибо сам уже замучался искать в чем проблема и ошибка: ТаблИтог.ВыбратьСтроки(); Пока ТаблИтог.ПолучитьСтроку() = 1 Цикл Если ТекТовар <> ТаблИтог.Товар Тогда НовТовар = 1; ДатНач = ДатаНачРасч; //дата начала выборки результатов обычно -12 месяц от текущей даты ТекТовар = ТаблИтог.Товар; Иначе НовТовар = 0; КонецЕсли; Если СпрТов.НайтиЭлемент(ТаблИтог.Товар) = 1 Тогда Ист.ИспользоватьОбъект("СрМесПрод", ТаблИтог.Товар); Если НовТовар = 1 Тогда //Чистим справочник товара СрМесТов Ист.ВыбратьЗначения(,ТекущаяДата()); Пока Ист.ПолучитьЗначение() = 1 Цикл Попытка Ист.Удалить(); Состояние("==Удаление для товара "+ТекТовар); Исключение Сообщить("=====При удалении значения для товара "+ТекТовар+" произошла ошибка.Значение не удалено !!!"); КонецПопытки; КонецЦикла; КонецЕсли; СрМесТов = ?(ТаблИтог.Вкл > 0,Окр(ТаблИтог.Реализация / ТаблИтог.Вкл,2),0); Если ДатаГод(ДатНач) = ТаблИтог.Год Тогда ДатЗап1 = ДобавитьМесяц(НачМесяца(ДатНач),ТаблИтог.Месяц-ДатаМесяц(ДатНач)); Иначе ДатНач = НачГода(ДобавитьМесяц(ДатНач,12)); ДатЗап1 = ДобавитьМесяц(НачМесяца(ДатНач),ТаблИтог.Месяц-ДатаМесяц(ДатНач)); КонецЕсли; ДатЗап = НачМесяца(ДатЗап1+5); //Для корректировки определения начала месяца из за багов 1С по функции "ДобавитьМесяц" Если ДатЗап = НачМесяца(ДатаРасч) Тогда Продолжить; КонецЕсли; СпрТов.СрМесПрод.Установить(ДатЗап,СрМесТов); СпрТов.СрМесПрод.Установить(ДатЗап+1,ТаблИтог.Вкл); СпрТов.СрМесПрод.Установить(ДатЗап+2,ТаблИтог.Реализация); //СпрТов.СрМесПрод.Установить(ДатЗап+3,ТаблИтог.Остаток); //СпрТов.СрМесПрод.Установить(ДатЗап+4,ТаблИтог.Резерв); //Сообщить("На дату = "+ДатЗап+ " Значение = "+СрМесТов+" Товар "+ТаблИтог.Товар+" Месяц "+ТаблИтог.Месяц+ " Вкл "+ТаблИтог.Вкл); Состояние("== На дату = "+ДатЗап+ " Значение = "+СрМесТов+" Товар "+ТаблИтог.Товар+" Месяц "+ТаблИтог.Месяц+ " Вкл "+ТаблИтог.Вкл+" Реал "+ТаблИтог.Реализация); КолЗап = КолЗап + 1; //Если (ТаблИтог.Месяц = 12) ИЛИ (ТаблИтог.Месяц < ДатаМесяц(ДатНач)) Тогда // ДатНач = НачГода(ДобавитьМесяц(ДатНач,12)); //КонецЕсли; Попытка СпрТов.Записать(); Исключение Сообщить("=====При записи значения для товара "+ТаблИтог.Товар+" произошла ошибка !!!"); КонецПопытки; Иначе Сообщить("==Не найден элемент справочника "+ТаблИтог.Товар); КонецЕсли; КонецЦикла; КонецЕсли; |
|||
1
mikecool
15.08.11
✎
13:47
|
так вот проблема в том что по некоторым товарам запись в периодически реквизит происходит а по некоторым когда потом смотришь значения период реквизита там пусто, хотя по отладчике видно что значения установлены и после это элемент справочника записан.
какие то чудеса, а чудес не бывает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |