Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запись в регистр сведений программно

Запись в регистр сведений программно
Я
   НатГолубева777
 
23.03.20 - 13:41
При отладчике "Если Выборка.Ссылка=НайденнаяСсылка Тогда" При истине попадает в "НоваяЗаписьПрайс.Номенклатура = Выборка.Ссылка;".  Посмотрите ПОЖАЛУЙСТА что не так при записи регистра накопления.
Процедура КнопкаВыполнитьНажатие(Элемент)
Путь= Константы.ПутьДоФайлов.Получить()+"\";
    Док=ПолучитьCOMОбъект(Путь+"GS.xls");
    
    Номенклатура=Док.Sheets(1).Cells(2,8).Value;
    счСтроки=2;
    
    
           Пока СокрЛП(Номенклатура) <> "" Цикл
            Номенклатура=Док.Sheets(1).Cells(СчСтроки,8).Value;
            ШК=Док.Sheets(1).Cells(СчСтроки,2).Value ;
            Сообщить(Строка(Номенклатура)+"-"+Строка(ШК));
            счСтроки=счСтроки+1;
            СтрокаНаименования = Номенклатура;
            Ном = Справочники.Номенклатура;
            НайденнаяСсылка = Ном.НайтиПоНаименованию(СтрокаНаименования);
            Если НайденнаяСсылка = Ном.ПустаяСсылка() Тогда
              Сообщить("еще нет");
            КонецЕсли;
                    Запрос = Новый Запрос;
                    Запрос.Текст=
                    "ВЫБРАТЬ
                    |    Прайс.Номенклатура.Ссылка КАК Ссылка2
                    |ИЗ
                    |    РегистрСведений.Прайс КАК Прайс
                    |ГДЕ
                    |    Прайс.Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка2)";
                    Запрос.УстановитьПараметр("Ссылка2", НайденнаяСсылка);
                    Результат = Запрос.Выполнить();
                    ВыборкаДетальныеЗаписи=Результат.Выбрать();
                             Если Результат.Пустой() Тогда
                             Запрос = Новый Запрос;
                             Запрос.Текст=
                                      "ВЫБРАТЬ
                                      |    Номенклатура.Ссылка КАК Ссылка,
                                      |    Номенклатура.Наименование КАК Наименование
                                      |ИЗ
                                      |    Справочник.Номенклатура КАК Номенклатура";
                        //Запрос.УстановитьПараметр("Ссылка3", Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура));
                        Результат = Запрос.Выполнить();
                        Выборка=Результат.Выбрать();
                        Пока Выборка.Следующий() Цикл
                            //Прайс.Отбор.Номенклатура.Установить(Номенклатура);
                            Если Выборка.Ссылка=НайденнаяСсылка Тогда
                                 Сообщить("есть");
                                 Прайс = РегистрыСведений.Прайс.СоздатьНаборЗаписей();
                                 НоваяЗаписьПрайс = Прайс.Добавить();
                                 НоваяЗаписьПрайс.Номенклатура = Выборка.Ссылка;
                                 Прайс.Записать()
                            КонецЕсли;    
                        КонецЦикла;
                    КонецЕсли;
                
            
        КонецЦикла;

    
    Док.Application.Quit();    
КонецПроцедуры
   mikecool
 
1 - 23.03.20 - 13:42
наверное, все не так
   mikecool
 
2 - 23.03.20 - 13:42
смотря что тебе нужно получить
   НатГолубева777
 
3 - 23.03.20 - 13:45
Надо чтобы отразилось в регистре накоплении Прайс.  
НоваяЗаписьПрайс.Номенклатура = Выборка.Ссылка;-в отладчике нормально все как должно.   Но в пользовательском регистре они неотобразились.
   НатГолубева777
 
4 - 23.03.20 - 13:45
регистр сведений не накоплений
   Случайный прохожий
 
5 - 23.03.20 - 13:46
Добавить одну запись? Используй СоздатьМенеджерЗаписи()
   НатГолубева777
 
6 - 23.03.20 - 13:46
Если Выборка.Ссылка=НайденнаяСсылка Тогда
                                 Сообщить("есть");
                                 Прайс = РегистрыСведений.Прайс.СоздатьНаборЗаписей();
                                 НоваяЗаписьПрайс = Прайс.Добавить();
                                 НоваяЗаписьПрайс.Номенклатура = Выборка.Ссылка;
                                 Прайс.Записать()
   КонецЕсли;    

????????
   hhhh
 
7 - 23.03.20 - 13:47
(6) отбора нет в регистре. А если пишем без отбора, то регистр полностью очищается. У вас должна быть одна строчка в регистре.
   НатГолубева777
 
8 - 23.03.20 - 13:48
одна да попадает но не то что надо
   butterbean
 
9 - 23.03.20 - 13:49
(5) не понимаю людей, которые пользуются для программной записи менеджером вместо набора. Даже в СП написано, что менеджер "...Предназначен для интерактивной работы с записью регистра сведений.... "
   Случайный прохожий
 
10 - 23.03.20 - 13:50
(9) А как иначе? У него получается набор записей без отбора
   butterbean
 
11 - 23.03.20 - 13:50
(10) надо отбор значит установить
   Случайный прохожий
 
12 - 23.03.20 - 13:52
(11) Он привел всего одно измерение, по которому нельзя установить отбор. В текущем контексте постановки эта задача через набор записей не решается.
   НатГолубева777
 
13 - 23.03.20 - 14:02
Если Выборка.Ссылка=НайденнаяСсылка Тогда
                                 Сообщить("есть");
                                 МенеджерЗаписиПрайс=РегистрыСведений.Прайс;
                                 МенеджерЗаписи=МенеджерЗаписиПрайс.СоздатьМенеджерЗаписи();
                                 МенеджерЗаписи.Номенклатура=Выборка.Ссылка;
                                 МенеджерЗаписи.Записать();
                                
                            КонецЕсли;


Исправила на Менеджер записи... Час добавляет почему то 1 строку регистра добавляет не то что надо а потом идет нормальная запись.   Почему так?
   НатГолубева777
 
14 - 23.03.20 - 14:17
Час нормально добавляет

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