Имя: Пароль:
1C
1С v8
Регистр сведений, независимы, как установить владельца?
0 bizon2014
 
04.07.14
14:51
Регистр сведений, независимы, как установить владельца? Такой код
НоваяЗапись=рсШтрихкоды.Добавить();
НоваяЗапись.Активность=Истина;
НоваяЗапись.Владелец=ТекТовар;
НоваяЗапись.Штрихкод=Товар.Штрихкод;
НоваяЗапись.ТипШтрихкода = ПредопределенноеЗначение("ПланВидовХарактеристик.ТипыШтрихкодов.EAN13");

Запись проходит, владельца нет.
1 Господин ПЖ
 
04.07.14
14:52
ТекТовар не подходит по типу
2 Wobland
 
04.07.14
14:53
что, даже Записать() не помогает?
3 bizon2014
 
04.07.14
14:54
(1) Дык справочник товара.
(2) Оно записывается, но владелец пустой.
4 bizon2014
 
04.07.14
14:55
Тип
СправочникСсылка.ИнформационныеКарты, СправочникСсылка.Номенклатура, СправочникСсылка.СерийныеНомера
5 Крошка Ру
 
04.07.14
14:55
(0)А ТекТовар заполнен?
6 Enders
 
04.07.14
14:56
НоваяЗапись.Владелец=ТекТовар;
НоваяЗапись.Штрихкод=Товар.Штрихкод;

А почему используется сначало ТекТовар, а потом Товар?
7 Крошка Ру
 
04.07.14
14:56
+(5)Если отладчиком посмотреть?
8 Alex S D
 
04.07.14
14:57
ТекТовар не объект случаем?
9 Крошка Ру
 
04.07.14
14:57
Кстати да, может он не ссылка?
10 bizon2014
 
04.07.14
15:02
(5) (6) ТекТовар это уже записанный элемент справочника.
Вот код, весь.
    cпрТовар = Справочники.Номенклатура;
    тзШтрихкод = Новый ТаблицаЗначений;
    cпрЕдИзм = Справочники.БазовыеЕдиницыИзмерения;
    
    //Обнуляем регистр Штрихкод
    НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НаборЗаписей.Записать();
    
    рсШтрихкоды=РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НомерСтроки=1;

    
    Для каждого Товар из тзТовар Цикл
        
        //Ищем по коду в справочнике товара
        НайденнаяСсылка = cпрТовар.НайтиПоКоду(СокрЛП(Товар.Код));
        Если НайденнаяСсылка = cпрТовар.ПустаяСсылка() Тогда
            ТекТовар = Справочники.Номенклатура.СоздатьЭлемент();
        Иначе
            ТекТовар = НайденнаяСсылка.ПолучитьОбъект();
        КонецЕсли;    
        ТекТовар.Код = СокрЛП(Товар.Код);    
        ТекТовар.Наименование = СокрЛП(Товар.Название);
        ТекТовар.ЕдиницаИзмерения = cпрЕдИзм.НайтиПоКоду(642).Ссылка;
        ТекТовар.Записать();
        //Нашли, изменили или создали, записали.
        
        НоваяЗапись=рсШтрихкоды.Добавить();
        НоваяЗапись.Активность=Истина;
        НоваяЗапись.Владелец=ТекТовар.Ссылка;
        НоваяЗапись.Штрихкод=Товар.Штрихкод;
        //НоваяЗапись.ЕдиницаИзмерения=ТекТовар.ЕдиницаИзмерения;
        НоваяЗапись.ТипШтрихкода = ПредопределенноеЗначение("ПланВидовХарактеристик.ТипыШтрихкодов.EAN13");
        НомерСтроки=НомерСтроки+1;
    КонецЦикла;
    
    //Запись регистра шрихкоды
    Попытка
        рсШтрихкоды.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Сообщить("Запись закончена")
11 Ринат-СПб
 
04.07.14
15:05
(10) и не появился владелец?
12 bizon2014
 
04.07.14
15:06
(11) Нет.
13 Господин ПЖ
 
04.07.14
15:07
>Дык справочник товара.

звиздеж и провокация
14 SUA
 
04.07.14
15:07
рсШтрихкоды от такого кода не помрет?
15 Ринат-СПб
 
04.07.14
15:08
(12) конфа какая?
16 SUA
 
04.07.14
15:08
хотя да, по коду помирает раньше...
17 Alex S D
 
04.07.14
15:12
а отбор по владельцу в наборе не надо делать?
18 Господин ПЖ
 
04.07.14
15:12
(17) автору нет
19 bizon2014
 
04.07.14
15:13
Вроде раскопал, тама что-то намудрили в модуле менеджера самого регистра. Типа проверка на уникальность отбрасывает моего владельца.  Поставил тупо задержку после очистки регистра.

Теперь другой вопрос, а как мне аналогичное запихнуть в регистр с регистратором?
Надо типа цены записать, а у регистра цен подчинение регистратору документ установка цен.
20 anatoly
 
04.07.14
15:13
ТекТовар = Справочники.Номенклатура.СоздатьЭлемент();
        Иначе
            ТекТовар = НайденнаяСсылка.ПолучитьОбъект();
см (9) !!!
21 Господин ПЖ
 
04.07.14
15:14
(19) отбор по регистратору ставь
22 Ринат-СПб
 
04.07.14
15:15
(19) меня больше вот это смутило

ТекТовар.ЕдиницаИзмерения = cпрЕдИзм.НайтиПоКоду(642).Ссылка;
23 PR
 
04.07.14
15:16
(19) Вот так обычно и бывает, напишут нерабочего копрокода, а потом начинается "тама что-то намудрили в модуле менеджера самого регистра".
24 Ринат-СПб
 
04.07.14
15:17
(19) Создай документ установку цен номенклатуры :)
25 bizon2014
 
04.07.14
15:19
(22) А что не так? Ищу ссылку и пишу.
(21) Так нет регистратора. Доков то нет. Или сначала док создать, заполнить и на него сослаться.
(23)Так сам и накосячил. Ты лучше расскажи где ковнокод и как правильно, Коли не в тягость. Благодарен буду.
26 Господин ПЖ
 
04.07.14
15:21
>Так нет регистратора. Доков то нет. Или сначала док создать, заполнить и на него сослаться.

документы сделай нормальные и проведи.
27 VikingKosmo
 
04.07.14
15:22
(26) это не слишком гуманно))
28 bizon2014
 
04.07.14
15:23
(26) Не осилить. Тама такой документ сложный.
29 Ринат-СПб
 
04.07.14
15:24
(25) Конфа какая?


Просто почти везде ЕдиницыИзмерения - это подчиненный справочник. И для каждого товара создается отдельная единица измерения, искать нужно по владельцу
30 Господин ПЖ
 
04.07.14
15:24
мдя... вот и поговорили
31 PR
 
04.07.14
15:26
(25) ПолучитьОбъект() — это ссылка?
32 Господин ПЖ
 
04.07.14
15:27
(31) в военное время - да
33 Wobland
 
04.07.14
15:27
(28) держи, горе

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТипЦеныЗакупочная=Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная цена");
    ТипЦеныРозничная=Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная цена");
    ДокументУстановкиЦен=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокументУстановкиЦен.Дата=ДатаДокумента;
    НоваяСтрока=ДокументУстановкиЦен.ТипыЦен.Добавить();
    НоваяСтрока.ТипЦен=ТипЦеныРозничная;
    НоваяСтрока=ДокументУстановкиЦен.ТипыЦен.Добавить();
    НоваяСтрока.ТипЦен=ТипЦеныЗакупочная;
    ДокументУстановкиЦен.Комментарий="автоматическая загрузка прайс-листа";
    ДокументУстановкиЦен.Ответственный=ПараметрыСеанса.ТекущийПользователь;
    Для стр=8 По ПоследняяСтрока Цикл
        НоваяСтрока=ДокументУстановкиЦен.Товары.Добавить();
        НоваяСтрока.Номенклатура=Номенклатура;
        НоваяСтрока.ТипЦен=ТипЦеныРозничная;
        НоваяСтрока.Валюта=Справочники.Валюты.НайтиПоКоду("810");
        НоваяСтрока.ЕдиницаИзмерения=Номенклатура.ЕдиницаХраненияОстатков;
        НоваяСтрока.Цена=Sheet.Cells(стр, 4).Value;
        НоваяСтрока=ДокументУстановкиЦен.Товары.Добавить();
        НоваяСтрока.Номенклатура=Номенклатура;
        НоваяСтрока.Валюта=Справочники.Валюты.НайтиПоКоду("810");
        НоваяСтрока.ЕдиницаИзмерения=Номенклатура.ЕдиницаХраненияОстатков;
        НоваяСтрока.ТипЦен=ТипЦеныЗакупочная;
        НоваяСтрока.Цена=Sheet.Cells(стр, 6).Value;
    КонецЦикла;
    ДокументУстановкиЦен.Записать();
    Сообщить("Записан документ "+ДокументУстановкиЦен);
КонецПроцедуры
34 bizon2014
 
04.07.14
15:27
(29) Розница, там подчиненный упаковки.
(30) Не, не уходи. Документ, так документ. Щас тогда буду делать документ.
35 Ринат-СПб
 
04.07.14
15:27
(31) дальше читай, он там делает тектовар.ссылка
36 Enders
 
04.07.14
15:32
(10)Для каждого Товар из тзТовар Цикл
        
        //Ищем по коду в справочнике товара

        НайденнаяСсылка = cпрТовар.НайтиПоКоду(СокрЛП(Товар.Код));
        Если НайденнаяСсылка = cпрТовар.ПустаяСсылка() Тогда
            ТекТовар = Справочники.Номенклатура.СоздатьЭлемент();
        Иначе
            ТекТовар = НайденнаяСсылка.ПолучитьОбъект();
        КонецЕсли;    
        ТекТовар.Код = СокрЛП(Товар.Код);    
        ТекТовар.Наименование = СокрЛП(Товар.Название);
        ТекТовар.ЕдиницаИзмерения = cпрЕдИзм.НайтиПоКоду(642).Ссылка;
        ТекТовар.Записать();

Кто-нить объясните мне, что это за хрень?
1. На хрена получать объект по коду, если у нас есть ссылка?
2. На хрена заменять значения реквизитов Объекта, значениями реквизитов его же ссылки?
3. Ну и напоследок почему
НоваяЗапись.Владелец=ТекТовар;
НоваяЗапись.Штрихкод=Товар.Штрихкод;

Если надо:
НоваяЗапись.Владелец=Товар;
НоваяЗапись.Штрихкод=Товар.Штрихкод;
37 Ринат-СПб
 
04.07.14
15:34
(36) Товар - это строка ТЗ, насколько я понимаю
потом он находит ссылку, по ней объект :)
38 bizon2014
 
04.07.14
15:49
(33) Блин, у меня документ неправильный какой-то, три табличных части. И при создании дока куча вариантов выбора цен.
39 bizon2014
 
04.07.14
15:50
(36) тзТовар - это таблица значений.
40 Wobland
 
04.07.14
15:53
(38) тому коду лет триста уже. раз не помогает - дорога к программисту
41 bizon2014
 
04.07.14
15:55
(40) К коду претензий нет. Спасибо. Проблема прикрутить.
А что тут программистов нема?
42 Ринат-СПб
 
04.07.14
15:55
(40) тоже ждешь окончание рабочего дня, а делать нечего? :)
43 Alex S D
 
04.07.14
15:55
делать есть чего, а не хочется
44 Wobland
 
04.07.14
15:57
(41) ну я программист. 500 рублёв денег - и документ у тебя есть
(42) в моих реалиях уже 21 час ;)
45 Ринат-СПб
 
04.07.14
16:00
(44) а мне еще часик пострадать :)
46 Крошка Ру
 
04.07.14
16:00
(44) " - Где этот чертов инвалид?
       - Не шуми, я инвалид."   )))
47 Wobland
 
04.07.14
16:04
а претензии к коду есть: Справочники.Валюты.НайтиПоКоду("810") в цикле
48 Fragster
 
гуру
04.07.14
16:05
ТекТовар.Ссылка() автору поможет, наверное.
49 Fragster
 
гуру
04.07.14
16:05
без скобок только
50 bizon2014
 
04.07.14
16:09
(44) 500 рублев я зайца в поле загоняю.

Док научился создавать.

&НаСервере
Процедура КнСоздатьДокНаСервере()
    ТипЦеныРозничная = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
    ДокументУстановкиЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокументУстановкиЦен.Дата = ТекущаяДата();
    НоваяСтрока=ДокументУстановкиЦен.ВидыЦен.Добавить();
    НоваяСтрока.ВидЦены = ТипЦеныРозничная;
    ДокументУстановкиЦен.Комментарий="автоматическая загрузка прайс-листа";
    ДокументУстановкиЦен.Ответственный=ПараметрыСеанса.ТекущийПользователь;
    
    ДокументУстановкиЦен.Записать();
    Сообщить("Записан документ "+ДокументУстановкиЦен);
КонецПроцедуры

(47)Угуй. Косяк, мой. Спасибо.
51 Ринат-СПб
 
04.07.14
16:11
(50) да ну нафиг... Сообщить работает? О_о
52 Wobland
 
04.07.14
16:12
(50) да ещё и ТЧ у него заполнять
(51) а почему бы и нет, Ватсон? ;)
53 Ринат-СПб
 
04.07.14
16:13
(52) &НаСервере
Процедура КнСоздатьДокНаСервере()
54 bizon2014
 
04.07.14
16:14
(51) (52) Да с ТЧ не получается. Ошибка пишет. Нет такой мол. Щас готовый по отладчику разбираю.
55 Wobland
 
04.07.14
16:15
(53) не дошло.. тебя Сообщить() с сервера смущает?
56 Ринат-СПб
 
04.07.14
16:17
(55) ага

хотя глянул в СП - можно и на сервере использовать...
57 bizon2014
 
04.07.14
16:18
(47) НоваяСтрока.Валюта=Справочники.Валюты.НайтиПоКоду("810"); у тебя тож в цикле - это правильно?
58 Wobland
 
04.07.14
16:22
(57) нет. ТипЦеныЗакупочная вынес из цикла, а до валюты руки не дотянулись ;)
59 Господин ПЖ
 
04.07.14
16:25
(51) ну не то чтобы работает, но не сломается
60 bizon2014
 
04.07.14
16:26
Блин, ТЧ не победил.
    
    cпрЕдИзм = Справочники.БазовыеЕдиницыИзмерения;
    ЕдИзмСсылка = cпрЕдИзм.НайтиПоКоду(642).Ссылка;
    
    ТипЦеныРозничная = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
    ДокументУстановкиЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокументУстановкиЦен.Дата = ТекущаяДата();
    НоваяСтрока=ДокументУстановкиЦен.ВидыЦен.Добавить();
    НоваяСтрока.ВидЦены = ТипЦеныРозничная;
    ДокументУстановкиЦен.Комментарий="автоматическая загрузка прайс-листа";
    ДокументУстановкиЦен.Ответственный=ПараметрыСеанса.ТекущийПользователь;
    Для каждого Товар из тзТовар Цикл
        НоваяСтрока=ДокументУстановкиЦен.Товары.Добавить();
        НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(10000));
        НоваяСтрока.ТипЦен=ТипЦеныРозничная;
        НоваяСтрока.Валюта=Справочники.Валюты.НайтиПоКоду("810");
        НоваяСтрока.ТипЦен=ТипЦеныРозничная;
        НоваяСтрока.Цена=1000;
        //НоваяСтрока.ЕдиницаИзмерения=Номенклатура.ЕдиницаХраненияОстатков;
    КонецЦикла;
    ДокументУстановкиЦен.Записать();
    Сообщить("Записан документ "+ДокументУстановкиЦен);
61 Wobland
 
04.07.14
16:28
единица измерения часто иногда подчинена номенклатуре. поэтому я её брал из номенклатуры
62 bizon2014
 
04.07.14
16:29
У меня ошибок нет, и тч дока пустая.
63 Wobland
 
04.07.14
16:31
а вот бы изобрели такую штуку, которая позволяла бы исполнять код пошагово да значения переменных смотреть. джва году жду
64 bizon2014
 
04.07.14
16:40
Хм. У меня таблица значения почему-то пустая.
65 Любопытная
 
04.07.14
16:45
(64) А де ты ее берешь?
66 bizon2014
 
04.07.14
16:46
(65) Реквизит формы.
67 acsent
 
04.07.14
16:47
(60) там еще индекс строки вроде есть реквизит
68 Wobland
 
04.07.14
16:49
(64) попробовать её чем-нибудь наполнить - это выход?
69 bizon2014
 
04.07.14
16:50
(68) А она полная, я ее на экране то вижу.
70 Любопытная
 
04.07.14
16:53
(69) Чет у тебя наоборот получается - суслика нет, а ты его видишь. Или у тебя глюки, или это не тот суслик
71 bizon2014
 
04.07.14
16:54
В общем так, документ создается, цены и товар заполняются. Провожу. Записей в регистре нет.

Процедура КнСоздатьДокНаСервере()
    
    cпрЕдИзм = Справочники.БазовыеЕдиницыИзмерения;
    ЕдИзмСсылка = cпрЕдИзм.НайтиПоКоду(642).Ссылка;
    
    ТипЦеныРозничная = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
    ДокументУстановкиЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокументУстановкиЦен.Дата = ТекущаяДата();
    НоваяСтрока=ДокументУстановкиЦен.ВидыЦен.Добавить();
    НоваяСтрока.ВидЦены = ТипЦеныРозничная;
    ДокументУстановкиЦен.Комментарий="автоматическая загрузка прайс-листа";
    ДокументУстановкиЦен.Ответственный=ПараметрыСеанса.ТекущийПользователь;
    Для каждого Товар из тзТовар Цикл
        НоваяСтрока=ДокументУстановкиЦен.Товары.Добавить();
        НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Товар.Код));
        НоваяСтрока.ВидЦены=ТипЦеныРозничная;
           НоваяСтрока.Цена=1000;
        КонецЦикла;
    ДокументУстановкиЦен.Записать();
    Сообщить("Записан документ "+ДокументУстановкиЦен);
КонецПроцедуры
72 Любопытная
 
04.07.14
16:55
(71) Где в этом коде указано, что тзТовар это табличная часть документа?
73 Wobland
 
04.07.14
16:56
>Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Товар.Код))
в приличных домах за такое ставят на горох. прямо простреленными коленками. кто мешает ссылки в ТЗ хранить?
74 bizon2014
 
04.07.14
16:57
тзТовар - это таблица значений.
75 Wobland
 
04.07.14
16:58
(72) у него уже всё заполняется. теперь нам надо разобраться, почему движений нет при проведении ;)
76 bizon2014
 
04.07.14
16:58
(73) Потому что в тз загружается тестовый файл с четырьмя полями, код, название, цена и шрихкод. Вот мне и надо справочник организовать.
77 Любопытная
 
04.07.14
16:58
(74) Пустая?
78 Крошка Ру
 
04.07.14
16:59
А где написано что документ проводится?
79 Любопытная
 
04.07.14
16:59
(75) а ты нде-то проведение разглядел?
80 Wobland
 
04.07.14
16:59
(78) (79) в (71)
81 Wobland
 
04.07.14
17:00
+(80) мож, он руками потом делает. этот партизан так просто не сознается
82 bizon2014
 
04.07.14
17:01
(81) Руками. Да.
83 Kamas
 
04.07.14
17:01
прочитал название ветки вспомнил что пятница)) прочитал ветку понял что уже конец дня)))
84 Wobland
 
04.07.14
17:02
и ведь до сих пор не названа конфигурация. мы ли не молодцы вслепую подсказывать? ;)
85 bizon2014
 
04.07.14
17:04
в (34) писал, розница.
86 Любопытная
 
04.07.14
17:04
(82) ды и чо? Ты в каком регистре хочешь записи увидеть?
87 Wobland
 
04.07.14
17:04
(85) угу. розница вторая, раз УФ
88 bizon2014
 
04.07.14
17:07
В общем. Что с загрузкой справочника номенклатура накосячил. Мои загружены элементы в справочник номенклатуры не делают записей если их даже в ручном режиме выбрать в доке установка цен. Если руками товар вбить, то делает.
89 bizon2014
 
04.07.14
17:08
(86) Цены номенклатуры.
90 Wobland
 
04.07.14
17:12
ничо не знаю
http://i.imgur.com/QGJ31Yy.png
91 bizon2014
 
04.07.14
17:16
(90) Не к доку претензий нет, видать я при загрузки в справочник номенклатуры что-то неправильное делаю.
Руками вбитые нормально работают, мной загруженные, типа автоматом, не работают.
92 Wobland
 
04.07.14
17:17
(91) объект что ль пишешь вместо ссылки?
93 bizon2014
 
04.07.14
17:21
(92) Нет. Что-то не заполняю в справочнике номенклатуры. Щас по реквизиту пробую добавлять. Если зайти и выйти с сохранением из карточки товара, то усе пучком.
94 hhhh
 
04.07.14
17:33
(93) ну вот это бред, согласись: СокрЛП(10000)  ??? это будет "10 000". Используй функцию Формат.
95 Wobland
 
04.07.14
17:35
(94) а не Строка()?
96 bizon2014
 
04.07.14
17:36
(94) Спасибо. Будем учится.
Я перечисление правильно присваиваю? А то не заполняет
ТекТовар.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
97 Wobland
 
04.07.14
17:37
(96) дай уже обработку поиграться, а то мы так и до (200) дотянем
98 bizon2014
 
04.07.14
17:42
99 Wobland
 
04.07.14
17:47
(98) а я ленивый. как выглядит правильная ссылка?
100 Alex S D
 
04.07.14
17:47
(100) ну вы даете
101 Wobland
 
04.07.14
17:49
тзШтрихкод = Новый ТаблицаЗначений;
    Для каждого Товар из тзТовар Цикл

ничо так
102 bizon2014
 
04.07.14
17:49
(99)http://webfile.ru/2d635d41a6b40fbebf81d42fe290e993

Я вроде победил. Цены появились в регистре, но нет в чеке ККМ.
103 Wobland
 
04.07.14
17:49
(101) тьфу, имена переменных попутал ;)