Имя: Пароль:
1C
1С v8
Не сохраняются данные в регистре накопления
0 Pro-specs
 
27.09.12
11:29
Суть в чем...Создал обработку:
Перем нСтруктураПараметров;
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

// Передает внешние параметры в форму в виде структуры
//
// Параметры:
// Объект — ДокументОбъект, СправочникОбъект. От куда был произведен вызов процедуры заполнения внешней обработки.
// ИмяТабличнойЧасти — Строка. Имя табличной части, для которой вызвана обработка.
// ТабличноеПолеОбъекта — Элемент формы: табличное поле. Табличное поле формы, для которого вызвана обработка.
//
Процедура ЗапомнитьСтруктуруПараметров(Объект, Товары, ТабличноеПоле) Экспорт
   
   // Заполнение параметров на основе внешних параметров поступивших при инициализации обработки
   нСтруктураПараметров = Новый Структура();
   нСтруктураПараметров.Вставить("Объект", Объект);
   нСтруктураПараметров.Вставить("Товары", Товары);
   нСтруктураПараметров.Вставить("ТабличноеПоле", ТабличноеПоле);
   
КонецПроцедуры // ЗапомнитьСтруктуруПараметров()


Процедура КнопкаВыполнитьНажатие(Кнопка)
   ДокументОбъект = нСтруктураПараметров.Объект;
   Если ТЧ.Количество()>0 тогда
       НаборЗаписейИсполнители = РегистрыНакопления.РаботаИсполнителей1.СоздатьНаборЗаписей();
       Для сч=0 по ТЧ.Количество()-1 Цикл
           НаборЗаписейИсполнители.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
           ЗаписьИсполнитель = НаборЗаписейИсполнители.Добавить();
           ЗаписьИсполнитель.Исполнитель3  = ТЧ.Получить(сч).Исполнитель3;
           ЗаписьИсполнитель.Период = ДокументОбъект.Дата;
           ЗаписьИсполнитель.Регистратор  = ДокументОбъект.Ссылка;
           ЗаписьИсполнитель.Номенклатура = ТЧ.Получить(сч).Товар;
           ЗаписьИсполнитель.Цена = ТЧ.Получить(сч).Цена;
           ЗаписьИсполнитель.Количество = ТЧ.Получить(сч).Количество;
           ЗаписьИсполнитель.ВидДвижения = ВидДвиженияНакопления.Приход;
       КонецЦикла;
       НаборЗаписейИсполнители.Записать(Ложь);
   КонецЕсли;
КонецПроцедуры

                       
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   ДокументОбъект = нСтруктураПараметров.Объект;
   //проверить есть ли записи для этого регистратора
   //регистрацияАТ
   //услуги
   ТЧТовары = ДокументОбъект.Товары.Выгрузить();
   ТЧТовары.Свернуть("Номенклатура,Цена","Количество");
   ТЧТовары.Колонки.Добавить("Исполнитель3");
   ЗП = Новый Запрос;
   ЗП.Текст = "ВЫБРАТЬ
   |    РаботаИсполнителей1.Номенклатура,
   |    РаботаИсполнителей1.Исполнитель3
   //|    РаботаИсполнителей.исполнитель2,
   
   |ИЗ
   |     РегистрНакопления.РаботаИсполнителей1 КАК РаботаИсполнителей1
   |ГДЕ
   |    РаботаИсполнителей1.регистратор  = &Регистратор
   |";

   ЗП.УстановитьПараметр("Регистратор",ДокументОбъект.Ссылка);
   Таб = ЗП.Выполнить().Выгрузить();
   Для Каждого стр из Таб цикл
       
       Для Каждого зн из ТЧТовары Цикл
           Если стр.Номенклатура = зн.Номенклатура тогда
               зн.Исполнитель3 = стр.Исполнитель3
               
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
   Если ТЧТовары.Количество() > 0 тогда
       Для Каждого стр из ТЧТовары Цикл
           нс = ТЧ.Добавить();
           нс.Товар = стр.Номенклатура;
           нс.Количество = стр.Количество;
           нс.Цена = стр.Цена;
           нс.Исполнитель3 = стр.Исполнитель3;
           //нс.исполнитель4 = стр.исполнитель4;
       КонецЦикла;
   КонецЕсли;

   
КонецПроцедуры

прицепил её к документу "Заказ покупателя" к табличной части "Товары".
При вызове её туда копируются товары, цена, кол-во и выбирается Исполнитель3...После нажатия кнопки выполнить данные сохраняются...Но при проведении документа "Заказ покупателя" данные из регистра стираются...ПОМОГИТЕ!!!
1 DrShad
 
27.09.12
11:32
все верно они и будут затираться - учи СП в части наборов записей
2 Ненавижу 1С
 
гуру
27.09.12
11:32
(0) логично
3 Pro-specs
 
27.09.12
11:36
где ошибка((
4 DrShad
 
27.09.12
11:37
в ДНК
5 trambalda
 
27.09.12
11:38
Ты это, прочитывать набор записей забываешь, он у тебя перезаписывается каждый раз.
И регистратор.установить из цикла вынеси
6 Buster007
 
27.09.12
11:38
Для Каждого стр из Таб цикл
       
       Для Каждого зн из ТЧТовары Цикл
           Если стр.Номенклатура = зн.Номенклатура тогда

Чтоб тебе одну процедуру в которой 3000+ строк с такими наименования переменных отлаживать.
Может тогда ты поймешь, что такой код надо выкидывать.

И книжку почитай.
7 Ненавижу 1С
 
гуру
27.09.12
11:39
документ должен делать движения, а не обработка
8 Pro-specs
 
27.09.12
11:42
Спасибо!))
9 DrShad
 
27.09.12
11:43
да ничего - приходи еще
10 Pro-specs
 
27.09.12
14:02
пришел не помогает